Executable crash-recovery lab
10–16 implementation hours, inside the 22–32-hour extension. Download the starter, reference, contract and checks. Python 3.9+ with no dependencies suffices; this lab does not access a real storage device.
- Spend 2–3 hours constructing the crash matrix and byte-prefix predictions from README.md.
- Run
python3 -B check.py starterand retain the expected failure. Spend 4–6 hours implementing records, separate volatile/durable state and recovery. - Spend 2–4 hours injecting failures, rejecting early acknowledgement and testing replay idempotence. Add a fresh overwrite case.
- Spend 2–3 hours comparing the reference after your attempt and preparing the assumptions/evidence packet.
Checks cover 16 protocol crash cuts, nine persisted prefixes, all 256 value bytes, malformed records, forbidden early acknowledgement and repeated recovery. Four seeded faults are rejected by the author verifier. These are bounded model checks, not a power-loss test or production recovery certification.
Submit source, expected matrix, command output, counterexample and repair, new overwrite test, model limits and help disclosure. Every FS1–FS6 gate must pass. Original filesystem structure, device and I/O-model exercises remain required.