soldeer migration#498
Conversation
- foundry.toml: [dependencies] block, [soldeer] recursive_deps=false, libs=['dependencies'], RPC env vars renamed. - .soldeerignore: standard exclusions plus /deployments and /meta. - publish-soldeer.yaml: reusable workflow from rainix. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Important Review skippedToo many files! This PR contains 293 files, which is 143 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (7)
📒 Files selected for processing (293)
You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ 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 |
Move from git submodules to soldeer for Solidity dependencies. Mirrors the migration in rain.math.float. Dependency changes: - forge-std-1.16.1, @openzeppelin-contracts-5.6.1 - rain-deploy-0.1.2, rain-extrospection-0.1.0 - rain-interpreter-interface-0.1.0 - rain-intorastring-0.1.0 - rain-lib-hash-0.1.0 (transitive of rain-interpreter-interface) - rain-lib-memkv-0.1.0, rain-lib-typecast-0.1.0 - rain-math-binary-0.1.1, rain-math-float-0.1.1 - rain-metadata-0.1.0, rain-sol-codegen-0.1.0 - rain-solmem-0.1.3, rain-string-0.2.0 - rain-tofu-erc20-decimals-0.1.1 - rain-datacontract-0.1.0 (transitive) Source changes: - Imports rewritten across src/, test/, script/ to versioned soldeer paths (e.g. rain-math-float-0.1.1/src/lib/LibDecimalFloat.sol). - LibDecimalFloat.LOG_TABLES_ADDRESS replaced by LibDecimalFloatDeploy.ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS (renamed in rain-math-float between the submodule pin and v0.1.1). Build artifacts: - meta/ removed from .gitignore and the 4 generated files committed (AuthoringMeta.rain.meta, RainlangExpressionDeployer.rain.meta, RainlangReferenceExtern.rain.meta, RainlangReferenceExternAuthoringMeta.rain.meta). - src/generated/*.pointers.sol regenerated. New bytecode hashes and deterministic addresses reflect the soldeer dep build. - dependencies/ added to .gitignore (fetched by `forge soldeer install`). CI: - Drop `submodules: recursive` and `fetch-depth: 0` from checkouts. - Replace the Solidity submodule prelude with `forge soldeer install`. - Drop the rainlang meta prelude from rainix.yaml and manual-sol-artifacts.yaml (committed meta artifacts make it unnecessary at run time). - git-clean.yaml regenerates meta + pointers + formats and asserts the tree is clean — that's the canary for stale artifacts. - RPC env vars renamed to the new RPC_URL_<NETWORK>_FORK scheme. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Match rain.math.float's CI structure: each Solidity / Rust task runs through a small wrapper calling the upstream reusable workflow. Rust crates consume a deterministic ABI subset checked in at crates/abi/, so cargo test does not need a Solidity build first. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add LICENSES/LicenseRef-DCL-1.0.txt and REUSE.toml so reuse lint passes. Non-source files (.github, audit, configs, lock files, generated artifacts, etc.) are covered by a single annotation block; .sol files carry their own SPDX headers. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The committed abi JSONs are produced by jq via vm.writeFile and have no trailing newline. Prettier's pre-commit hook was reformatting them with a trailing newline, diverging from the canonical output and failing the copy-artifacts dirty-git check on CI. .prettierignore excludes the directory so the on-disk format stays canonical. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Now that .prettierignore covers crates/abi/, the on-disk format matches what the artifact-copy script produces (jq via vm.writeFile, no trailing LF). copy-artifacts CI will see a clean git diff. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Old config referenced submodule paths under lib/ which no longer exist after the soldeer migration. dependencies/ is the soldeer install directory; filtering it scopes slither analysis to first-party src/. test/ is no longer in the filter (matches the org-wide convention). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rainlang.pointers.sol and RainlangExpressionDeployer.pointers.sol had stale bytecode referencing pre-migration addresses for the parser and interpreter contracts (a0c9a33f... and a8d499b9...). The test setup etches at the current addresses (9179445a... and b3a710b8...) so calls into the embedded references hit non-contract addresses and reverted. Regenerated via BuildPointers + CopyArtifacts + forge fmt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Added in a prior commit but missed from the annotation block. REUSE lint flagged it as the only missing-copyright file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Rainlang.pointers.sol had embedded the pre-iteration RainlangExpressionDeployer address (db9a055c). After a clean rebuild the pointer pass picks up the current RED address (c9e1d673) and the Rainlang bytecode hash settles to the value sol-test asserts against. Three iterations of BuildPointers all produce the same hash (0xe17c8ef9…), confirming the fixed point. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The upstream rainix sol-test reusable wires ARBITRUM_RPC_URL, BASE_RPC_URL etc. from the org's RPC_URL_<NETWORK>_FORK vars. Tests that previously read CI_FORK_ETH_RPC_URL or ETH_RPC_URL now read ARBITRUM_RPC_URL — Arbitrum has both the Zoltu factory (for deploy-address tests) and the log tables data contract (for pow/sqrt math op tests). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Deploy.sol is pure Solidity; the rs-prelude step was inherited copy-paste from the old monolithic workflow and is a no-op in rainix. The committed meta artifacts mean no meta-build step is needed either. The upstream reusable handles the full Solidity deploy pipeline across all 5 networks via the standard RPC_URL_NETWORK_FORK env vars. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…devShell The meta-build task declares its own additionalBuildInputs (sol-build-inputs + rain CLI). nix run materializes only those; nix develop -c was loading the full default shell (rust + node + everything) just to invoke the task. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Zoltu's CREATE3 reverts when the target already has code, so once a chain is deployed the Zoltu redeploy attempt fails. Tests now check the target codehash directly when code is already present, and only deploy when the target is empty. Behaviour is unchanged on a fresh chain. Co-Authored-By: Claude Opus 4.7 (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:
|
Summary
Soldeer migration scaffolding. Not ready to merge.
Done
foundry.toml:[dependencies]block listing all 14 soldeer deps,[soldeer] recursive_deps = false,libs = ['dependencies'], RPC env vars renamed (drops theCI_DEPLOY_*prefix)..soldeerignore: standard exclusions plus/deploymentsand/meta..github/workflows/publish-soldeer.yaml: uses the rainix reusable workflow.TODO
rain-math-floatv0.1.0 to publish to soldeer (run 25800427603 currently queued). Soldeer install fails withpackage rain-math-float has no versionuntil then.soldeer.lock.lib/submodules and.gitmodules.remappings.txt..solimports from submodule paths to soldeer paths.submodules: recursive, dropsol-prelude, add soldeer install step.foundry.lockif applicable.Test plan
🤖 Generated with Claude Code