CultLib/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 9629aa119b C#: a type listing an id registers beside the type that owns it; the owner wins
Batch 9 refused any overlap between two types' ids, which forbade the migration
CompatibleSchemaIds exists for: v2 declares v1's id while v1's class stays
registered (Soul F8). The rule is now owner beats lister. A type owns its own
schema id; any number of types may list an id as compatible beside its owner,
registering in either order. A record under an id resolves to its owner, else to
the one type listing it. An id no type owns and several list names no single
type, so a record under it is refused, typed (CultSchemaConflictException naming
the id and the listers), where it resolves: refusing at registration would
depend on whether the owner had registered yet.

A second owner of one id is still refused at registration, typed. A schema id
hashes the schema's name and version, so the only second owner is a type of the
same name and version, which the name-and-version check already meets; the
separate own-id lookup could never fire and is gone.

Tests: an owner and a lister register in both orders, the owner's id resolves to
the owner, the lister's own id to the lister, and without the owner to the
lister; two listers register in both orders, a record under their id is refused
typed with no owner and resolves to the owner with one, registered before or
after them; a cache with v1 beside v2 reads each version's records as its own
type, in both registration orders. The emitted-fixture note says why a fixture
is emitted now that v1/v2 pairs no longer need hiding from the shared registry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 15:26:06 +02:00
..
GameCult.Caching.ConsumerBuild Delete the CultCache MessagePack source generator 2026-09-13 23:38:08 +02:00
GameCult.Caching.InteropPeer Test: TypeScript writes a record under an older schema id, C# declares it and rewrites it 2026-09-30 11:32:47 +02:00
GameCult.Caching.Tests C#: a type listing an id registers beside the type that owns it; the owner wins 2026-09-30 15:26:06 +02:00
GameCult.Geometry.Tests Geometry tests: import System.Linq for the reference walk test 2026-09-30 02:30:43 +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 Catalog writers merge entries that share an id; every reader resolves an id by its owner first 2026-09-30 08:17:59 +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 Test: the selection guard probe passes the descriptor's new compatible-ids argument 2026-09-30 11:48:38 +02:00
GameCult.Networking.WebSockets.Tests Add real browser CultMesh transport proof 2026-08-18 00:05:57 +02:00
vectors One local schema id in cultmesh-py; catalog writers merge only the same schema; a compatible entry before its owner reads as the owner 2026-09-30 09:01:00 +02:00