2026-08-09 21:22:55 +02:00
|
|
|
|
---
|
|
|
|
|
|
id: ACTIVITY-WP-0029
|
|
|
|
|
|
type: workplan
|
|
|
|
|
|
title: "Hub port and schedule alignment for State Hub retirement"
|
|
|
|
|
|
domain: infotech
|
|
|
|
|
|
repo: activity-core
|
2026-08-22 22:51:13 +02:00
|
|
|
|
status: finished
|
2026-08-18 10:27:29 +02:00
|
|
|
|
owner: grok
|
2026-08-09 21:22:55 +02:00
|
|
|
|
topic_slug: infotech
|
|
|
|
|
|
created: "2026-08-09"
|
2026-08-22 22:51:13 +02:00
|
|
|
|
updated: "2026-08-22"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
parent_project: prj-state-hub-retirement
|
|
|
|
|
|
parent_workplan: SHR-WP-0001
|
2026-08-18 10:27:29 +02:00
|
|
|
|
stream: S5
|
2026-08-09 21:22:55 +02:00
|
|
|
|
related:
|
|
|
|
|
|
- ACTIVITY-WP-0015
|
|
|
|
|
|
- ACTIVITY-WP-0017
|
2026-08-18 10:27:29 +02:00
|
|
|
|
- ACTIVITY-WP-0026
|
2026-08-09 21:22:55 +02:00
|
|
|
|
- HUB-WP-0004
|
2026-08-18 10:27:29 +02:00
|
|
|
|
- RMGR-WP-0001
|
2026-08-09 21:22:55 +02:00
|
|
|
|
- STATE-WP-0079
|
2026-08-18 10:27:29 +02:00
|
|
|
|
- CORE-WP-0010
|
|
|
|
|
|
- SHR-ARCH-HUB-0001
|
2026-08-25 20:05:21 +02:00
|
|
|
|
state_hub_workstream_id: "0890b1cf-fed0-5c5e-8f7a-d5799b997532"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Hub port and schedule alignment for State Hub retirement
|
|
|
|
|
|
|
|
|
|
|
|
## Goal
|
|
|
|
|
|
|
2026-08-18 10:27:29 +02:00
|
|
|
|
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
|
2026-08-09 21:22:55 +02:00
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: ACTIVITY-WP-0029-T01
|
2026-08-18 10:52:56 +02:00
|
|
|
|
status: done
|
2026-08-09 21:22:55 +02:00
|
|
|
|
priority: high
|
2026-08-25 20:05:21 +02:00
|
|
|
|
state_hub_task_id: "eef44f5f-1866-5539-adcf-661eeca2419b"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-18 10:27:29 +02:00
|
|
|
|
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.
|
2026-08-09 21:22:55 +02:00
|
|
|
|
|
|
|
|
|
|
## Retarget consistency sweep
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: ACTIVITY-WP-0029-T02
|
2026-08-18 10:52:56 +02:00
|
|
|
|
status: done
|
2026-08-09 21:22:55 +02:00
|
|
|
|
priority: high
|
2026-08-25 20:05:21 +02:00
|
|
|
|
state_hub_task_id: "13465801-fe1c-519c-935e-652376b6126a"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-18 10:27:29 +02:00
|
|
|
|
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.
|
2026-08-09 21:22:55 +02:00
|
|
|
|
|
|
|
|
|
|
## Align ops evidence sink
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: ACTIVITY-WP-0029-T03
|
2026-08-22 22:51:13 +02:00
|
|
|
|
status: done
|
2026-08-09 21:22:55 +02:00
|
|
|
|
priority: medium
|
2026-08-25 20:05:21 +02:00
|
|
|
|
state_hub_task_id: "2d21912e-32af-5baa-b9f3-ec059d4aa69e"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-22 22:51:13 +02:00
|
|
|
|
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.
|
2026-08-09 21:22:55 +02:00
|
|
|
|
|
|
|
|
|
|
## Execution queue boundary
|
|
|
|
|
|
|
|
|
|
|
|
```task
|
|
|
|
|
|
id: ACTIVITY-WP-0029-T04
|
2026-08-18 10:52:56 +02:00
|
|
|
|
status: done
|
2026-08-09 21:22:55 +02:00
|
|
|
|
priority: medium
|
2026-08-25 20:05:21 +02:00
|
|
|
|
state_hub_task_id: "fc67e34c-25a1-5c3a-9766-fb79c76aef00"
|
2026-08-09 21:22:55 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-18 10:27:29 +02:00
|
|
|
|
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.
|
2026-08-09 21:22:55 +02:00
|
|
|
|
|
|
|
|
|
|
## Acceptance
|
|
|
|
|
|
|
2026-08-18 10:52:56 +02:00
|
|
|
|
- [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)
|
2026-08-22 22:51:13 +02:00
|
|
|
|
- [x] Ops evidence uses hub-core's canonical interaction port; the legacy Core Hub sink is rollback-only
|
2026-08-18 10:52:56 +02:00
|
|
|
|
- [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)
|