CultLib/tests/GameCult.Mesh.Tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens f8ba2d0aca R-R vs R-F discrepancy: CultMesh's typed API refuses empty keys, doesn't answer empty
Discrepancy between spec and Body, reported per Hands' brief ("make the
smallest change that keeps the spec's intent, and report the discrepancy").

R-R says "recordKeys: [] answers empty" for v0 lowering. That holds for the
raw v0 wire protocol server (CultNetDocumentRegistry.CreateRawSnapshotResponse,
CultNetDatabase.CreateShardSnapshotResponse - fixed two commits back). It does
not hold for CultMesh's typed convenience API: R-F, landed earlier in this
cut, made CultMesh.EnsureV0Compatible run CultNetSelectionValidation.
ValidateShape client-side before a request is ever sent, specifically so that
"Keys=[]/[\"\"] is refused rather than silently lowered to 'every key'"
(CultMeshSnapshots.cs:836-841). Once R-R made ResolveDefaultSelection's
Clean(recordKeys) produce Keys=[] instead of Keys=null for an explicit empty
list, every FetchDocumentsAsync(recordKeys: []) call now trips that existing
R-F door and throws, instead of reaching the wire at all.

Kept both rulings as each one's own owner decided them: the raw wire protocol
answers empty (R-R); CultMesh's typed wrapper refuses before sending (R-F).
Rewrote FetchDocumentsAsync_WithExplicitEmptyRecordKeys_AnswersEmpty, added
two commits ago on the wrong assumption that CultMesh's typed API also
answers empty, to FetchDocumentsAsync_WithExplicitEmptyRecordKeys_
IsRefusedClientSide, asserting the actual (and, on inspection, correct) R-F
behaviour instead.

Verified on Yggdrasil: dotnet test tests/GameCult.Mesh.Tests -c Release.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 19:18:00 +02:00
..
CultMeshAuthorityProofTests.cs Pin the TypeScript-signed direction of the authority parity check 2026-09-16 16:27:06 +02:00
CultMeshAuthorityResolverTests.cs Centralize CultMesh authority resolution 2026-07-13 14:00:26 +01:00
CultMeshBodyPublicationTests.cs Keep exact live subscriptions active before publication 2026-07-19 11:49:18 +01:00
CultMeshBodySessionTests.cs Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
CultMeshBodyTransportTests.cs CultNet selection cut1, commit 2d: the CultMesh collapse 2026-09-22 03:38:56 +02:00
CultMeshCdnTests.cs Add CultMesh distributed asset packages 2026-06-28 07:54:00 +01:00
CultMeshClientTests.cs Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
CultMeshContentSessionTests.cs Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
CultMeshContentTransferTests.cs Stream CDN artifacts in coarse durable windows 2026-07-19 20:29:07 +01:00
CultMeshDeterministicNetwork.cs Establish CultMesh reliability failure harness 2026-07-12 19:56:20 +01:00
CultMeshDiscoveryServiceTests.cs Bind CultMesh authority identity to physical routes 2026-08-18 17:21:58 +02:00
CultMeshEntityPrefabTests.cs Add CultMesh distributed asset packages 2026-06-28 07:54:00 +01:00
CultMeshFrameBodyTests.cs Support mapped frame bodies on Unix 2026-08-18 04:18:46 +02:00
CultMeshProviderSessionWireTests.cs Fence provider RUDP connection generations 2026-07-19 00:50:20 +01:00
CultMeshRealtimeWireProtocolTests.cs Encode a CultMesh realtime frame in TypeScript 2026-09-16 19:20:41 +02:00
CultMeshReliabilityDiagnosticsTests.cs Establish CultMesh reliability failure harness 2026-07-12 19:56:20 +01:00
CultMeshSessionManagerTests.cs Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
CultMeshSnapshotOptionsTests.cs CultNet selection cut1 fix batch, second Hands pass: R-D mutation entries and Mesh R-F/R-L coverage 2026-09-22 13:11:21 +02:00
CultMeshStreamingTests.cs R-R vs R-F discrepancy: CultMesh's typed API refuses empty keys, doesn't answer empty 2026-09-22 19:18:00 +02:00
CultMeshTestTrust.cs Authenticate CultMesh authority routes and replay operations 2026-08-18 19:02:46 +02:00
CultMeshTransportModularityTests.cs Bind CultMesh application ingress to session identity 2026-08-18 23:08:59 +02:00
GameCult.Mesh.Tests.csproj Bind CultMesh application ingress to session identity 2026-08-18 23:08:59 +02:00