fix: reconcile missed manual capture authorizations #13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/5-reconcile-held-payments"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Funded manual-capture payments previously disappeared from Satsettle when their best-effort claimable event was missed. The engine now scans authenticated, paginated LDK payment records at startup, after reconnection, during recovery, and periodically while running.
The reconciler accepts only pending inbound BOLT11 records matching a hold owned by this store and its exact node configuration. It subtracts skimmed fees, applies existing underpayment/expiry/decision checks, and journals rejection retries. It never automatically claims a payment. Recovered authorizations retain observation order and an unknown deadline; a later event can fill the deadline without duplicating or reordering them. Both background tasks stop on close/drop. Node macaroons now require
ListPayments.Validation: formatting and Clippy pass. All 49 unit, protocol integration and documentation tests pass in the x86_64 Linux Nix checks. The new regression covers offline funding over multiple history pages, a fee-reduced underpayment, late duplicate events, explicit claim/reject, and lost events on a live connection. Existing failed/expired hold and reconnect tests also pass. Real-node regtest coverage is tracked separately in #8; aarch64 was not checked.
Stacked on #12; this diff contains only the issue #5 fix.
Closes #5.