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.
41 lines
1.6 KiB
Markdown
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`.
|