What changed: scripts/deploy.sh → releases/<sha>/bin + current
symlink, data/ outside releases — run on a fresh prefix end to end:
migrations ran, /livez /readyz /version answered, the dashboard served,
auth held (401/200). GET /version reports the binary’s own version — the
only honest answer after an upgrade or rollback. README rewritten to what the
system actually is (it still said “scaffold”); the RUNBOOK’s verify steps now
check /version. The e2e gate was fixed to run config-less so a fresh
checkout can prove itself.
Proof: the install drill passed on a clean prefix, and 4/4 browser specs ran on the fixed gate. That closes the ship gate: another developer can install it, get a useful alert, and distinguish a target outage from missing monitoring data.