From 7c7cc799048b1884d4441495b4c06488c2eec68b Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 27 Oct 2026 06:40:56 +0100 Subject: [PATCH] Contract: a cacheless write asks the same ownership rule with its one entry Co-Authored-By: Claude Sonnet 5.5 --- .../Contracts/cultcache-persistence-format.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/GameCult.Caching/Contracts/cultcache-persistence-format.md b/src/GameCult.Caching/Contracts/cultcache-persistence-format.md index b5563607..2ca2e9e4 100644 --- a/src/GameCult.Caching/Contracts/cultcache-persistence-format.md +++ b/src/GameCult.Caching/Contracts/cultcache-persistence-format.md @@ -206,9 +206,10 @@ The rule is checked again where the write lands, under the store's lock: a write whose durable record is not owned, because another writer rewrote it after this cache loaded, is refused typed, and the record is reloaded as the store holds it, read-only when a type can read it. This holds for every write through the store, the store's own `Push`, `Delete` and -`CommitBatch` included. A CultMesh single-file write owns the ids of the catalog entry it writes, -its own and those it lists compatible, and an id whose publishing entry has the entry's schema name and -which the entry reads whole; it is refused the same way otherwise. +`CommitBatch` included. A CultMesh single-file write asks the same rule with the one catalog entry it writes in +place of a registry: it owns that entry's own id and the ids it lists compatible, and an id whose publishing +entry that entry reads whole (the entry lists the writer's id compatible, or has its schema name, and leaves no +persisted slot unread); it is refused the same way otherwise. A record that resolves to no local type is a foreign record, for example one of a type this build does not have, or one renamed under a new schema name without declaring its old id. A store never destroys or relabels it: the store carries it