P0: 0, P1: 4, P2: 2 P1: - `src/jarvis_finance/services/wealth_cockpit.py:408-410` — Jeder Cash-Account löst `KeyError: 'positions'` aus, weil die Gruppe nur `total`, nicht `positions`, initialisiert. Dadurch endet `/portfolio/wealth-cockpit` mit HTTP 500; 5 fokussierte Backendtests schlagen fehl. **Fix:** `group["total"]` für die Vollständigkeitsprüfung verwenden oder das Feld konsistent initialisieren und die Wealth-Cockpit-Tests erneut vollständig ausführen. - `src/jarvis_finance/services/wealth_cockpit.py:386-389,445-448` — Freshness wird gegen Mitternacht UTC des `as_of`-Tages geprüft. Ein legitimer Zeitstempel desselben Tages, z. B. `2026-08-02T12:00:00Z`, wird dadurch als `source_date_in_future`/`unknown` eingestuft. **Fix:** beim normalen Rendern den tatsächlichen UTC-Zeitpunkt verwenden; bei expliziten historischen Tagesstichtagen fachliche Datumssemantik statt Mitternachtsvergleich anwenden und Same-Day-/Zeitzonentests ergänzen. - `src/jarvis_finance/services/wealth_cockpit.py:834-840` — `cashflow_coverage_status` und `scope_classification_status` werden aus Coverage-Zeilen gelesen, obwohl `build_performance_coverage()` diese Felder nicht liefert (`src/jarvis_finance/services/portfolio_performance.py:122-166`). Deshalb sind `included_sources` für Nettoeinzahlungen immer leer und alle Quellen gleichzeitig „fehlend“, selbst wenn der Metric-Status `ready` ist. **Fix:** Quellenlisten aus tatsächlich vorhandenen Qualitäts-/Reason-Code-Feldern ableiten oder die kanonische Coverage-Struktur samt Pydantic-/Frontend-Vertrag und Regressionstests erweitern. - `src/jarvis_finance/services/wealth_cockpit.py:985-997,1020-1022` — Quellenbezogene Performance-Readiness verwendet `build_performance_coverage()` über die gesamte jeweils vorhandene Historie, nicht über den ausgewählten Cockpit-Zeitraum. Eine Quelle kann daher für YTD/Vorjahr als `ready` beziehungsweise eingeschlossen erscheinen, obwohl genau für diesen Zeitraum Anfangs-, End- oder Cashflow-Grenzen fehlen. **Fix:** pro Scope dieselbe bestehende Performanceengine mit den angefragten Periodengrenzen auswerten und Status sowie Quellenlisten aus diesen periodengleichen Ergebnissen ableiten. P2: - `src/jarvis_finance/services/wealth_cockpit.py:481-511` — Die drei Investment-Quellen werden immer ausgegeben; leere/unbewertete Nicht-Cash-Container erscheinen dadurch weiterhin, und insbesondere ein leeres Equity-Summary wird als Wert `0.00` behandelt. Das verletzt die Vorgabe, unbewertete leere Nicht-Cash-Container auszublenden. **Fix:** Investment-Zeilen nur bei kanonischem Wert oder tatsächlicher fachlicher Quelle/Position ausgeben; bekannte Werte einschließlich echter Nullwerte weiterhin sichtbar lassen und Empty-Container-Regressionstests ergänzen. - `src/jarvis_finance/api/routers/overview.py:54-60` — Der stark erweiterte Wealth-Cockpit-Vertrag besitzt weiterhin kein Backend-`response_model`; nur der TypeScript-Typ beschreibt Readiness, Diagnosen und Status-Enums. Dadurch werden fehlende oder ungültige Felder weder zur Laufzeit noch in OpenAPI erkannt. **Fix:** einen Pydantic-Responsevertrag für Wealth Cockpit einschließlich aller vier Readiness-Statuswerte, Quellenlisten, Datum/Periode, Blocker, Aktion und Reason-Code hinzufügen und Endpoint-Contracttests ergänzen. Final count: 6