Stream one run's journal as hash-anchored thread.step frames.

Serves :func:~bernstein.core.replay.thread_projection.project_journal for .sdd/runs/<run>/journal.jsonl over SSE. Each frame's id is the row's journal index, so a client that reconnects with Last-Event-ID resumes after the last row it saw, across server restarts, for as long as the run journal is on disk. /events is unchanged; this is a sibling stream pinned to one run per connection.

Ids sent on a connection are strictly increasing: a row whose index is not above the last one sent (a duplicate or out-of-order index) is not sent. Rows the journal reader cannot decode, including a partly written last line, are skipped until they become decodable. Heartbeats carry no id and never move a client's cursor. The stream ends if the journal file disappears (for example after retention pruning).

get/events/thread

Request

Query parameters

runstring required

Response

Server-Sent Events stream. The response body does not terminate.

Changes