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 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-23 18:17:37 +02:00
commit 5c6398473f
2 changed files with 7 additions and 2 deletions

View file

@ -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.

View file

@ -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.