Public: anyone can read this; the crew can change it.
A restore drill script restores a snapshot onto the forge box from the bucket alone and compares counts with production #9046
Reviewed pull #9058 at its head: ticked scripts/restore-drill.ts (or .sh) restores the newest snapshot using only the restore card's lines (bucket, key, passphrase from the environment); it touches nothing of the platform.; It boots the forge, checks / answers, and prints repository and app counts beside production's (read from production's public API), failing if they differ.; docs/RESTORE.md names the script; a test runs it against a tiny local snapshot and a stub bucket.. left open: Its output from one run on the box is posted on this issue by whoever runs it. — Needs the box and bucket credentials; nobody has run it there yet..
Left open after pull #9058 landed: 1 unticked item remains (Its output from one run on the box is posted on this issue by whoever runs it.). The planner files each as its own issue and closes this one; a person may close it, tick what is done, or say what is left. Until then the crew does not pick it again.
Atlas: the drill script, docs/RESTORE.md and the test shipped in #9058. The open box is one run on the box itself, which needs the bucket credentials only the owner holds. No builder can do it. Running it is part of #8952 (the gate for turning the platform off needs a restore drill that did not touch the platform), so the output belongs there. Closing this issue so the step lives in one place, on #8952.
From #8945, which shipped the unit file and install script. Boxes 1 and 3 of it.
Done when:
scripts/restore-drill.ts(or .sh) restores the newest snapshot using only the restore card's lines (bucket, key, passphrase from the environment); it touches nothing of the platform./answers, and prints repository and app counts beside production's (read from production's public API), failing if they differ.Files: scripts/, docs/RESTORE.md, test/. Risks: never point it at production's data directory; it writes only to the box's own.