CultLib/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 7c4bc2bdc0 Make generated and reflective document members one rule
The generator and CultDocumentRegistry now discover members by the same
steps: most-derived declaration first, override chain collapsed to one
member, attributes read up the override chain, rejections in one order
with one text (GCC001 / InvalidOperationException).

- Accessors are named per document, so documents sharing a [CultName] or
  [CultIndex] base member no longer emit duplicate methods (CS0111).
- Duplicate [Key] slots are refused, including new-hidden fields and
  properties; a hidden persisted member with a different slot is refused.
- String [Key("x")] gets its own message instead of "has no [Key]".
- A persisted property whose set accessor is private, protected or init,
  or a readonly field, is refused instead of CS0272 in generated code.
- Overrides: MessagePack's DynamicObjectResolver reads the base
  declaration's [Key]/[IgnoreMember] (it throws "key is duplicated" for a
  re-keyed override and serializes an override marked [IgnoreMember]).
  An override that changes them is refused in both paths; an override
  that repeats or omits them is accepted and byte-pinned.
- Typed Serialize<T>/Deserialize<T> used static Options and skipped
  generated codecs and declared resolvers; deleted. CultNetDocumentBinding
  and CultMeshSnapshots route through the untyped path with their registry.

DocumentShapeSweepTests compiles each shape through the generator and
compares generated vs reflective schema id, catalog, name/index values
and payload against MessagePack's own bytes, or equal rejection text.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-13 22:00:16 +02:00
..
GameCult.Caching Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
GameCult.Caching.MessagePack Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
GameCult.Caching.MessagePack.Analyzers JSON backing store, I/O fixes, Networking Security 2026-04-18 13:01:24 +01:00
GameCult.Caching.MessagePack.Generator Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
GameCult.Geometry Clarify CultMath and CultGeometry ownership 2026-08-26 17:47:06 +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 Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
GameCult.Mesh.Quic Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
GameCult.Mesh.Quic.Native Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
GameCult.Networking Make generated and reflective document members one rule 2026-09-13 22:00:16 +02:00
GameCult.Networking.WebSockets Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
GameCult.Unity Route each document type to one home store; attach hydrates; commit explicit batches 2026-09-13 17:57:58 +02:00
Directory.Build.props Initial commit 2026-04-18 06:04:39 +01:00