Splits #2611: the drill gives every snapshot a flat 10 minutes (DRILL_TIMEOUT_MS in src/snapshot/drill.ts). A forge that grows can turn the drill red without anything being broken.
Done looks like:
[ ] drillBudgetMs(bytes) is a pure function in src/snapshot/drill.ts: 10 minutes plus 60 s per GiB of the snapshot's bytes from its manifest or listing, capped at 45 minutes. runDrill uses it whenever deps.timeoutMs is unset.
[ ] A red drill's reason names the budget it had, for example "no answer within its 14 min budget for a 4.1 GiB snapshot". It never shows a raw float of milliseconds.
[ ] Tests: the budget for 0 bytes, 4 GiB and 100 GiB (the cap), and a stubbed hanging restore whose reason names the budget.
[ ] docs/RECOVERY.md says how long the drill allows. Run bun x tsc --noEmit and test/snapshot-drill.test.ts.
Splits #2611: the drill gives every snapshot a flat 10 minutes (
DRILL_TIMEOUT_MSinsrc/snapshot/drill.ts). A forge that grows can turn the drill red without anything being broken.Done looks like:
drillBudgetMs(bytes)is a pure function insrc/snapshot/drill.ts: 10 minutes plus 60 s per GiB of the snapshot'sbytesfrom its manifest or listing, capped at 45 minutes.runDrilluses it wheneverdeps.timeoutMsis unset.bun x tsc --noEmitandtest/snapshot-drill.test.ts.