Repository navigation
fix(core): stop reporting landed user operations as failed - #357
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Findings outside the diff
These sit on lines this PR did not change, but this PR is what makes them wrong. They cannot be posted as inline comments.
- [WARNING]
.github:2— Node.js 20 is deprecated. The following actions target Node.js 20 but are being forced to run on Node.js 24: amannn/action-semantic-pull-request@v5. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Reviewer callouts (1)
Non-blocking observations. Nothing here needs to change before merge.
.github:1— "The ubuntu-latest label will migrate to Ubuntu 26 beginning October 19, 2026. For more information, see actions/runner-images#14748"
Contributor
Author
Contributor
Author
Ghadi8
approved these changes
Sep 24, 2026
This branch was successfully deployed
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.
What
Operations that landed are no longer reported as failed or reverted, and a failed token quote now says what the proxy answered.
Why
viem hands a receipt's transaction status over as
'success'or'reverted', andpollForReceiptcompared it with'0x1', so every successful operation was stored as reverted. The operation's own result isreceipt.success, which is what decides now, also intransformReceiptsToEIP5792, where a reverted operation in a mined transaction read as successful. Receipts withoutsuccess, like ones persisted by earlier versions, are still read by their transaction status.Some bundlers also fail
eth_getUserOperationReceiptfor operations they did bundle. Etherspot answers "Missing/invalid userOpHash" for EntryPoint v0.8, which marked successful calls as failed and made a permission grant that had landed report an error.waitForOperationReceiptreads the EntryPoint'sUserOperationEventwhen the bundler fails, for bothwallet_sendCallsandsendTransaction, and leaves an operation that is not on chain yet pending instead of failed. On young chains the event search starts at genesis.fetchTokenQuotesnow checksresponse.ok, so a proxy error shows its status instead of "no quotes array".App-specific mode stays gated by an api-key. An earlier version of this PR made it optional; that change and the UI changes that depended on it are reverted here.
Closes N/A
How to test
bun install bunx nx run-many -t typecheck lint test --projects=@jaw.id/core bunx nx build @jaw.id/coreThe tests worth reading are
rpc/wallet_sendCalls.receipt.test.tsand the receipt block inaccount/smartAccount.test.ts: a successful receipt ends upcompleted, and an operation the bundler has no receipt for is read from the chain, completed, reverted or left pending.By hand, these fixes ran in an app-specific dApp on
localhostagainst staging, on a build that still included the keyless change. A batched USDC transfer, a swap and a permission grant all settled on Base Sepolia and were reported as completed. That run has not been repeated on the current head.Checklist
nx releasetakes the version bump from its typebunx prettier --check .andbunx nx affected -t lint test typecheck build api-checkpass, which is what CI runs@jaw.id/core's public API is unchanged, orbunx nx api-update @jaw.id/coreran and the report diff is part of this PRNothing here changes behaviour an integrator configures against.