WAL reader admission: real app reproduction Environment: Linux; Chromium web client; 1280x800 CSS pixels; light theme. Fresh synthetic data, replay agent; no live user database. BASE 3a8c250cb0c8056f2f563091fd412fe5db809fa1 Synthetic project and completed replay turn created through the real server CLI. Reader pinned: read-only connection, BEGIN; SELECT count(*) FROM sqlite_master. Requested 4 replay turns; WAL 12994512 bytes; batch completed; reader open. Requested 8 replay turns; WAL 23401632 bytes; batch completed; reader open. Requested 12 replay turns; WAL 34529752 bytes; batch completed; reader open. Requested 16 replay turns; WAL 44726752 bytes; batch completed; reader open. Requested 20 replay turns; WAL 55751872 bytes; batch completed; reader open. Requested 24 replay turns; WAL 66641032 bytes; batch completed; reader open. Requested 28 replay turns; WAL 77921592 bytes; batch completed; reader open. Requested 32 replay turns; WAL 89210392 bytes; batch completed; reader open. Requested 36 replay turns; WAL 100952392 bytes; batch completed; reader open. Requested 40 replay turns; WAL 112723232 bytes; batch completed; reader open. Requested 44 replay turns; WAL 124164472 bytes; batch completed; reader open. Requested 48 replay turns; WAL 134237872 bytes; batch pending; reader open. WAL over 128 MiB: 134237872 bytes. Reader remains open; ready for web message. Web client: sent second while reader remained open; no replay reply after more than 30 seconds; Working spinner and slow-request warning visible. WAL remained 134237872 bytes. Reader COMMIT and close at WAL 134237872 bytes. No further writes requested. WAL reclaimed to 0 bytes after reader closed. Persisted probe conversation (read-only query; identifiers omitted): {"role": "user", "streaming": false, "text": "first", "createdAt": "2026-11-11T09:43:12.894Z", "updatedAt": "2026-11-11T09:43:12.894Z"} {"role": "assistant", "streaming": false, "text": "first fixture turn complete", "createdAt": "2026-11-11T09:43:13.487Z", "updatedAt": "2026-11-11T09:43:13.515Z"} {"role": "user", "streaming": false, "text": "second", "createdAt": "2026-11-11T09:46:40.494Z", "updatedAt": "2026-11-11T09:46:40.494Z"} {"role": "assistant", "streaming": false, "text": "second fixture turn complete", "createdAt": "2026-11-11T09:46:41.520Z", "updatedAt": "2026-11-11T09:46:41.571Z"} HEAD 04930a115d638086ac195b2eb494b181fed5a400 Synthetic project and completed replay turn created through the real server CLI. Reader pinned: read-only connection, BEGIN; SELECT count(*) FROM sqlite_master. Requested 4 replay turns; WAL 12875032 bytes; batch completed; reader open. Requested 8 replay turns; WAL 23599392 bytes; batch completed; reader open. Requested 12 replay turns; WAL 34484432 bytes; batch completed; reader open. Requested 16 replay turns; WAL 45184072 bytes; batch completed; reader open. Requested 20 replay turns; WAL 56250392 bytes; batch completed; reader open. Requested 24 replay turns; WAL 67238432 bytes; batch completed; reader open. Requested 28 replay turns; WAL 78308872 bytes; batch completed; reader open. Requested 32 replay turns; WAL 89173312 bytes; batch completed; reader open. Requested 36 replay turns; WAL 100606312 bytes; batch completed; reader open. Requested 40 replay turns; WAL 112117592 bytes; batch completed; reader open. Requested 44 replay turns; WAL 123513512 bytes; batch completed; reader open. Requested 48 replay turns; WAL 135267872 bytes; batch completed; reader open. WAL over 128 MiB: 135267872 bytes. Reader remains open; ready for web message. Web client second message completed while reader stayed open; independent read-only SQLite query confirmed user message and completed assistant reply persisted at 09:48:35 UTC. WAL 137340232 bytes. No further writes requested. Reader COMMIT and close at WAL 137340232 bytes. No further writes requested. WAL reclaimed to 0 bytes after reader closed. Persisted probe conversation (read-only query; identifiers omitted): {"role": "user", "streaming": false, "text": "first", "createdAt": "2026-11-11T09:46:55.369Z", "updatedAt": "2026-11-11T09:46:55.369Z"} {"role": "assistant", "streaming": false, "text": "first fixture turn complete", "createdAt": "2026-11-11T09:46:55.789Z", "updatedAt": "2026-11-11T09:46:55.818Z"} {"role": "user", "streaming": false, "text": "second", "createdAt": "2026-11-11T09:48:35.169Z", "updatedAt": "2026-11-11T09:48:35.169Z"} {"role": "assistant", "streaming": false, "text": "second fixture turn complete", "createdAt": "2026-11-11T09:48:35.478Z", "updatedAt": "2026-11-11T09:48:35.508Z"}