Skip to content

deps: bump rain-datacontract 0.1.9 -> 0.2.0 - #35

Merged
thedavidmeister merged 1 commit into
mainfrom
2026-10-01-soldeer-bump-rain-datacontract-0-2-0
Oct 1, 2026
Merged

thedavidmeister merged 1 commit into
mainfrom
2026-10-01-soldeer-bump-rain-datacontract-0-2-0

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Bumps every Soldeer dependency behind its latest published release. Checked each [dependencies] pin against https://api.soldeer.xyz/api/v1/revision?project_name=<name>&limit=1 on 2026-10-01: exactly one is stale.

package before after
rain-datacontract 0.1.9 0.2.0
forge-std 1.16.2 latest
@OpenZeppelin-Contracts 5.6.1 latest
rain-solmem 0.1.28 latest
rain-string 0.2.0 latest
rain-deploy 0.1.11 latest
rain-lib-memkv 0.2.0 latest
rain-sol-codegen 0.1.37 latest
rain-math-float 0.2.4 latest

Manifest pin and all six rain-datacontract-0.1.9/ import paths (src/abstract/DecimalFloatDeploySuites.sol, script/lib/LibEtchLogTables.sol, four tests) move in the same commit. No remapping alias, no second Soldeer key; one version of the package on disk.

Upstream changes (sol-v0.1.9 → sol-v0.2.0)

26 commits, one src/ file touched. LibDataContract.readSlice(address, uint16, uint16) becomes readSlice(address, uint256, uint256) with both params masked to their low 16 bits at the assembly boundary (the creation code sizes the container with a 2-byte PUSH2, so higher bits never addressed anything); docs rewritten to describe the truncation. Tests moved to the mirror tree, Deployer fixture split out, Protofire audit v4.0 added. The 0.2.0 package has no versioned imports of its own, so it pins nothing older than what this repo already uses.

Not a port: this repo only calls LibDataContract.contractCreationCode, which did not change.

Deploy pins

forge script script/Build.sol then forge build, forge script script/CopyArtifacts.sol --ffi, forge fmt (the rainix-copy-artifacts sequence) leaves the tree clean: src/generated/candidate/{DecimalFloat,LogTables}.sol are byte-identical, so no address or codehash moves and no record changes.

Checks (pinned rainix sol-shell, 8657b83b)

  • forge soldeer install twice after forge soldeer update: soldeer.lock and remappings.txt byte-stable (same sha256 all three times).
  • forge build --force: 123 files, compiler run successful.
  • forge test -vvv: 42 suites, 85 tests, 82 passed. The 3 failures are vm.createFork: environment variable *_RPC_URL not found in DecimalFloatDeployChainTest (2) and LibDecimalFloatDeployProdTest (1): no RPC URLs in the local environment; CI's rpc-preflight supplies them.
  • slither .: 22 contracts, 98 detectors, 0 results.
  • forge fmt --check, forge lint -D warnings, rainix-sol-single-contract, pre-commit run --all-files: all pass.

QA

  • Discriminating tests: n/a - a pin bump with no behaviour change in this repo; no new test is written. The existing LibDecimalFloatDeployCandidate.t.sol, LibDecimalFloatDeploy.t.sol, LibDecimalFloatDeploy.checkLogTablesDeployed.t.sol and LogTest.sol cover the one LibDataContract entry point used (contractCreationCode) and pass against 0.2.0; on base they compile against 0.1.9 and pass likewise, which is the expected result for an unchanged function.
  • Mutations applied: n/a - the diff is a manifest line, a lock block and six import path strings. The only mutation such a diff admits (a path pointing at the old version) is the CI failure mode this PR removes: rain-datacontract-0.1.9/ is no longer on disk after forge soldeer install, so any leftover old path fails to compile (verified by grep -rn rain-datacontract-0.1.9 src script test = 0 and forge build --force after rm -rf dependencies/rain-datacontract-0.1.9).
  • Oracle: the Soldeer registry (api.soldeer.xyz/api/v1/revision?project_name=rain-datacontract&limit=1 → 0.2.0) for what "latest" is; the upstream sol-v0.1.9...sol-v0.2.0 compare for what changed; script/Build.sol regeneration leaving src/generated/candidate/ byte-identical for "no pin moves".
  • Category check: task asks every pin on latest, one version per package, imports rewritten in the same commit, no alias remapping or second key, stop on any dep whose latest pins an older shared package; covered all - eight pins already latest, one bumped, 0.2.0 carries no versioned imports so no chain to stop on.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated the data-contract support used by deployment and logging workflows. No user-facing behavior changes are noted.

