Event Polling & Reconciliation
Chronological reconciliation
Section titled “Chronological reconciliation”Omit mode. Use limit, cursor, and optional repeated or comma-separated type filters. Results are ordered by (created_at, evt_ id). Store the next cursor only after processing the full page. Events are retained for 30 days; an expired continuation returns 410 event_cursor_expired, requiring a rebuild from current resource lists.
Bounded recent mode
Section titled “Bounded recent mode”Use mode=recent with at least one type. This provider-neutral mode reads a 24-hour window newest-first, has a fixed 200-event bound, and uses an opaque poll_cursor with a five-minute replay overlap. Deduplicate stable IDs.
- 201 matching events:
409 event_window_overflow; nothing is truncated and the checkpoint does not advance. - Checkpoint older than 24 hours:
410 event_window_expired. - Recent mode rejects chronological
cursorandlimit.
Events contain thin references. Hydrate current resources with bounded concurrency. Advance a checkpoint only after every hydration and downstream write succeeds. Reconcile after overflow, expiry, scope changes, or location-grant changes.