temporal
The live path
One upstream subscription serves many viewers through fenced ownership, bounded fanout, and typed recovery.
- Question
- How does low latency coexist with durable and gap-free semantics?
- Binding decision
- Every viewer queue is bounded; owner death and suffix loss produce deterministic replay or resync.
- Owner input
- WebSocket versus SSE and the internal broker are selected only from measured control, proxy, and recovery behavior.
- 01Authorizerequest
- 02Snapshotbounded transition
- 03Attach ownerbounded transition
- 04Replay suffixbounded transition
- 05Live tailbounded transition
- 06Typed resyncclient state
Attach without a gap
The gateway authorizes the series, obtains a stable snapshot and committed watermark, attaches to the shared live owner, replays the suffix after that watermark, and then hands the viewer to the live tail. The snapshot-plus-replay handshake closes the race between history and subscription.
- One source event is recorded once, never once per viewer.
- Sequence and generation accompany every snapshot, replay, and live frame.
- Heartbeat, lag, gap, resync, cancellation, and close are typed control messages.
EvidencePrompt: stream contract and ExecPlan Phase 5.
Ownership is fenced
One Nautilus data-client subscription feeds the kernel once. A separate bounded projection seam writes canonical values to QuestDB and publishes service events for many viewers. Multi-replica ownership uses leases and fencing outside the single-node kernel; stale owners cannot commit or publish after ownership changes.
- Nautilus external MessageBus egress is lossy by contract and cannot be the authoritative writer.
- Exactly one multi-replica broker role is selected.
- Slow consumers shed, resync, or disconnect before they exhaust process memory.
EvidenceExecPlan Phase 5 and framework evaluation contract.
mise x -- task fanout:chaosAcceptance target: Owner death, partition, reconnect storm, and slow-client cases remain bounded.