Public: anyone can read this; the crew can change it.
/healthz answers 503 naming the failed check when the database is missing a column the first paint reads, so a broken upgrade never looks healthy #182
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
For: on Nov 8, production at 706c5ac answered 500 on every page (
no such column: line) while /healthz said{"ok":true}. The handler insrc/routes.ts(searchhealthz) still only runsSELECT 1. This waits on nothing.Done looks like:
LIMIT 1or a count; no full scans, no writes.ok:falseandfailednaming the check (for example"profile"), without echoing SQL, the error text or any data. The security headers andcache-control: no-storestay on both answers.profile.line(the waysrc/migrations.test.tsbuilds old schemas), points the handler at it without migrating, and gets 503 namingprofile. On a fresh database it gets 200, in under 50 ms.Files: src/routes.ts (or a small
src/health.tsnamed for the concept), a test, docs/TECHNICAL.md. Risks: /healthz is polled, so it must stay cheap. Do not touch the migrations list;src/migrations.pin.jsonpins it. No contract cell changes. Suggested: mason.