Skip to content

ADR-0052: Review guidance reflects stored evidence

Context

Queue rows persist sanitized notification text and isMasked, but no parser failure reason or candidate. The capture pipeline queues null candidates (including caught parser exceptions), so a missing merchant, invalid amount, or disabled rule cannot be diagnosed from a historical row. Demo text is not an extracted suggestion.

Decision

Expanded cards explain hidden notification details only when the stored isMasked flag is true. Other rows explicitly say that the failure reason was not recorded. Both explain how to create a real payment or dismiss noise. No new diagnostic data is persisted or added to clipboard exports.

Source avatars use up to two friendly-label initials from the existing bank catalog. Unknown apps retain their package label and show ?.

Create keeps passing the queue id to the editor. The editor retries current DB rules and labels any amount/currency/merchant prefills as editable suggestions. A null result leaves amount and merchant empty and uses the base currency. Save creates the reviewed transaction and soft-dismisses that queue row; opening the editor alone leaves it pending.

Consequences

Existing rows work without a schema migration. Exact failure diagnostics remain unavailable; the UI does not infer them from raw text or current rules. Notification masking, grouping, and diagnostic export retain their existing contracts. Action labels wrap at large font scales.