Commit Graph
12 Commits
Author SHA1 Message Date
laitekin 987df75568 Merge remote-tracking branch 'origin/master' into fix/7299-hidden-session-poll 2026-09-23 12:23:25 +08:00
laitekin a0e5e32e46 Merge current master while preserving recoverable hidden polling (#7299) 2026-09-23 12:18:23 +08:00
laitekin 8396520450 test(streaming): cover profile 409 recovery and stale response bodies (#7299) 2026-09-23 00:00:45 +08:00
laitekin 99f22391d7 Merge remote-tracking branch 'origin/master' into fix/7299-hidden-session-poll 2026-09-22 23:59:23 +08:00
laitekin 3cc825d044 fix(streaming): preserve recovery after ambiguous profile 404s (#7299) 2026-09-22 23:59:23 +08:00
laitekin 9b3c749302 docs(run-journal): specify live-only metering and optional writes (#7272) 2026-09-21 23:03:24 +08:00
laitekin 13d6ba5265 docs(streaming): document hidden-session recovery ownership (#7299) 2026-09-21 23:02:16 +08:00
laitekin 39f2326410 test(streaming): prove missing sessions stay closed on visibility (#7299) 2026-09-21 22:33:36 +08:00
laitekin c6809f9b4b fix(streaming): stop polling missing hidden sessions (#7299) 2026-09-21 22:33:36 +08:00
laitekin 87338e8098 test(run-journal): bind replay fixture to live stream registry 2026-09-21 22:33:14 +08:00
laitekin 5cbc5f7106 fix(run-journal): preserve cursor ids for unjournaled metering 2026-09-21 22:27:23 +08:00
laitekin bcafbd6965 fix(run-journal): skip metering telemetry on write and replay (#7272)
Metering telemetry is journaled at ~10 Hz during active turns, so marathon
reasoning runs balloon the durable run journal (12.4 MB of a single 18 MB run
was metering). On a mid-run refresh the reconnect path replays the entire
journal as one unpaced SSE burst, OOM-crashing the browser tab in a
crash-refresh loop while the server stays healthy.

- Write time: RunJournalWriter.append_sse_event() skips metering rows via
  REPLAY_SKIPPED_SSE_EVENTS, returning None so caller journal-id plumbing is
  untouched and remaining journaled seqs stay contiguous.
- Replay time: _replay_run_journal() and emit_replay() filter metering rows
  through journal_replay_visible(), so legacy journals never stream the
  backlog either.
- Readers (read_run_events / read_session_run_events) deliberately keep every
  row: cursor math and the offline-gap coverage check count seqs.

Refs #7272
2026-09-21 22:27:23 +08:00