diff --git a/workplans/STATE-WP-0079-retirement-strangler.md b/workplans/STATE-WP-0079-retirement-strangler.md index 222a068..610caa2 100644 --- a/workplans/STATE-WP-0079-retirement-strangler.md +++ b/workplans/STATE-WP-0079-retirement-strangler.md @@ -184,6 +184,54 @@ rmgr executes checkout mutation alongside it. Promotion to `owner` needs a full consistency-sweep cycle at `dual` with zero divergence, per this plan's adapter rules. Rollback is `rm ~/.repo-manager/dual-run.yaml`. +### Registrar bottleneck — status check 2026-08-21 + +**The registrar is reachable, and was all along.** `bridge status` shows all +seven tunnels `connected` and LIVE, including `state-hub-primary`. It binds +`[::1]:8000` — IPv6 localhost — while the workstation API listens on +`127.0.0.1:8000` (IPv4). Same port number, different stacks, so a `127.0.0.1` +probe silently hits the local hub and looks like the tunnel is down. Anything +checking registrar reachability must use the bracketed IPv6 form. + +**But the two databases have diverged badly:** + +| | workstation (`127.0.0.1:8000`) | registrar (`[::1]:8000`) | +| --- | --- | --- | +| workplans | 987 | 649 | +| tasks | 5 710 | 4 037 | +| decisions | 119 | 80 | + +The registrar is **338 workplans and 1 673 tasks behind**. It also runs older +code — its `/state/summary` still returns `open_workstreams` where the +workstation returns `open_workplans`, so it predates the terminology rename. + +This is exactly the `ADR-007` defect `RMGR-WP-0005` describes, at fleet scale: +two instances over two databases, each minting database-local primary keys into +shared git artifacts. + +**A queue has formed.** Ten unread messages to `state-hub`, nine of them +registrar sync requests from three agents (`agentic-resources`, `glas-harness`, +`kaizen-agentic`), all dated 2026-08-20 — plus this repo's own `RMGR-WP-0008`. +Agents fleet-wide are now blocked on identifier registration. + +**The dependency chain, re-checked:** + +- `RMGR-WP-0004-T08` (prefix uniqueness enforcement) — **`done`** 2026-08-18 +- `RMGR-WP-0004-T09` (assign shared prefixes) — executed 2026-08-17 as an + authorized exception, still `wait`, with one stated residual: *"Not yet + reconciled — the workstation is not the registrar"* +- `RMGR-WP-0005-T03` (deterministic UUIDv5 derivation) — still `wait`, but its + stated blocker `RMGR-WP-0004-T08` **has closed** + +T03 is the permanent fix: derived identifiers make writeback idempotent, so any +number of hubs write identical bytes and the queue disappears. Its formal gate is +clear. Its *substantive* gate is not — `ADR-007` § Migration option 2 lets +historical files keep colliding identifiers (`CUST-WP`, `RAILIANCE-WP`, and +`PRJ-WP` in `prj-forgejo-org-refactor` all still present in the 2026-08-18 scan), +and deriving UUIDv5 from a non-unique identifier manufactures collisions rather +than removing them. That tension needs a ruling before T03 can start. + + **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` generation, the `AGENTS.md` / `CLAUDE.md` / `.custodian-brief.md` templates,