C#: HoldsIds is read off the stored form each time a store writes
A record's HoldsIds was decided by its admission and trusted afterwards, so a document changed after it was committed, or loaded and changed in place, flushed under the header its admission-time content needed (Soul P7, P10). HoldsIds now has one owner, the record's stored form, read when asked: - a plain record: CultElementIds.Holds over its document, a scan that reads and refuses nothing; - a variant: the same scan over each override value, decoded with the codec the record was built with (the cache's, or the attached cache's at load); - a variant built with no codec (a store that loaded it with no cache) cannot see its values and counts as holding an id, so a store never writes an unmarked header over ids it could not see. Cut: the admission path that set HoldsIds on plain records, on variants from their resolved copies, and on flattened records; the internal setter and its backing flag; IdPlan.HeldIds and IdPlan.HoldsIds. The Mesh typed write reads Holds off the document it writes. Admission keeps its own id counting (IdPlan.Count) for IdsInMemoryOnly. Tests: an id added to a committed or loaded deck after admission marks a PushAll v3, and taking it away unmarks it; a variant read without a codec counts as holding ids while the same record read with one does not. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
cf16cb7c1f
commit
619e089fa6
4 changed files with 121 additions and 35 deletions
|
|
@ -110,7 +110,7 @@ namespace GameCult.Mesh
|
|||
descriptor.ToCatalogEntry(),
|
||||
storedAt,
|
||||
CultDocumentMessagePackSerialization.SerializeUntyped(document, typeof(TDocument)),
|
||||
ids.HoldsIds,
|
||||
CultElementIds.Holds(document),
|
||||
contentKnown: true);
|
||||
}
|
||||
catch
|
||||
|
|
|
|||
Loading…
Reference in a new issue