# A write over a damaged `.marks.json` wiped the booth _2026-09-21 · booth_ **A write over a damaged `.marks.json` was wiping every mark in the booth.** Shipped in `v0.2.0`, found by the panel (Kimi, converged with Hulda), fixed in `v0.2.1`. `marks_for` is deliberately lenient — unparseable reads as `[]` so a review page still loads — and the write path inherited that leniency through the same reader, so one flag click appended to an empty list and atomically replaced the file. The fix is an **asymmetry**, which is the reusable part: reads stay lenient, writes go strict (`MarksCorrupt`), damaged bytes stay on disk, routes answer 409 not 500. A page that renders without an annotation is recoverable; a file that overwrote the operator's judgment is not. Kimi also named the class correctly — "an author steeped in the design conversation would likely read past" it — and that was accurate.