Test Local-First Quality Gates

Use this as a release gate for local-first apps.

Gate Table

AreaTest
migrationsevery supported old version migrates to current and preserves rows
backupbackup validates before success message
restoreclean install can restore and run offline
WAL/copylive SQLite backup does not copy only .db while WAL has data
exportCSV/JSON export handles thousands of rows and special characters
importunsupported versions fail safely
encryptionbackup cannot be opened without key/password
key recoveryforgotten password/key loss behavior is documented
offline queueactions persist through app restart and retry once online
idempotencyrepeated push does not duplicate server state
conflictsstale update and delete-vs-edit have deterministic outcomes
browser quotaquota exceeded shows recovery UX
multi-tabIndexedDB version upgrade handles blocked tabs
performancelow-end device handles realistic data volume
observabilitysync/backup failures leave inspectable error state

Small App Minimum

For a v1 privacy-first app, do not skip these:

  1. migration test
  2. export test
  3. clean restore/import test
  4. offline launch test
  5. app lock or private-data access review
  6. storage pressure/error message test

Example Acceptance Criteria

Given a version 1 database with 5,000 transactions
When the user upgrades to version 3
Then all transactions remain queryable
And PRAGMA integrity_check returns ok
And CSV export contains the same transaction count