repo-manager/docs/evidence/t05-vertical-slice.md
tegwick 8b5634ff2a feat(RMGR-WP-0001): complete T05 end-to-end vertical slice
Implement observe/reconcile/update-task-status CLI path: workplan parse,
JSON projection index, git-backed task status writeback with correlation
events, and E2E pytest plus evidence artifacts. Finish foundation workplan.
2026-08-09 22:49:31 +02:00

41 lines
1.6 KiB
Markdown

# RMGR-WP-0001-T05 — vertical slice proof
**Date:** 2026-08-09
**Contract:** `helixforge.repo-manager` 0.1 (subset implemented)
## Slice steps
| # | Requirement | Implementation | Proof |
| --- | --- | --- | --- |
| 1 | Represent a repository | `rmgr observe` / `observe_repository` | Snapshot JSON with slug, classification, revision |
| 2 | Index declared work | `rmgr reconcile``.repo-manager/index.json` | workplan + task records from `workplans/` |
| 3 | Emit normalized change | events on index: `repo.command.applied`, `repo.work.indexed` | event log with `correlation_id` |
| 4 | File-backed transition | `rmgr update-task-status` | task `status:` patched in workplan file |
| 5 | Git evidence | `gitops.commit_paths` | `evidence.git_sha` required; commit message includes correlation_id |
| 6 | Rebuilt projection | re-observe after command | task status + head_sha match evidence |
## Automated proof
```bash
cd ~/repo-manager && pytest tests/test_e2e_vertical_slice.py -q
```
## Live CLI proof
Artifacts:
- `docs/evidence/t05-e2e-proof.json`
- `docs/evidence/t05-command-result.json`
## Hub-core note
Events are written to the local index event log in contract-shaped JSON. HTTP
delivery to hub-core `port.events` is dual-run work (extraction P3 / hub-core
ports), not required to prove Git authority + projection rebuild.
## Limits of this slice (honest)
- Projection store is **local JSON**, not Postgres yet (ADR-001 production DB still planned).
- No FastAPI server in this slice; CLI implements the same commands.
- Authz is not enforced (dev path); production requires policy port.
- Single command type implemented: `repo.work.update_task_status`.