Label: complexity: high
Points: 200
Description
auto_resolve_rules (existing) evaluates rules but there's no documented behavior for what happens if none match — currently it's effectively a no-op. This issue adds an explicit fallback action when no rule's threshold is met by the deadline.
Technical Context
Involves types.rs (fallback_action: Option<ResolveAction> on InvoiceOptions/InvoiceExt), lib.rs auto_resolve() — after iterating auto_resolve_rules and finding no match, execute fallback_action if configured instead of leaving the invoice in limbo.
Acceptance Criteria
Label: complexity: high
Points: 200
Description
auto_resolve_rules(existing) evaluates rules but there's no documented behavior for what happens if none match — currently it's effectively a no-op. This issue adds an explicit fallback action when no rule's threshold is met by the deadline.Technical Context
Involves
types.rs(fallback_action: Option<ResolveAction>onInvoiceOptions/InvoiceExt),lib.rsauto_resolve()— after iteratingauto_resolve_rulesand finding no match, executefallback_actionif configured instead of leaving the invoice in limbo.Acceptance Criteria
auto_resolve_rulesentry matches andfallback_actionis set, that action executes (release or refund)fallback_actionis configured, behavior is unchanged from today (no-op, documented as intentional)auto_resolve()is idempotent — calling it again after resolution doesn't re-triggerRefundfallback correctly refunds viaauto_resolve()cargo clippypasses with zero warnings