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
154 lines
6.3 KiB
Markdown
154 lines
6.3 KiB
Markdown
---
|
||
id: ACTIVITY-WP-0029
|
||
type: workplan
|
||
title: "Hub port and schedule alignment for State Hub retirement"
|
||
domain: infotech
|
||
repo: activity-core
|
||
status: finished
|
||
owner: grok
|
||
topic_slug: infotech
|
||
created: "2026-08-09"
|
||
updated: "2026-08-22"
|
||
parent_project: prj-state-hub-retirement
|
||
parent_workplan: SHR-WP-0001
|
||
stream: S5
|
||
related:
|
||
- ACTIVITY-WP-0015
|
||
- ACTIVITY-WP-0017
|
||
- ACTIVITY-WP-0026
|
||
- HUB-WP-0004
|
||
- RMGR-WP-0001
|
||
- STATE-WP-0079
|
||
- CORE-WP-0010
|
||
- SHR-ARCH-HUB-0001
|
||
state_hub_workstream_id: "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
|
||
|
||
```task
|
||
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
|
||
|
||
```task
|
||
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
|
||
|
||
```task
|
||
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
|
||
|
||
```task
|
||
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
|
||
|
||
- [x] Caller map lists owner + current URL for every State Hub / core-hub call
|
||
(`docs/state-hub-caller-map.md`)
|
||
- [x] Sweep still fires from activity-core and hits repo-manager (or dual-run)
|
||
(`CONSISTENCY_SWEEP_URL` / `REPO_MANAGER_URL`; default State Hub adapter)
|
||
- [x] Ops evidence uses hub-core's canonical interaction port; the legacy Core Hub sink is rollback-only
|
||
- [x] 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)
|