repo-manager/workplans/RMGR-WP-0002-retirement-dual-run-strangler.md

141 lines
4.5 KiB
Markdown
Raw Normal View History

---
id: RMGR-WP-0002
type: workplan
title: "Retirement dual-run: SH adapter for writeback and reconcile"
domain: infotech
repo: repo-manager
status: proposed
owner: codex
topic_slug: repo-manager
created: "2026-08-09"
updated: "2026-08-09"
parent_project: prj-state-hub-retirement
parent_workplan: SHR-WP-0001
stream: S1
related:
- RMGR-WP-0001
- STATE-WP-0079
- ACTIVITY-WP-0029
- specs/ArchitectureBlueprint.md
- history/2026-08-09-state-hub-repo-tooling-research.md
state_hub_workstream_id: "bcb0e20a-ebb4-4f14-b8ee-4fd93436f68e"
---
# Retirement dual-run: SH adapter for writeback and reconcile
## Goal
Close in on **State Hub retirement of repository checkout mutation** by making
Repo Manager the executor for the highest-value write path and for reconcile,
behind a **State Hub dual-run facade**—not by refactoring RM for cleanliness.
Success is measured by: agent task-status updates and fix-consistency can run
with **Git evidence produced by Repo Manager**, while State Hub remains the
MCP/REST entrypoint until meters allow cutover (Blueprint Stage B → toward D).
**Out of scope for this workplan:** dashboard UX, SBOM product work, full MCP
rewrite, topic-spine cleanup, generic framework polish, expanding command catalog
beyond what dual-run requires.
## Blueprint alignment
See `specs/ArchitectureBlueprint.md` §4§9. This WP is Stage B.
## Define dual-run feature flags and success meters
```task
id: RMGR-WP-0002-T01
status: todo
priority: high
state_hub_task_id: "cb9c4457-69f0-45c0-8299-00a195ffdf69"
```
Specify flags (e.g. `RM_WRITEBACK=1`, `RM_RECONCILE=1`) and a minimal meter:
count of checkout mutations by source `state-hub` vs `repo-manager`. Document
rollback (flag off → SH native path). No new product metrics frameworks.
## Productionize task-status command for dual-run
```task
id: RMGR-WP-0002-T02
status: todo
priority: high
state_hub_task_id: "e4435174-237f-4e52-a891-3e0fd45c95eb"
```
Harden `repo.work.update_task_status` from the T05 slice for dual-run use:
idempotency key, expected_head_sha optional, push-seal compatible behavior
(or explicit handoff to existing SH push-seal once), failure codes matching
CMD-0001. Keep CLI; add thin HTTP only if SH adapter requires it.
## State Hub facade: route update_task_status to RM when flagged
```task
id: RMGR-WP-0002-T03
status: todo
priority: high
state_hub_task_id: "4a5df34d-1781-4a35-be51-0756b0e37e6c"
```
In **state-hub** (child change under this coordination): when flag on, MCP/REST
task status updates call RM command for file+git evidence, then refresh SH index
as needed. When flag off, preserve current behavior. Compatibility test: same
file result as native SH writeback on golden fixtures.
Coordinate IDs with STATE-WP-0079; do not expand SH scope beyond the adapter.
## Dual-run reconcile: SH fix-consistency delegates to RM when flagged
```task
id: RMGR-WP-0002-T04
status: todo
priority: high
state_hub_task_id: "0725adbf-13ca-48a5-8011-4c7593f39e8f"
```
Port or wrap the **minimum** C-rules needed so `statehub fix-consistency --fix`
(or a feature-flagged path) can execute reconcile via RM for a pilot repo set.
Inbox C-rules stay on SH/hub-core. Goal: SH process stops implementing new
reconcile logic; it proxies.
## Pilot cutover on one non-critical repo
```task
id: RMGR-WP-0002-T05
status: todo
priority: high
state_hub_task_id: "49d56e5f-f805-4884-bb4e-684f8b3000bd"
```
Enable flags for **one** agreed pilot repo (e.g. repo-manager itself or a
low-risk tooling repo). Run agent task status + fix-consistency for ≥1 session.
Capture evidence: before/after git SHAs, meter counts, no data loss. Document
operator rollback.
## Hand evidence to STATE-WP-0079 / project gates
```task
id: RMGR-WP-0002-T06
status: todo
priority: medium
state_hub_task_id: "045338f7-03d4-4c6d-b267-3bcd0c42dbdd"
```
Write cutover evidence under `docs/evidence/` and link from STATE-WP-0079 /
G-RMGR notes so the retirement program can expand the flag fleet-wide. No extra
architecture rewrite—just retirement evidence.
## Acceptance
- [ ] Feature flags + mutation meter defined and usable
- [ ] Task-status dual-run path works with RM git_sha evidence
- [ ] fix-consistency can delegate reconcile for pilot set
- [ ] One pilot repo runs dual-run without regression
- [ ] Evidence package enables STATE-WP-0079 expansion
- [ ] No scope creep into non-retirement refactors
## Residuals (only if needed at finish)
Anything not required for Stage B becomes a later WP or residual intake with
`origin: residual` — not silent backlog in SCOPE.md.