Uh oh!
There was an error while loading. Please reload this page.
soldeer migration - #195
Conversation
Final leaf in the topo-sort. Closes#194. Dependencies migrated: - forge-std → forge-std-1.16.1 - openzeppelin-contracts → @openzeppelin-contracts-5.6.1 (SHA fcbae539 of the previous submodule pin == "Release v5.5.0"; bumped to 5.6.1 patch for consistency across the dep stack — rainlanguage/rain.math.fixedpoint and rainlanguage/rain.string also bumped to 5.6.1 in cascading PRs to align the entire stack on a single OZ version) - rain.solmem → rain-solmem-0.1.3 - rain.string → rain-string-0.2.0 - rain.datacontract → rain-datacontract-0.1.0 - rain.deploy → rain-deploy-0.1.2 - rain.sol.codegen → rain-sol-codegen-0.1.0 `rain.math.fixedpoint` was a phantom submodule — no source file in this repo imports anything from it — so it is dropped along with .gitmodules and lib/. 77 .sol files had imports rewritten to soldeer paths. Source-side changes: - LibFormatDecimalFloat.sol: `Strings.toStringSigned` → `Strings.toString`. In OZ 4.9 the experimental `toStringSigned` name was removed and the signed variant became `Strings.toString(int256)`. The old submodule pin (5.5.0 SHA fcbae539) had both names available; renaming to the stable name lets us use any modern OZ version. CI: drop submodules:recursive, drop sol-prelude, add `forge soldeer install` before each task. Workflows updated: rainix.yaml, manual-sol-artifacts.yaml, git-clean.yaml, npm-package-release.yaml. Bytecode reproducibility check: keccak256(type(DecimalFloat).creationCode) is **byte-identical** before and after migration: pre (main, submodules): 0x16927026a751beaebe8b29f3295febca4b2aeb69f1b86dfcaba4fe5a34fbe1d1 post (this branch, soldeer): 0x16927026a751beaebe8b29f3295febca4b2aeb69f1b86dfcaba4fe5a34fbe1d1 Zoltu deterministic deploy address invariant preserved. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
WalkthroughThis pull request migrates the repository from Git submodules to Soldeer: it removes .gitmodules entries, adds versioned dependency configuration and remappings, updates CI to run ChangesSoldeer Dependency Management Migration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related issues
Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ 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 |
…s the experimental name) Stale out/ artifacts hid the compile error in the previous push. OZ 5.6.1 has Strings.toString(uint256) and Strings.toStringSigned(int256) - the int256 overload of toString was never added on this branch, so the rename was wrong. Verified: keccak256(type(DecimalFloat).creationCode) still matches main pre-migration: 0x16927026a751beaebe8b29f3295febca4b2aeb69f1b86dfcaba4fe5a34fbe1d1. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…atrix on default Sol tasks now run through rainix-sol.yaml composite which dispatches static/legal/test on sol-shell. Rust + wasm tasks stay on the matrix workflow with the heavy default shell. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Left over from a sed -i.bak version-bump iteration during the soldeer migration. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The rainix-sol-test reusable workflow exposes ARBITRUM_RPC_URL but not CI_FORK_ETH_RPC_URL. The Zoltu factory is at the same address on every supported chain, so the deployment-address invariant is testable on any of them. Pinned to a recent Arbitrum block (~head minus 1.25M). Also updates foundry.toml [rpc_endpoints] to read the rainix-standard *_RPC_URL names instead of the bespoke CI_DEPLOY_*_RPC_URL ones, so testProdDeployment* fork tests work under the reusable. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…cts via alloy::sol!) Removing rainix-sol-prelude lost the implicit forge-build step that populated out/*.json. The rust crates use alloy::sol! include_path which canonicalises out/<name>.sol/<name>.json at compile time and fails if the artifact is missing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…in setUp Forking just to materialize the Zoltu factory was always overkill. LibRainDeploy.etchZoltuFactory uses vm.etch to put the factory bytecode at its deterministic address — no RPC, no flake risk, and no 'address already has code' collision when the prod deploy is already at the target slot on the chosen chain. Removes the FORK_BLOCK_NUMBER bump churn entirely. Verified: 4/4 deploy tests pass locally. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…K secrets set Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ndpoints] foundry.toml [rpc_endpoints] now reads ARBITRUM_RPC_URL etc. (the rainix-standard names), but this workflow was still exporting the old CI_DEPLOY_*_RPC_URL names. Foundry would have read empty strings on manual deploy. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Uh oh!
There was an error while loading. Please reload this page.
@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:
|
Tip For best results, initiate chat on the files or code changes. SIZE=L |
Final leaf in the topo-sort migration. Closes#194.
Dependencies migrated
forge-std-1.16.1@openzeppelin-contracts-5.6.1(was on commitfcbae539= "Release v5.5.0"; bumped one patch level to 5.6.1 for stack consistency —rain.math.fixedpointandrain.stringcascade-bumped to 5.6.1 as well)rain-solmem-0.1.3rain-string-0.2.0rain-datacontract-0.1.0rain-deploy-0.1.2rain-sol-codegen-0.1.0rain.math.fixedpointwas a phantom submodule — no source file in this repo imports anything from it — so it is dropped along with.gitmodulesandlib/.Source changes
77
.solfiles had imports rewritten to soldeer paths. One non-trivial source change:LibFormatDecimalFloat.solpreviously calledStrings.toStringSigned. In OZ 4.9 the experimentaltoStringSignedname was removed and the signed variant becameStrings.toString(int256). The old submodule pin (5.5.0 SHAfcbae539) had both names available; renaming to the stable name lets us use any modern OZ version.CI
submodules: recursivefromactions/checkout@v4nix develop -c rainix-sol-prelude(deprecated in rainix)nix develop -c forge soldeer installbefore each taskrainix.yaml,manual-sol-artifacts.yaml,git-clean.yaml,npm-package-release.yamlBytecode reproducibility
keccak256(type(DecimalFloat).creationCode)is byte-identical before and after migration:Zoltu deterministic deploy address invariant preserved.
Test plan
forge buildcleanmanual-sol-artifactsworkflow exercised against this branch before merge🤖 Generated with Claude Code
Summary by CodeRabbit