CultLib/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 9009aa79bc Generate derived documents' members and require [Key] on every one
The generator walked only members declared on the document class and emitted
a codec only when those were dense, so a derived document's generated
descriptor hashed a different schema id and catalog than the reflective one.
It now discovers members along the base-type chain the way
CultDocumentRegistry reflects them (public instance fields and get/set
properties, inherited included, [IgnoreMember] excluded), and density is
over that full set: RoutingWeapon : RoutingGear gets a codec and the same
SchemaId and catalog (Name@0, Damage@1) from both builds.

Unkeyed members made the two orderings disagree (generator by name, registry
by metadata token). Both implicit-slot paths are deleted: an unkeyed
persisted member of a [CultDocument] type is generator error GCC001, and the
registry throws the same message. The consumer audit found no unkeyed
document with a persisted store.

Tests: GeneratedAndReflectiveDescriptorsAgreeForDerivedDocuments failed on
ea5a07b ("no generated codec for the derived document") and passes through
UpsertWeaponThroughGearHandleReloadsAsWeapon; UnkeyedDocumentMemberIsRejected
drives the generator through Roslyn and compares its diagnostic with the
registry's exception. The registry's reflective BuildDescriptor is internal
and visible to the tests for that comparison. The registry-collision fixture's
emitted field gains its [Key]; schema-compatibility fixture ids are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 21:19:08 +02:00
..
GameCult.Caching.ConsumerBuild Stop MessagePack's source generator flowing to consumers 2026-09-13 21:09:16 +02:00
GameCult.Caching.InteropPeer Pin CultNet publish-after-commit, add write-routed interop, update contract status 2026-09-13 17:58:00 +02:00
GameCult.Caching.Tests Generate derived documents' members and require [Key] on every one 2026-09-13 21:19:08 +02:00
GameCult.Geometry.Tests Add CultGeometry isosurface extraction 2026-08-26 17:37:22 +02:00
GameCult.Mesh.Quic.Native.Tests Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
GameCult.Mesh.Quic.Tests Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
GameCult.Mesh.Tests Mirror snapshots carry the cache Sequence they reflect 2026-09-13 21:02:49 +02:00
GameCult.Networking.InteropPeer Add C# interop RUDP serve dial path 2026-06-17 11:22:17 +01:00
GameCult.Networking.Tests Carry order as data: per-cache change Sequence, no delivery scheduler 2026-09-13 20:43:11 +02:00
GameCult.Networking.WebSockets.Tests Add real browser CultMesh transport proof 2026-08-18 00:05:57 +02:00