Privacy-Period-Tracker/docs
null 17cddb2a61 docs: record why the database is not encrypted, and drop the claim that it is
Asked whether encryption at rest could be added. It can, and it should not be
yet — so the reasoning goes in the document that owns the claim, before it is
forgotten and re-derived from scratch.

The architecture decides it. ReminderCoordinator collects Room flows at every
process start, including processes started with no Activity after a reboot,
and ReminderWorker reads the forecast on a schedule. The key would have to be
readable with no user present, which is the availability condition the
platform key already has. A key anything running as this app can reach
unattended defends a file, not a process — and against every adversary this
document already lists, it adds nothing.

What it would genuinely add is narrow: a file copied off the device and read
elsewhere, a phone with no screen lock, and crypto-shredding on delete. The
cost is about +1 MB downloaded and +2 MB installed on a 2 MB app, and a new
class of total loss — a Keystore key can be lost in the field, platform backup
is off, and there is no telemetry that would tell us it happened. Today a
database that will not open is a bug. Afterwards it would be somebody's
history.

The condition that reverses it is written down too: a key bound to the app
lock's user secret, once export has given the user a copy they control.

BRAND_GUIDE carried an artwork brief reading "explaining encrypted local data
storage" — a false claim waiting for somebody to draw it, on the one subject
where a padlock reads as a promise. Replaced with what is true and is a better
story anyway: the data never leaves, so there is no server to breach and
nothing to sell. SECURITY_CHECKLIST gains the row that would have caught it.

Nothing shipped ever claimed encryption; grep over app, core and domain for
strings and illustrations comes back empty. This closes the gap between that
and the documents.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-19 03:08:22 -05:00
..
architecture fix: a throw in a background flow no longer kills the process 2026-08-19 03:06:10 -05:00
data feat: the wordmark has its space, and logo and banner say so 2026-08-18 22:12:33 -05:00
design docs: record why the database is not encrypted, and drop the claim that it is 2026-08-19 03:08:22 -05:00
history docs: log the screenshot capture and what the seeding taught 2026-08-19 01:48:44 -05:00
planning docs: correct 57 claims the code and tracker disagreed with 2026-08-18 16:33:14 -05:00
qa feat: Delete My Data, and fix a privacy option nobody could tap 2026-08-18 21:03:16 -05:00
security docs: record why the database is not encrypted, and drop the claim that it is 2026-08-19 03:08:22 -05:00
DOC_TRUST_MAP.md docs: eleven app screenshots, from a seeded demo history 2026-08-19 01:47:52 -05:00
TOOLS.md docs: correct 57 claims the code and tracker disagreed with 2026-08-18 16:33:14 -05:00
WORK_CYCLE.md docs: a check-in needs the project UUID, not the slug 2026-08-18 16:35:06 -05:00