DRAFT v0.3 / Reliability

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.

ORDERING

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.

Expected next

Apply when the sequence equals the last committed value plus one.

Duplicate

Ignore an already committed message ID or sequence.

Gap

Pause application and begin recovery immediately.

Resnapshot

Atomically replace state when replay is unavailable.

DELIVERY

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

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.

STATE

Quote availability

OPENQuote may be consumed as current.
SUSPENDEDRetain the last quote but treat it as unavailable.
OPENThe same quote ID may reopen with replacement state.
OPENCurrent offer exists.
CLOSEDMarket or event reached a terminal condition.
REMOVEDDelete after an explicit odds.remove.
RECOVERY

Gap procedure

GAP DETECTEDPAUSE DELTASREQUEST REPLAYorRESNAPSHOTCOMMITRESUME
  1. Stop mutating consumer-visible state.
  2. Request recovery from the last durably committed sequence.
  3. Apply replay in order, or atomically replace state with a new snapshot.
  4. Resume only when the stream is contiguous again.
OPERATIONS / UNSET

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.TBD
replay windowHow long committed messages remain recoverable.TBD
message sizeMaximum encoded snapshot and delta frame size.TBD
slow consumerBuffer allowance and close behavior under backpressure.TBD
connectionsConcurrent sessions and subscriptions per credential.TBD
Design review

Tell us where this breaks.

We want concrete feedback about sequence scope, recovery, market identity, and state transitions before the contract hardens.

Request beta access →