From 8f8b0f7ca7b6771a9c24c39575e498b4d3472f49 Mon Sep 17 00:00:00 2001 From: codex Date: Wed, 8 Jul 2026 11:31:04 +0200 Subject: [PATCH] docs(CUST-WP-0025-T17): add stabilization closeout gate details Document the automated post-cutover stabilization window, scheduled activity-core jobs, probe contract, railiance01 deploy evidence, and operator sign-off coupling to CORE-WP-0007-T02. --- workplans/CUST-WP-0025-fos-hub-bootstrap.md | 54 +++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/workplans/CUST-WP-0025-fos-hub-bootstrap.md b/workplans/CUST-WP-0025-fos-hub-bootstrap.md index a2ad31c..10471a8 100644 --- a/workplans/CUST-WP-0025-fos-hub-bootstrap.md +++ b/workplans/CUST-WP-0025-fos-hub-bootstrap.md @@ -550,6 +550,60 @@ on `hub.coulomb.social`, and supersede decisions recorded for `CUST-WP-0047-T05` and `CUST-WP-0049-T06`. Inter-Hub remains rollback-only through `CORE-WP-0007` stabilization sign-off. +### Stabilization closeout gate (2026-07-07 → 2026-07-10) + +Automated post-cutover stabilization for `CORE-WP-0007-T02` operator sign-off +is live. Runbook: `/home/worsch/core-hub/docs/deployment/stabilization-signoff.md`. +Progress events bind to workstream `a8d66822-e435-4b1e-ad81-37a298d1795e` / +task `16eb7ce3-b574-4667-a189-c14ff5d0502b` (`CORE-WP-0007-T02`). + +| Item | Value | +| --- | --- | +| Window start | 2026-07-03 (production cutover) | +| Window end | 2026-07-10T17:35:00Z (closeout job) | +| Daily check | 09:00 Europe/Berlin via activity-core | +| Closeout | one-shot at window end | + +**Automated checks** (`core-hub` context resolver `stabilization_check`): + +| Probe | Expected | +| --- | --- | +| `GET /healthz` | 200 | +| `GET /readyz` | 200 | +| `GET /api/v2/widget-types` | 200, count ≥ 26 | +| `GET /api/v2/hubs` (unauthenticated) | 401 | + +Closeout sets `operator_signoff_needed=true` when `overall_pass=true`. Operator +sign-off criteria: daily/closeout pass through the window, no rollback invoked +since cutover, and explicit approval to retire the Inter-Hub k8s rollback +deployment. + +**Scheduled jobs** (canonical ActivityDefinitions in `core-hub`): + +| Job | ActivityDefinition id | State Hub `event_type` | +| --- | --- | --- | +| Daily | `b4c8e2f1-6a3d-4e5b-9f0c-2d7e8a1b3c4d` | `core_hub_stabilization_check` | +| Closeout | `c5d9f3a2-7b4e-5f6c-0a1d-3e8f9b2c4d5e` | `core_hub_stabilization_closeout` | + +Projected into `activity-core/k8s/railiance/20-runtime.yaml`. Manual companion: +`make stabilization-check` in `core-hub` (`scripts/core_hub_stabilization_check.sh`). + +**activity-core on railiance01** (deployed 2026-07-07): + +- Image `activity-core:railiance01-prod` rebuilt/imported; `actcore-api`, + `actcore-worker`, `actcore-event-router` rolled out; `actcore-sync` registered + both schedules on Temporal. +- Evidence sink fix (`activity-core` `726da05`): `core-hub` sources now post + State Hub progress. +- First live event (cluster State Hub + `http://state-hub.state-hub.svc.cluster.local:8000`, 2026-07-07T22:43:55Z): + `Core Hub stabilization daily: pass; widget_types=26/26`. + +Note: activity-core posts to the **cluster** State Hub on railiance01, not the +workstation fallback at `127.0.0.1:8000`. T17 coupling is closed; Haskell +retirement (`CORE-WP-0007-T02`–`T04`) unblocks only after closeout pass and +operator approval recorded in State Hub. + ### T18 — Core Hub operator UI first screens ```task