**NICHT APPROVED** ### Important 1. **Secret-Regressionstest erkennt direkte Zuweisungen nicht** `tests/test_sprint0_safety.py:166-184` Der AST-Test prüft nur Dictionary-Einträge und `setdefault()`. Eine direkte Zuweisung wie `GOG_KEYRING_PASSWORD = "..."` würde trotz Testnamen unentdeckt bleiben. **Fix:** Zusätzlich `ast.Assign` und `ast.AnnAssign` prüfen und nichtleere String-Konstanten für `GOG_KEYRING_PASSWORD` ablehnen. 2. **Schema-Reproduzierbarkeit wird nur oberflächlich getestet** `tests/test_sprint0_safety.py:139-155` Der Test verlangt lediglich sieben Tabellen und zwei Spalten. Fehlende Tabellen, zusätzliche Tabellen oder abweichende Spaltenreihenfolgen würden nicht auffallen, obwohl `database/schema.sql` als vollständiges produktives Schema dokumentiert ist. **Fix:** Erwartetes vollständiges Tabellen-/Spalten-Manifest prüfen oder den recreierten Schema-Stand gegen einen datensicheren, aus `sqlite_master`/`PRAGMA table_info` erzeugten Struktur-Snapshot vergleichen. 3. **Kritischer Commit-Fehler nach erfolgreicher Archivierung ist nicht regressiongetestet** `scripts/health/apple_health_import.py:298-307`, `tests/test_sprint0_safety.py:89-103` Die Implementierung versucht bei einem Commit-Fehler, die bereits verschobene Datei zurückzustellen. Der Test deckt aber nur einen Fehler *während* `archive_file()` ab, nicht einen Fehler beim anschließenden `commit()`. Genau dieser Pfad ist für die Import-/Archiv-Atomarität kritisch. **Fix:** Verbindung/Commit so injizieren oder mocken, dass der finale Commit nach erfolgreichem Move fehlschlägt; anschließend Null Records, zurückgestellte Quelldatei und retrybaren Fehlerstatus verifizieren. ### Minor 4. **Mehrfach duplizierte Secret-Loader erhöhen Divergenzrisiko** Unter anderem `scripts/health/apple_health_drive_sync.py:19`, `scripts/health/health_pipeline.py:54`, `scripts/health/generate_doctor_report.py:46` sowie die Cron-Skripte. Parser und Fehlermeldungen unterscheiden sich bereits leicht; Dateirechte werden nicht geprüft. **Fix:** Gemeinsames kleines Secret-Loader-Modul verwenden, robust mit `shlex` parsen und bei dateibasierten Secrets unsichere Gruppen-/Weltrechte ablehnen. 5. **Neue tote Variablen im Dashboard** `scripts/health/health_dashboard_v3.py:484`, `:492`, `:498` `lab_latest_rows`, `medication_brief_rows` und `recent_sym_rows` werden erzeugt, aber nicht verwendet. **Fix:** Entfernen oder tatsächlich rendern; außerdem den ungenutzten Import `apple_canonical_summary` entfernen. ### Verifikation - `python3 -m pytest -q`: **14 passed** - `python3 -m compileall -q scripts tests`: **erfolgreich** - `git diff --check`: **erfolgreich** - AST-Prüfung des aktuellen Baums: **keine vorhandenen GOG-Passwortliterale** - Ruff zeigt zahlreiche Bestandsprobleme sowie die genannten neuen Dead-Code-/Import-Befunde. **Dateien geändert/erstellt:** keine. **Probleme bei der Prüfung:** keine Patientendaten oder Secret-Inhalte gelesen bzw. ausgegeben.