-- 026_check_defs_last_run.up.sql -- Make check_defs.interval_s actually mean something. -- -- ListEnabledCheckDefs selected interval_s but never filtered on it, and -- nothing in the scheduler read it except staleSweep. So every enabled check -- ran on every 30-second pass and the declared per-check intervals were -- decorative. -- -- That went unnoticed at 17 enabled checks (~0.5 SSH/s). Restoring monitoring -- coverage takes it to ~150, where it would have meant ~126 SSH connections -- every 30s — roughly 363k/day — and, worst of all, `apt update` on every -- machine every 30 seconds via updates_check.sh: 14,400 mirror hits a day to -- answer a question whose answer changes about once a day. -- -- last_run_at is a column rather than scheduler memory on purpose: an -- in-memory map resets on restart, and this control plane restarts on every -- deploy, so every check would fire at once each time — a thundering herd -- exactly when the stack is least settled. -- -- NULL means "never run", which is due immediately. Existing rows therefore -- all fire once on the first pass after this migration, then settle into -- their declared cadence. ALTER TABLE check_defs ADD COLUMN IF NOT EXISTS last_run_at TIMESTAMPTZ; -- The scheduler's hot query: enabled AND due. Partial on enabled since -- disabled checks are never considered. CREATE INDEX IF NOT EXISTS idx_check_defs_due ON check_defs (last_run_at) WHERE enabled; COMMENT ON COLUMN check_defs.last_run_at IS 'When this check last executed. NULL = never, due immediately. Compared against interval_s to decide due-ness.';