Skip to content

docs: state what the durable session log actually replays and retains - #59

Merged
Blind-Striker merged 1 commit into
masterfrom
docs/session-log-replay-seal
Sep 7, 2026
Merged

Blind-Striker merged 1 commit into
masterfrom
docs/session-log-replay-seal

Conversation

@Blind-Striker

Copy link
Copy Markdown
Collaborator

Documentation only. The server-sent event rules hedged persistence, retention, and replay together as unestablished. Replay mechanics were established by the live coverage that landed in #58, and retention is established by reading the pinned upstream server, so canon now states both and hedges only what remains unpinned.

Mechanics the suite proves. The cursor is an exclusive aggregate sequence. One log.synced marker reports the watermark the replay was captured at; it is a boundary rather than a durable event, so under follow the events committed while that replay was in flight arrive after it. Sequences are not contiguous, because the server omits types outside its durable manifest, the session union filters further, and a forked session reserves an inherited prefix. A cursor past the tail is accepted rather than refused and then suppresses live delivery until the aggregate overtakes it, so a cursor travels only within one server's lifetime.

Retention, which turns out to be the absence of a policy. Nothing expires, prunes, or caps the log. Compaction and revert rewrite projections rather than the log itself, so a replay from an older cursor still returns everything before them. Rows are deleted only with their session. Persistence is a server option that is off unless the server was started with it, which is why a default server answers a replay with the marker alone.

What the roadmap's open question narrows to. The wire behaviour nothing upstream pins: that route has no server-level test upstream, and upstream has no production caller that passes after at all, so the status a malformed cursor answers and the fate of an idle follow connection are settled only by this repository's own live tests.

The vocabulary entry and the streaming guide follow the same correction. No code changes, so the CI matrix is skipped by paths-ignore.

The SSE rules hedged persistence, retention, and replay together as
unestablished. Replay mechanics were in fact established by the live
coverage that lands with this pin, and retention is established by reading
the server: the canon now says both, and hedges only what remains unpinned.

Canon carries the mechanics the suite proves. The cursor is an exclusive
aggregate sequence; one log.synced marker reports the watermark the replay
was captured at, and it is a boundary rather than a durable event, so under
follow the events committed while that replay was in flight arrive after it.
Sequences are not contiguous, because the server omits types outside its
durable manifest, the session union filters further, and a forked session
reserves an inherited prefix. A cursor past the tail is accepted rather than
refused and then suppresses live delivery until the aggregate overtakes it,
so a cursor travels only within one server's lifetime.

Canon also carries retention, which turns out to be the absence of a policy:
nothing expires, prunes, or caps the log, compaction and revert rewrite
projections rather than the log itself, and rows are deleted only with their
session. Persistence is a server option that is off unless the server was
started with it, which is why a default server answers a replay with the
marker alone.

The roadmap's open question narrows to the wire behaviour nothing upstream
pins: that route has no server-level test there, and upstream has no
production caller that passes after at all, so the status a malformed cursor
answers and the fate of an idle follow connection are settled only here. The
vocabulary entry and the streaming guide follow the same correction.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant