Repository navigation
fix: fall back to Sourcify when an explorer refuses the submission - #401
Conversation
`Manual sol verify` on rain.math.float.deploy fails on 4663 every run and always will: Robinhood's Blockscout serves a Cloudflare challenge, forge reads the interstitial as a JSON error, and no retry count outlasts it. That is a workflow that cannot be green while a contract is fully verifiable — Sourcify carries 4663, as it does all nine of that repo's chains. A chain the explorer rejects now retries through Sourcify, and only counts as failed if that fails too. Generic: no chain is named, and any explorer that starts refusing gets the same treatment. Keys are blanked for the retry because forge picks the verifier from the `[etherscan]` entry and goes to Etherscan whenever the chain's key holds a value, `--verifier sourcify` notwithstanding. Blank rather than unset, because forge resolves the whole table before honouring `--verifier` and errors on a name with no value at all. Both were established against the live explorer. `--watch --retries 40 --delay 15` on the retry, matching the first attempt. Without `--watch` forge prints a job ID and exits 0, which would report a verification that had not happened — the failure the rest of this workflow is built to avoid. Confirmed `--watch` is honoured by the Sourcify path: polls, then `Status: match`. Verified end to end by hand on 0xEc632ea4D04A6D72F87E60FEb4C6B6813cda59bd at chain 4663, which Sourcify now records as `"match"`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository: rainlanguage/rainix/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
Chain 4663 fails every run: Robinhood's Blockscout serves a Cloudflare challenge, which forge reads as a JSON error. Sourcify carries 4663.
A chain the explorer rejects now retries through Sourcify, failing only if that fails too. No chain is named.
The retry needs two things:
--verifier sourcify. Blank, not unset — unset, it errors resolving the table.--watch. Without it forge prints a job ID and exits 0, reporting a verification that has not happened.QA
failed verification on: 4663.environment variable CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY not found),x(Cloudflare 403), blank (Status: match). Dropping--watchreturns a job ID and exit 0 without waiting.GET /v2/contract/4663/0xEc632ea4D04A6D72F87E60FEb4C6B6813cda59bdreturns"match";/server/chainslists 4663.🤖 Generated with Claude Code