Un-red default-branch CI: no-skips gate, fork RPC env, Package Release - #140
Conversation
…ddress
The org no-ignored-tests gate greps the whole checkout, so the four
vm.skip(vm.envOr("CI", false)) lines redded BOTH the rainix-sol and
rainix-rs static lanes. Per the gate's rule they are deleted, not
re-enabled: findDeployBlock's rollFork binary search rate-limits real
RPCs (the reason they were skip-gated), and on Arbitrum rollFork maps
L1 block numbers. The pinned constants stay covered for real by the
testIsStartBlock* fork tests; the discovery rationale is kept as a
comment. The unused findStartBlock helper, ARBITRUM_NITRO_GENESIS_BLOCK
constant and commented-out Arbitrum test go with them.
testDeployAddress forked ETH_RPC_URL, which rainix-sol-test binds to
the raw CI_DEPLOY_SEPOLIA_RPC_URL secret/var - empty on 2026-08-19
runs, with no rpc-preflight failover and no public default. Switch to
ETHEREUM_RPC_URL: the rainix rpc-preflight demand-scans tracked files
for this exact name, then health-probes and exports a working URL
(secret, then var, then public archive defaults). Ethereum mainnet has
the zoltu factory deployed and no MetaBoard at the pinned address, so
the deterministic deploy cannot collide with a live deployment.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
forge soldeer push has failed in CI since 2026-06-15 with 'error during IO operation for "": not connected': soldeer's interactive sensitive- files confirm cannot be answered in a non-TTY shell. soldeer filters the copy list through .gitignore + .soldeerignore first and prompts iff any dotfile survives; the only survivor was .prettierignore. With it ignored the zip is dotfile-free (verified via --dry-run: 39 entries, zero dotfiles; pre-fix the zip contained .prettierignore), so the prompt can never fire and the push is fully non-interactive. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 40 minutes Limit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?Wait for the limit to reset, then comment An organization admin can change what happens after included review limits in Billing. How do review limits work?CodeRabbit enforces per-developer PR review limits within each organization. For paid Pro and Pro+ reviews, CodeRabbit uses a developer's included PR review attempts over the past 7 days to set the current hourly allowance. At typical activity levels, the full plan allowance applies. Higher sustained activity can lower the allowance until earlier attempts leave the 7-day window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
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 |
|
@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:
|
Un-reds every red lane on the default branch (red since 2026-07-15; Package Release since 2026-06-15).
Per-lane fixes
rainix-sol / static and rainix-rs / static — both failed on the same org
no-ignored-testsgate, which greps the whole checkout: the fourvm.skip(vm.envOr("CI", false))lines intest/lib/deploy/LibMetaBoardDeploy.t.solredded the Rust static lane too (every actual rs test/wasm job is green — there was never a Rust defect). Per the gate's rule the fourtestStartBlock*tests are deleted, not re-enabled: theirfindDeployBlockrollFork binary search rate-limits real RPCs (the reason they were skip-gated), and on Arbitrum rollFork maps L1 block numbers, not L2. The pinned start-block constants remain covered for real by thetestIsStartBlock*fork tests; the discovery rationale is preserved as a comment. The now-unusedfindStartBlockhelper,ARBITRUM_NITRO_GENESIS_BLOCKconstant, and the commented-out Arbitrum test go with them.rainix-sol / test —
testDeployAddress()forkedvm.envString("ETH_RPC_URL"), which rainix-sol-test binds to the rawCI_DEPLOY_SEPOLIA_RPC_URLsecret/var: empty on the 2026-08-19 runs (blank in the job env dump), with no rpc-preflight failover and no public default, socreateSelectForkreceived an empty URL. Switched toETHEREUM_RPC_URL: the rainix rpc-preflight demand-scans tracked files for exactly this name, then health-probes and exports a working URL from secret then var then public archive defaults (the org network table forks ethereum at latest). Ethereum mainnet verified: the Zoltu factory has code there and the MetaBoard address is empty, so the deterministic deploy cannot collide with a live deployment. No foundry.toml change, so no conflict surface with #137, and no concrete bytecode or deploy pin is touched.Package Release — failing in
forge soldeer pushwitherror during IO operation for "": not connected: soldeer's interactive "sensitive files" confirm cannot be answered in a non-TTY shell. soldeer filters the copy list through.gitignore+.soldeerignorefirst and prompts iff any dotfile survives; the only survivor was.prettierignore. Adding it to.soldeerignoremakes the zip dotfile-free, so the prompt can never fire and the push is fully non-interactive.SOLDEER_API_TOKENis present in CI and the soldeer content gate passes, so nothing registry-side is needed.Contradictions with the issue as filed
ETH_RPC_URLappeared between then and 2026-08-19 (Drop foundry.toml release metadata: version intent lives in next-v tags (rainix#335) #137's branch is in-repo, so secrets do flow there — the underlying secret/var is simply empty now). It would red main's next push regardless; this PR removes the dependency on that secret entirely.vm.skiplines, hit via the gate's checkout-wide grep.Remains org-side (reported, not attempted)
--skip-warningstoforge soldeer pushso a future dotfile in any consumer's zip cannot re-kill publishes org-wide (current upstream soldeer also defaults to continue when no TTY is attached, so a soldeer bump achieves the same). Not needed for this repo after this PR.CI_DEPLOY_SEPOLIA_RPC_URL(secret or repo/org var) is empty/unavailable as of 2026-08-19; any org repo still readingETH_RPC_URLfrom it is affected. Restore or migrate at org level. Not needed for this repo after this PR.QA
testDeployAddress()— fails on base under the CI env shape ([FAIL: vm.envString: environment variable "ETH_RPC_URL" not found]; verified by checking out the base test file and runningforge test --match-test testDeployAddresswith only the preflight-supplied*_RPC_URLenv exported), passes on this branch under the same env (gas 197110, real Zoltu deploy on an ethereum mainnet fork).no-ignored-testsgrep — 4 hits on base (vm.skipat lines 85/90/95/100, the exact CI static-lane failure in both rainix-sol and rainix-rs), zero hits on this branch.forge soldeer push rain-metadata~0.0.1 --dry-run) — the base zip contains.prettierignore(the dotfile that makescheck_dotfilestrue and raises the prompt that kills non-TTY CI), the branch zip has 39 entries and zero dotfiles..soldeerignoreline;src/is untouched and MetaBoard bytecode/deploy pins are unchanged), sonix run github:rainlanguage/adversarial-mutation-test#mutation-probe -- mutants.tomlhas nothing in-diff to mutate.LibMetaBoardDeployconstants checked against live chain state read via raw JSON-RPC independent of the tests (eth_getCodeon ethereum mainnet: Zoltu factory bytecode present, MetaBoard address empty); soldeer's ownfilter_ignored_files/check_dotfilessource semantics plus the verbatim CI failure log for Package Release; the rainixrpc-preflightnetwork table for env names, demand scan, and default pools.nix developon this branch:forge test31 passed / 0 failed / 0 skipped with all fork tests running for real against public archive RPCs (ETHEREUM_RPC_URL,ARBITRUM_RPC_URL,BASE_RPC_URL,BASE_SEPOLIA_RPC_URL,FLARE_RPC_URL,POLYGON_RPC_URLexported from the rpc-preflight default pool);pre-commit run --all-filesall hooks passed;cargo test --workspacepassed;reuse lintcompliant (128/128);forge fmt --checkclean.Closes #138
🤖 Generated with Claude Code