A task database runs in WAL mode. You copy only app.db, apply a destructive migration, and discover that recent rows lived in app.db-wal. A backup that was never restored is only a hopeful file copy.

A 30-minute drill

PRAGMA journal_mode=WAL;

CREATE TABLE tasks(id INTEGER PRIMARY KEY, title TEXT NOT NULL);

INSERT INTO tasks(title) VALUES ('before-checkpoint');