Conormis status

The manual

4 — Operations

The daily read

Open the board. The footer states when the prober last completed a round — if that timestamp is stale, the prober itself is down and everything below is the last known state, said so. The vantage strip on each card shows the split; a silent relay reads UNKNOWN and the page names the gap.

The secrets inventory

Secret Where What it gates
OPS_TOKEN the status worker the admin + /ops/drafts (unset = both closed, 404)
STATUS_RELAY_TOKEN BOTH workers, same value /api/vantage-report (unset = the relay never lands, its vantage reads unknown)
MAIL_PROVIDER_KEY the status worker the HTTPS mail posture with the mail: block (unset = the honest console no-op; subscribe answers 503)
STATUS_PROBE_TOKEN dormant the exercised auth-probe labeling, while that leg is retired

The instance config never carries secret VALUES — secretHeaders NAME them; the loader refuses inline values.

The watchdogs

Troubleshooting playbooks

The page says the prober has never run / is stale — and the worker's log shows KV put() limit exceeded for the day. (RESOLVED on this account 2026-09-08: the upgrade to Workers Paid. The playbook stays for whitelabel instances.) The account is on the Workers FREE plan: 1,000 KV writes/day per namespace. This prober writes ~17 rows/minute (every service x every vantage + the metas + the heartbeat) ≈ 24,000/day — the free quota dies ~70 minutes after midnight UTC, and EVERY write path fails for the rest of the day (the cron runs; the writes throw; the page honestly goes stale). The real 2026-09-07/08 case looked like "crons not executing" — the tail showed no errors only because the exceptions landed in ctx.waitUntil; the KV tail told the truth. The fix is the owner's billing act: upgrade the account to Workers Paid (1M writes/day; a per-minute multi-vantage prober is a paid-tier workload by design). Interim honesty: the page shows its stale state, the heartbeat opens its tracking issue at the next check — both correct.

The page says the prober has never run, with NO quota error in the log. Now suspect the schedule binding: registered via the API but never executing (compare a sibling worker's fresh schedule; recreate the worker — KV state survives). Rare; the quota case above is the common one.

A relay vantage reads unknown. Its reports are not landing: wrong STATUS_RELAY_TOKEN on either side (the surface 401s/404s), the relay worker down, or its cron not executing (the same playbook as above). npx wrangler tail ribose-status-relay shows the round and its report outcome.

A service reads degraded but the site looks fine. Read the card's honest line: it names the failing vantage and the reason — a content assertion failing (the page changed its copy: update the marker in the YAML) or latency over budget. npm run probe:live reproduces it from your machine.

Inspecting state. npx wrangler kv key get --namespace-id <id> "svc:<serviceId>" reads any row; the full layout is in the API reference. The backup document (next chapter) is the read-everything view.

The attachment check (before any deletion or redeploy theory)

scripts/attach-custom-domain.sh --check prints which service (and account) the public hostname currently attaches to. Run it BEFORE acting on any theory about which worker is "the real one" — the 2026-09-12 incident deleted production workers on an unverified shadow theory and took the domain down. The check is read-only and takes one command; there is never a reason to skip it.