- **P1 — Neutral-cluster approval can reclassify ordinary expenses without transfer evidence.** `src/jarvis_finance/services/household_import.py:603-614` only requires a mapped CHF bank row and absence of fee-related words. Unlike the existing row-level path (`:94-110`, `:1113-1120`), it does **not** require `unmatched_transfer_candidate`, ambiguous pairing, or transfer-language evidence. Adversarial probe: two unresolved `"Household Counterparty"` debits totaling CHF 50 were accepted as `user_confirmed_unmatched_transfer`; readiness changed from false to true, the concept denominator became zero, confirm succeeded, and both transactions were written as uncategorized transfers instead of expenses. This weakens ordinary-expense safeguards and lets the neutralization itself make the 90/10 gate pass. - **P1 — No supported server-side owner-approval issuance flow exists.** The HMAC token is cryptographically server-secret-bound and exact-row-bound (`:46-63`, `:592-602`), but the only minting mechanism is the private `_owner_neutral_cluster_approval()` helper. No router/service endpoint or owner-authenticated workflow issues it; the new test imports and calls the private helper directly. Consequently, a normal API/UI owner cannot create a valid bounded-neutral decision, while the test bypasses the actual HTTP trust boundary. **Verified** - Concept-v2 90%/10% gate is server-calculated and included in the fingerprint; confirm replays preview and blocks unless technical and business/concept gates pass. - Legacy 95% / 3% / 25 thresholds remain a separate nonblocking indicator. - Preview/input/baseline fingerprints and cluster/row-bound HMAC provide exact and stale-safe confirmation. - Neutral writes are budget-neutral once accepted. - Focused backend tests: **100 passed**. - Focused frontend tests: **20 passed**; typecheck passed. - Ruff, compileall, and `git diff --check` passed. - No files modified or retained; working tree restored to its original five modified files.