CultLib/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 619e089fa6 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>
2026-09-29 23:46:50 +02:00
..
GameCult.Caching.ConsumerBuild Delete the CultCache MessagePack source generator 2026-09-13 23:38:08 +02:00
GameCult.Caching.InteropPeer Interop: an element id crosses C#, TypeScript, Python and Rust 2026-09-29 15:03:09 +02:00
GameCult.Caching.Tests C#: HoldsIds is read off the stored form each time a store writes 2026-09-29 23:46:50 +02:00
GameCult.Geometry.Tests Add canonical System.Text.Json converters for every CultMath value type 2026-09-29 16:57:31 +02:00
GameCult.Mesh.Quic.Native.Tests Extend the Cut 5 interop lane: a late C# native connector gets the TS retained frame 2026-09-23 18:32:39 +02:00
GameCult.Mesh.Quic.Tests Fix a flaky disconnect wait in the reliable-ordered retention test 2026-09-23 18:20:36 +02:00
GameCult.Mesh.Tests CultMesh: a raw write refuses a file whose header it cannot read 2026-09-29 22:53:13 +02:00
GameCult.Networking.InteropPeer Wait for a client before quic-realtime-serve broadcasts 2026-09-23 14:38:51 +02:00
GameCult.Networking.Tests Merge RUDP stray-packet hardening across all four runtimes 2026-09-29 22:05:30 +02:00
GameCult.Networking.WebSockets.Tests Add real browser CultMesh transport proof 2026-08-18 00:05:57 +02:00
vectors Old-reader probes: a reader from before element ids refuses the v3 header 2026-09-29 18:27:17 +02:00