finish(CORE-WP-0007): retire Haskell/IHP infrastructure after Core Hub cutover
Operator sign-off recorded. Inter-Hub renamed to inter-hub-haskell on Forgejo, rollback deployments scaled to 0, haskell build lane parked, and cross-repo references updated. Workplan archived.
This commit is contained in:
parent
d1c493170f
commit
82f7dc2029
1 changed files with 38 additions and 5 deletions
228
workplans/archived/260708-CORE-WP-0007-haskell-retirement.md
Normal file
228
workplans/archived/260708-CORE-WP-0007-haskell-retirement.md
Normal file
|
|
@ -0,0 +1,228 @@
|
|||
---
|
||||
id: CORE-WP-0007
|
||||
type: workplan
|
||||
title: "Retire Haskell/IHP infrastructure after Core Hub cutover"
|
||||
domain: infotech
|
||||
repo: core-hub
|
||||
status: finished
|
||||
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: done
|
||||
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: done
|
||||
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: done
|
||||
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.
|
||||
|
||||
|
||||
## Completion 2026-07-08 — Haskell retirement closed
|
||||
|
||||
Operator sign-off recorded after repeated public stabilization probe pass
|
||||
(2026-07-03 → 2026-07-08; all checks green on 2026-07-08 manual run).
|
||||
|
||||
### T02 — Inter-Hub repo rename and rollback retirement
|
||||
|
||||
- Forgejo/Gitea rename `coulomb/inter-hub` → `coulomb/inter-hub-haskell` on
|
||||
railiance01 (`forgejo.coulomb.social`) and CoulombCore (`gitea.coulomb.social`)
|
||||
- Rollback deployments scaled to `0` on CoulombCore (`inter-hub` namespace) and
|
||||
railiance01; stale railiance01 ingress for `hub.coulomb.social` removed
|
||||
- `hub.coulomb.social` continues to serve Core Hub (`/healthz` 200)
|
||||
- `inter-hub` repo: README retirement banner, CI `workflow_dispatch` only,
|
||||
registry paths updated to `inter-hub-haskell`
|
||||
|
||||
### T03 — Haskell build lane parked
|
||||
|
||||
- `sand-boxer/profiles/profile.vm-haskell-build.yaml` marked `retired`
|
||||
- `railiance-forge/docs/gitea-actions-runner-substrate.md` notes haskelseed lane
|
||||
parked; no new Haskell/IHP image builds scheduled
|
||||
- `ops-bridge/wiki/OpsBridge.md` documents haskelseed build lane retirement
|
||||
|
||||
### T04 — Cross-repo references updated
|
||||
|
||||
- `ops-hub` INTENT/SCOPE/README → Core Hub production surface
|
||||
- `activity-core/SCOPE.md` → Core Hub ops evidence intake
|
||||
- `the-custodian/ops/service-inventory.yml` → `inter-hub-haskell` retired entry
|
||||
- `the-custodian/docs/core-hub-cutover-decision-coupling.md` → fallback no longer
|
||||
required
|
||||
- `railiance-apps` chart metadata and `docs/inter-hub-on-railiance01.md` retired
|
||||
- `ihp-railiance-probe/README.md` link updated
|
||||
Loading…
Add table
Add a link
Reference in a new issue