focus-flow/Codex Documentation/Completed Plans/V1_ADR_005_Export_Backup_Boundary.md

1.1 KiB

V1 ADR 005: Export & Backup Boundary

Status: Accepted; updated to match current app state

Date: 2026-06-26

Last reviewed: 2026-07-07

Decision

  • Backup: passphrase-encrypted copy of the local SQLite database bytes. Defaults:
    • source DB: ~/ADHD_Scheduler/scheduler.sqlite
    • backup directory: ~/ADHD_Scheduler/backups
    • backup filename: yyyymmdd_hhmm.db.enc
  • Backup cryptography: AES-256-GCM with PBKDF2-HMAC-SHA256 key derivation, 200,000 iterations, random salt, and random nonce. The encoded file is a JSON envelope containing format metadata, salt, nonce, ciphertext, and MAC.
  • Restore: decrypts a .db.enc backup and atomically replaces the target SQLite file.
  • Readable export: JSON and CSV are produced through ExportController and export writer implementations.

Boundary

Encrypted backup is the restorable binary preservation path for the SQLite runtime database. JSON and CSV exports are readable user/data-portability outputs and are not the canonical restore format.

No open questions remain.