## Release verdict: **BLOCK — not releasable** ### P0 - **Frontend and backend household read contracts are incompatible.** `frontend/src/api/household.ts:142-155` expects: - overview monthly KPI fields, - `{items,total}` transactions, - `{review_count,groups}` review data, - `GET /household/imports`. The backend exposes incompatible aggregate/list shapes and no canonical imports GET at `src/jarvis_finance/api/routers/budget.py:210-233`. Runtime probes confirmed: - overview: `200`, but wrong aggregate shape; - transactions: `200 []`, filters ignored; - review: `200 {candidates, receipt_links, unsafe_groups_can_confirm}`; - imports: `404`. The overview can throw while rendering `data?.data_status.label` (`frontend/src/pages/HouseholdOverviewPage.vue:25-28`); transactions/review cannot render their returned data. - **Review preview/confirm is entirely non-functional.** The frontend posts to `/household/review/preview` and `/household/review/confirm` (`frontend/src/api/household.ts:145-146`; `frontend/src/pages/HouseholdReviewPage.vue:58-72`), but neither route exists after the review GET at `src/jarvis_finance/api/routers/budget.py:231-233`. Both runtime probes returned `404`. Therefore none of the advertised transfer/income/expense/duplicate/category/split/Migros/ignore actions can be completed. - **Selected account mapping is not bound to the import request and can misrepresent the target account.** The UI asks the user to select a mapping (`frontend/src/pages/HouseholdImportsPage.vue:19-22`) but sends only `profile`, CSV text, and an optional `source_reference` (`:92-95`). The options API does not return `source_reference` (`src/jarvis_finance/services/household_import.py:152-160,658-666`), and `mapping_id` is never sent. The backend instead resolves the account from account references inside the CSV (`:65-89,398-402`). A user can select mapping A while the CSV resolves to mapping B, yet the impact header still names A (`HouseholdImportsPage.vue:28`). This is a wrong-account/data-integrity risk. ### P1 - **Technical IDs are present in the DOM.** Mapping IDs are rendered as `