# Decision log

## ADR-01: Local-first persistence

**Decision:** Use a versioned storage adapter over `localStorage` with validated JSON import/export.  
**Reason:** It keeps a solo project achievable, demonstrates data boundaries and recovery, and avoids unrelated account/cloud work.  
**Consequence:** Data is per-browser; the UI says this clearly and provides a portable backup.

## ADR-02: Derived progress

**Decision:** Calculate completion and dashboard summaries from task records.  
**Reason:** Storing calculated progress would introduce synchronisation defects.  
**Evidence:** Domain tests cover empty and partially complete goals.

## ADR-03: Standards and compatibility

**Decision:** Use semantic HTML, system fonts, Grid/Flexbox, feature detection and a UUID fallback.  
**Reason:** Avoid browser-specific styling and unnecessary polyfills while keeping a clear backwards-compatibility path.

## RWD-01: 1680 summary-card orphan

**Observed:** Visual inspection at 1680×1050 showed a three-column grid with the fourth summary card alone on a second row. Functionality passed, but hierarchy and balance were poor.  
**Decision:** Use a balanced 2×2 summary grid below 1800 px and a four-column row from 1800 px.  
**Verification:** Computed styles changed from three columns to two; `scrollWidth` remained equal to `clientWidth`; the full core journey passed again.  
**Evidence:** `responsive-defect-before-1680x1050.png` and `responsive-fix-after-1680x1050.png`.

## ADR-04: Truthful manual evidence

**Decision:** Do not simulate Microsoft Edge or claim physical-device sessions from a Linux host.  
**Reason:** Viewport automation is useful evidence but is not equivalent to two real computers or a genuine Edge build. The supplied protocol makes the remaining evidence reproducible and auditable.
