Public Access
The save was authorised by the record id alone — ids are small sequential integers, publicly visible on every directory card, so a PATCH carrying only an id let one visitor overwrite another's listing. The save now: - uses PATCH (C.saveMethod), matching n8n - carries the hash in the body under the same "has" key the delete already sends, so save and delete share one credential path, alongside the record id - refuses to fire at all when the page holds no hash, and says why in the status line Everything else is unchanged: the 15-point gate, receipt only on 2xx, the honest failure line that keeps the edits, the save.disabled handling and the DELETE shape.