--- id: CORE-WP-0004 type: workplan title: "Implement Inter-Hub compatibility and consumer smokes" domain: infotech repo: core-hub status: active owner: codex topic_slug: custodian created: "2026-06-27" updated: "2026-06-27" state_hub_workstream_id: "ef13b0e9-f626-4d2c-9e00-ccb4906c3a3d" --- # Implement Inter-Hub compatibility and consumer smokes Preserve the Inter-Hub `/api/v2` behavior required by current consumers while Core Hub-native contracts mature. ## Public Registry Compatibility ```task id: CORE-WP-0004-T01 status: done priority: high state_hub_task_id: "4e24ab14-d5cf-4466-8287-21eaf075cb44" ``` Result 2026-06-27: Aligned catalog/docs/OpenAPI behavior with the active ops-hub gate. Static catalogs and docs are public; hub registry/bootstrap data is protected. `/api/v2/openapi.json` now includes the unprefixed path aliases expected by ops-hub gate checks. Local gate probe passed against Core Hub. ## Protected Bootstrap Compatibility ```task id: CORE-WP-0004-T02 status: done priority: high state_hub_task_id: "87073ee7-0213-4eed-881a-b18ab764ae65" ``` Result 2026-06-27: Replaced placeholders with persistence-backed protected routes for hubs, manifests, API consumers, API keys, widgets, interaction events, and hub registry. Runtime API keys are generated display-once and stored hashed. The real `ops-hub/scripts/ops-hub-bootstrap-api.py` passed against local Core Hub, creating ops-hub, an active manifest, API consumer, runtime key, 14 widgets, and one readiness event. ## ops-hub Smoke ```task id: CORE-WP-0004-T03 status: wait priority: high state_hub_task_id: "2d18f575-135b-4ba8-9537-6920d0c61e1b" ``` 2026-06-27: Local smoke passed with a throwaway operator token and SQLite smoke DB. Remaining closure requires deployed Core Hub runtime plus approved credential routing. No secrets in logs, workplans, or chat. ## activity-core Smoke ```task id: CORE-WP-0004-T04 status: wait priority: medium state_hub_task_id: "c3d1c153-0059-470c-bb2d-0b14f2d77b94" ``` Waiting on a deployed Core Hub runtime or an explicit State Hub fallback decision for the transition path.