Problem
When receiving tokens via V5 instant split bundles, the token gets permanently stuck in "pending" state and is lost on page reload.
Steps to reproduce
- Open wallet in browser
- Have another wallet send tokens (V5 instant split transfer)
- Token appears with "pending" status and a transfer notification toast
- Wait indefinitely — status never changes to "confirmed"
- Reload the page — token disappears from the token list
- Reload again — the same transfer notification fires again, token reappears as "pending"
- This cycle repeats on every reload
Expected behavior
- Token arrives, shows as "pending" for a few seconds
- Finalization completes (mint proof → transfer → confirm), status changes to "confirmed"
- Page reload preserves the token — no duplicate notification, no status reset
Observed behavior
- Token permanently stuck as "pending" (no retry after first failed proof check)
- Token disappears after first reload (pending state not persisted correctly)
- Duplicate notifications on every subsequent reload (Nostr re-delivers the transfer and dedup fails because the token ID changes after TXF round-trip)
- Balance briefly doubles then corrects itself during some reload sequences
Affected flow
Sender → Nostr → handleIncomingTransfer → processInstantSplitBundle → resolveUnconfirmed (one-shot) → FAIL (proof not ready) → stuck forever
Problem
When receiving tokens via V5 instant split bundles, the token gets permanently stuck in "pending" state and is lost on page reload.
Steps to reproduce
Expected behavior
Observed behavior
Affected flow
Sender → Nostr → handleIncomingTransfer → processInstantSplitBundle → resolveUnconfirmed (one-shot) → FAIL (proof not ready) → stuck forever