# Marks are one `.marks.json` per booth _2026-09-21 · booth_ **Marks are stored as one `.marks.json` per booth**, atomic temp-file + `os.replace`, `fcntl` lock on the read-modify-write — operator decision, this session. Two alternatives were weighed and lost: a sidecar per item (`.marks.json`) and extending the existing `.ask.json` shape. Rationale, and the reason it is not `links.md`-shaped: **(a)** U4 makes *"does this booth owe an answer?"* a hot question — the sweep asks it per booth per tick and the index asks it per card per page load, so per-item sidecars turn it into a full walk of all 25 booths, one of which holds 270 files; **(b)** `links.md` is an `O_APPEND` content-hash log because **17 agent handles write it concurrently**, whereas marks have exactly one writer (the operator, in one browser) and many readers — a different problem that must not inherit the append-log design; **(c)** `.blurred` / `.pins` / `.forever` already establish the per-booth dotfile as the house shape for operator state, and `booth_items()`'s dotfile skip means it costs nothing in counts, galleries or zips. Accepted cost: a corrupt `.marks.json` loses that booth's marks rather than one item's. Implementation deferred to U2 — tracked at `ROADMAP.md` U2 and by this entry.