Skip to content

soldeer migration#498

Merged
thedavidmeister merged 14 commits into
mainfrom
2026-05-13-soldeer
May 13, 2026
Merged

soldeer migration#498
thedavidmeister merged 14 commits into
mainfrom
2026-05-13-soldeer

Conversation

@thedavidmeister

Copy link
Copy Markdown
Contributor

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 the CI_DEPLOY_* prefix).
  • .soldeerignore: standard exclusions plus /deployments and /meta.
  • .github/workflows/publish-soldeer.yaml: uses the rainix reusable workflow.

TODO

  • Wait for rain-math-float v0.1.0 to publish to soldeer (run 25800427603 currently queued). Soldeer install fails with package rain-math-float has no version until then.
  • Run soldeer install to generate soldeer.lock.
  • Delete lib/ submodules and .gitmodules.
  • Add remappings.txt.
  • Rewrite .sol imports from submodule paths to soldeer paths.
  • Update CI workflows: drop submodules: recursive, drop sol-prelude, add soldeer install step.
  • Update foundry.lock if applicable.
  • Supersedes Bump rain.metadata submodule #483 (rain.metadata submodule bump) — close after merge.

Test plan

  • Build succeeds
  • Tests pass
  • CI green

🤖 Generated with Claude Code

- 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>
@thedavidmeister thedavidmeister self-assigned this May 13, 2026
@coderabbitai

coderabbitai Bot commented May 13, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 293 files, which is 143 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 230c276b-8674-4dcf-b138-47a5fca10246

📥 Commits

Reviewing files that changed from the base of the PR and between e5dc868 and 672291b.

