wevm / wevm/mppx

MPP sessions reuse stale channels after channel-not-found

Open
#467 0 comments 0 reactions 0 assignees View on GitHub

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 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.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.