normogen/docs/adr
goose 668ea59030
All checks were successful
Lint and Build / format (pull_request) Successful in 36s
Lint and Build / clippy (pull_request) Successful in 1m42s
Lint and Build / build (pull_request) Successful in 3m47s
Lint and Build / test (pull_request) Successful in 3m57s
Lint and Build / format (push) Successful in 38s
Lint and Build / clippy (push) Successful in 1m58s
Lint and Build / build (push) Successful in 3m48s
Lint and Build / test (push) Successful in 3m57s
chore: remove dead AccessClaims struct (#5)
backend/src/auth/claims.rs was orphaned dead code: auth/mod.rs never
declared 'mod claims', so the file wasn't compiled into the crate at
all. It defined two structs:
- AccessClaims — referenced nowhere; a latent trap (carried
  family_id/permissions fields that suggested enforcement that doesn't
  exist).
- RefreshClaims — a duplicate of the LIVE RefreshClaims in jwt.rs,
  which is what JwtService actually uses.

Deleted the file. Updated the JWT ADR to mark the open item done and
note the removal historically.

Build/clippy/fmt clean (the file wasn't compiled anyway). Closes #5.
2026-07-19 12:23:31 -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 chore: remove dead AccessClaims struct (#5) 2026-07-19 12:23:31 -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.