-- The plan lives in the same private SQLite database as backup metadata. Files -- are copied and verified first; all active paths and applied flags commit -- together. Original files remain available for an explicit rollback. CREATE TABLE backup_layout_journal ( backup_id INTEGER PRIMARY KEY REFERENCES backups(id) ON DELETE CASCADE, router_id INTEGER NOT NULL, backup_type TEXT NOT NULL, original_path TEXT NOT NULL, source_path TEXT NOT NULL, destination_path TEXT NOT NULL, sha256 TEXT NOT NULL, copied INTEGER NOT NULL DEFAULT 0 CHECK (copied IN (0,1)), applied INTEGER NOT NULL DEFAULT 0 CHECK (applied IN (0,1)), snapshot_path TEXT NOT NULL, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); INSERT INTO rust_schema_migrations (version) VALUES (3);