A read-write open checkpointed the WAL and deleted -wal/-shm on close; a plain mode=ro open created missing ones and left them. _ro_connect uses the sidecars only when both exist (a live writer keeps them) and reads the file as immutable otherwise. verify_artifact, _has_session, discover, _descendants and residual_artifacts (db_rows_naming takes a connect) use it; the purge's own writes are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>