# Sprint 5B — Dashboard v5 Explorer als Kernprodukt

**Status:** implementiert, synthetisch abgenommen und unabhängig freigegeben (2026-07-13)

**Primärgerät:** Linux-PC (1440×900 und 1920×1080)

**Sekundärgerät:** iPhone (390×844) für kontrollierte Ansicht

**Fallback:** Dashboard v4 und seine Route bleiben unverändert; Änderungen betreffen ausschließlich die parallele v5-Preview.

## Ziel

Der Explorer wird von einer technischen Detailansicht zu einem kohärenten, dokumentarischen Analysearbeitsplatz. Er verbindet Verlauf, gleichentägigen Scatter, zeitversetzte Ergebnisansicht, Behandlungsphasen und Ereignisse, ohne Missingness zu ergänzen oder Kausalität zu behaupten.

## Lieferumfang

1. fünf fest registrierte, verständliche Presets,
2. Tages- und Wochenansicht mit klarer Coverage-Semantik,
3. lückenbewusster Verlauf mit Registry-Limits,
4. Scatter nur aus vollständigen gleichentägigen beziehungsweise gleichwöchentlichen Paaren,
5. Lag-Ansicht mit expliziter Richtung Prädiktor Tag `d` → Ziel Tag `d + Lag`,
6. Behandlungsphasen ausschließlich nebeneinander beschreibend,
7. separate Explorer-Ereignisspur auf derselben sichtbaren Zeitdomäne,
8. Desktop-, Mobile-, Tastatur-, 200-%-Text-, Reduced-Motion- und Print-Regressionsabnahme.

## Presets

- Schlaf und Erholung,
- Herz und Erholung,
- Aktivität und Schlaf,
- Dokumentierte Symptome,
- Dokumentierter Histamin-Score.

Presets wählen ausschließlich registrierte Metriken. Rohwerte bleiben auf höchstens zwei Reihen derselben `raw_overlay_group` begrenzt. Der Basisindex bleibt auf höchstens vier Metriken mit `ratio_100` begrenzt.

## Tages-/Wochenmodus

- Tageswerte bleiben unveränderte dokumentierte Beobachtungen.
- Wochen beginnen montags in der Dashboard-Zeitzone.
- Ein Wochenwert wird nur bei sieben vorhandenen numerischen Tagesbeobachtungen gebildet.
- Unvollständige Wochen bleiben `null`; es wird weder hochgerechnet noch interpoliert.
- Im Rohmodus gilt die Registry-Aggregation (`sum` oder `avg`).
- Im Indexmodus werden vollständige tägliche Indizes gemittelt, damit Basis 100 interpretierbar bleibt.
- Numerische Null bleibt eine Beobachtung und darf nicht als Missingness behandelt werden.

## Safety- und Evidenzgrenzen

- keine Diagnose, Kausalitäts-, Dringlichkeits- oder Therapieaussage,
- keine inferenzstatistische oder Korrelationsberechnung im Browser; lediglich dokumentarische Tages-/Wochenaggregation nach Registry-Regel,
- Lag- und Phasenansichten zeigen ausschließlich serverseitig validierte Aggregate; ihr Start-/Endzeitraum ist im Bundle nicht ausgewiesen und die globale Zeitraum-/Kadenzsteuerung gilt dort nicht,
- p-/q-Werte werden nicht als klinische Relevanz interpretiert,
- keine Ereignisse als künstliche Messwerte,
- keine Gesundheitsdaten in URL oder `localStorage`,
- keine Produktionsdaten in Browserfixtures, Screenshots oder delegierten Reviews,
- keine Interpolation über fehlende Kalenderdaten.

## Implementierter und geprüfter Stand

- exakt fünf serverseitig registrierte Presets; Bundle-Vertrag lehnt Registry-Drift ab,
- Tages- und Wochenansicht ohne Hochrechnung oder Interpolation,
- Wochenwert nur bei sieben numerischen Tagesbeobachtungen; echte Null bleibt erhalten,
- täglicher beziehungsweise vollständig wochengepaarter Scatter,
- Lag-Ansicht mit menschenlesbaren Metrik-/Phasenbezeichnungen und expliziter Richtung,
- Phasen gruppiert und ausschließlich deskriptiv dargestellt,
- separate Explorer-Ereignisspur: tägliche Marker am exakten Datum, wöchentliche Marker am gemeinsamen Montagsanker bei erhaltenem exaktem Ereignisdatum in den Details,
- lückenbewusster Trend samt vollständig sichtbarer Mobile-Legende,
- produktiver Bundlepfad ausschließlich read-only mit fünf Presets validiert,
- 130 Python- und 16 Playwright-Tests bestanden; Ruff, Compile, JavaScript-Syntax und Diff-Check grün,
- unabhängige UX/Accessibility-, Medical-Safety/Data-Contract- und Release/QA/Security-Reviews: `APPROVE`,
- synthetische Explorer-Screenshots für Desktop, iPhone und 200-%-Text erzeugt und visuell geprüft,
- v4 unverändert; kein Commit, Push oder Preview-Deployment erfolgt.

## Deterministische synthetische Reproduktion

```bash
rm -rf /tmp/healthmanager-v5-s5b-repro
mkdir -p /tmp/healthmanager-v5-s5b-repro
python3 tests/fixtures/dashboard_v5_fixture.py \
  /tmp/healthmanager-v5-s5b-repro/health.db \
  --anchor-date 2026-06-15
python3 scripts/health/health_dashboard_v5.py \
  --db /tmp/healthmanager-v5-s5b-repro/health.db \
  --output /tmp/healthmanager-v5-s5b-repro/v5.html \
  --today 2026-06-15 \
  --generated-at 2026-06-15T12:00:00+00:00
```

Der Test `test_sprint5b_fixture_and_html_are_byte_deterministic` erzeugt Datenbank und HTML jeweils zweimal und verlangt Bytegleichheit. Browserabnahmen verwenden ausschließlich diese synthetische Sentinel-Fixture.

## Abnahme

- Unit- und Vertragsregressionen für exakt fünf Presets,
- Browserregressionen für Tages-/Wochenumschaltung, vollständige Wochen, Missingness, Scatter-Paarung und Ereignisposition,
- fünf Viewports von 390×844 bis 1920×1080,
- Touchziele mindestens 44×44 CSS-Pixel,
- vollständige Tastaturbedienung und sichtbarer Fokus,
- unabhängiger UX-/Accessibility-, Medical-Safety-/Privacy- und Release-/QA-Review,
- kein Commit, Push oder Preview-Deployment ohne erneute ausdrückliche Freigabe.
