CultLib/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 2a3773a463 CultCache: the store owns a file's bytes, not the record object
Delete RawBytes from CultPersistedRecord and CultSchemaCatalogEntry, with every
drop-on-assign hook and the catalog's content guard. A decoded record or snapshot
carries no stored bytes, so an in-place edit of its payload or overrides can never
be shadowed by cached bytes, and the public snapshot and record serializers encode
every record from its fields.

SingleFileBackingStore now reads through ReadStore, which returns the snapshot and,
parallel to it, the exact slice the file holds for each catalog entry and record. Its
durable index keeps, by record key, that slice and its SHA-256 (hashed when a
comparison asks), which is the record's version. A write re-encodes every record
the writer staged and copies every other record, and every catalog entry it keeps,
as the slice the file holds. The directory store keeps its manifest's catalog slices
the same way. SerializeSnapshot/DeserializeSnapshot hooks become
SerializeStore/ReadStore plus SerializeCatalogEntry.

A staged but unchanged non-canonical record is now re-encoded canonically and gets
a new version; an untouched one keeps its bytes and version.

Tests: in-place edits through the snapshot API (payload, override) and through a
held document (collection, nested object) are written as edited; an untouched
non-canonical record survives a neighbour's write byte for byte; a staged one is
re-encoded. The cost test counts record hashes.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 10:47:30 +02:00
..
GameCult.Caching CultCache: the store owns a file's bytes, not the record object 2026-10-03 10:47:30 +02:00
GameCult.Caching.MessagePack CultCache: the store owns a file's bytes, not the record object 2026-10-03 10:47:30 +02:00
GameCult.Geometry Merge origin/main into hands/variants-c2a 2026-09-30 03:58:11 +02:00
GameCult.Logging JSON backing store, I/O fixes, Networking Security 2026-04-18 13:01:24 +01:00
GameCult.Logging.Unity JSON backing store, I/O fixes, Networking Security 2026-04-18 13:01:24 +01:00
GameCult.Mesh C# stores: every flush, commit and CultMesh single-file write applies a write set to the durable store 2026-10-03 03:05:08 +02:00
GameCult.Mesh.Quic Document latest-only retention for newly attached QUIC peers 2026-09-23 18:17:37 +02:00
GameCult.Mesh.Quic.Native Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
GameCult.Networking Merge CultCache R1 (f789c8d1) into C2a: one reader per runtime, R1's failure taxonomy 2026-10-02 19:41:35 +02:00
GameCult.Networking.WebSockets Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
GameCult.Unity Studio README: grouping, create in group, drag to reference 2026-09-29 14:10:39 +02:00
Directory.Build.props Initial commit 2026-04-18 06:04:39 +01:00