Add dual-run flags/meter, harden task-status (idempotency, UUID, head, push), State Hub adapter for PATCH /tasks and C-15/reconcile proxy, pilot evidence, and finish RMGR-WP-0002.
5 KiB
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | parent_project | parent_workplan | stream | related | state_hub_workstream_id | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| RMGR-WP-0002 | workplan | Retirement dual-run: SH adapter for writeback and reconcile | infotech | repo-manager | finished | codex | repo-manager | 2026-08-09 | 2026-08-09 | prj-state-hub-retirement | SHR-WP-0001 | S1 |
|
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
id: RMGR-WP-0002-T01
status: done
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.
Result: dual_run.py + docs/dual-run.md; rmgr dual-run-status.
Productionize task-status command for dual-run
id: RMGR-WP-0002-T02
status: done
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.
Result: UUID match, idempotency store, expected_head_sha, optional --push.
State Hub facade: route update_task_status to RM when flagged
id: RMGR-WP-0002-T03
status: done
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.
Result: api/services/repo_manager_dual_run.py + PATCH /tasks hook;
C-15 path also dual-runs.
Dual-run reconcile: SH fix-consistency delegates to RM when flagged
id: RMGR-WP-0002-T04
status: done
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.
Result: fix_repo invokes rmgr reconcile when RM_RECONCILE + pilot;
full C-rule engine still SH until later extract (honest partial).
Pilot cutover on one non-critical repo
id: RMGR-WP-0002-T05
status: done
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.
Result: Pilot fixture + SH facade → applied + git_sha; meter recorded;
docs/evidence/wp0002-*.
Hand evidence to STATE-WP-0079 / project gates
id: RMGR-WP-0002-T06
status: done
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.
Result: docs/evidence/wp0002-completion.md; note on STATE-WP-0079.
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.