These workplans exist only in the retired local hub. Their random pre-ADR-007 identifiers are refused by C-06 as stale references, so they cannot be registered. Deriving from the canonical record id takes no identity from anything: central does not hold them and the old ids die with the cache. Records central already holds were deliberately left untouched. Refs CUST-WP-0068-T06 Assistant: claude-code Assistant-Model: opus Assistant-Process: 2583210@bnt-lap001 Assistant-Session: f2bff2d5-e9b2-4338-92ca-10282a927006
6.3 KiB
| id | type | title | domain | repo | status | owner | topic_slug | created | updated | parent_project | parent_workplan | stream | related | state_hub_workstream_id | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ACTIVITY-WP-0029 | workplan | Hub port and schedule alignment for State Hub retirement | infotech | activity-core | finished | grok | infotech | 2026-08-09 | 2026-08-22 | prj-state-hub-retirement | SHR-WP-0001 | S5 |
|
0890b1cf-fed0-5c5e-8f7a-d5799b997532 |
Hub port and schedule alignment for State Hub retirement
Goal
Align activity-core schedules, sinks, and the execution-queue boundary with the post–State Hub owners so this repo stays the Event Bridge (when / what / where) and does not absorb work that now has a clearer home.
Reviewed 2026-08-18 against prj-state-hub-retirement (SHR-ARCH-HUB-0001,
SHR-INV-0001, child-workplan map S5), repo-manager INTENT,
info-tech-canon (Task / Organization / Governance / Repository Layout),
and policy-nexus INTENT.
Responsibility map
activity-core owns schedule fire, rule/instruction evaluation, bounded declared side-effects, spawn/run evidence, and the ops_run claim queue (ACTIVITY-WP-0026). It does not own the things it currently calls.
| Concern | Owner | activity-core role |
|---|---|---|
| Cron / event / one-shot fire | activity-core | Authority |
| Ops-run claim / lease | activity-core | Authority (not a task database) |
| Work-item semantics (Task, Commitment, TaskState) | info-tech-canon | Consume vocabulary; do not redefine |
| Who is responsible / accountable | info-tech-canon Organization Model | Do not invent org roles here |
| Policy content (canon, ADRs) | Owning repo | Local files stay source of truth |
| Policy publication | policy-nexus | Do not publish or host policy |
| Regulatory interpretation | risk-nexus | Out of scope |
| Repo registry, file↔index consistency, work-record index | repo-manager | Schedule the sweep; do not own C-rules |
| Messages, progress projections, hub ports | hub-core (surviving runtime) | Sink / consume after HUB-WP-0004 |
core-hub /api/v2 |
CORE-WP-0010 → absorbed into hub-core | Temporary dual-run only |
| Issue projection | issue-core | Optional ISSUE_SINK_TYPE=rest |
| State Hub routes used today | STATE-WP-0079 strangler | Compatibility until cutover |
Naming: hub-core is the surviving framework and runtime (SHR-ARCH-HUB-0001). core-hub is the current production host to be archived. Do not treat them as interchangeable, and do not add permanent authorities on State Hub.
Inventory split that T02 must honour (job:consistency-sweep-remote-all):
activity-core stays the executor; the reconciliation engine moves to
repo-manager (route:POST:/consistency/sweep/remote-all, disposition move).
T04 is a replace of State Hub /execution/* onto activity-core. That is
schedule / launch / ops_run ownership, not workplan file authority (repos)
and not task lifecycle (issue-core / work records / ITC Task Model).
Out of this workplan: SBOM catch-up (CUST-WP-0062 / ACTIVITY-WP-0030, parked).
Map current State Hub / hub-core callers
id: ACTIVITY-WP-0029-T01
status: done
priority: high
state_hub_task_id: "eef44f5f-1866-5539-adcf-661eeca2419b"
Inventory schedules, sinks, and context resolvers that call State Hub or
core-hub APIs. For each caller record: current URL, SHR-INV item if any,
target owner (table above), and target port when HUB-WP-0004 has named it
(port.schedule is ours to consume, not to invent in hub-core).
Do not retarget a caller to activity-core just because we schedule it.
Retarget consistency sweep
id: ACTIVITY-WP-0029-T02
status: done
priority: high
state_hub_task_id: "13465801-fe1c-519c-935e-652376b6126a"
Keep the activity-core schedule. Point the remote sweep at repo-manager (or the existing State Hub dual-run adapter until RMGR cutover) without losing C-rule coverage. RMGR-WP-0001 is finished; do not re-implement consistency inside this repo.
Align ops evidence sink
id: ACTIVITY-WP-0029-T03
status: done
priority: medium
state_hub_task_id: "2d21912e-32af-5baa-b9f3-ec059d4aa69e"
HUB-WP-0004 finished and hub-core became production authority on 2026-08-21.
Activity-core now implements hub-core-interaction-event against canonical
POST /ports/events/interaction, then verifies the accepted id through
GET /ports/projections/interaction_events. The Railiance projection points
HUB_CORE_BASE_URL at the in-cluster hub-core runtime and uses this sink; it
does not require the legacy Core Hub widget mapping/runtime-token contract.
The old core-hub-interaction-event compatibility sink remains available for
the no-writer rollback window, but is no longer the configured probe path.
General progress callers not yet moved by the retirement strangler continue to
use the State Hub beachhead rather than creating another permanent authority.
Unit and deployment-wiring tests cover catalog envelope shape, readback,
sanitization, missing configuration, and the in-cluster target. A disposable
integration smoke against hub-core 0.2.0 returned 202 Accepted from the
canonical interaction port and verified the new event through the interaction
projection.
Execution queue boundary
id: ACTIVITY-WP-0029-T04
status: done
priority: medium
state_hub_task_id: "fc67e34c-25a1-5c3a-9766-fb79c76aef00"
Document the contract first, then replace State Hub /execution/* callers
with activity-core (ops_run / launch), matching SHR-INV
workplan-execution-queue. Explicit non-goals: repo-manager work-record
index, issue-core lifecycle, ITC Task Model types, policy-nexus publication.
Acceptance
- Caller map lists owner + current URL for every State Hub / core-hub call
(
docs/state-hub-caller-map.md) - Sweep still fires from activity-core and hits repo-manager (or dual-run)
(
CONSISTENCY_SWEEP_URL/REPO_MANAGER_URL; default State Hub adapter) - Ops evidence uses hub-core's canonical interaction port; the legacy Core Hub sink is rollback-only
- Execution boundary is written so
/execution/*cannot be read as "activity-core owns tasks" (docs/execution-queue-boundary.md,GET /execution/semantics, 410 on workplan routes)