normogen/docs/adr
goose e322145ffb
Some checks failed
Lint and Build / format (pull_request) Successful in 37s
Lint and Build / clippy (pull_request) Successful in 1m40s
Lint and Build / build (pull_request) Successful in 3m44s
Lint and Build / test (pull_request) Failing after 0s
docs: decide multi-person ZK sharing ADR; reconcile jwt/encryption docs
Rewrite the encryption/persona/JWT docs to match the implemented code and
record the multi-person sharing design.

- multi-person-sharing.md (NEW): ADR for per-profile DEK + X25519 envelope
  sharing. All five original open questions resolved 2026-07-18. Covers
  divorced-parents, pets, graduation, and elderly-parent care; adds an
  admin permission tier for owner-incapacity. Decided, not yet implemented.
  (#3)
- encryption.md: full rewrite to the implemented wrapped-DEK / Web Crypto
  model; the old version described ZK encryption as 'planned'. (#4)
- jwt-authentication-decision.md: rewritten to match implementation
  (PBKDF2 not bcrypt, no Redis, token_version revocation, real Claims).
  Original aspirational content preserved in a History section. (#4)
- PERSONA_AND_FAMILY_MANAGEMENT.md: 'Current reality' section added, old
  'Implementation Status' marked superseded, encryption section corrected. (#4)
- ENCRYPTION_UPDATE_SUMMARY.md: archived (changelog for a rewrite that
  itself went stale). (#4)
- ADR README index updated for the new + reconciled entries.
2026-07-18 19:26:43 -03:00
..
android-health-connect-data-types.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
backend-deployment-constraints.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
frontend-decision-summary.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
jwt-authentication-decision.md docs: decide multi-person ZK sharing ADR; reconcile jwt/encryption docs 2026-07-18 19:26:43 -03:00
mobile-health-frameworks-data.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
mongodb-schema-decision.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
monorepo-structure.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
multi-person-sharing.md docs: decide multi-person ZK sharing ADR; reconcile jwt/encryption docs 2026-07-18 19:26:43 -03:00
README.md docs: decide multi-person ZK sharing ADR; reconcile jwt/encryption docs 2026-07-18 19:26:43 -03:00
state-management-decision.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
tech-stack-decision.md docs: reconcile documentation with reality (P3) 2026-06-27 16:02:16 -03:00
zero-knowledge-encryption.md docs: update ADR for ZK Phase 2 (wrapped-DEK recovery) completion 2026-06-29 08:51:03 -03:00

Architecture Decision Records

This directory holds the project's decision records — the "why" behind the major technical choices. These were originally written during Phase 1 research (dated JanFeb 2026) and moved here from the old thoughts/research/ tree during the documentation reconciliation. They are historical context, not current specs.

Decisions

Record Topic
tech-stack-decision.md Master stack choice: Rust/Axum backend, React frontend, MongoDB, JWT
mongodb-schema-decision.md Document model + at-rest encryption approach
jwt-authentication-decision.md JWT access/refresh tokens, token_version revocation, refresh rotation — reconciled with code 2026-07-18
frontend-decision-summary.md React (web) + React Native (mobile, future) split
state-management-decision.md Client state — superseded: decision was Redux Toolkit, actual code uses Zustand
monorepo-structure.md Repository layout (backend/, web/, mobile/, docs/)
backend-deployment-constraints.md Deployment requirements (Solaria, Docker)
mobile-health-frameworks-data.md HealthKit / Health Connect data-type reference (for future mobile work)
android-health-connect-data-types.md Android Health Connect data types
zero-knowledge-encryption.md Client-side zero-knowledge encryption (AES-256-GCM, double-PBKDF2, wrapped-DEK recovery; Phase 1 + Phase 2 implemented)
multi-person-sharing.md Per-profile DEK + X25519 envelope for family/caregiver sharing — Decided, not yet implemented (issue #3)

Note

: Where a decision diverges from the implemented code (e.g. state management), the code is the source of truth and the ADR is kept only as historical record of the reasoning at the time.