d8dcdfd620
Port from openclaw/openclaw#120597: Docker Desktop, OrbStack, and Podman expose host bind mounts as fuse.virtiofs or 9p. SQLite WAL shared-memory is not coherent across the VM boundary and fails SILENTLY under write pressure (zero-filled pages), so the existing reactive marker fallback (_WAL_INCOMPAT_MARKERS) never fires — the mode must be refused before the pragma. apply_wal_with_fallback now checks the DB path against /proc/self/mountinfo (longest mount-point prefix wins; per-directory cached) and applies journal_mode=DELETE with a one-shot WARNING naming the fix (native volume instead of a bind mount). On-disk WAL databases are still never live-downgraded; require_wal callers get WalUnsupportedError. Non-Linux hosts and unreadable mount tables conservatively skip detection (behavior unchanged). Sabotage-verified: disabling only the wiring makes test_fresh_db_on_cross_vm_fs_gets_delete fail.