← back to AbramsEgo
build-queue/failed/29-failure-drills.md
21 lines
# Task 29 — Failure-mode drills (split from timeout-killed task 27; scope: THIS ONLY)
Run scripts/smoke.sh FIRST. It must PASS before you start drilling (a pre-existing failure
means the environment isn't clean — log it, mark this task's log with the failing assertion,
and exit 0 WITHOUT drilling so the task re-queues cleanly later... actually exit 0 archives
the task; instead: if smoke fails, spend the task fixing THAT, commit, and re-create this
file as tasks/29-failure-drills.md so drills run next cycle).
Then ONE dimension only, ≤12 minutes: verify each panel degrades gracefully, never blank.
Prefer CODE INSPECTION over live simulation; only simulate when safe and ALWAYS restore:
1. data/local-fleet.json missing → Fleet·Local shows last-good + note? (inspect the task-17
cache path in server.js)
2. Canary source dir empty → honest empty state, not blank/crash?
3. cost-ledger.jsonl missing → P&L renders $0 + "no ledger" note, not NaN?
State per drill: METHOD=inspection|simulation, VERDICT=graceful|gap.
Fix small gaps inline and commit; bigger ones → enqueue ONE surgical task (NN=30+).
Run scripts/smoke.sh again at the end — must PASS (proves you restored everything).
Commit message: `chore: failure drills (fable) — <verdict>`. pm2 restart abramsego to
test; never a second node on 9773. Author steve@designerwallcoverings.com.