Expand T02 and progress notes with schedule, probes, ActivityDefinition ids, railiance01 deployment evidence, and cluster State Hub event routing.
195 lines
No EOL
7.3 KiB
Markdown
195 lines
No EOL
7.3 KiB
Markdown
---
|
||
id: CORE-WP-0007
|
||
type: workplan
|
||
title: "Retire Haskell/IHP infrastructure after Core Hub cutover"
|
||
domain: infotech
|
||
repo: core-hub
|
||
status: active
|
||
owner: codex
|
||
topic_slug: custodian
|
||
created: "2026-06-27"
|
||
updated: "2026-07-08"
|
||
state_hub_workstream_id: "a8d66822-e435-4b1e-ad81-37a298d1795e"
|
||
---
|
||
|
||
# Retire Haskell/IHP infrastructure after Core Hub cutover
|
||
|
||
Remove the Haskell dependency from the production interaction framework after the replacement is proven.
|
||
|
||
`CORE-WP-0005` finished 2026-07-03: `hub.coulomb.social` ingress now serves Core
|
||
Hub; Inter-Hub compatibility, staging import, dual-run smokes, and production
|
||
cutover gates are closed. Haskell retirement no longer waits on migration work —
|
||
it waits on a short post-cutover stabilization window, operator approval to
|
||
retire the Inter-Hub rollback deployment, and the four tasks below.
|
||
|
||
## Retire Probe Repo
|
||
|
||
```task
|
||
id: CORE-WP-0007-T01
|
||
status: done
|
||
priority: medium
|
||
state_hub_task_id: "d3a494a3-dc23-491f-af32-1d19120b3aae"
|
||
```
|
||
|
||
Rename or archive `ihp-railiance-probe` (`coulomb/ihp-railiance-probe`),
|
||
preserving `INTENT.md` and `DeploymentBlueprint.md` notes about the failed
|
||
IHP/GHC/Nix build path. `IRP-WP-0001` is already `done`; this task is
|
||
unblocked and can proceed independently of T02–T04.
|
||
|
||
## Rename Production Inter-Hub Repo
|
||
|
||
```task
|
||
id: CORE-WP-0007-T02
|
||
status: wait
|
||
priority: high
|
||
state_hub_task_id: "16eb7ce3-b574-4667-a189-c14ff5d0502b"
|
||
```
|
||
|
||
Rename `inter-hub` to `inter-hub-haskell` after operator stabilization sign-off
|
||
and approval to retire the Inter-Hub rollback path. Compatibility, migration,
|
||
and production cutover gates from `CORE-WP-0005` are satisfied; the Inter-Hub
|
||
k8s deployment in namespace `inter-hub` still runs as rollback-only (ingress
|
||
already moved — see `k8s/railiance-production/README.md`).
|
||
|
||
Stabilization evidence is collected automatically through 2026-07-10 by the
|
||
scheduled `core_hub_stabilization_check` / `core_hub_stabilization_closeout`
|
||
jobs (see runbook `docs/deployment/stabilization-signoff.md`). T02 unblocks
|
||
when the closeout passes (`operator_signoff_needed=true`) and the operator
|
||
records retirement approval in State Hub.
|
||
|
||
Scope when unblocked: Forgejo repo rename, registry/Helm/CI path updates in
|
||
`railiance-apps` and `railiance-forge`, and eventual scale-down of the
|
||
rollback deployment after the stabilization window closes.
|
||
|
||
## Decommission Haskell Build Lane
|
||
|
||
```task
|
||
id: CORE-WP-0007-T03
|
||
status: wait
|
||
priority: medium
|
||
state_hub_task_id: "bea9943c-916f-402f-a6d9-7907bb48137c"
|
||
```
|
||
|
||
Retire or park haskelseed runner labels, the `haskell-build` VM profile,
|
||
IHP/GHC/Nix/devenv docs, and build-machine workplans after T02 completes and no
|
||
active repo still needs Haskell image builds. Primary touchpoints:
|
||
`railiance-forge` runner substrate docs, `sand-boxer` `profile.vm-haskell-build`,
|
||
and `ops-bridge` haskelseed tunnel notes.
|
||
|
||
## Update Cross-Repo References
|
||
|
||
```task
|
||
id: CORE-WP-0007-T04
|
||
status: wait
|
||
priority: medium
|
||
state_hub_task_id: "ed7f8e01-5305-465c-8bfc-04bc47bfdf40"
|
||
```
|
||
|
||
After T02, update docs and workplans in consuming repos so production Inter-Hub
|
||
references point to Core Hub and historical Haskell context explicitly names
|
||
`inter-hub-haskell`. Known stale surfaces: `ops-hub` INTENT/SCOPE/README and
|
||
readiness docs; `activity-core` railiance probes and sink vocabulary;
|
||
`the-custodian` service catalog and drain plans. Core Hub specs and migration
|
||
fixtures already use `inter-hub-haskell` as the bundle `source` name.
|
||
|
||
|
||
## Progress 2026-07-07 — upstream gate cleared
|
||
|
||
`CORE-WP-0005` archived (`260703-CORE-WP-0005-data-migration-and-cutover.md`).
|
||
Production cutover executed 2026-07-03: Core Hub serves `hub.coulomb.social`;
|
||
post-flip reconcile import was idempotent (0 created / 28 updated / 0 errors);
|
||
rollback remains one kubectl command while the Inter-Hub deployment stays
|
||
running through stabilization.
|
||
|
||
Revised sequencing:
|
||
|
||
1. **T01** — unblocked; archive `ihp-railiance-probe` first (low risk).
|
||
2. **T02** — cutover prerequisites met; blocked on operator stabilization
|
||
sign-off and approval to retire the Inter-Hub rollback deployment.
|
||
3. **T03** — blocked on T02 and confirmation that no repo still schedules
|
||
Haskell builds through haskelseed.
|
||
4. **T04** — blocked on T02 so references use the final repo name.
|
||
|
||
Related finished workplans: `CORE-WP-0004` (compatibility smokes),
|
||
`CORE-WP-0005` (migration/cutover), `CORE-WP-0008` (deployed ops evidence).
|
||
|
||
|
||
## Completion 2026-07-07 — T01 probe repo archived
|
||
|
||
`ihp-railiance-probe` retired in-repo:
|
||
|
||
- `README.md` marks the repo archived and points to preserved docs
|
||
- `INTENT.md` and `SCOPE.md` updated with retirement context
|
||
- `IRP-WP-0001` moved to
|
||
`workplans/archived/260707-IRP-WP-0001-pipeline-validation.md` (`status:
|
||
archived`)
|
||
- Gitea/Forgejo CI workflows switched to `workflow_dispatch` only (no push
|
||
triggers)
|
||
|
||
Forgejo repo archived on `gitea.coulomb.social` (2026-07-07); git history and
|
||
diagnostic docs remain available read-only.
|
||
|
||
|
||
## Progress 2026-07-07 — stabilization job live on railiance01
|
||
|
||
Post-cutover stabilization checks for T02 operator sign-off are implemented and
|
||
deployed. Runbook: `docs/deployment/stabilization-signoff.md`.
|
||
|
||
### Window and schedule
|
||
|
||
| Item | Value |
|
||
| --- | --- |
|
||
| Window start | 2026-07-03 (production cutover) |
|
||
| Window end | 2026-07-10T17:35:00Z |
|
||
| Daily check | 09:00 Europe/Berlin |
|
||
| Closeout | one-shot at window end |
|
||
|
||
Runs outside the window record `skipped` with `reason=outside_stabilization_window`.
|
||
|
||
### Automated checks (`core-hub` / `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`.
|
||
|
||
### Activity definitions (canonical 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` |
|
||
|
||
Files: `activity-definitions/core-hub-stabilization-{daily,closeout}.md`, projected
|
||
into `activity-core/k8s/railiance/20-runtime.yaml`. Progress events bind to
|
||
workstream `a8d66822…` / task `16eb7ce3…` (T02).
|
||
|
||
### Manual companion
|
||
|
||
```bash
|
||
make stabilization-check # scripts/core_hub_stabilization_check.sh
|
||
```
|
||
|
||
Optional: `make deployed-smoke` with `CORE_HUB_OPERATOR_TOKEN_FILE` for full
|
||
bootstrap evidence; `ops-hub` `make interhub-gate` against `hub.coulomb.social`.
|
||
|
||
### activity-core deployment (railiance01)
|
||
|
||
- Image: `activity-core:railiance01-prod` rebuilt and imported into k3s
|
||
- Resolver: `activity-core` `core-hub` context adapter (`stabilization_check`)
|
||
- Evidence sink fix: `core-hub` sources now post State Hub progress
|
||
(`activity-core` `726da05`)
|
||
- Deployed: `actcore-api`, `actcore-worker`, `actcore-event-router` rolled out;
|
||
`actcore-sync` registered both schedules on Temporal
|
||
- 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; base=https://hub.coulomb.social;
|
||
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`. Query via `state-hub-primary` tunnel or
|
||
from inside the `activity-core` pod when reviewing evidence. |