Reduce open work: archive CUST-WP-0038, finish STATE-WP-0093, trim STATE-WP-0079
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 3s

CUST-WP-0038 (HA migration of a retiring service): archived, 8 tasks cancelled.
STATE-WP-0093: finished; T04 closed on its state-hub part, hub-core owns the rest.
STATE-WP-0079: T09 cancelled (owned by HUB-WP-0011), T07 folded into T05;
T05 records the three verified retirement candidates pending the meter write.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Assistant: claude-code
Assistant-Model: opus
Assistant-Process: 7184@bnt-lap001
Assistant-Session: 4b436ae2-b17c-4b40-8754-200b161b26e4
This commit is contained in:
tegwick 2026-09-22 10:25:05 +02:00
parent 5f236e3500
commit 56672bbf69
3 changed files with 67 additions and 15 deletions

View file

@ -4,12 +4,12 @@ type: workplan
title: "State Hub Full ThreePhoenix HA Migration" title: "State Hub Full ThreePhoenix HA Migration"
domain: infotech domain: infotech
repo: state-hub repo: state-hub
status: backlog status: archived
flavor: implementation flavor: implementation
owner: custodian owner: custodian
topic_slug: custodian topic_slug: custodian
created: "2026-05-02" created: "2026-05-02"
updated: "2026-08-08" updated: "2026-09-22"
depends_on: CUST-WP-0011 depends_on: CUST-WP-0011
state_hub_workstream_id: "ccb87fa4-6381-5f22-b097-6e026f56a9c1" state_hub_workstream_id: "ccb87fa4-6381-5f22-b097-6e026f56a9c1"
--- ---
@ -72,7 +72,7 @@ keeps the ultimate target visible and reviewable.
```task ```task
id: CUST-WP-0038-T01 id: CUST-WP-0038-T01
status: todo status: cancel
priority: high priority: high
state_hub_task_id: "5c79e069-281e-5b3c-a45e-3e906b9053fa" state_hub_task_id: "5c79e069-281e-5b3c-a45e-3e906b9053fa"
``` ```
@ -97,7 +97,7 @@ one-server-loss evidence.
```task ```task
id: CUST-WP-0038-T02 id: CUST-WP-0038-T02
status: todo status: cancel
priority: high priority: high
state_hub_task_id: "b91f9086-c526-5452-bade-ad2451ce3bd3" state_hub_task_id: "b91f9086-c526-5452-bade-ad2451ce3bd3"
``` ```
@ -119,7 +119,7 @@ production data movement.
```task ```task
id: CUST-WP-0038-T03 id: CUST-WP-0038-T03
status: todo status: cancel
priority: high priority: high
state_hub_task_id: "b6fbdfe2-7561-561d-936b-d531300f88aa" state_hub_task_id: "b6fbdfe2-7561-561d-936b-d531300f88aa"
``` ```
@ -142,7 +142,7 @@ namespace.
```task ```task
id: CUST-WP-0038-T04 id: CUST-WP-0038-T04
status: todo status: cancel
priority: medium priority: medium
state_hub_task_id: "c7f59893-6042-540c-ada7-e3661ffdabf7" state_hub_task_id: "c7f59893-6042-540c-ada7-e3661ffdabf7"
``` ```
@ -162,7 +162,7 @@ Run State Hub API with the right availability posture for its workload:
```task ```task
id: CUST-WP-0038-T05 id: CUST-WP-0038-T05
status: todo status: cancel
priority: high priority: high
state_hub_task_id: "390f292d-1d74-5ca7-a08c-530e9c679bd3" state_hub_task_id: "390f292d-1d74-5ca7-a08c-530e9c679bd3"
``` ```
@ -188,7 +188,7 @@ Checks:
```task ```task
id: CUST-WP-0038-T06 id: CUST-WP-0038-T06
status: todo status: cancel
priority: high priority: high
state_hub_task_id: "e7640bd3-827b-5f8c-b03b-93e76eb8c412" state_hub_task_id: "e7640bd3-827b-5f8c-b03b-93e76eb8c412"
``` ```
@ -212,7 +212,7 @@ Checks:
```task ```task
id: CUST-WP-0038-T07 id: CUST-WP-0038-T07
status: todo status: cancel
priority: medium priority: medium
state_hub_task_id: "6492555c-aa6a-5c91-a2cf-3824fe1f1b12" state_hub_task_id: "6492555c-aa6a-5c91-a2cf-3824fe1f1b12"
``` ```
@ -233,7 +233,7 @@ through the documented path.
```task ```task
id: CUST-WP-0038-T08 id: CUST-WP-0038-T08
status: todo status: cancel
priority: low priority: low
needs_human: true needs_human: true
intervention_note: "Requires explicit approval after HA failover and restore drills pass." intervention_note: "Requires explicit approval after HA failover and restore drills pass."
@ -263,3 +263,13 @@ model, and the cluster runbook is the source of truth.
- Railiance ThreePhoenix infrastructure goal - Railiance ThreePhoenix infrastructure goal
- State Hub backup/restore runbooks - State Hub backup/restore runbooks
- Constitution constraint: irreversible retirement requires human approval - Constitution constraint: irreversible retirement requires human approval
## Closure, 2026-09-22
Archived without execution; all eight tasks cancelled. State Hub is being
retired (`prj-state-hub-retirement`, STATE-WP-0079): its capabilities move to
hub-core and the service is frozen and archived. Making the retiring service
highly available is no longer a goal. If multi-node HA and tested
failover/restore still matter, they belong to the retained runtime (hub-core)
and should be planned there.

