Skip to content

Architecture Decision Record Log ​

Purpose ​

This file tracks architecture decisions that affect implementation across modules.

Use ADR entries to avoid implicit decisions and reduce design drift.

Status Values ​

  • Proposed
  • Accepted
  • Superseded
  • Deprecated

ADR Format ​

Each entry should include:

  • ID: ADR-XXXX
  • Title
  • Status
  • Date
  • Context
  • Decision
  • Consequences
  • Alternatives Considered
  • References to PRD, SRS, SDD, and requirement IDs

Template ​

md
## ADR-XXXX: <Title>

- Status: Proposed | Accepted | Superseded | Deprecated
- Date: YYYY-MM-DD

### Context — ADR-0001

<problem statement and constraints>

### Decision — ADR-0001

<what was chosen>

### Consequences — ADR-0001

<tradeoffs and expected impact>

### Alternatives Considered — ADR-0001

<option 1, option 2, option 3>

### References — ADR-0001

- ../../product/prd.md
- ../srs.md
- ../sdd.md
- Requirement IDs: FR-..., NFR-..., SR-..., SCR-...

Working Rules ​

  • A new architecture-impacting PR should include an ADR update when needed.
  • Mark old ADRs as superseded instead of deleting history.
  • Keep ADR decisions implementation-ready and testable.
  • Link ADR decisions to ../../RTM.csv when requirements or coverage are affected.

Accepted ADRs ​

IDTitleStatusDate
ADR-0014Open Core architecture — plugin-based modulesAccepted2026-07-03
ADR-0015Code Quality Tooling — ESLint + PrettierSuperseded2026-06-20
ADR-0016RBAC Scope System — Permissões com Escopo por EntidadeProposed2026-06-26
ADR-0021EntityRepository — Persistence Abstraction for Worker ServicesAccepted2026-07-04
ADR-0022Multi-Role User Support — roles[], user_roles, and AuthPrincipalAccepted2026-07-05
ADR-0023Server-Authoritative Model — Command Handler Único + Events como AuditoriaProposed2026-07-07
ADR-0024-unified-error-handling.mdUnified Error Handling — Centralized ErrorCode RegistryAccepted2026-07-11
ADR-0025-onboarding-subdomain.mdOnboarding Subdomain — Two Vite Configs vs Separate ProjectAccepted2026-07-13
ADR-0026-deterministic-daily-codes.mdDeterministic Daily Codes for Offline Check-in/Check-outAccepted2026-07-16
ADR-0027-read-mutation-hooks.mdTwo-Hook Read/Mutation Pattern for UI Data AccessAccepted2026-07-23
ADR-0028-persistence-pattern-boundaries.mdPersistence Pattern Boundaries — Three Legitimate StrategiesAccepted2026-07-23
ADR-0029-amend-adr-0023.mdADR-0023 Amendment — CommandContext, Proxy Governance, and EnforcementProposed2026-07-25
ADR-0030-dexie-reversion.mdDexie Reversion — 8 Key Design Decisions (issue #510)Accepted2026-07-25
ADR-0031-two-pass-pbkdf2.mdTwo-Pass PBKDF2 for Free-Tier Password SecurityProposed2026-07-28
ADR-0032-durable-objects-fan-out.mdDurable Objects for Real-Time Event Fan-OutAccepted2026-07-29
ADR-0033-mcp-surface.mdMCP Surface — Agent Integration via Model Context ProtocolProposed2026-07-31
ADR-0034-class-session-relationship.mdClass–Session Relationship in Check-in/Capacity QueriesAccepted2026-08-05
ADR-0035-translation-policy.mdUnified Translation Policy — App MT+Review; the docs track (manual + pins) is superseded by ADR-0046Accepted2026-08-09
ADR-0036-authorized-pickup-list.mdAuthorized Pickup List — Closed Guardian List Data Model (issue #589)Accepted2026-08-09
ADR-0037-simplify-for-solo-llm.mdSimplify Quality Infrastructure for Solo Dev + LLMAccepted2026-08-10
ADR-0038-termux-environment.mdTermux Environment — Native Subset + CI-Only Gates, No prootAccepted2026-08-09
ADR-0039-online-only-default.mdOnline-Only Default Mode — Decoupling the Offline Stack (wayfinder map #667)Accepted2026-08-18
ADR-0040-derived-visitor-status.mdDerived Visitor Status — is_visitor from familyMembershipStatus (issue #151)Accepted2026-08-31
ADR-0041-nucleus-role-join-table.mdChild Nucleus Role in Module Join Table — nucleus_members, not core students (issue #151)Accepted2026-08-31
ADR-0042-pickup-authorization-levels.mdPickup Authorization Levels — N1 (enrollment) / N2 (phone OTP) / N3 (temporary, parent-present) (issue #758)Accepted2026-09-09
ADR-0043-feed-definition-seam.mdOne Definition Per Feed — the fan-out seam #604/#609 left open (amends ADR-0032)Accepted2026-09-09
ADR-0044-portable-core-boundary.mdPortable Core — Cloudflare as deployment platform, not programming model (amends ADR-0028, ADR-0039 §1)Accepted2026-09-11
ADR-0045-civil-calendar-day-boundary.mdCivil Calendar Day Boundary — shared day is the church's zone, age is the viewer's (the evening check-in defect; amended: mirror → packages/dates)Accepted2026-09-13
ADR-0046-pt-br-only-docs-portal.mdpt-BR-Only Docs Portal — remove the docs/en mirror and its tooling; serve a translation notice at /en/Accepted2026-09-14

Archived ADRs ​

ADRs older than 6 months whose decisions are fully consolidated (implemented, no active controversy) live in archive/. They remain part of the decision history — superseded by later ADRs where applicable — but are no longer read as active guidance.

IDTitleStatusDate
ADR-0001Local Data Engine and Migration StrategySuperseded2026-04-10
ADR-0002Sync Transport, Ordering, and IdempotencyAccepted2026-04-10
ADR-0003Auth Adapter and Session Token ModelAccepted2026-04-10
ADR-0004Client-side encryption approach for sensitive local dataAccepted2026-04-11
ADR-0005Deterministic conflict ordering detailsAccepted2026-04-11
ADR-0006Service-worker cache invalidation strategyAccepted2026-04-11
ADR-0007Keycloak token validation boundaryAccepted2026-04-11
ADR-0008Backend schema and idempotency ledger baselineSuperseded2026-04-11
ADR-0009Debian + Docker Compose deployment baselineAccepted2026-04-11
ADR-0010Backup and restore policySuperseded2026-04-11
ADR-0011Phase 2 user-management backend alignmentAccepted2026-04-11
ADR-0012Photo/media policyAccepted2026-04-11
ADR-0013Pagination strategyAccepted2026-04-11

Distribuído sob licença MIT.