# Stage 08: Database Connection and Migration Foundation Date: 2026-07-29 ## Result - Centralized SQLite connection policy in `SQLiteConnectionFactory`. - Preserved WAL, foreign-key enforcement, row mapping, handle cleanup, and the existing 20-second contention tolerance. - Added an ordered migration runner with immutable checksums and an applied-migration ledger. - Added savepoint rollback so a failed migration cannot be recorded or leave partial schema. - Adopted existing databases as version `0001` only after verifying the required legacy tables. - Kept the legacy idempotent bootstrap in place for compatibility with databases created by every previous application version. ## Forward Rule All schema changes after this stage must be a new immutable module under `backend/database/migrations`. Editing an applied migration is rejected by checksum. A database containing a migration unknown to the running code is rejected rather than opened with an older schema interpretation. ## Residual Risk The historical inline bootstrap remains a compatibility facade during repository migration. It may be removed only after legacy upgrade fixtures cover every supported historical shape. No user table or row is rewritten in this stage.