CHANGES_REQUIRED - **P2 — Malformed transfer membership does not always fail closed.** `household_financials.py:168-172` marks a transfer unit unavailable only when the conflicted transaction itself has `transaction_type='transfer'`. Synthetic counterexample: one expense referenced by two distinct transfer relations plus two transfer counterpart legs produced one correct expense/category row, but still returned `neutral_transfer_volume_chf='30.00'`, `unavailable_transfer_count=0`, conflict count 1. Any membership conflict affecting the scoped transfer graph must make volume `null`. Additionally, `household_import.py:2113-2148` omits membership conflicts from overview status, so the standard duplicate-pair probe returned null volume while the overview claimed `status='current'` / “Aktuell”; `HouseholdOverviewPage.vue:69-70` incorrectly labels every unavailable volume as missing CHF conversion. - **P2 — Budget status/category detail still present missing-FX values inconsistently and without quality status.** `budget_overview.py:313-339` overlays canonical actuals with planning output whose `_actual_months` still falls back from missing `amount_chf` to foreign `amount_original` (`budget_planning.py:361-367`). A synthetic EUR 50 expense with no CHF conversion produced `actual_current_month='0.00'`, `actual_year_to_date='0.00'`, but `forecast_year='50.00'` and status `Grün`; neither the status row nor category detail had quality metadata. `BudgetStatusPage.vue:9-22` renders these as trustworthy CHF values with no warning. - **P2 — Unversioned category-summary API has a breaking envelope change.** Base returned a top-level array; HEAD returns an object at `budget_overview.py:88-113`, exposed unchanged by `budget.py:662-664`. Repository usages were adapted or absent, but existing external consumers of `/api/budget/categories/summary` will break. Preserve the legacy response or introduce/version a separate envelope contract. **Prior b5c3ddd findings** - Transfer multiplicity/fail-closed semantics: **FAIL**, for the malformed-membership and overview cases above. Valid pair CHF 900, account scopes CHF 900, unmatched total CHF 1,000, paired missing-FX null semantics, and non-multiplication of financial/category/count rows otherwise passed. - Incomplete-data truth across changed surfaces: **FAIL**, due overview conflict status and Budget Status/category-detail inconsistencies. Cockpit, budget-vs-actual, monthly/chart/category-envelope warning probes passed. - Post-unmount transaction request URL mutation: **PASS**; delayed resolution did not call `replaceState`. Focused checks: 3 backend probes/tests and 3 frontend warning/unmount tests passed; two additional synthetic counterexamples reproduced the blockers. Exact HEAD remained `e5b3484719f7b32c6ba2b52c8184301860bb3430`; tree was clean and `diff --check` passed before and after. No files modified.