What changed: every snapshot carries expires_at — the TTL is the
heartbeat. fixtures/status-check.mjs is the independent checker: it decides
alive vs unavailable from the expiry alone, with no trust in the monitor’s own
report. An expired or missing snapshot reads “monitoring unavailable” —
which is a different sentence than “all targets down”, and confusing the two
is how status pages lie during their own outage.
Proof — live: beat → alive; killed the monitor → the beat expired → unavailable (exit 1); restarted → alive. The whole lifecycle exercised, not simulated.