## Ergebnis: **NICHT FREIGEGEBEN** ### Wichtige Findings 1. **Important – geplante Medikation wird als tatsächliches Medikationsereignis visualisiert** - `scripts/health/health_dashboard_v4.py:311, 604–606, 614–616, 643–646` - Alle Zeilen aus `medication_administrations` werden unabhängig von `event_type` als Gabe bzw. Event-Overlay dargestellt. Damit können geplante, abgesagte oder verpasste Dosen wie tatsächlich verabreichte Dosen erscheinen. - **Sicherer Fix:** Für Gabe-/Phasenmarker ausschließlich explizit verabreichte Eventtypen über eine feste Allowlist verwenden. Geplante/abgesagte/verpasste Termine separat und eindeutig als Planung darstellen. Negative Fälle testen. 2. **Important – Quellenfrische kann ungültige oder zukünftige Daten als „aktuell“ einstufen** - `scripts/health/health_dashboard_v4.py:99–110, 701–715` - Datumswerte werden auf zehn Zeichen gekürzt; Suffix-Müll kann dadurch akzeptiert werden. Zukünftige Daten werden mit `max(..., 0)` auf Alter 0 gesetzt und somit „aktuell“. Apple Health verwendet zudem den maximalen rohen `start_date`, nicht zwingend den letzten stabilen kanonischen Tag. - **Sicherer Fix:** Datum fail-closed vollständig parsen, Zukunftswerte als `unbekannt/prüfen` markieren und Apple-Frische aus der stabilen kanonischen Analytics-Schicht ableiten. Importfrische und letzter beobachteter Datentag getrennt benennen und testen. 3. **Important – Legacy-Ernährungsheuristik behandelt unvollständige Erfassung faktisch als bewertbare Tagesdaten** - `scripts/health/health_dashboard_v4.py:222–258, 432–435, 895` - Der Dashboard-Aufruf berechnet und persistiert selbst einen „Plan-Treue“-Score. Nicht erwähnte Lebensmittel/Kategorien fließen implizit als nicht vorhanden ein; fehlende bzw. unvollständige Tageserfassung bleibt nicht sauber unbekannt. Die Anzeige „erkannte Risiken“ verstärkt eine medizinisch wertende Interpretation. - **Sicherer Fix:** Legacy-Score weder regenerieren noch anzeigen. Nur upstream vollständig klassifizierte Tage verwenden; andernfalls Score `null` und Status „Erfassung/Klassifikation unvollständig“. Keine Risiko-/Konformitätsbezeichnung aus Keyword-Treffern. 4. **Important – „safe“-Lebensmitteltoleranzen bleiben als grüne Sicherheitsklassifikation sichtbar** - `scripts/health/health_dashboard_v4.py:572–576, 856` - Auch bei manueller Herkunft kann `🟢 safe` als medizinische Sicherheit oder generelle Verträglichkeit verstanden werden. Eine Notiz über die deaktivierte Legacy-Engine entschärft die einzelne grüne Klassifikation nicht ausreichend. - **Sicherer Fix:** `safe` neutral als „bisher persönlich dokumentiert vertragen“ darstellen, ohne grüne Sicherheitssemantik; Beobachtungszeitraum, Datenvollständigkeit und rein dokumentarischen/N-of-1-Charakter direkt an der Tabelle ausweisen. 5. **Important – N-of-1-Experimentansicht enthält im tatsächlichen UI keinen unmittelbaren Sicherheitsrahmen** - `scripts/health/health_dashboard_v4.py:656–659, 857` - Die Dokumentation nennt die Ansicht nicht-kausal, die sichtbare Tabelle bietet jedoch direkt `challenge --food` an, ohne an dieser Stelle klarzustellen, dass keine Kausalität oder medizinische Empfehlung abgeleitet wird. - **Sicherer Fix:** Direkt oberhalb der Tabelle erklären: rein prospektive Dokumentation, keine Kausalitätsprüfung oder Therapie-/Challenge-Empfehlung; fehlende Symptom- oder Ernährungsdaten bleiben unbekannt. Bei potenziell riskanten Challenges ärztliche Abstimmung nennen. ### Positiv verifiziert - Vollständiger Touch-Check-in erzwingt sieben Werte von 0–3; fehlende Angaben werden nicht als Null gespeichert. - Symptom-Totale werden nur bei exakt vollständigen sieben Dimensionen erzeugt; Kalenderlücken bleiben `null`. - Korrelationsansicht verwendet klar nicht-kausale Sprache. - Laborwarnungen besitzen konservative Provenienz-Gates. - Tests: **96 passed**, fokussiert **8 passed**. - `git diff --check`: erfolgreich. ### Änderungen / Probleme - **Keine Dateien erstellt oder verändert.** - Keine Produktionsdatenbank oder Health-Artefakte geöffnet. - Kein Deploy, Commit oder Push. - Keine technischen Testblocker; Freigabe scheitert an den obigen semantischen Sicherheitsbefunden.