From 5c6398473f8e9bb01777a84ec798da1e7fc69c0c Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Wed, 23 Sep 2026 18:17:37 +0200 Subject: [PATCH] Document latest-only retention for newly attached QUIC peers One sentence each in the C# QUIC README and the transport-planes doc: a provider retains the newest latest-only frame per (channel, body) and delivers it to a peer as soon as it attaches, bounded by the number of distinct keys. Co-Authored-By: Claude Sonnet 5 --- src/GameCult.Mesh.Quic/README.md | 3 ++- src/GameCult.Mesh/docs/transport-planes.md | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/GameCult.Mesh.Quic/README.md b/src/GameCult.Mesh.Quic/README.md index 1aab43c5..afdfd248 100644 --- a/src/GameCult.Mesh.Quic/README.md +++ b/src/GameCult.Mesh.Quic/README.md @@ -66,7 +66,8 @@ var frame = await session.ReceiveAsync(cancellationToken); - `ReliableOrdered` uses one ordered QUIC stream. - `LatestOnly` uses independent streams and keeps at most one pending frame per channel and body. A newer `(producer epoch, sequence)` generation replaces - queued state. + queued state. The provider also retains the newest `LatestOnly` frame per + `(channel, body)` and delivers it to each client as soon as it attaches. - `Unreliable` fails closed in this adapter because `System.Net.Quic` does not expose QUIC datagrams. Use a native MsQuic connector when datagram semantics are required. diff --git a/src/GameCult.Mesh/docs/transport-planes.md b/src/GameCult.Mesh/docs/transport-planes.md index fea2b69b..eddb9794 100644 --- a/src/GameCult.Mesh/docs/transport-planes.md +++ b/src/GameCult.Mesh/docs/transport-planes.md @@ -55,7 +55,11 @@ broadcast enqueues into a keyed, coalescing outbox owned by each physical peer and returns without waiting for network delivery. The peer's transport worker owns stream writes and eviction after disconnect or send failure. Thus a slow, stalled, or departed client cannot backpressure a simulation tick, while a -healthy peer still converges on the newest generation. Reliable-ordered +healthy peer still converges on the newest generation. The provider also +retains the newest latest-only frame per `(channel, body)` and seeds it into +each newly attached client, bounded by the number of distinct keys, so a peer +that connects or reconnects after a broadcast still converges on current +state without a service-side replay loop. Reliable-ordered broadcast remains completion-bearing because dropping or replacing it would violate its declared delivery contract; caller cancellation can stop that operation.