⛔ Files ignored due to path filters (7)
  • foundry.lock is excluded by !**/*.lock
  • soldeer.lock is excluded by !**/*.lock
  • src/generated/Rainlang.pointers.sol is excluded by !**/generated/**
  • src/generated/RainlangExpressionDeployer.pointers.sol is excluded by !**/generated/**
  • src/generated/RainlangInterpreter.pointers.sol is excluded by !**/generated/**
  • src/generated/RainlangParser.pointers.sol is excluded by !**/generated/**
  • src/generated/RainlangReferenceExtern.pointers.sol is excluded by !**/generated/**
📒 Files selected for processing (293)
  • .github/workflows/copy-artifacts.yaml
  • .github/workflows/git-clean.yaml
  • .github/workflows/manual-sol-artifacts.yaml
  • .github/workflows/publish-soldeer.yaml
  • .github/workflows/rainix-rs-static.yaml
  • .github/workflows/rainix-rs-test.yaml
  • .github/workflows/rainix-sol.yaml
  • .github/workflows/rainix.yaml
  • .gitignore
  • .gitmodules
  • .prettierignore
  • .soldeerignore
  • Cargo.toml
  • LICENSES/LicenseRef-DCL-1.0.txt
  • REUSE.toml
  • crates/abi/IExpressionDeployerV3.json
  • crates/abi/IInterpreterStoreV3.json
  • crates/abi/IInterpreterV4.json
  • crates/abi/IParserPragmaV1.json
  • crates/abi/IParserV2.json
  • crates/abi/Rainlang.json
  • crates/abi/RainlangExpressionDeployer.json
  • crates/abi/RainlangInterpreter.json
  • crates/abi/RainlangParser.json
  • crates/abi/RainlangStore.json
  • crates/abi/TestERC20.json
  • crates/bindings/src/lib.rs
  • crates/test_fixtures/src/lib.rs
  • foundry.toml
  • lib/rain.deploy
  • lib/rain.extrospection
  • lib/rain.interpreter.interface
  • lib/rain.lib.memkv
  • lib/rain.metadata
  • lib/rain.string
  • lib/rain.tofu.erc20-decimals
  • lib/sol.lib.binmaskflag
  • meta/AuthoringMeta.rain.meta
  • meta/RainlangExpressionDeployer.rain.meta
  • meta/RainlangReferenceExtern.rain.meta
  • meta/RainlangReferenceExternAuthoringMeta.rain.meta
  • remappings.txt
  • script/BuildAuthoringMeta.sol
  • script/BuildPointers.sol
  • script/CopyArtifacts.sol
  • script/Deploy.sol
  • script/lib/LibCopyArtifacts.sol
  • slither.config.json
  • src/abstract/BaseRainlangExtern.sol
  • src/abstract/BaseRainlangSubParser.sol
  • src/concrete/Rainlang.sol
  • src/concrete/RainlangExpressionDeployer.sol
  • src/concrete/RainlangInterpreter.sol
  • src/concrete/RainlangParser.sol
  • src/concrete/RainlangStore.sol
  • src/concrete/extern/RainlangReferenceExtern.sol
  • src/error/ErrExtern.sol
  • src/lib/deploy/LibInterpreterDeploy.sol
  • src/lib/eval/LibEval.sol
  • src/lib/extern/LibExtern.sol
  • src/lib/extern/reference/op/LibExternOpContextCallingContract.sol
  • src/lib/extern/reference/op/LibExternOpContextRainlen.sol
  • src/lib/extern/reference/op/LibExternOpContextSender.sol
  • src/lib/extern/reference/op/LibExternOpIntInc.sol
  • src/lib/extern/reference/op/LibExternOpStackOperand.sol
  • src/lib/integrity/LibIntegrityCheck.sol
  • src/lib/op/00/LibOpConstant.sol
  • src/lib/op/00/LibOpContext.sol
  • src/lib/op/00/LibOpExtern.sol
  • src/lib/op/00/LibOpStack.sol
  • src/lib/op/LibAllStandardOps.sol
  • src/lib/op/bitwise/LibOpBitwiseAnd.sol
  • src/lib/op/bitwise/LibOpBitwiseCountOnes.sol
  • src/lib/op/bitwise/LibOpBitwiseDecode.sol
  • src/lib/op/bitwise/LibOpBitwiseEncode.sol
  • src/lib/op/bitwise/LibOpBitwiseOr.sol
  • src/lib/op/bitwise/LibOpBitwiseShiftLeft.sol
  • src/lib/op/bitwise/LibOpBitwiseShiftRight.sol
  • src/lib/op/call/LibOpCall.sol
  • src/lib/op/crypto/LibOpHash.sol
  • src/lib/op/erc20/LibOpERC20Allowance.sol
  • src/lib/op/erc20/LibOpERC20BalanceOf.sol
  • src/lib/op/erc20/LibOpERC20TotalSupply.sol
  • src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.sol
  • src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.sol
  • src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.sol
  • src/lib/op/erc5313/LibOpERC5313Owner.sol
  • src/lib/op/erc721/LibOpERC721BalanceOf.sol
  • src/lib/op/erc721/LibOpERC721OwnerOf.sol
  • src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.sol
  • src/lib/op/evm/LibOpBlockNumber.sol
  • src/lib/op/evm/LibOpBlockTimestamp.sol
  • src/lib/op/evm/LibOpChainId.sol
  • src/lib/op/logic/LibOpAny.sol
  • src/lib/op/logic/LibOpBinaryEqualTo.sol
  • src/lib/op/logic/LibOpConditions.sol
  • src/lib/op/logic/LibOpEnsure.sol
  • src/lib/op/logic/LibOpEqualTo.sol
  • src/lib/op/logic/LibOpEvery.sol
  • src/lib/op/logic/LibOpGreaterThan.sol
  • src/lib/op/logic/LibOpGreaterThanOrEqualTo.sol
  • src/lib/op/logic/LibOpIf.sol
  • src/lib/op/logic/LibOpIsZero.sol
  • src/lib/op/logic/LibOpLessThan.sol
  • src/lib/op/logic/LibOpLessThanOrEqualTo.sol
  • src/lib/op/math/LibOpAbs.sol
  • src/lib/op/math/LibOpAdd.sol
  • src/lib/op/math/LibOpAvg.sol
  • src/lib/op/math/LibOpCeil.sol
  • src/lib/op/math/LibOpDiv.sol
  • src/lib/op/math/LibOpE.sol
  • src/lib/op/math/LibOpExp.sol
  • src/lib/op/math/LibOpExp2.sol
  • src/lib/op/math/LibOpFloor.sol
  • src/lib/op/math/LibOpFrac.sol
  • src/lib/op/math/LibOpGm.sol
  • src/lib/op/math/LibOpHeadroom.sol
  • src/lib/op/math/LibOpInv.sol
  • src/lib/op/math/LibOpMax.sol
  • src/lib/op/math/LibOpMaxNegativeValue.sol
  • src/lib/op/math/LibOpMaxPositiveValue.sol
  • src/lib/op/math/LibOpMin.sol
  • src/lib/op/math/LibOpMinNegativeValue.sol
  • src/lib/op/math/LibOpMinPositiveValue.sol
  • src/lib/op/math/LibOpMul.sol
  • src/lib/op/math/LibOpPower.sol
  • src/lib/op/math/LibOpSqrt.sol
  • src/lib/op/math/LibOpSub.sol
  • src/lib/op/math/growth/LibOpExponentialGrowth.sol
  • src/lib/op/math/growth/LibOpLinearGrowth.sol
  • src/lib/op/math/uint256/LibOpUint256Add.sol
  • src/lib/op/math/uint256/LibOpUint256Div.sol
  • src/lib/op/math/uint256/LibOpUint256MaxValue.sol
  • src/lib/op/math/uint256/LibOpUint256Mul.sol
  • src/lib/op/math/uint256/LibOpUint256Power.sol
  • src/lib/op/math/uint256/LibOpUint256Sub.sol
  • src/lib/op/store/LibOpGet.sol
  • src/lib/op/store/LibOpSet.sol
  • src/lib/parse/LibParse.sol
  • src/lib/parse/LibParseInterstitial.sol
  • src/lib/parse/LibParseOperand.sol
  • src/lib/parse/LibParsePragma.sol
  • src/lib/parse/LibParseState.sol
  • src/lib/parse/LibSubParse.sol
  • src/lib/parse/literal/LibParseLiteral.sol
  • src/lib/parse/literal/LibParseLiteralDecimal.sol
  • src/lib/parse/literal/LibParseLiteralHex.sol
  • src/lib/parse/literal/LibParseLiteralString.sol
  • src/lib/parse/literal/LibParseLiteralSubParseable.sol
  • src/lib/state/LibInterpreterState.sol
  • src/lib/state/LibInterpreterStateDataContract.sol
  • test/abstract/OpTest.sol
  • test/abstract/OperandTest.sol
  • test/abstract/ParseLiteralTest.sol
  • test/abstract/ParseTest.sol
  • test/abstract/RainlangExpressionDeployerDeploymentTest.sol
  • test/lib/integrity/LibIntegrityFnPointers.sol
  • test/lib/operand/LibOperand.sol
  • test/lib/parse/LibMetaFixture.sol
  • test/lib/string/LibCamelToKebab.t.sol
  • test/lib/typecast/LibTestCast.sol
  • test/src/abstract/BaseRainlangExtern.construction.t.sol
  • test/src/abstract/BaseRainlangExtern.ierc165.t.sol
  • test/src/abstract/BaseRainlangExtern.integrityOpcodeRange.t.sol
  • test/src/abstract/BaseRainlangSubParser.ierc165.t.sol
  • test/src/abstract/BaseRainlangSubParser.subParseLiteral2.t.sol
  • test/src/abstract/BaseRainlangSubParser.subParseWord2.t.sol
  • test/src/concrete/Rainlang.ierc165.t.sol
  • test/src/concrete/Rainlang.t.sol
  • test/src/concrete/RainlangExpressionDeployer.deployCheck.t.sol
  • test/src/concrete/RainlangExpressionDeployer.describedByMetaV1.t.sol
  • test/src/concrete/RainlangExpressionDeployer.ierc165.t.sol
  • test/src/concrete/RainlangExpressionDeployer.parse2.t.sol
  • test/src/concrete/RainlangExpressionDeployer.parsePragma1.t.sol
  • test/src/concrete/RainlangExpressionDeployer.pointers.t.sol
  • test/src/concrete/RainlangInterpreter.eval.nonZeroSourceIndex.t.sol
  • test/src/concrete/RainlangInterpreter.eval.t.sol
  • test/src/concrete/RainlangInterpreter.extrospect.t.sol
  • test/src/concrete/RainlangInterpreter.ierc165.t.sol
  • test/src/concrete/RainlangInterpreter.pointers.t.sol
  • test/src/concrete/RainlangInterpreter.stateOverlay.t.sol
  • test/src/concrete/RainlangInterpreter.t.sol
  • test/src/concrete/RainlangInterpreter.zeroFunctionPointers.t.sol
  • test/src/concrete/RainlangParser.ierc165.t.sol
  • test/src/concrete/RainlangParser.parseMemoryOverflow.t.sol
  • test/src/concrete/RainlangParser.parsePragmaEmpty.t.sol
  • test/src/concrete/RainlangParser.parserPragma.t.sol
  • test/src/concrete/RainlangParser.pointers.t.sol
  • test/src/concrete/RainlangParser.unsafeParse.t.sol
  • test/src/concrete/RainlangReferenceExtern.contextCallingContract.t.sol
  • test/src/concrete/RainlangReferenceExtern.contextRainlen.t.sol
  • test/src/concrete/RainlangReferenceExtern.contextSender.t.sol
  • test/src/concrete/RainlangReferenceExtern.describedByMetaV1.t.sol
  • test/src/concrete/RainlangReferenceExtern.ierc165.t.sol
  • test/src/concrete/RainlangReferenceExtern.intInc.t.sol
  • test/src/concrete/RainlangReferenceExtern.pointers.t.sol
  • test/src/concrete/RainlangReferenceExtern.repeat.t.sol
  • test/src/concrete/RainlangReferenceExtern.stackOperand.t.sol
  • test/src/concrete/RainlangReferenceExtern.subParserIndexOutOfBounds.t.sol
  • test/src/concrete/RainlangReferenceExtern.unknownWord.t.sol
  • test/src/concrete/RainlangStore.getUninitialized.t.sol
  • test/src/concrete/RainlangStore.ierc165.t.sol
  • test/src/concrete/RainlangStore.namespaceIsolation.t.sol
  • test/src/concrete/RainlangStore.overwriteKey.t.sol
  • test/src/concrete/RainlangStore.setEmpty.t.sol
  • test/src/concrete/RainlangStore.setEvent.t.sol
  • test/src/concrete/RainlangStore.t.sol
  • test/src/lib/deploy/LibInterpreterDeploy.t.sol
  • test/src/lib/deploy/LibInterpreterDeployProd.t.sol
  • test/src/lib/eval/LibEval.fBounds.t.sol
  • test/src/lib/eval/LibEval.inputsLengthMismatch.t.sol
  • test/src/lib/eval/LibEval.maxOutputs.t.sol
  • test/src/lib/eval/LibEval.multipleSource.t.sol
  • test/src/lib/eval/LibEval.opcodeCountEdgeCases.t.sol
  • test/src/lib/eval/LibEval.remainderOnly.t.sol
  • test/src/lib/extern/LibExtern.codec.t.sol
  • test/src/lib/extern/reference/literal/LibParseLiteralRepeat.t.sol
  • test/src/lib/extern/reference/op/LibExternOpContextCallingContract.subParser.t.sol
  • test/src/lib/extern/reference/op/LibExternOpContextRainlen.subParser.t.sol
  • test/src/lib/extern/reference/op/LibExternOpContextSender.subParser.t.sol
  • test/src/lib/extern/reference/op/LibExternOpStackOperand.subParser.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.badOpIO.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.multiSource.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.newState.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.stackMaxIndex.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.t.sol
  • test/src/lib/integrity/LibIntegrityCheck.zeroSource.t.sol
  • test/src/lib/op/00/LibOpConstant.t.sol
  • test/src/lib/op/00/LibOpContext.t.sol
  • test/src/lib/op/00/LibOpExtern.t.sol
  • test/src/lib/op/00/LibOpStack.t.sol
  • test/src/lib/op/LibAllStandardOps.filesystemOrdering.t.sol
  • test/src/lib/op/LibAllStandardOps.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseAnd.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseCountOnes.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseDecode.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseEncode.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseOr.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseShiftLeft.t.sol
  • test/src/lib/op/bitwise/LibOpBitwiseShiftRight.t.sol
  • test/src/lib/op/call/LibOpCall.t.sol
  • test/src/lib/op/crypto/LibOpHash.t.sol
  • test/src/lib/op/erc20/LibOpERC20Allowance.t.sol
  • test/src/lib/op/erc20/LibOpERC20BalanceOf.t.sol
  • test/src/lib/op/erc20/LibOpERC20TotalSupply.t.sol
  • test/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.t.sol
  • test/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.t.sol
  • test/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.t.sol
  • test/src/lib/op/erc5313/LibOpERC5313Owner.t.sol
  • test/src/lib/op/erc721/LibOpERC721BalanceOf.t.sol
  • test/src/lib/op/erc721/LibOpERC721OwnerOf.t.sol
  • test/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.t.sol
  • test/src/lib/op/evm/LibOpBlockNumber.t.sol
  • test/src/lib/op/evm/LibOpBlockTimestamp.t.sol
  • test/src/lib/op/evm/LibOpChainId.t.sol
  • test/src/lib/op/logic/LibOpAny.t.sol
  • test/src/lib/op/logic/LibOpBinaryEqualTo.t.sol
  • test/src/lib/op/logic/LibOpConditions.t.sol
  • test/src/lib/op/logic/LibOpEnsure.t.sol
  • test/src/lib/op/logic/LibOpEqualTo.t.sol
  • test/src/lib/op/logic/LibOpEvery.t.sol
  • test/src/lib/op/logic/LibOpGreaterThan.t.sol
  • test/src/lib/op/logic/LibOpGreaterThanOrEqualTo.t.sol
  • test/src/lib/op/logic/LibOpIf.t.sol
  • test/src/lib/op/logic/LibOpIsZero.t.sol
  • test/src/lib/op/logic/LibOpLessThan.t.sol
  • test/src/lib/op/logic/LibOpLessThanOrEqualTo.t.sol
  • test/src/lib/op/math/LibOpAbs.t.sol
  • test/src/lib/op/math/LibOpAdd.t.sol
  • test/src/lib/op/math/LibOpAvg.t.sol
  • test/src/lib/op/math/LibOpCeil.t.sol
  • test/src/lib/op/math/LibOpDiv.t.sol
  • test/src/lib/op/math/LibOpE.t.sol
  • test/src/lib/op/math/LibOpExp.t.sol
  • test/src/lib/op/math/LibOpExp2.t.sol
  • test/src/lib/op/math/LibOpFloor.t.sol
  • test/src/lib/op/math/LibOpFrac.t.sol
  • test/src/lib/op/math/LibOpGm.t.sol
  • test/src/lib/op/math/LibOpHeadroom.t.sol
  • test/src/lib/op/math/LibOpInv.t.sol
  • test/src/lib/op/math/LibOpMax.t.sol
  • test/src/lib/op/math/LibOpMaxNegativeValue.t.sol
  • test/src/lib/op/math/LibOpMaxPositiveValue.t.sol
  • test/src/lib/op/math/LibOpMin.t.sol
  • test/src/lib/op/math/LibOpMinNegativeValue.t.sol
  • test/src/lib/op/math/LibOpMinPositiveValue.t.sol
  • test/src/lib/op/math/LibOpMul.t.sol
  • test/src/lib/op/math/LibOpPower.t.sol
  • test/src/lib/op/math/LibOpSqrt.t.sol
  • test/src/lib/op/math/LibOpSub.t.sol
  • test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol
  • test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol
  • test/src/lib/op/math/uint256/LibOpUint256Add.t.sol

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2026-05-13-soldeer

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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>
@thedavidmeister thedavidmeister marked this pull request as ready for review May 13, 2026 14:10
@thedavidmeister thedavidmeister changed the title wip: soldeer migration soldeer migration May 13, 2026
thedavidmeister and others added 12 commits May 13, 2026 18:42
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>
@thedavidmeister thedavidmeister merged commit 7ef5967 into main May 13, 2026
8 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

@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:

  • Simple bug fixes, typos, or minor refactoring
  • Single-purpose changes affecting 1-2 files
  • Documentation updates
  • Configuration tweaks
  • Changes that require minimal context to review

Review Effort: Would have taken 5-10 minutes

Examples:

  • Fix typo in variable name
  • Update README with new instructions
  • Adjust configuration values
  • Simple one-line bug fixes
  • Import statement cleanup

Medium (M)

Characteristics:

  • Feature additions or enhancements
  • Refactoring that touches multiple files but maintains existing behavior
  • Breaking changes with backward compatibility
  • Changes requiring some domain knowledge to review

Review Effort: Would have taken 15-30 minutes

Examples:

  • Add new feature or component
  • Refactor common utility functions
  • Update dependencies with minor breaking changes
  • Add new component with tests
  • Performance optimizations
  • More complex bug fixes

Large (L)

Characteristics:

  • Major feature implementations
  • Breaking changes or API redesigns
  • Complex refactoring across multiple modules
  • New architectural patterns or significant design changes
  • Changes requiring deep context and multiple review rounds

Review Effort: Would have taken 45+ minutes

Examples:

  • Complete new feature with frontend/backend changes
  • Protocol upgrades or breaking changes
  • Major architectural refactoring
  • Framework or technology upgrades

Additional Factors to Consider

When deciding between sizes, also consider:

  • Test coverage impact: More comprehensive test changes lean toward larger classification
  • Risk level: Changes to critical systems bump up a size category
  • Team familiarity: Novel patterns or technologies increase complexity

Notes:

  • the assessment must be for the totality of the PR, that means comparing the base branch to the last commit of the PR
  • the assessment output must be exactly one of: S, M or L (single-line comment) in format of: SIZE={S/M/L}
  • do not include any additional text, only the size classification
  • your assessment comment must not include tips or additional sections
  • do NOT tag me or anyone else on your comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant