Status: Living index.
One file per decision, numbered in rough chronological order of the decision
(not the writing). Rule: any change significant enough that it would once
have added a bullet to ARCHITECTURE.md → “Recent Architectural Decisions”
writes an ADR here instead; ARCHITECTURE.md links to it with one line.
Format per ADR: Status (Proposed / Accepted / Superseded by ADR-NNNN),
Date, Context (the problem, in 1–3 sentences), Decision,
Consequences. Long design docs (e.g. sync-design.md) stay where they
are; the ADR is the durable decision record that points at them.
ADRs are immutable once Accepted except for status changes — a reversal is a new ADR that supersedes the old one.
| ADR | Decision | Status |
|---|---|---|
| 0001 | Cell-progress autosave is delete-then-insert | Accepted |
| 0002 | All clue-cell math lives in ClueProgressCalculator |
Accepted |
| 0003 | Shared settings row widget library | Accepted |
| 0004 | Typed load errors are plain sealed classes | Accepted |
| 0005 | App version is read at runtime, never hardcoded | Accepted |
| 0006 | Crosshare Daily Mini approved as openLicense |
Accepted |
| 0007 | Settings sub-pages are nested GoRoutes |
Accepted |
| 0008 | Completion data: hybrid model with named authorities | Accepted |
| 0009 | Sync: 3-layer orchestrator, per-namespace merge, opt-in rollout | Accepted |
| 0010 | Rebus entry: NYT-aligned surfaces + first-letter acceptance | Accepted |
| 0011 | Widget background refresh is best-effort, not an observer | Accepted |
| 0012 | Challenge Boards v1: live-compute lifetime + bounded retention | Accepted |
| 0013 | No monetization; entitlement scaffolding removed | Accepted |
| 0014 | Reminders deferred; scaffolding removed | Accepted |
| 0015 | Platform parity required across all app targets | Accepted |
| 0016 | Mixed-version sync compatibility policy | Accepted |