Issue 23482 — fixed head 26d95959db; Linux Node v26.12.1. Only isolated temporary DBs and /home/ubuntu/wt/issue-23482/.t3 were written. Reporter literal script: $ node repro-wal-gate.ts worker checkpointWorker=true: outside reader holds a read transaction all 1500 writes finished with the reader open (WAL 106.9 MB) Real server runtime with pinned WAL: $ node /tmp/issue-23482-pin.cjs reader pinned; WAL MB 46.289207458496094 This process remained open on a terminal, waiting for a release command. Its read-only connection had executed BEGIN and SELECT COUNT(*) FROM issue_23482_wal_fixture. A separate writer had appended 650 x 64 KiB blobs, then closed, leaving the reader open. $ env -u T3_SERVICE_LAUNCHER_CONTEXT -u T3_BOOT_SERVICE_UNIT node apps/server/src/bin.ts --base-dir /home/ubuntu/wt/issue-23482/.t3 --port 15661 --no-browser [08:44:20.041] INFO: Listening on http://127.0.0.1:15661 While reader terminal session 85089 remained open (before sending any release): $ curl --max-time 2 -o /dev/null -w 'HTTP %{http_code}; elapsed %{time_total}s' http://127.0.0.1:15661/api/auth/session HTTP 200; elapsed 0.010421s Only AFTER that successful response did lead send 'release' to session 85089: release outside reader closed Stopped server through owned terminal session 44752, exit 130. No watcher ran. Startup executes database migrations/setup writes; it completed while reader pinned the WAL. Scope: shared NodeSQLite persistence, no render paths, wire changes, schema changes, provider-specific paths, or client mutations. Visual fixture matrix empty. Native Electron shell and macOS not exercised; shared server behavior checked on Linux. Current-head validation: 48b7d20a0b, focused suite 18/18 passing (green-tests.txt). Source diff confirms production code is unchanged from 26d95959db to 48b7d20a0b; only tests changed. Server-only exception: visual fixture matrix 0/0; no visible differences.