fix(server): pure projection reads run on the reader connection

getThreadRecords, getShellSnapshot, getThreadShell, getRecoveryThreadIds and
getSettlementCandidates are pure reads but acquired the writer, so they queued
behind any open BEGIN IMMEDIATE. Wrap each in NodeSqliteClient.readOnly; inside
an open write transaction they still use the writer.

Fixes #23687. Implementation taken from #23689.

Co-Authored-By: Victor I <vifarinde@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7ca41e9da5Julius Marminge committed on 10/22/2026, 9:39:27 PMparentffcf9a0

Checks

Some checks failed
1 file changedLine totals unavailable