docs(STATE-WP-0079): A2 readiness detail and dual-run state
Applied the A3 readiness check one level down. The State Hub adapter exposes exactly three operations: rm_update_task_status, rm_reconcile, rm_scaffold. No adapter for workplan CRUD, intake, decision, dependency or human-flag records, and no repo-manager parser for them either. A2 splits into A2a (task status + reconcile, ~6 items, receivable) and A2b-A2e (~32 items, not receivable). A2a is the only slice in the plan executable today -- roughly 6 of 425 inventory items. Also records that dual-run is currently off entirely: no config file, writeback and reconcile false, no pilot repos. The 23 metered mutations are RMGR-WP-0002/0003 pilot residue. A2a's next step is operational, not code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
5f747fbc1e
commit
a824fd5dfe
2 changed files with 67 additions and 6 deletions
|
|
@ -140,6 +140,51 @@ whole slice at once.
|
|||
the job portion is `activity-core` (Wave C1). Cut the repo-manager portion first
|
||||
and leave the job dual-running.
|
||||
|
||||
### A2 readiness detail (2026-08-20)
|
||||
|
||||
Same check as for A3, applied one level down. The State Hub adapter
|
||||
(`api/services/repo_manager_dual_run.py`) exposes exactly three operations:
|
||||
|
||||
| Adapter function | Routes to | Covers |
|
||||
| --- | --- | --- |
|
||||
| `rm_update_task_status` | `rmgr task-status` | task status writes |
|
||||
| `rm_reconcile` | `rmgr reconcile` | work-record index rebuild |
|
||||
| `rm_scaffold` | `rmgr scaffold` | repo scaffolding (A1 `repo-onboarding`, already cut over) |
|
||||
|
||||
There is no adapter for workplan create/update/delete, intake, decision,
|
||||
dependency, or human-flag records — and no parser for them on the repo-manager
|
||||
side either (`parse/` is `workplan.py` only). So A2 splits:
|
||||
|
||||
| Sub-slice | Items | Receivable |
|
||||
| --- | --- | --- |
|
||||
| **A2a** task status + reconcile | ~6 (`update_task_status`, `bulk_update_task_statuses`, `PATCH /tasks/{id}`, `POST /tasks/bulk-status-sync`, index refresh job, `table:tasks`) | **Yes — adapter exists and was proven by RMGR-WP-0002/0003** |
|
||||
| A2b workplan CRUD | ~9 routes + `table:workplans` | No adapter; repo-manager parses workplans but exposes no write path |
|
||||
| A2c intake | 9 | No parser, no adapter |
|
||||
| A2d decision | 8 | No parser, no adapter |
|
||||
| A2e dependencies + human-flag | ~6 | No parser, no adapter |
|
||||
|
||||
**A2a is the only slice in the entire plan that is executable today**, and it is
|
||||
roughly 6 items, not 59.
|
||||
|
||||
### Dual-run is currently off
|
||||
|
||||
`rmgr dual-run-status` on 2026-08-20:
|
||||
|
||||
```
|
||||
config_exists: false writeback: false reconcile: false pilot_repos: null
|
||||
meter: {state-hub: 15, repo-manager: 8, total: 23}
|
||||
```
|
||||
|
||||
The 23 metered mutations are the RMGR-WP-0002/0003 pilot runs. Nothing is
|
||||
dual-running now — the adapter is proven but switched off, and there is no
|
||||
`~/.repo-manager/dual-run.yaml`.
|
||||
|
||||
**So the concrete next executable step is operational, not code:** create the
|
||||
dual-run config and enable `RM_WRITEBACK` + `RM_RECONCILE` for a pilot repo,
|
||||
then watch the mutation meter for divergence. That is A2a moving from `off` to
|
||||
`dual`. It needs an operator decision because it changes how live task writes
|
||||
flow; it is reversible by clearing the flags.
|
||||
|
||||
### A3 · Registers — 49 items
|
||||
`sbom-inventory` (10) · `repo-goals` (9) · `upstream-contributions` (9) ·
|
||||
`register-technical-debt` (9) · `register-extension-points` (6) · `register-entries` (6)
|
||||
|
|
@ -378,9 +423,10 @@ discovered live at cutover.
|
|||
surface (A4), and the topic-spine contract (A5). Until that exists, 79 of
|
||||
Wave A's 165 items have nowhere to go. This is now the critical path for the
|
||||
whole retirement, ahead of anything State Hub can do to itself.
|
||||
3. Cut **A2** (work records, 59 items) as the first real slice — it is the only
|
||||
Wave A slice with a proven adapter. Split `RM_SLICE_WORKRECORDS` by record
|
||||
kind to manage the blast radius rather than cutting it whole.
|
||||
3. Cut **A2a** (task status + reconcile, ~6 items) — the only slice in the plan
|
||||
executable today. First step is operational: create `~/.repo-manager/dual-run.yaml`
|
||||
and enable writeback/reconcile for one pilot repo, then watch the mutation
|
||||
meter. A2b–A2e need repo-manager parsers and adapters that do not exist.
|
||||
4. Do not open Wave B until HUB-WP-0004 reaches `ready`; 125 items sit behind it.
|
||||
5. Do not build register, UI, or topic capability in State Hub to unblock
|
||||
items 2–3 — `policies/retirement-freeze.md` makes that inadmissible.
|
||||
|
|
|
|||
|
|
@ -141,9 +141,24 @@ must build the register, UI, and topic surfaces before 79 Wave A items can move.
|
|||
Building them in State Hub is inadmissible under `policies/retirement-freeze.md`
|
||||
— it would be new permanent ownership in the component being retired.
|
||||
|
||||
First executable slice is therefore **A2** (work records, 59 items), the only
|
||||
one with a proven adapter, with `RM_SLICE_WORKRECORDS` split by record kind to
|
||||
manage blast radius.
|
||||
**A2 checked the same way (2026-08-20):** the State Hub adapter exposes exactly
|
||||
three operations — `rm_update_task_status`, `rm_reconcile`, `rm_scaffold`. There
|
||||
is no adapter for workplan CRUD, intake, decision, dependency, or human-flag
|
||||
records, and no repo-manager parser for them either. A2 therefore splits into
|
||||
**A2a** (task status + reconcile, ~6 items, receivable) and A2b–A2e (~32 items,
|
||||
not receivable).
|
||||
|
||||
**A2a is the only slice in the whole plan executable today.** Its next step is
|
||||
operational rather than code: `rmgr dual-run-status` shows dual-run entirely off
|
||||
(`config_exists: false`, writeback/reconcile false, no pilot repos; the 23
|
||||
metered mutations are RMGR-WP-0002/0003 pilot residue). Moving A2a from `off` to
|
||||
`dual` means creating `~/.repo-manager/dual-run.yaml`, enabling `RM_WRITEBACK`
|
||||
and `RM_RECONCILE` for one pilot repo, and watching the mutation meter for
|
||||
divergence. Reversible by clearing the flags; needs an operator decision because
|
||||
it changes how live task writes flow.
|
||||
|
||||
Net: of 425 inventory items, roughly **6 can move today**. The retirement is
|
||||
gated almost entirely on owner-side capability in `repo-manager` and `hub-core`.
|
||||
|
||||
**Inherited (2026-08-19) from `STATE-WP-0080-T04`:** this slice now also owns
|
||||
deletion of the templating path in `statehub_register.py` — `INTENT.md`
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue