repo-manager/docs/evidence/wp0002-completion.md
tegwick 310b43079d feat(RMGR-WP-0002): dual-run writeback, flags, meter, SH facade
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.
2026-08-09 23:19:56 +02:00

1.4 KiB

RMGR-WP-0002 completion evidence

Date: 2026-08-09
Stage: ArchitectureBlueprint Stage B (dual-run)

Delivered

Task Result
T01 flags + meter src/repo_manager/dual_run.py, docs/dual-run.md
T02 hardened command idempotency, expected_head_sha, UUID match, optional push
T03 SH facade state-hub/api/services/repo_manager_dual_run.py + PATCH /tasks hook
T04 reconcile proxy fix_repo calls rmgr reconcile when RM_RECONCILE + pilot
T05 pilot Fixture + SH facade call → applied + git_sha; meter lines
T06 package this file + wp0002-pilot.json + mutation-meter-pilot.jsonl

Operator enable (pilot)

export RM_WRITEBACK=1
export RM_RECONCILE=1
export RM_PILOT_REPOS=repo-manager
# ensure SH can import/run rmgr:
export REPO_MANAGER_SRC=$HOME/repo-manager/src   # optional; adapter defaults to ~/repo-manager/src

Restart State Hub API process so env is picked up for PATCH dual-run.

Rollback

unset RM_WRITEBACK RM_RECONCILE RM_PILOT_REPOS
# restart SH API

Tests

cd ~/repo-manager && pytest -q   # includes test_dual_run.py

STATE-WP-0079 handoff

Expand RM_PILOT_REPOS fleet-wide after meter shows RM writebacks healthy. Meter path: ~/.repo-manager/mutation-meter.jsonl (or RM_METER_PATH). Strangler exit: zero source=state-hub checkout mutations for pilot set under load.