Skip to content
RTOS (open)

RTOS (open) — docs sheet

RFC sheet

Drawing

RT-RFC-RFC-002-DATA

Sheet

03 / 04

Rev

C

Scale

NTS

RFC index · issued 2026-09-29

RFC-002: A Datagram Lane for Conflatable Quotes

Not financial advice. Verify claims independently.

Proposed, REV A. Quotes may be lost. Trades may not. One QUIC session, two reliability classes.

Status: Proposed, REV A. This sheet is open for comment. It does not change the flight binary until the comment ledger marks it accepted. It assumes RFC-001 (symbol sharding, REV C) and the reference architecture, REV C.

Problem

The flight path still carries every message on one ordered reliable stream per connection. That stream is a WebSocket. It is simple, and it is wrong for two facts that are not the same fact.

A top-of-book quote expires. If packet N+1 is already on the wire, recovering packet N makes the handset paint a price that is already false. A trade, a halt, or a correction does not expire. Losing it is a defect in the sequenced log.

TCP cannot tell those apart. One loss head-of-line blocks the connection: the halt waits behind the quote, or the quote is retransmitted after it has stopped being true. The IETF WebTransport overview describes this directly. A single ordered stream of messages is a poor fit when the application needs partial reliability and independent streams. Opening several WebSockets over HTTP/3 does not repair it. Each socket is a separate session, pooling is not a guarantee, and retransmission priority cannot be asked for across them.

FOSDEM 2026 discussions of WebTransport named high-frequency financial data as one of the workloads this split is for. The drawing should catch up to that sentence.

Proposal

Keep one session from edge to handset. Split the payload into two lanes on that session.

  • RT-230, datagram lane. Conflatable book updates only. Unreliable. Unordered. The newest quote for a symbol replaces any quote still in flight. Loss is not a gap.
  • RT-220, reliable lane. Trades, halts, corrections, and session control. Ordered. Acknowledged. Loss is a gap, and the gap counter on RT-500 increments.

Sharding does not change. RFC-001 still owns the symbol. RT-230 and RT-220 are delivery classes inside the shard, not new owners. A symbol still has one owner. Two owners remains a defect.

Rules

  1. A message has one lane. Dual-publishing a quote onto both lanes is how the handset paints twice and the drop counter lies.
  2. The sequenced log is the reliable lane. A lost datagram is not a sequence hole. Do not backfill it. Backfill is a snapshot, which is already a part.
  3. Control frames (subscribe, heartbeat, slow-consumer) ride RT-220. A burst of datagrams must not sit in front of a resubscribe. That is the entire point of leaving the single pipe.
  4. Application credit still applies. QUIC flow control answers whether the session can accept bytes. It does not decide that a quote is stale. Conflation policy stays on the shard: one slot per symbol on the datagram lane, no unbounded queue.
  5. 0-RTT is HOLD on this sheet. Resumed handshakes may carry an idempotent snapshot request. They may not mutate the interest index. Replay of a subscribe is a duplicate owner entry, which RFC-001 already forbids.
  6. Connection migration (QUIC connection IDs across a radio change) is noted, not flight. The reference client reconnects and snapshots. Do not mark migration FLIGHT because the transport can do it.

Budget

The cover sheet still holds a 100 ms ceiling from exchange tick to phone screen. Lane choice is not a new hop. It is a classification in front of the fan-out that RT-210 already budgets at 12 ms. Setup is where the ceiling actually breaks. A cold WebSocket spends multiple round trips on TCP, TLS, and the HTTP upgrade before the first frame. On a 40 ms handset path that setup alone can consume the cover sheet with nothing delivered. A QUIC handshake at one RTT gives the rest of the budget back to ingest, shard, and paint. That saving is real only if quotes are allowed to be dropped. If every datagram is configured reliable and ordered, RT-230 is a renamed WebSocket and this RFC is theater.

What this sheet will not do

It will not replace WebSocket on the manifest. WS and SSE stay FLIGHT for subscribers who cannot speak the new session. MQTT 5 stays on the bench. RT-230 is an additional part, revision A, status RFC. The reference workload may dual-stack during comment: same shard, old stream for current clients, datagram lane for the reference handset.

Reference

The production consumer of the flight drawing is Stock Picks. It is still on the ordered stream. When RT-230 is accepted, that handset is the first place a lost quote must be invisible and a lost halt must not be. Comments belong on the RFC, not in a private thread. If you cannot say which messages are allowed to disappear, you are not ready to vote.