diff --git a/workplans/CORE-WP-0005-data-migration-and-cutover.md b/workplans/CORE-WP-0005-data-migration-and-cutover.md index 4d8d61d..c33992f 100644 --- a/workplans/CORE-WP-0005-data-migration-and-cutover.md +++ b/workplans/CORE-WP-0005-data-migration-and-cutover.md @@ -47,7 +47,7 @@ actual import can run. ```task id: CORE-WP-0005-T03 -status: wait +status: done priority: high state_hub_task_id: "9166afe8-27ef-4345-a7b1-c33f15c90673" ``` @@ -84,3 +84,40 @@ second run proved idempotency (created=0, updated=28, no duplicates). Server-side confirmed: the imported `ops-hub` hub and its 15 widgets are visible via `/api/v2/*`. T02 done; the staging DB now holds real Inter-Hub data for the T03 dual-run smokes. + + +## Progress 2026-07-02 — dual-run smokes and compatibility deltas + +Ran unauthenticated + authenticated probes against both live surfaces via +ops-bridge tunnels (Inter-Hub `inter-hub-coulombcore`:18020, Core Hub staging +`core-hub-staging-coulombcore`:18010). + +Status parity table (unauthenticated GET): + +| Endpoint | Inter-Hub | Core Hub | Note | +| --- | --- | --- | --- | +| `/healthz`, `/readyz` | 404 | 200 | Core Hub adds liveness/readiness (new capability, not a regression). | +| `/api/v2/hubs` | 200 | 401 | **Auth delta**: hub listing is public on Inter-Hub, protected on Core Hub. Anonymous consumers must authenticate against Core Hub. | +| `/api/v2/hub-registry` | 401 | 401 | Parity. | +| `/api/v2/widget-types`, `event-types`, `annotation-categories`, `policy-scopes` | 200 | 200 | Public-catalog status parity. | +| `/api/v2/widgets`, `interaction-events` | 401 | 401 | Parity. | + +Content/shape deltas: + +- Catalog record shape differs: Core Hub uses `{name, slug, description}`; + Inter-Hub uses `{name, label, description, ownerHubId, status}`. Consumers + parsing catalog records need updates for the `slug`-based shape. +- **Cutover blocker found**: the migrated Inter-Hub widgets reference 7 + widget-type names (`ops-endpoint`, `ops-environment`, `ops-host`, + `ops-migration-wave`, `ops-readiness-gate`, `ops-service`, + `ops-service-catalog`) that are **absent** from Core Hub's seeded + widget-type registry (which has only `Event Stream`, `Status Summary`, + `Workplan Board`). The `core-hub.migration.v1` bundle schema (COLLECTIONS) + carries widgets but not the `widget_type_registry` / `event_type_registry`, + so migrated widgets land referentially incomplete. **Production cutover + (T04) must first migrate or seed the ops-* widget-type and event-type + vocabularies into Core Hub.** Filed as the top T04 prerequisite. + +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.