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
410 with https://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.
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
410 Channel Not Found, the client should evict the cached channel and reopen on the next request.Actual
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.tsviamppx_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.