Meta Vens
b37f898465
C#: a send failure on an already-ended session says no second goodbye
...
3b9ffac2 claimed that the generation check subsumed the UnsendableReason
once-guard. It did not. A thread that reads the generation only after
the session has ended carries the ended session's own generation, and the
check lets it through. For example, the polling thread answers a Ping on a
session that a caller's send has just ended but that has not yet been
retired. When that Pong fails permanently, the thread says a second
goodbye and overwrites the first failure's reason (Soul pass 4, PR4).
EndUnsendableSession now also returns when the session has already ended.
Two tests:
- The polling thread answers a Ping on a session already ended, and the
Pong can never be sent. Exactly one goodbye goes out, and the first
failure's reason stands. The hook admits the Ping after the session
ended and before the peer is queued for retirement. The test kills the
mutant that drops the Ended check.
- A failed send's goodbye is sent under the gate. A polling thread
admitting a new Connect from the endpoint waits on the gate, so the old
generation's goodbye never follows the new session's Accept. The test
kills the mutant that sends the goodbye outside the gate.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-30 20:19:19 +02:00
..
CultCachePublicationIsolationTests.cs
Narrow the escaped-observer probe to what this base can show
2026-09-29 16:57:04 +02:00
CultNetCanonicalNumberTests.cs
CultNet selection cut1 fix batch: R-I/K/D tests and R-A/R-M reflection fix
2026-09-22 09:39:36 +02:00
CultNetDocumentBindingResolverTests.cs
Make generated and reflective document members one rule
2026-09-13 22:00:16 +02:00
CultNetDocumentRegistryVariantTests.cs
CultNet: a withdrawn hop subscription is refused with a typed error and its rows are withdrawn
2026-09-29 10:12:20 +02:00
CultNetJournalTests.cs
Dispose test: hold the writer in an earlier observer so Dispose must publish what it logged
2026-09-30 07:03:15 +02:00
CultNetOperationServerTests.cs
Bind CultMesh authority identity to physical routes
2026-08-18 17:21:58 +02:00
CultNetPublicationOrderTests.cs
Networking tests: order is data, so pin each change's own publication, not its delivery order
2026-09-29 23:52:14 +02:00
CultNetPublishesCommitsTests.cs
Pin the single-owner publication cases Soul falsified
2026-09-29 13:21:39 +02:00
CultNetRudpConnectGenerationTests.cs
Ack Cut 1d batch 2 (C#): an Ack does not retire a Connect awaiting its Accept; the fresh attempt jumps by the receive window less one
2026-09-30 09:53:06 +02:00
CultNetRudpOrderedDeliveryTests.cs
Ack Cut 1 tests: three held frames, the Rust byte bound, reset reseeds
2026-09-30 00:20:04 +02:00
CultNetRudpSchemaServerPeerInputTests.cs
C#: a peer's undecodable message ends that peer's session, never the poll
2026-09-30 17:23:40 +02:00
CultNetRudpSendFailureTests.cs
C#: a send failure on an already-ended session says no second goodbye
2026-09-30 20:19:19 +02:00
CultNetRudpSessionEndingTests.cs
Ack Cut 1b tests: an ending does not forget what the peer sent
2026-09-30 00:24:19 +02:00
CultNetSchemaContractTests.cs
Cut 4 Soul 4c: committed-unlogged wire writes, database serves only what it owns, typed unowned refusal
2026-09-30 06:14:49 +02:00
CultNetSchemaServerGroupTests.cs
Share CultNet handlers across transports
2026-08-18 01:31:04 +02:00
CultNetSelectionEvaluatorTests.cs
Land fix batch 3's R-O and R-Q: keyed length-prefixed cursors, replica-apply sequence gap
2026-09-22 20:04:22 +02:00
CultNetSelectionFixBatchTests.cs
C#: a peer's undecodable message ends that peer's session, never the poll
2026-09-30 17:23:40 +02:00
CultNetSelectionPageTests.cs
CultNet selection cut1 fix batch: R-I/K/D tests and R-A/R-M reflection fix
2026-09-22 09:39:36 +02:00
CultNetSelectionSurvivorTests.cs
Correct one comment still naming the deleted To.SchemaId tiebreak
2026-09-23 09:21:52 +02:00
GameCult.Networking.Tests.csproj
Add GameCult Mesh package home
2026-05-19 19:08:48 +01:00
MiniJsonSchemaValidator.cs
Fix batch 4 (R-X, S-4/S-10): the error schema matches the wire, and the validator refuses a keyword it does not implement
2026-09-22 21:12:23 +02:00
NetworkingTests.cs
Ack Cut 3: a server's new generation does not inherit acknowledged bytes
2026-09-30 14:46:38 +02:00
README.md
JSON backing store, I/O fixes, Networking Security
2026-04-18 13:01:24 +01:00
SelectionParityVectorTests.cs
R-AO: shared vector for two-in-target shared-key resolution
2026-09-23 07:18:11 +02:00
SelectionWireParityTests.cs
R-AZ: mirror the all-absent Edge vector into the C# parity test
2026-09-23 09:08:42 +02:00
SoulP4cProbeTests.cs
Cut 4 Soul 4d: a skipped entry is relayed as the primary sent it; probes, wire cases and the closed-enum rule committed
2026-09-30 08:03:09 +02:00
SoulP4dProbeTests.cs
Cut 4 Soul 4d: a skipped entry is relayed as the primary sent it; probes, wire cases and the closed-enum rule committed
2026-09-30 08:03:09 +02:00
SoulP4ProbeTests.cs
Journal fixes: hole floor on restart, one log exception per call, no shape guard, no stray shard-0 logging
2026-09-30 02:48:49 +02:00
SoulPub3Tests.cs
Soul probes: commit the pass-3 P-tests and the Cut 4 probes as recovered
2026-09-30 02:38:50 +02:00