Quality Gates Checklist
Copy this into app proposals and release checklists.
Storage
- Source-of-truth data is labeled separately from cache and derived indexes.
- Local store path is deliberate and documented.
- Attachments have manifest metadata and integrity checks.
- Derived indexes can be rebuilt from source data.
Migrations
- Every supported old version migrates to current.
- Migration tests assert row preservation.
- Destructive migration is disabled for user-owned data.
- Risky migrations create a pre-migration backup.
Backup And Restore
- Export exists for user-owned data.
- Backup validates before showing success.
- Clean-install restore test passes.
- Restore creates a pre-restore backup before replacing data.
- Unsupported backup versions fail safely.
Encryption
- Threat model is written.
- Keys are stored in platform secure storage.
- Encrypted backup has wrong-password negative test.
- Key loss behavior is documented.
- Plaintext export has clear warning or encryption option.
Sync
- Pending mutations persist through restart.
- Idempotency keys prevent duplicates.
- Retry/backoff is bounded and inspectable.
- Stale update and delete-vs-edit conflicts are tested.
- Auth expiry does not silently drop queued writes.
Offline UX
- Users can tell saved, pending, failed, and conflicted states apart.
- Last successful sync/fetch time is visible where needed.
- Storage pressure has recovery UX.
- App launches and reads local data without network.