Detect gaps. Recover cleanly.
A fast feed is only useful if consumers can prove their state is current. The proposed recovery model favors explicit gaps and deterministic reconstruction over silent continuation.
Sequence ownership
The current proposal assigns a strictly increasing sequence to a subscription stream. Consumers commit a sequence only after its message has been applied durably.
Apply when the sequence equals the last committed value plus one.
Ignore an already committed message ID or sequence.
Pause application and begin recovery immediately.
Atomically replace state when replay is unavailable.
Proposed guarantee
The conservative beta target is ordered, at-least-once delivery within one subscription. Consumers must therefore be idempotent. Exactly-once delivery will not be claimed merely because replay exists.
message_iddeduplicationSafe identifier for repeated delivery of the same message.sequenceorderingDetermines application order inside the subscription.subscription_idownershipPrevents state from different subscriptions being combined.schema_versioncompatibilitySelects the decoder and validation rules.Four different clocks
source_updated_atRFC 3339?When the upstream provider says its state changed, if supplied.observed_atRFC 3339When OddsLoom observed the provider state.emitted_atRFC 3339When OddsLoom emitted the normalized message.consumer_received_atclient clockWhen your system received the frame; recorded by the consumer.Use sequence for ordering. Use timestamps for freshness and latency analysis. Provider clocks may be absent or skewed.
Quote availability
Gap procedure
- Stop mutating consumer-visible state.
- Request recovery from the last durably committed sequence.
- Apply replay in order, or atomically replace state with a new snapshot.
- Resume only when the stream is contiguous again.
Limits still to publish
These values must be measured and enforced before beta rather than invented in documentation.
heartbeat intervalMaximum expected silence before a connection is considered unhealthy.TBDreplay windowHow long committed messages remain recoverable.TBDmessage sizeMaximum encoded snapshot and delta frame size.TBDslow consumerBuffer allowance and close behavior under backpressure.TBDconnectionsConcurrent sessions and subscriptions per credential.TBDTell us where this breaks.
We want concrete feedback about sequence scope, recovery, market identity, and state transitions before the contract hardens.
Request beta access →