View file

@ -9,7 +9,7 @@ flavor: refactoring
owner: codex owner: codex
topic_slug: infotech topic_slug: infotech
created: "2026-08-09" created: "2026-08-09"
updated: "2026-09-05" updated: "2026-09-22"
parent_project: prj-state-hub-retirement parent_project: prj-state-hub-retirement
parent_workplan: SHR-WP-0001 parent_workplan: SHR-WP-0001
related: related:
@ -563,6 +563,24 @@ future silence: unresolved task/workstream-detail/SBOM-index attribution is T07.
Available pod logs begin after the last calls. Evidence and limits: Available pod logs begin after the last calls. Evidence and limits:
`docs/evidence/STATE-WP-0079-caller-and-receiver-review-20260905.md`. `docs/evidence/STATE-WP-0079-caller-and-receiver-review-20260905.md`.
**Review 2026-09-22 (now also owns former T07).** The 2026-09-22 capture
(`docs/evidence/legacy-meter-weekly-review-20260922.json`) lists three
retirement candidates: `GET /sbom/` (quiet 10d, needs 7), `PATCH
/workstreams/{workstream_id}` (quiet 36d, needs 30) and `POST /workstreams/`
(quiet 37d, needs 30). Replacements verified the same day: `POST /workplans/`
and `PATCH /workplans/{workplan_id}` in the live OpenAPI (`GET /workplans/`
200); SBOM Nexus `GET /sbom/` returned 200 from the State Hub pod on
railiance01. The founder approved retiring the three. The meter PATCH itself
was not run from the agent session: the harness blocked the production
write. It is still pending. Run it attended (`PATCH
/legacy-meter/interfaces/{id}` with `status: retired`, ids `d0294dce`,
`b1aae931`, `ed6451c9`) and store the receipt as
`docs/evidence/STATE-WP-0079-legacy-retirement-20260922.json`. Still held
after that: `GET /tasks/?workstream_id` (live, caller unattributed), and
`GET /workstreams/`, `GET /workstreams/{workstream_id}` and
`GET /workstreams/{workstream_id}/dependencies/` (quiet since 2026-08-21 or
2026-09-03, not yet candidates).
## Stabilization window and archive prep ## Stabilization window and archive prep
```task ```task
@ -586,7 +604,7 @@ fresh central meter demonstrates the required zero normal read/write window.
```task ```task
id: STATE-WP-0079-T07 id: STATE-WP-0079-T07
status: wait status: cancel
priority: high priority: high
state_hub_task_id: "2ac16837-454a-5a92-9385-c91cd3219aa2" state_hub_task_id: "2ac16837-454a-5a92-9385-c91cd3219aa2"
``` ```
@ -601,6 +619,11 @@ verified replacements, and attach fresh quiet-window evidence before retirement.
Use `X-StateHub-Component` for direct agent HTTP requests. No inference from Use `X-StateHub-Component` for direct agent HTTP requests. No inference from
an `unknown` bucket alone is sufficient to assign an owner. an `unknown` bucket alone is sufficient to assign an owner.
**Folded into T05, 2026-09-22.** Cancelled to reduce open tasks. Attributing
and migrating the remaining legacy readers is the same work as retiring those
interfaces, so T05 now owns it: `GET /tasks/?workstream_id` (8 calls in the
week to 2026-09-22, component `unknown`) and the quiet `/workstreams/` reads.
## Prove the first deployed hub-core message-read contract ## Prove the first deployed hub-core message-read contract
```task ```task
@ -636,7 +659,7 @@ residual HUB-WP-0011 and T09; no production client or writer switched.
```task ```task
id: STATE-WP-0079-T09 id: STATE-WP-0079-T09
status: wait status: cancel
priority: high priority: high
state_hub_task_id: "da1d9a95-91bb-5662-a063-eed2a2f96c92" state_hub_task_id: "da1d9a95-91bb-5662-a063-eed2a2f96c92"
``` ```
@ -649,6 +672,12 @@ switch and rollback using current source parity. State Hub remains the message
writer throughout this read cutover. The private snapshot reader must not be writer throughout this read cutover. The private snapshot reader must not be
advertised as a fresh production inbox. advertised as a fresh production inbox.
**Cancelled here, 2026-09-22.** This task only waited on HUB-WP-0011 in hub-core
(still `proposed`), which owns the refresh/staleness contract, credential
delivery and the client switch. Tracking the same gate in both repos doubled
the open count. State Hub remains the message writer; nothing is needed from
this repo until hub-core asks for a switch review.
## Acceptance ## Acceptance
- [x] Freeze policy documented - [x] Freeze policy documented

