Make the integration smoke probe a real 402 - #112
Merged
Merged
Conversation
The step checked https://example.com with || true and continue-on-error, so it passed whatever pay did. It now probes the fullenrich storefront without paying and fails unless the challenge is a 402 that parses into the Base x402, Tempo and Solana rails.
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
The weekly Integration workflow's "Probe an x402-gated testnet endpoint" step ran
check https://example.com --json || truewithcontinue-on-error: true. example.com never returns a 402, and both escapes swallowed any failure, so the step passed whatevercheckdid, and every scheduled run has been green on it.It now probes a real merchant 402 without paying:
checkagainst the fullenrich storefront'sPOST /company/lookup, failing unless the response is a 402 challenge (status == 402,payment_required == true) that parses into each rail pay settles on (exact/eip155:8453,tempo/charge,solana/charge). A failure prints the parsed envelope or rail list. The step is renamed to say what it does.The check costs nothing:
checkreads the challenge and never signs or pays. The trade is that the smoke now depends on a live storefront, so a storefront outage reddens it, which is a real signal for a CLI whose job is paying those storefronts.No release: only a workflow changed, and nothing in the published package or binaries differs from 0.5.6.
Type of change
Public API
None.
Test plan
https://example.com: exit 1 on the 402 assertion. So it passes on a real challenge and fails on a page that is not one.Checklist
Worked with Varun.