T01-T03 are done and T05-T08 were already handed to RMGR-WP-0004. T04's gates (RMGR-WP-0004-T06, STATE-WP-0079-T04) remain open, and the task always specified that removal land inside the 0079 strangler rather than as an isolated breaking change. Cancel it here with a pointer, record the inherited residual in 0079-T04, and mark the workplan finished. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
137 lines
4.2 KiB
Markdown
137 lines
4.2 KiB
Markdown
---
|
|
id: STATE-WP-0079
|
|
type: workplan
|
|
title: "State Hub retirement strangler and disposition execution"
|
|
domain: infotech
|
|
repo: state-hub
|
|
status: proposed
|
|
owner: codex
|
|
topic_slug: infotech
|
|
created: "2026-08-09"
|
|
updated: "2026-08-19"
|
|
parent_project: prj-state-hub-retirement
|
|
parent_workplan: SHR-WP-0001
|
|
related:
|
|
- STATE-WP-0074
|
|
- SHR-INV-0001
|
|
- RMGR-WP-0001
|
|
- HUB-WP-0004
|
|
state_hub_workstream_id: "749beac6-3c62-4284-aab5-9ed7fce900c2"
|
|
---
|
|
|
|
# State Hub retirement strangler and disposition execution
|
|
|
|
## Goal
|
|
|
|
Execute the **keep/move/replace/retire** dispositions from
|
|
`prj-state-hub-retirement/inventory` via strangler adapters and owner handoffs,
|
|
without adding new permanent authorities here. End state: freeze window with no
|
|
normal traffic, then archive.
|
|
|
|
## Dual-run handoff (RMGR-WP-0002)
|
|
|
|
Repo Manager Stage B dual-run is available:
|
|
|
|
- Flags: `RM_WRITEBACK`, `RM_RECONCILE`, `RM_PILOT_REPOS` (see `repo-manager/docs/dual-run.md`)
|
|
- SH adapter: `api/services/repo_manager_dual_run.py` (PATCH `/tasks` + C-15 writeback + reconcile proxy)
|
|
- Evidence: `repo-manager/docs/evidence/wp0002-completion.md`
|
|
|
|
Expand pilot list here as cutover progresses; do not add new checkout mutators in State Hub.
|
|
|
|
## Freeze policy for new scope
|
|
|
|
```task
|
|
id: STATE-WP-0079-T01
|
|
status: todo
|
|
priority: high
|
|
state_hub_task_id: "375c0b66-98b0-4d5b-98dd-4ad2883a4051"
|
|
```
|
|
|
|
Document and enforce: changes during retirement must preserve compatibility,
|
|
enable extraction, reduce scope, or fix operational risk — not establish new
|
|
permanent ownership (INTENT retirement status).
|
|
|
|
## Capability strangler plan
|
|
|
|
```task
|
|
id: STATE-WP-0079-T02
|
|
status: todo
|
|
priority: high
|
|
state_hub_task_id: "595c3936-20b6-453f-92b5-84f86798054a"
|
|
```
|
|
|
|
Group SHR-INV-0001 items into cutover slices (repo/work → repo-manager;
|
|
messages/progress/projections → hub-core; catalogs → owners; retire aliases).
|
|
Per slice: adapter flag, owner API, rollback.
|
|
|
|
## Register CLI and GOAL.md support
|
|
|
|
```task
|
|
id: STATE-WP-0079-T03
|
|
status: done
|
|
priority: medium
|
|
state_hub_task_id: "55716f12-fb12-4a1e-a770-076c490db111"
|
|
```
|
|
|
|
Adapt `statehub register` / scaffolding so `prj-` repos with `GOAL.md` and
|
|
`repo_flavor: project` are valid without inventing durable-product `INTENT.md`
|
|
(residual from SHR-WP-0001-T01).
|
|
|
|
**Result (2026-08-19):** Implemented by `STATE-WP-0080-T01/T02`. Project
|
|
flavor is detected from classification, `GOAL.md`, or the `prj-` slug; a repo
|
|
with an existing `GOAL.md` is registered without durable scaffolding, while a
|
|
fresh project delegates scaffolding to `rmgr scaffold`. The focused State Hub
|
|
registration suite passes (`20 passed`).
|
|
|
|
## Execute move/replace slices
|
|
|
|
```task
|
|
id: STATE-WP-0079-T04
|
|
status: todo
|
|
priority: high
|
|
state_hub_task_id: "db5291f2-3801-40fa-abf2-ceb0e77687c9"
|
|
```
|
|
|
|
Implement strangler handoffs coordinated with RMGR-WP-0001 and HUB-WP-0004.
|
|
Compatibility tests for each dispositioned route family.
|
|
|
|
**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,
|
|
`project_rules/`, and bootstrap-workplan generation. The code is dead-but-present:
|
|
project repos are already routed to `rmgr scaffold`. Gate the deletion on
|
|
`RMGR-WP-0004-T06` proving byte-identical durable output and idempotent
|
|
re-scaffolding.
|
|
|
|
## Retire legacy surfaces
|
|
|
|
```task
|
|
id: STATE-WP-0079-T05
|
|
status: todo
|
|
priority: medium
|
|
state_hub_task_id: "02e508ed-3cde-4487-907e-d324a8a877d6"
|
|
```
|
|
|
|
Complete retirement of suggestions, workstream aliases, and other `retire`
|
|
inventory items once meters/callers allow. Keep historical rows archive-readable.
|
|
|
|
## Stabilization window and archive prep
|
|
|
|
```task
|
|
id: STATE-WP-0079-T06
|
|
status: todo
|
|
priority: high
|
|
state_hub_task_id: "d52c95c6-af3f-4b2c-804e-e07763c9a8ab"
|
|
```
|
|
|
|
With T06 gates: zero normal read/write window, final dump, backup/restore
|
|
evidence, stop service, archive repo read-only. Residuals → live owners.
|
|
|
|
## Acceptance
|
|
|
|
- [ ] Freeze policy documented
|
|
- [ ] Strangler plan covers all inventory capabilities
|
|
- [x] prj-/GOAL.md register path works
|
|
- [ ] Move/replace slices evidenced with tests/counts
|
|
- [ ] Retire list closed or residual-owned
|
|
- [ ] Stabilization + archive prep ready for project retirement
|