fix(retirement): close projection and launch contract gaps
All checks were successful
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Build and Publish Multi-Context Image / build-and-push (push) Successful in 23s

Assistant: codex
Assistant-Model: gpt-5.6-sol
Assistant-Session: 01a02b7c-1c49-76a0-955a-49e7b3ddfc0d
This commit is contained in:
tegwick 2026-08-23 00:52:18 +02:00
parent c43266f626
commit b0e1af24f9
13 changed files with 1717 additions and 50 deletions

View file

@ -8,7 +8,7 @@ status: active
owner: codex
topic_slug: infotech
created: "2026-08-09"
updated: "2026-08-22"
updated: "2026-08-23"
parent_project: prj-state-hub-retirement
parent_workplan: SHR-WP-0001
related:
@ -247,6 +247,25 @@ and were not ingested. Production aliases remain empty as expected for a rebuild
rather than an in-place rewrite. Widening beyond this one-repository pilot still
requires a separate fleet cutover decision.
**Sealed pre-derivation repair interface approved with safeguards
(2026-08-23):** Repo Manager interface
`helixforge.identifiers.state-hub-sealed-projection-repair.v1` is accepted as a
temporary T04 compatibility sub-slice. The owner implementation adds
`POST /identifier-migrations/sealed-projection-repairs` and keeps ordinary C-03
refusal unchanged. Repair is limited to one explicitly named workplan and all
of its sealed `replace` task mappings; it requires the exact plan seal, clean
synchronized Git revision and source fingerprint, explicit primary
confirmation, existing repository/topic projection, and complete absence of
both the old unit and derived targets. Creation is one database transaction;
an exact retry returns a verified no-op receipt, while partial presence, source
drift, aliases, target rows, or content mismatch fail closed. Operational and
removal contract: `docs/sealed-prederivation-projection-repair.md`.
Verification: focused identifier-migration coverage passes (`13 passed`), the
ordinary consistency suite passes (`129 passed`), and the full API plus
dashboard build passes (`650 passed`). The full run retained one pre-existing
SQLAlchemy resource warning and one pre-existing dashboard link warning.
**A2a executed (2026-08-20) — first live cutover slice.** Dual-run is on for the
pilot repo:
@ -331,7 +350,7 @@ re-scaffolding.
```task
id: STATE-WP-0079-T05
status: todo
status: progress
priority: medium
state_hub_task_id: "02e508ed-3cde-4487-907e-d324a8a877d6"
```
@ -398,6 +417,18 @@ freeze window, not now.
Then `dashboard-meta` (E3, 1); `legacy-meter` itself (E4, 9) retires last,
being the instrument.
**Execution launch-request defect closed (2026-08-23):** the surviving
`POST /execution/launch-requests` route claimed Activity Core pickup after that
mapping was explicitly retired by `ACTIVITY-WP-0029-T04`. New submissions now
return 410 with the repository-file / ActivityDefinition+ops_run replacement;
`GET /execution/semantics` explicitly says launch requests are not accepted,
that Activity Core does not consume them, and that legacy `launching` does not
prove pickup. Historical launch rows remain readable. The two reported
requests (`7052b20f…`, `5628fe55…`) were cancelled as never consumed and their
workplans restored from `launching/immediate` to `manual/manual`.
Focused execution coverage passes (`4 passed`); the combined full regression
and dashboard build remains green (`650 passed`).
## Stabilization window and archive prep
```task