MPP sessions reuse stale channels after channel-not-found
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 176
- Forks
- 66
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 52
Description
Summary
MPP session auto-management can keep using a channel after the service rejects it with session/channel-not-found.
Moved from tempoxyz/accounts#520 because the stale channel cache and retry behavior live in MPPX client session management, not the Accounts SDK.
Expected
- If a session open fails verification, the client should not keep that channel as reusable.
- If a voucher request returns
410 Channel Not Found, the client should evict the cached channel and reopen on the next request. - Apps should not need a hard refresh to clear the in-memory session channel map.
Actual
- The session client can cache a channel after creating an open payload.
- A later request can skip open and ask for a voucher against that channel.
- The service can return
410withhttps://paymentauth.org/problems/session/channel-not-found, leaving the app stuck until refresh.
Product impact
The user signs a voucher, pays attention to wallet prompts, and then nothing happens. This makes paid agent flows look unreliable and makes it hard for apps to recover without exposing low-level session state.
Accounts context
Accounts wires MPPX through src/core/Provider.ts via mppx_tempo({ getClient }). The recovery behavior should be fixed in the MPPX session client; Accounts can add integration coverage once the upstream client evicts stale channels.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/core/Provider.ts and the mppx_tempo({ getClient }) wiring, then trace into the MPPX session client’s channel cache and voucher request flow. Done means failed verification does not preserve a reusable channel, and a 410 session/channel-not-found evicts the cached channel so the next request reopens the session.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- payments
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100