## Verdict: CHANGES REQUIRED ### Ranked findings 1. **Important — Clearing/removing the selected metric leaves a stale URL and reload restores it.** - `dashboard-v5-api-explorer.js:89-92, 298` removes metrics only from `selected`; it never clears `healthRange.metric`. - `dashboard-v5-range.js:88-92` only accepts a non-empty metric, so no clear operation exists. - Runtime at `390×844`: after **Auswahl leeren**, the chip count was `0`, but the URL still contained `metric=lab.factor_viii`; reload restored one chip. This makes clear/history/reload behavior misleading. - The A2 suite tests restoration but not clearing/removing: `tests/browser/dashboard_v5_sprint6g_a2.spec.js:65-75`. 2. **Important — A2 browser coverage is not durable in a clean checkout.** - `tests/browser/dashboard_v5_sprint6g_a2.spec.js` and `docs/sprint6g-a2-laboratory-reconciliation.md` are untracked. - `tests/browser/run_v5_isolated_matrix.sh:61-63,81-82` references the untracked A2 spec. A clean checkout therefore lacks the claimed A2 gate. 3. **Important — The 390px test covers only the laboratory card, not the mobile workflow it launches.** - `tests/browser/dashboard_v5_sprint6g_a2.spec.js:112-125` - It does not open the Explorer, exercise the single-point chart/table, inspect document cards/coverage, expand observation history, or check history/reload at 390px. - Its target assertion checks **height only** (`:119,124`), not the required `44×44` width and height. - Temporary runtime evidence found no horizontal overflow in the tested laboratory, Explorer, or document views, but that evidence is not encoded in the committed suite. 4. **Minor — The single-point ECharts image lacks a content-specific accessible description.** - `dashboard-v5-api-explorer.js:227` gives the chart only the generic description “Dokumentierte Gesundheitsverläufe …”. - The useful one-point warning is separately emitted at `:335-343`; the chart is not associated with it through `aria-describedby`, and the accessible table generated at `:194-208` has no caption/summary identifying the metric or explaining that only one point exists. - Runtime confirmed the chart’s accessible name omitted the metric, date/value, and “no trend assessable” qualification. 5. **Minor — Primary error UI can expose technical metric IDs/status codes.** - `dashboard-v5-api-explorer.js:320,346,358` - `dashboard-v5-record.js:162-167` - This conflicts with the stated primary-UI rule to avoid technical identifiers/status codes. Keep user-facing recovery text primary and place diagnostic codes in a secondary technical-details surface. ### PASS - **390px runtime reflow:** `documentElement.scrollWidth === clientWidth === 390` in laboratory, Explorer, and document views. - **44px implementation:** laboratory card buttons/links/summaries measured at least 44px high; CSS establishes global 44px control heights at `dashboard-v5.css:94-108`, with laboratory-specific coverage at `:427-435,446-447`. - **Semantic laboratory grouping:** parameter cards use `
`, facts use `
/
/
`, and observation history uses `
/`: `dashboard-v5-record.js:360-387`. - **Document status clarity:** original file, extracted text, content review, and full-text search are visibly separated: `dashboard-v5-record.js:264-273,281-282`. - **Document coverage grouping:** labeled section and five distinct coverage concepts are present: `dashboard-v5-record.js:264-273`. - **Focus after deep-link navigation:** runtime focus moved to the single-point status message after loading completed. - **Back/forward/reload happy path:** A2’s CRP route restoration passed. - **Single-point truthfulness:** one ECharts datum, `connectNulls:false`, and explicit “Verlauf ist noch nicht beurteilbar” status: `dashboard-v5-api-explorer.js:338-339`. - **Existing A2 suite:** `4 passed (5.2s)`, synthetic-only. ### Review hygiene - **Repository files modified by this review:** none. - Temporary browser-probe files/server were created under `/tmp` and cleaned up. - No blocking tool issues; an initial temporary Playwright test-directory permission issue was resolved without repository changes.