comment #308 Status 2026-09-14 16:30Z (doyle): PREP-ONLY DRAFT exists — todlando, branch `fix/308-registry-process-lock`, worktree `.worktrees/308-registry-process-lock`, base 7890ead3, uncommitted, NOT built/tested/trace-checked (no cargo of any kind ran; box was reserved for the #297 field window). Shape as sized: spt-store `serving::lock_registry_at` opens `serve/registry.lock` and takes fs2's exclusive OS lock; broker `apply_at` and the brain TTL reaper both acquire it before their fresh load and hold through publication; process-local `REGISTRY_WRITE` removed; five live-daemon E2E mutations hold the guard in narrow scopes; ARM11 untouched. New coverage drafted: fail-closed unit (`unavailable_registry_lock_cannot_publish_an_add`), two-process integration (`serving_registry_two_process_int.rs`, worker fixture) with three cases incl. abrupt-holder-exit release; obsolete two-thread sleep test removed. REQ-HAZARD-SERVE-REGISTRY-LOST-UPDATE minted; STORAGE.md + KNOWN-HAZARDS 6.14 + public serving docs drafted. 13 files, +548/−199 (tracked +231/−199 over 11 + two new files 317 lines). Rollout constraint stands: both broker and brain must run the guard. Validation and milestone home await the operator's ruling; no build GO issued.