CultLib/src
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 66b5e60b43 Fix batch 3: R-N wire refusal codes, R-P one authorizer id, R-T removal/cites gaps
R-N: cultnet.error.v0 gains additive code/details fields (contracts/cultnet).
CultNetErrorMessage grows ForSelectionInvalid/ForCursor/ForReferenceOutsideTarget
factories; both C# servers (CultNetDatabaseServer for snapshot+live,
CultNetDatabaseSubscriptionServer) use them at every existing catch site, plus
two sites that previously let the exception escape uncaught instead of reaching
the peer (CultNetDatabaseServer's v1 subscribe snapshot branch,
CultNetDatabaseSubscriptionServer's Subscribe around CreateProjectedSnapshot).
CultNetSelectionCursorException now carries AsOf/Current for cursor_stale.

R-P: CultNetDatabaseSubscriptionServer.CreateMatchedRecord (the live fast path)
authorized against descriptor.SchemaId; the snapshot path (CreateProjectedSnapshot)
already authorized against the wire id. Both now call the same
CultNetDocumentRegistry.WireSchemaId (made internal, was private) so one id
reaches the authorizer on the snapshot, live and reconcile paths alike.

R-T(a): CultNetSelectionEvaluator.MatchesSchemaKeysFields no longer reads a
Removed change's (always-null) document against Fields - it matches on
keys/schemas alone and treats a field predicate as unknown instead of throwing
TryGetIndexValue(null).

R-T(b): EnsureWithinDeclaredTarget no longer skips the out-of-target check when
TargetType is null; it checks against every registered leaf (unconstrained is a
real, checked target set, not a bypass). CultCache's ResolveReferenceTarget also
now infers the target from a many reference's CultRecordRef<T> element when no
explicit [CultReference(typeof(...))] is declared, which was the one remaining
source of a null TargetType reaching that check on a real, testable path.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 19:46:32 +02:00
..
GameCult.Caching Fix batch 3: R-N wire refusal codes, R-P one authorizer id, R-T removal/cites gaps 2026-09-22 19:46:32 +02:00
GameCult.Caching.MessagePack Write an unset CultRecordRef as "" in every position 2026-09-14 21:34:23 +02:00
GameCult.Geometry Make CultMath normalize follow dxc and release 0.2.2 2026-09-14 18:04:04 +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 R-Q3, R-R: v0 lowering preserves v0's pre-cut answers exactly 2026-09-22 19:13:31 +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 Fix batch 3: R-N wire refusal codes, R-P one authorizer id, R-T removal/cites gaps 2026-09-22 19:46:32 +02:00
GameCult.Networking.WebSockets Recover authority-bound CultMesh and atomic generations 2026-08-26 19:01:24 +02:00
GameCult.Unity Track the new CHANGELOG.md.meta files (force-added like other tracked .meta) 2026-09-17 20:11:48 +02:00
Directory.Build.props Initial commit 2026-04-18 06:04:39 +01:00