Reduce open work: archive CUST-WP-0038, finish STATE-WP-0093, trim STATE-WP-0079
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:
parent
5f236e3500
commit
56672bbf69
3 changed files with 67 additions and 15 deletions
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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`.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue