ADR-0004 — Master-key hierarchy (ADR-D)

  • Status: Seeded placeholder — not yet ratified (Story 1.5; 🔒 closer review).

  • Source: docs/planning-artifacts/architecture.md §"Contested Decisions" ADR-D (#272—​273); Decision Priority (D2.1—​2.4); project-context.md §Privacy invariants.

Context (to be decided)

Passphrase → master data key → per-device wraps + a recovery wrap (unifies FR-3 + FR-10). Crypto-library choice interacts with Android. Key material uses zeroize, is never Debug, never logged; recovery codes shown once and never persisted in plaintext.

Decision

Pending. RustCrypto (chacha20poly1305, argon2, zeroize) is pinned-but-unused. Ratify before any key material is generated.

Consequences

To be recorded when decided.