CareerVector ops & public-status surface
Prove the CareerVector ops + status workers honour their wire contracts without a live D1: the telemetry-tier gating on GET /workspaces/:id degrades correctly on expired/unbound projections, the services/finops/ status rollups never leak secret tokens, the /graph/ops projection emits only the nine canonical hub kinds and rejects behaviour→infra shortcuts, ops-mcp + status-mcp forward 1:1 to their API workers inside the admin boundary, the status api returns the public projection shape with no admin bindings, and the CORS contract only echoes the status.careervector.corbet.ch origin. The typed UI clients pin their production base URLs and request shapes.
Test witnesses
These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.
| Test | Status | Implementation | Open |
|---|---|---|---|
emits one row per labelled relay plus a rollup @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
flips r2 to operational when sentinel returns null (404) @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
hits typst /healthz when TYPST_COMPILE_URL is set @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
returns not_configured rows for every probe when env is empty @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
rolls relays up to degraded when one entry is down @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
uses real D1 counts for the snapshot metrics @cv/perspective-shared · vitest · src/careervector-health.test.ts | catalog | careervector health adapter graph-proven · graph-checks-edge perspective shared snapshots graph-proven · graph-checks-edge | Test |
apiOpsBase falls back to production URL when env unset @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |
fetchHealth issues GET @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |
fetchQueueMix appends windowMinutes @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |
fetchWorkspaceRollups passes state & limit query params @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |
postRecoverLeases sends POST body @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |
raises generic Error on 502 @cv/ops-ui · vitest · src/lib/api-ops-client.test.ts | catalog | ops ui graph-proven · graph-checks-edge ops ui api ops client graph-proven · graph-checks-edge | Test |