Take pympp 0.10.0, fix an unusable Stripe SPT example, release 2.5.17 - #106
Merged
Conversation
Takes pympp 0.10.0, takes the agentscore-py we just published, and fixes a Stripe SPT example that could never have worked. pympp moves 0.9.1 to 0.10.0 inside the declared >=0.6,<1 range. The evidence for taking it rather than pinning under it: the executable pympp surface here is exactly two imports, Receipt and Credential, and both resolve on 0.10.0; the full suite passes identically on both versions with identical coverage; and on the Tempo side client.py, account.py and __init__.py are byte-identical between the two releases, so no signing or domain-separation behavior moved. The mppx_stripe module docstring told merchants to write `from mpp.server import Mppx` and `Mppx.create(methods=[...])`. Mppx has never existed in any pympp release, and Mpp.create takes a single `method` rather than a list, so the Stripe SPT example raised ImportError on the first line and then described an API shape that does not exist. Corrected against the installed package and pympp's own README, with the docstring imports executed to prove they resolve. The working code in mppx_server.py was always right; only the example was wrong. Also takes agentscore-py 2.6.3, published minutes ago. Verification: ruff check, ruff format --check, ty check, 1841 tests at 95.36% coverage, and osv-scanner v2.4.0 over uv.lock all green. uv.lock was re-locked after the version bump because it embeds the project's own version. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three things, all evidence-driven rather than precautionary.
pympp 0.9.1 to 0.10.0, inside the declared
>=0.6,<1range. The initial instinct was to pin under it, since pympp sits on the MPP settle path and 0.10.0 rewrites the Tempo intent validators from calldata length checks to real ABI decoding. What settled it against pinning:ReceiptandCredential. Both resolve on 0.10.0.client.py,account.pyand__init__.pyare byte-identical between the two releases, so no signing or domain-separation behavior moved. This is not the mppx-0.8.0 class of change that binds agent, verifier and merchants together.A Stripe SPT example that could never have worked. The
mppx_stripemodule docstring told merchants to writefrom mpp.server import MppxandMppx.create(methods=[...]).Mppxhas never existed in any pympp release (checked 0.9.1 and 0.10.0 sources directly), andMpp.createtakes a singlemethodrather than a list, so a merchant copying the example hitImportErroron the first line and then an API shape that does not exist. Corrected against the installed package and pympp's own README, with the docstring's imports executed to prove they resolve. The working code inmppx_server.pywas always correct; only the example was wrong.agentscore-py 2.6.3, published minutes before this branch was finalized.
Type of change
Public API
None changed. No exported symbol, submodule, or wire shape moved.
The observable changes for a merchant are the
agentscore-pyfloor and the version bump. The docstring correction changes documentation only, but it is worth calling out for anyone who copied the old example:from mpp.server import Mppxbecomesfrom mpp.server import Mpp, andMpp.createtakesmethod=(singular) rather thanmethods=[...], so a merchant accepting Stripe SPT alongside another rail builds oneMppper method. That was already true of the shipped behavior; the docs just described something else.Test plan
uv sync --all-extras --all-groups --upgrade, then the full gate set:uv run ruff check .all checks passeduv run ruff format --check .215 files already formatteduv run ty check agentscore_commerce/all checks passeduv run pytest tests/: 1841 passed, 4 skipped, 95.36% coverage (gate is 95%)uv.lock: no issues foundBaseline captured on 0.9.1 before the bump, so the "identical" claim is a comparison rather than an assertion. The docstring fix was verified by parsing the docstring out of the module and executing its import lines against the installed package, not by reading it.
uv.lockwas re-locked after the version bump, because it embeds the project's own version and a barepyproject.tomlbump leaves the two files disagreeing with nothing to catch it.Checklist