View file

@ -4,7 +4,7 @@ type: workplan
title: "Per-recipient broadcast receipts and standing notices" title: "Per-recipient broadcast receipts and standing notices"
domain: infotech domain: infotech
repo: state-hub repo: state-hub
status: active status: finished
owner: claude owner: claude
topic_slug: infotech topic_slug: infotech
flavor: implementation flavor: implementation
@ -242,7 +242,7 @@ predecessor, expiry filtered at query time, capability-request broadcasts are
```task ```task
id: STATE-WP-0093-T04 id: STATE-WP-0093-T04
status: progress status: done
priority: medium priority: medium
state_hub_task_id: "43529a93-6e49-51c8-a358-726f7e737fab" state_hub_task_id: "43529a93-6e49-51c8-a358-726f7e737fab"
``` ```
@ -376,3 +376,16 @@ templates carry the reader/ack line, and gate-house has answered.
- **Template line:** `session-protocol.template` and `agents-codex.template` now mark read with `?reader={REPO_SLUG}` and document `POST /messages/<id>/ack`. - **Template line:** `session-protocol.template` and `agents-codex.template` now mark read with `?reader={REPO_SLUG}` and document `POST /messages/<id>/ack`.
- **Fleet propagation NOT run, deliberately.** `update_agent_instruction_files.py` regenerates each repository's whole CLAUDE.md, rules and AGENTS.md without committing. Across the fleet it would overwrite local customisations and leave ~120 dirty working trees. It is also unnecessary: agents on the old instructions already *see* standing notices at every inbox check, and the notice body tells them how to acknowledge. The template change reaches each repository whenever it is next regenerated for its own reasons. - **Fleet propagation NOT run, deliberately.** `update_agent_instruction_files.py` regenerates each repository's whole CLAUDE.md, rules and AGENTS.md without committing. Across the fleet it would overwrite local customisations and leave ~120 dirty working trees. It is also unnecessary: agents on the old instructions already *see* standing notices at every inbox check, and the notice body tells them how to acknowledge. The template change reaches each repository whenever it is next regenerated for its own reasons.
- The gate-house question (republish the archived v0.7 "start here" note as a standing notice?) was sent to gate-house. - The gate-house question (republish the archived v0.7 "start here" note as a standing notice?) was sent to gate-house.
## Closure, 2026-09-22
Finished. All state-hub-side work is done and released (rev 65, `main-ef541f5`).
T04 closed on its state-hub part: Codex MCP `mark_message_read(reader=)` and
`acknowledge_notice`, tests, TOOLS.md. The hub-core part is owned by hub-core
through handoff `69fc387c-5bd3-47bc-9a3f-d3d83b6dc213` (addendum `f8eecebf`):
`hub_core/mcp/server.py` signature changes and the `MessageCreate`/`MessageRead`
fields. Residual here, not tracked as a separate task: at the next hub-core pin
bump (normally under STATE-WP-0079), revert `api/schemas/agent_message.py` to a
pure re-export and restore the identity check in
`tests/test_hub_core_imports.py`.