Live stream versus indexed store
expect and tail read a real-time observe stream. events search, forwards search, and events get read an indexed store that trails arrival by a short interval.
Observe stream (expect, tail) | Indexed store (events / forwards search) | |
|---|---|---|
| Latency | Real-time | Trails arrival by an indexing delay |
| Time range | Only events after you connect — no backfill | The full searchable history |
| Best for | Confirming something happens now | Investigating what already happened |
| Consistency | Push, at-most-once while connected | Eventually consistent |
Pick the plane by question
Stale reads cause conflicts
The indexed store is eventually consistent, so a value you read can move before you act on it. When you cache a resource’s state and then mutate it, a concurrent change makes the write fail withconflict (exit 1) — your view was stale, not your command wrong. Re-read, recompute, and retry idempotently: Safe mutations → Recover from conflict.
Continue
Search & filters
Field grammar and cursor pagination for the indexed store.
Wait for events
expect and tail against the live observe stream.Caching & performance
What to cache, and how to back off when you must poll.