Skip to navigation

Retention, backups and reset

View as Markdown

Replay redelivers events already stored in the available journal interval. It does not reconstruct every unobserved source event.

Check the boundary

hello.retention.resumeFloor is the exclusive lower boundary of (resumeFloor,committedFrontier]. A cursor exactly on the floor is valid: the next batch is retained. A cursor below it is expired.

The applicable retention policy is arranged with access. The floor describes a current history boundary, not a fixed number of hours. Handle expiry even when an integration has an agreed retention duration.

MechanismPurposeLimit
Retained journal/replayCatch up after a disconnectDoes not establish survival of total origin storage loss
Independent backupRecover the service after host lossCan lack events written after the backup
Client checkpointResume local processingDoes not itself retain missing event payloads

Backup frequency alone is not an RPO: successful transfer and verified restoration matter. This documentation does not promise zero history loss after host loss.

Handle reset_required

Stop automatic continuation of the old history. Record code, stream/history generation and floor without exposing the token. Determine the available history with the operator. Only an explicit decision can choose a new live_cut, with the gap recorded in local state.

permittedActions contains discover_current_history and explicit_live_cut. These are actions, not existing REST endpoints. history_unavailable can have retainedFloor: null.

See errors and reset. Do not display a continuous history after silently discarding its missing interval.