Overnight loop — CrateDB cutover cleanup + observability — 2026-06-08
Autonomous /loop on careervector + jobcache while you slept ("make it more workable; try e2e;
use the admin interfaces; observe everything"). Centered on the fallout of the CockroachDB →
CrateDB cutover. All work pushed to main.
Verdict
The cutover had left real breakage this loop was ideal for catching: the operator cockpit was fully broken against CrateDB, the control-plane catalog was never re-synced after the DB wipe (so ingestion had nothing to plan against), and the test suite had 3 latent failures. All fixed + deployed + live-verified. The system is now stable, observable, and configured + ready — the corpus is empty only because the planner hasn't been triggered (your call: it starts live scraping).
Shipped + pushed (commits b7888939 → cd7628f5)
- #68 Tier-2 headless ingestion — Rust render device + capability routing (landed; suites green).
- jobcache ops cockpit → CrateDB (100%) — it pointed at the dead Cockroach AND ran
Cockroach-shaped SQL (every direct-DB panel read "down"). Ported the whole DB layer
(
crdb.tsfetch_types/ssl;percentile/ROW_NUMBER/array_length/info_schema 'doc'; raw OBJECT audit write; the reserved-wordAS "user"live-only bug), repurposed the Cockroach RU panel → CrateDBsys.*disk/health, lifted the snapshot schema (#77), swapped the worker secret to the CrateDB DSN, redeployed both workers. Verified live across API/UI/MCP/snapshot. - Whole test suite green — fixed 3 latent failures: a 2nd stale
jobcache_plannerCI assertion (lanes removed in f750f8fa), abundle-equivalencehook-timeout flake (bumpedhookTimeout), and wiki graph-claim path rot from the June-5 infra-repo split. bun 52 pkgs + cargo 16 crates = exit 0. - Source catalog re-synced — the missing post-wipe step (
POST /api/catalog/sync, its designed purpose): 5 sources, 5 adapters, 6 active bindings restored; fleet confirmed alive (3 devices, heartbeats). - Cockpit readiness diagnosis (#79) —
/ingestion-healthnow returns areadinessblock; live =DORMANT — 5 sources / 6 active bindings configured, 3/3 devices alive; 0 tasks queued, planner has not run. No more misleading zeros. - Post-cutover naming hygiene (
createCratedbSessionStore,database_url_required) + stray committed-binary cleanup.
Current state
- jobcache LIVE on CrateDB; cockpit operational (GREEN, 12/12 tables, ~176 ms); fleet alive; corpus empty + DORMANT (awaiting planner).
- CV unaffected (runs on D1); app + ops cockpit + status all healthy.
- Tests green; observability solid (every cockpit panel dug + verified accurate).
Needs you (gated — I deliberately did NOT act)
- Start ingestion → fills the corpus, makes jobcache demonstrable. The control-plane is
ready; this triggers live scraping of the Swiss boards (jobs.ch, jobup.ch, …) — a prod
op (you said "dev not prod"), so yours to fire. Start small + watch the cockpit readiness flip
dormant→active + ads appear:
(token =curl -X POST https://api.jobcache.corbet.ch/api/planner/run \ -H "Authorization: Bearer $JOBCACHE_CONTROL_TOKEN" -H 'content-type: application/json' \ -d '{"max_tasks":5,"max_urls_per_binding":2}'sops -d ~/.agent/secrets/jobcache-control.yml | yq -r .api_key) - #78 — CV ops CF-quota panel is dark (rolls CV ops up to
not_configured). Fix = mint a read-only Account Analytics:Read CF token, setCV_CF_ACCOUNT_ID(f2b2e900…) +CV_CF_API_TOKENsecrets oncareervector-ops-api. I held off because it's credential creation. Approve-and-go; restores quota observability + flips the rollup operational. - #72 — jobcache product dashboard (
jobcache.corbet.chconfig over@cv/public-ui): needs a design session for the tabs. - #66 — the sporewright orchestrator (on alwaysdata) that auto-drives the planner = the biggest lever; #70 (verify-stall, symptom cleared by the wipe) folds in here.
Loop left running in light monitoring mode (watching for new commits / planner activity / errors).
kind: journal nodes:
- jobcache-cratedb-cutover-cleanup-2026-06-08
summary: "Working record of the JobCache CrateDB cutover cleanup on 2026-06-08."
links:
event:
- jobcache-cratedb-cutover-2026-06-08 implementation:
- jobcache-cratedb-migration