5.9 KiB
Ops Hub Inter-Hub Evidence Lane Status
Date: 2026-06-27
Workplan: CUST-WP-0051-T03
Related tasks: CUST-WP-0047-T05, CUST-WP-0049-T06, IHUB-WP-0022-T03/T04/T07
Summary
The evidence lane is partially live but not ready to close.
Production Inter-Hub already exposes the public ops-hub bootstrap surface and
has an ops-hub row plus the ops-hub seed vocabulary. The remaining blockers
are:
- authenticated bootstrap/runtime-key execution is still operator-gated;
- protected widget and hub-registry reads cannot be verified without the ops-hub runtime key;
- the older
IHUB-WP-0022activity-core mapping contract does not match the currently live ops-hub seed vocabulary.
No secret values were requested, read, printed, or stored during this probe.
Public Probe Evidence
Base URL: https://hub.coulomb.social
| Probe | Result |
|---|---|
GET /api/v2/hubs |
HTTP 200; contains ops-hub |
GET /api/v2/openapi.json |
HTTP 200; includes /hubs, /hub-capability-manifests, /api-consumers, /policy-scopes |
GET /api/v2/widgets |
HTTP 401, protected as expected |
GET /api/v2/hub-registry |
HTTP 401, protected as expected |
GET /api/v2/widget-types |
HTTP 200; 14 ops widget types visible |
GET /api/v2/event-types |
HTTP 200; 15 ops event types visible |
GET /api/v2/annotation-categories |
HTTP 200; 10 ops annotation categories visible |
GET /api/v2/policy-scopes |
HTTP 200; 7 ops policy scopes visible |
GET /api/v2/hub-capability-manifests?hubId=<ops-hub-id> |
HTTP 401, protected as expected |
Observed public ops-hub id: 4f6e4cf7-6a96-4ff2-8a37-08c9f9e405d2.
The existing ops-hub/scripts/interhub-gate-probe.py exits nonzero because it
still expects unauthenticated /api/v2/hubs to return 401. The live contract
returns 200 for public hub discovery and 401 for protected surfaces such as
/api/v2/widgets and /api/v2/hub-registry.
Live Ops Vocabulary
The live public registry matches ops-hub/seeds/ops-hub-manifest.draft.json:
- widget types:
ops-environment,ops-host,ops-cluster,ops-service,ops-service-catalog,ops-endpoint,ops-release,ops-backup-set,ops-secret-set,ops-runbook,ops-incident,ops-readiness-gate,ops-migration-wave,ops-risk; - event types:
ops-inventory-registered,ops-inventory-updated,ops-service-discovered,ops-health-checked,ops-release-observed,ops-endpoint-verified,ops-backup-verified,ops-restore-tested,ops-runbook-executed,ops-drift-detected,ops-risk-raised,ops-risk-accepted,ops-readiness-gate-updated,ops-migration-gate-passed,ops-migration-gate-failed; - policy scopes:
ops-local,ops-transitional-prod,ops-production,ops-threephoenix,ops-registry,ops-secrets,ops-backup-retention.
Contract Mismatch
inter-hub/docs/contracts/ops-hub-activity-core-mapping.md and
ops-hub-activity-core-event-payloads.md still describe the early
activity-core proposal:
| Contract name | Live seed status | Recommended action |
|---|---|---|
ops-service-observed |
Not in live event registry | Rename to ops-service-discovered, or add an explicit alias event in the ops-hub manifest. |
ops-endpoint-verified |
Live | Keep. |
ops-access-path-checked |
Not in live event registry; no ops-access-path widget type in seed |
Either add access-path vocabulary/widgets, or defer access-path submissions and keep State Hub fallback. |
ops-backup-verified |
Live | Keep, but map to ops-backup-set widget type. |
ops-inventory-drift |
Not in live event registry | Rename to ops-drift-detected, or add an explicit alias event. |
ops-evidence policy scope |
Not in live policy scopes | Use an existing ops scope or add ops-evidence to the manifest and activate it. |
aggregate refs such as ops:service:aggregate |
Not in ops-hub/seeds/ops-hub-widgets.seed.json |
Seed aggregate intake widgets or change mapping to the existing entity/readiness widgets. |
widget types such as ops-service-card |
Not in live widget types | Use live widget types like ops-service, ops-endpoint, ops-backup-set, and ops-readiness-gate. |
2026-06-27 Contract Alignment
The Inter-Hub contract docs were revised in /home/worsch/inter-hub to target
the live ops-hub seed vocabulary:
ops-service-observedis now a transition alias forops-service-discovered.ops-inventory-driftis now a transition alias forops-drift-detected.ops-access-path-checkedis explicitly deferred to State Hub fallback until ops-hub adds access-path vocabulary or a readiness/risk mapping decision.- The old
ops-evidencepolicy scope is replaced by declared live scopes such asops-production,ops-registry, andops-backup-retention. - Payload examples now post only live manifest event types.
This removes the known contract-drift blocker before the attended bootstrap. The remaining gate is authenticated widget lookup, any missing backup/risk seed widget, runtime key custody, and protected event submission smoke.
Current Closure State
CUST-WP-0049-T06 remains wait: the helper and runbook are ready, but an
approved authenticated execution lane is still required.
CUST-WP-0047-T05 remains wait: the ops-hub row and vocabulary are visible,
but seeded widgets and event acceptance cannot be proven without the protected
runtime path.
IHUB-WP-0022-T03/T04/T07 remain gated: before an end-to-end smoke, reconcile
the activity-core mapping contract to the live ops-hub seed vocabulary or add
the missing aliases/aggregate widgets to the manifest.
Next Pick
- Use the aligned live-vocabulary contract for the attended
CUST-WP-0049-T06bootstrap. - Confirm protected widget ids and seed any missing backup/risk target widgets required by the mapping.
- Store or confirm
OPS_HUB_KEYthrough OpenBao, then run the protected widget/hub-registry/event smoke.