activity-core/workplans/ACTIVITY-WP-0029-hub-port-alignment.md
tegwick f6cfc28c33
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Container Image / build-and-push (push) Successful in 32s
feat(ACTIVITY-WP-0029): inventory callers, retarget sweep, bound execution
Map every State Hub/core-hub caller to a post-retirement owner. Keep the
15-minute sweep schedule here and point the engine at repo-manager
(State Hub dual-run by default, REPO_MANAGER_URL when present). Publish
GET /execution/semantics and 410 workplan launch routes so State Hub
/execution/* is not re-homed as a task database. T03 still waits on
HUB-WP-0004.
2026-08-18 10:52:56 +02:00

143 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: ACTIVITY-WP-0029
type: workplan
title: "Hub port and schedule alignment for State Hub retirement"
domain: infotech
repo: activity-core
status: active
owner: grok
topic_slug: infotech
created: "2026-08-09"
updated: "2026-08-18"
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: "1b18849c-db3a-40a0-8f22-7af7fd4dbcfc"
---
# Hub port and schedule alignment for State Hub retirement
## Goal
Align activity-core **schedules, sinks, and the execution-queue boundary** with
the postState 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: "03021be2-5d60-455b-9c9c-b8681d65911c"
```
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: "f8107e2b-ab1f-4a3b-9348-8d5dcfb647b4"
```
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: wait
priority: medium
state_hub_task_id: "3fbadbfe-9107-4869-b53f-3b9b46e0555a"
```
Wait on **HUB-WP-0004** (ports still `proposed`) and the CORE-WP-0010
absorption path. Interaction-event / progress evidence follows the
**hub-core** runtime, not a permanent core-hub or State Hub host. Update
smokes when the port exists. Until then, keep the State Hub beachhead
(ACTIVITY-WP-0015) as the compatibility sink.
## Execution queue boundary
```task
id: ACTIVITY-WP-0029-T04
status: done
priority: medium
state_hub_task_id: "a34b42c3-8a08-482b-936f-14675ee254ca"
```
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] Evidence sink plan names hub-core as the permanent host; T03 stays wait until that port exists
- [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)