The only Soldeer pin behind its latest published release
(`api.soldeer.xyz/api/v1/revision?project_name=<name>&limit=1`, checked
2026-10-01 for every package in `[dependencies]`). The other eight pins
already sit on latest.

Manifest and the six `rain-datacontract-0.1.9/` import paths move in the
same commit; no remapping alias, no second key. The lock entry is
regenerated by `forge soldeer update` and is byte-stable across two
further `forge soldeer install` runs, as is `remappings.txt`.

What changed upstream between sol-v0.1.9 and sol-v0.2.0 (26 commits, one
`src/` file): `LibDataContract.readSlice` widens `start`/`length` from
`uint16` to `uint256` and masks both to their low 16 bits where they
enter assembly, with the docs rewritten to describe the truncation;
tests moved to the mirror tree; Protofire audit v4.0 added. The
0.2.0 package carries no versioned imports of its own.

This repo only calls `LibDataContract.contractCreationCode`, which is
untouched, so nothing is ported. `forge script script/Build.sol` leaves
`src/generated/candidate/` byte-identical: the `DecimalFloat` and
`LogTables` records, addresses and codehashes do not move.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

🧰 Additional context used
📚 Code guidelines (1)
CLAUDE.md — auto-discovered

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 65636aab-841b-407d-9417-819426f933b0

📥 Commits

Reviewing files that changed from the base of the PR and between 6c56045 and dab24ad.

⛔ Files ignored due to path filters (1)
  • soldeer.lock is excluded by !**/*.lock
📒 Files selected for processing (7)
  • foundry.toml
  • script/lib/LibEtchLogTables.sol
  • src/abstract/DecimalFloatDeploySuites.sol
  • test/abstract/LogTest.sol
  • test/src/lib/deploy/LibDecimalFloatDeploy.checkLogTablesDeployed.t.sol
  • test/src/lib/deploy/LibDecimalFloatDeploy.t.sol
  • test/src/lib/deploy/LibDecimalFloatDeployCandidate.t.sol

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


Walkthrough

The configured rain-datacontract dependency and its imports in deployment code and tests changed from version 0.1.9 to 0.2.0. No deployment-suite logic changed.

Changes

Dependency version update

Layer / File(s) Summary
Update dependency and imports
foundry.toml, script/lib/LibEtchLogTables.sol, src/abstract/DecimalFloatDeploySuites.sol, test/abstract/LogTest.sol, test/src/lib/deploy/*
The dependency configuration and LibDataContract imports now use rain-datacontract version 0.2.0.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to dab24

No behavior change is expected in the repository’s use of this dependency, and the reported build succeeded. The reported test failures require RPC environment variables and do not establish a regression from this update.

Architecture Summary

Architecture risk: 🔵 Low · up to dab24

The change affects 4 systems.

Changed systems: test, foundry.toml, script, src

Architecture concerns
No architecture-level concerns identified.

Review details

Systems and components

  • observed — test (service) was modified; 4 changed files map to changed impact.
  • observed — foundry.toml (service) was modified; 1 changed file maps to changed impact.
  • observed — script (service) was modified; 1 changed file maps to changed impact.
  • observed — src (service) was modified; 1 changed file maps to changed impact.

Before / after behavior

  • observed — Modified behavior in foundry.toml: The configured rain-datacontract dependency version changed from 0.1.9 to 0.2.0.
  • observed — Modified behavior in script/lib/LibEtchLogTables.sol: The LibDataContract import changes from version 0.1.9 to 0.2.0.
  • observed — Modified behavior in src/abstract/DecimalFloatDeploySuites.sol: The LibDataContract import now resolves to package version 0.2.0 instead of 0.1.9.
  • observed — Modified behavior in test/abstract/LogTest.sol: The LibDataContract import now uses rain-datacontract-0.2.0 instead of rain-datacontract-0.1.9.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: updating the rain-datacontract dependency from version 0.1.9 to 0.2.0.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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.

@thedavidmeister
thedavidmeister merged commit ab6794e into main Oct 1, 2026
10 of 11 checks passed
@linear

linear Bot commented Oct 1, 2026

Copy link
Copy Markdown

RAI-2816

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