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
174 lines
6.5 KiB
Markdown
174 lines
6.5 KiB
Markdown
---
|
||
id: CORE-WP-0010
|
||
type: workplan
|
||
title: "Runtime absorption into hub-core and archive"
|
||
domain: infotech
|
||
repo: core-hub
|
||
status: active
|
||
owner: codex
|
||
topic_slug: infotech
|
||
created: "2026-08-09"
|
||
updated: "2026-08-21"
|
||
parent_project: prj-state-hub-retirement
|
||
parent_workplan: SHR-WP-0001
|
||
related:
|
||
- CORE-WP-0009
|
||
- CORE-WP-0011
|
||
- HUB-WP-0004
|
||
- SHR-ARCH-HUB-0001
|
||
state_hub_workstream_id: "9cc1abf3-2ab0-54a4-a250-83f382a49441"
|
||
---
|
||
|
||
# Runtime absorption into hub-core and archive
|
||
|
||
## Goal
|
||
|
||
Move production framework responsibility from this repository into the
|
||
consolidated **hub-core runtime**, preserve `/api/v2` consumer compatibility
|
||
through dual-run, then **archive core-hub** read-only with evidence.
|
||
|
||
Parent project: `prj-state-hub-retirement`. Depends on **HUB-WP-0004**.
|
||
|
||
## Sequencing decision — 2026-08-20
|
||
|
||
The CoulombCore decommission does not force the unresolved hub-core
|
||
library-vs-thin-host decision. Production continuity is decoupled through
|
||
`CORE-WP-0011`, which moves the existing Core Hub service to railiance01
|
||
first. The absorption work cannot proceed until `HUB-WP-0004` settles the
|
||
durable runtime boundary; it must not sit on the critical path for leaving
|
||
CoulombCore.
|
||
|
||
## Readiness and blocker review — 2026-08-21
|
||
|
||
At the start of the review, `CORE-WP-0011` was finished and the runtime surface
|
||
inventory was complete, but `HUB-WP-0004` was still proposed. Its runtime
|
||
packaging (`T03`), minimal ports (`T04`), and joint absorption plan (`T06`) were
|
||
therefore recorded as the blockers. The advancement below supersedes that
|
||
dependency snapshot.
|
||
|
||
## Dependency advancement — 2026-08-21
|
||
|
||
Hub-core has completed `HUB-WP-0004-T01`–`T05` in its file-backed workplan and
|
||
State Hub: the primary-image decision, Tier 1 contracts, minimal port runtime,
|
||
and initial conformance harness now exist. The paired design is recorded in
|
||
`docs/specs/runtime-absorption-plan.md`, completing this workplan's T02 input
|
||
and the Core Hub half of `HUB-WP-0004-T06`. Hub-core then completed T06 with
|
||
the canonical joint record in `hub-core/docs/core-hub-absorption-plan.md`,
|
||
decision `12514947-6cc0-42a0-98ca-9aacc9d875b0`, and coordination message
|
||
`819d5af0-959f-4b0d-9f52-87514d99b480`.
|
||
|
||
Hub-core revision `7e1ec03` is committed and pushed with T01–T06 complete. S0
|
||
can therefore begin. It must replace the deliberately ephemeral in-memory
|
||
backend with a production PostgreSQL boundary and produce an immutable image
|
||
before any public route is eligible to move; those are implementation gates,
|
||
not reasons to reopen the architecture decision.
|
||
|
||
## Inventory runtime surfaces to absorb
|
||
|
||
```task
|
||
id: CORE-WP-0010-T01
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "2fc63743-20f4-5794-9b9e-c931eb02904d"
|
||
```
|
||
|
||
List routes, models, widgets, manifests, consumer smokes, and deploy assets that
|
||
must move or remain as historical fixtures. Cross-check Inter-Hub inventory and
|
||
ops-hub bootstrap.
|
||
|
||
Completed 2026-08-21. The inventory records public/operator routes, durable
|
||
models, fixtures, consumer gates, extension-port coverage, deploy ownership,
|
||
and move constraints.
|
||
|
||
## Dual-run design
|
||
|
||
```task
|
||
id: CORE-WP-0010-T02
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "0c1f1c20-54e5-5982-b72a-357292a37190"
|
||
```
|
||
|
||
Define how hub-core serves equivalent `/api/v2` (or compatible gateway) while
|
||
core-hub remains rollback. Include feature flags, traffic shift, and smoke
|
||
ownership.
|
||
|
||
Completed 2026-08-21. `docs/specs/runtime-absorption-plan.md` defines the
|
||
route-group order, one-writer rule, data/delta checks, compatibility adapters,
|
||
consumer gates, traffic controls, rollback, evidence, and ownership. It is
|
||
aligned with hub-core's accepted canonical plan; `HUB-WP-0004-T06` is done.
|
||
|
||
## Execute absorption slices
|
||
|
||
```task
|
||
id: CORE-WP-0010-T03
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "cb0971b7-fca8-5048-b8db-9efedd37d280"
|
||
```
|
||
|
||
Migrate in slices with consumer smokes (ops-hub, activity-core) after each.
|
||
Record row counts and fixture replays per slice.
|
||
|
||
Completed 2026-08-21. Hub-core revision `055cf49` and immutable image
|
||
`sha256:adf580d09a4a9139b1663c41d59d46903a007e03a3ae567e09b8a6ec23708ab8`
|
||
provide the durable PostgreSQL store, audit ledger, complete compatibility
|
||
surface, fail-closed writer controls, and lossless migration tooling. The live
|
||
seven-table import was repeatable and preserved exact counts, identity sets,
|
||
and canonical content hashes; restart persistence and reverse export also
|
||
matched. Hub-core conformance passed 8/8, and the public ops-hub and
|
||
activity-core consumer gates passed before and after rollback recovery.
|
||
|
||
## Cutover production traffic
|
||
|
||
```task
|
||
id: CORE-WP-0010-T04
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "49bc4782-365f-5f6b-ac20-03690be57176"
|
||
```
|
||
|
||
With operator approval, point production at hub-core runtime; verify consumer
|
||
smokes and interaction evidence path.
|
||
|
||
Completed 2026-08-21 with operator approval. All five route groups and all
|
||
four mutable writer groups now belong to hub-core; Core Hub remains Ready with
|
||
an empty writer set as rollback. Helm rollback to the pre-cutover runtime was
|
||
exercised at revision 19, followed by successful forward recovery to revision
|
||
20 and repeat conformance, consumer, image, readiness, and writer-fence gates.
|
||
Evidence is recorded in
|
||
`docs/evidence/core-hub-hub-core-cutover-2026-08-21.md`.
|
||
|
||
## Archive repository
|
||
|
||
```task
|
||
id: CORE-WP-0010-T05
|
||
status: progress
|
||
priority: medium
|
||
state_hub_task_id: "6e67fd41-3f52-5085-85b6-1661c322e290"
|
||
```
|
||
|
||
Write completion record (revisions, PRs, residual owners), set read-only archive
|
||
on forge, and hand residual work as live records outside this repo.
|
||
|
||
Production cutover is complete. Wait through the stabilization interval that
|
||
started at 2026-08-21T20:49:50+02:00 and ends no earlier than
|
||
2026-08-28T20:49:50+02:00. Then record the final review, archive this
|
||
repository read-only on Forgejo, and hand any remaining product-intent gaps to
|
||
live records outside this repository.
|
||
|
||
Archive preparation started 2026-08-21. `docs/deployment/archive-closeout.md`
|
||
now freezes feature development here, records live residual owners, preserves
|
||
non-destructive retention boundaries, and defines the ordered final checklist.
|
||
`docs/deployment/stabilization-signoff.md` and
|
||
`make stabilization-check` define the current fail-closed production gate.
|
||
Only elapsed stabilization, final observations, operator approval, rollback
|
||
scale-down, and the read-only Forgejo action remain.
|
||
|
||
## Acceptance
|
||
|
||
- [x] Absorption inventory complete
|
||
- [x] Dual-run design approved/recorded
|
||
- [x] Consumer smokes pass on hub-core host
|
||
- [x] Production traffic cut over with evidence
|
||
- [ ] core-hub archived read-only; residuals owned elsewhere
|