diff --git a/workplans/CORE-WP-0005-data-migration-and-cutover.md b/workplans/CORE-WP-0005-data-migration-and-cutover.md index 21d8a9b..3f27817 100644 --- a/workplans/CORE-WP-0005-data-migration-and-cutover.md +++ b/workplans/CORE-WP-0005-data-migration-and-cutover.md @@ -60,7 +60,7 @@ Run public and protected smokes against both Inter-Hub and Core Hub. Record comp ```task id: CORE-WP-0005-T04 -status: wait +status: done priority: high state_hub_task_id: "fa68858a-b18e-4f09-a477-6b11e54099d4" ``` @@ -154,3 +154,20 @@ Content/shape deltas: T03 done: compatibility surface is characterized; the auth-hardening delta and the missing-catalog-vocabulary blocker are the two items the cutover decision must account for. + + +## Completion 2026-07-03 — production cutover executed + +Operator-approved and operator-executed flip: `hub.coulomb.social` ingress +moved from Inter-Hub to Core Hub (`core-hub` namespace, image `a33191a`). +Verified post-flip: cert-manager issued `core-hub-tls`; `/healthz` and +`/readyz` 200; public catalogs 200 serving 26 widget types (all formerly +orphaned `ops-*` types present); `/api/v2/hubs` 401 — the hardened contract +the ops-hub gate probe asserts. Post-flip idempotent reconcile import: 0 +created / 28 updated / 0 errors (no Inter-Hub writes were missed). + +Rollback remains one command (`30-ingress.yaml` delete + +`rollback-inter-hub-ingress.yaml` apply) and the Inter-Hub deployment stays +running untouched through the stabilization window. `CORE-WP-0007` Haskell +retirement stays gated until stabilization passes and the operator approves +retiring the fallback.