Skip to content

2026 02 06 deploy#165

Merged
thedavidmeister merged 24 commits intomainfrom
2026-02-06-deploy
Feb 8, 2026
Merged

2026 02 06 deploy#165
thedavidmeister merged 24 commits intomainfrom
2026-02-06-deploy

Conversation

@thedavidmeister
Copy link
Contributor

@thedavidmeister thedavidmeister commented Feb 6, 2026

Motivation

Solution

Checks

By submitting this for review, I'm confirming I've done the following:

  • made this PR as small as possible
  • unit-tested any new functionality
  • linked any relevant issues or PRs
  • included screenshots (if this involves a front-end change)

Summary by CodeRabbit

  • Chores

    • Added a new deployment submodule and project remapping; updated tracked submodule state and introduced per‑network RPC and API key configuration.
  • Refactor

    • Simplified deployment scripts to two explicit deployment paths and replaced legacy deployment scaffolding with direct deployment flows; CI switched to Forge-based commands and narrowed deploy options.
  • Reliability

    • Runtime verification added to ensure deployed artifacts match expected code hashes; removed legacy deployment paths.
  • Tests

    • Tests updated to perform runtime deployments and assert expected code hashes.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 6, 2026

Warning

Rate limit exceeded

@thedavidmeister has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 19 minutes and 50 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Walkthrough

Adds a rain.deploy submodule and remapping; refactors Deploy.sol into two explicit suites (log-tables, decimal-float) using LibRainDeploy; updates LibDecimalFloatDeploy constants and runtime deployment checks; updates tests to deploy and assert code hashes; adjusts CI workflow and foundry RPC/etherscan config.

Changes

Cohort / File(s) Summary
Submodule & remapping
\.gitmodules, lib/rain.deploy, lib/rain.datacontract
Adds lib/rain.deploy submodule entry and directory; updates lib/rain.datacontract tracked commit; adds remapping rain.deploy/=lib/rain.deploy/src/.
Deployment orchestration
script/Deploy.sol, src/lib/deploy/LibDecimalFloatDeploy.sol
Replaces legacy multi-suite flow with two explicit suites (log-tables, decimal-float); integrates LibRainDeploy calls; removes Zoltu proxy helpers; updates deployment constants and hashes; simplifies branching and validation.
Tests
test/abstract/LogTest.sol, test/src/lib/deploy/LibDecimalFloatDeploy.t.sol
Switches from DataContractMemoryContainer.write to creation-code runtime deployments; adds codehash assertions; renames/rewrites tests and imports LibRainDeploy/LibDataContract.
CI & config
.github/workflows/manual-sol-artifacts.yaml, foundry.toml
Changes workflow to Forge-based deploy steps; narrows suite options to log-tables/decimal-float; replaces dynamic network env handling with explicit CI RPC and Etherscan secret variables; adds [rpc_endpoints] and [etherscan] entries in foundry.toml.

Sequence Diagram(s)

sequenceDiagram
    actor CI
    participant Forge
    participant DeployScript as "script/Deploy.sol"
    participant LibRainDeploy as "LibRainDeploy"
    participant Networks as "Target Networks"

    CI->>Forge: run "forge selectors up --all" and "forge script Deploy.sol:Deploy --broadcast"
    Forge->>DeployScript: execute deployment script
    DeployScript->>LibRainDeploy: deployAndBroadcastToSupportedNetworks(artifact, deps, args)
    LibRainDeploy->>Networks: broadcast deployment transactions
    Networks-->>LibRainDeploy: confirmations / receipts
    LibRainDeploy-->>DeployScript: return deployed addresses/results
    DeployScript-->>Forge: emit logs/status
    Forge-->>CI: surface logs/status
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • update forge #162: Overlaps changes in src/lib/deploy/LibDecimalFloatDeploy.sol (deployment constants and verification).
  • concrete mul #43: Modifies deployment helpers and script interactions similar to this PR (script/Deploy.sol, deploy helpers).
  • suites #157: Alters deployment-suite handling and CI/workflow inputs related to this refactor.

Suggested reviewers

  • hardyjosh
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title '2026 02 06 deploy' is vague and lacks meaningful specificity about the actual changes—it reads as a date-stamped generic deployment marker rather than describing what was deployed or changed. Consider a more descriptive title that captures the key change, such as 'Add rain.deploy submodule and refactor deployment script' or 'Migrate to LibRainDeploy-based deployments'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 2026-02-06-deploy

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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
script/Deploy.sol (2)

9-11: 🧹 Nitpick | 🔵 Trivial

Dead constants: DEPLOYMENT_SUITE_* are now unused.

These three constants are only referenced in commented-out code (lines 37, 41). They should be removed along with the commented-out code to keep the file clean.


6-6: 🧹 Nitpick | 🔵 Trivial

Unused import and using directive.

DataContractMemoryContainer and LibDataContract (line 6) and the using directive (line 14) are no longer referenced by any active code — they only appear in commented-out lines. Remove them if the commented-out code is deleted.

Also applies to: 14-14

🤖 Fix all issues with AI agents
In `@lib/rain.deploy`:
- Line 1: The repo pins rain.deploy to a WIP commit
(1120ee36cfb74e228a4aa6fbba02b515fe14f172) in lib/rain.deploy; replace this with
a non-WIP reference by switching the submodule pointer to a tagged release
(preferred) or a stable release branch, or add a clear justification in the repo
for why this exact WIP commit is required. Update the submodule configuration
(e.g., .gitmodules and the lib/rain.deploy pointer) to reference the chosen tag
or branch, run git submodule sync && git submodule update --init --recursive to
verify, and commit the updated submodule SHA and .gitmodules change; if keeping
the WIP commit, add a note in the repo explaining the risk and why it's
acceptable.

In `@script/Deploy.sol`:
- Around line 30-45: Remove the sixteen lines of commented-out deployment code
in Deploy.sol (the block referencing suiteString, suite,
DataContractMemoryContainer/container, LibDecimalFloatDeploy.dataContract(),
vm.startBroadcast/deployerPrivateKey, container.writeZoltu(),
LibDecimalFloatDeploy.decimalFloatZoltu(), and vm.stopBroadcast()); delete the
entire commented block so only active deployment logic remains and history is
preserved in version control.
- Around line 19-28: Add the missing Solidity import statements for the
referenced symbols so the script compiles: import LibRainDeploy (used in
LibRainDeploy.deployAndBroadcastToSupportedNetworks and
LibRainDeploy.supportedNetworks) and import the DecimalFloat contract/type (used
via type(DecimalFloat).creationCode); place these imports at the top of
Deploy.sol using the correct project-relative paths for your LibRainDeploy and
DecimalFloat source files and confirm there are no naming collisions with
LibDecimalFloatDeploy symbols already present.

lib/rain.deploy Outdated
@@ -0,0 +1 @@
Subproject commit 1120ee36cfb74e228a4aa6fbba02b515fe14f172
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# Check for .gitmodules to see the submodule URL and configuration
find . -name ".gitmodules" -type f | head -20

Repository: rainlanguage/rain.math.float

Length of output: 85


🏁 Script executed:

# Also check the git configuration for the submodule
git config --file .gitmodules --name-only --get-regexp path 2>/dev/null || echo "No .gitmodules found or readable"

Repository: rainlanguage/rain.math.float

Length of output: 275


🏁 Script executed:

# Look for any documentation about rain.deploy dependency
fd -i -e md -e txt | xargs grep -l "rain.deploy" 2>/dev/null | head -10

Repository: rainlanguage/rain.math.float

Length of output: 54


🏁 Script executed:

cat -n .gitmodules

Repository: rainlanguage/rain.math.float

Length of output: 879


🏁 Script executed:

# Check if the commit exists in the rain.deploy repository or if there are any tags
git ls-remote https://github.com/rainlanguage/rain.deploy 2>/dev/null | grep "1120ee36cfb74e228a4aa6fbba02b515fe14f172" || echo "Commit not directly found in refs"

Repository: rainlanguage/rain.math.float

Length of output: 174


🏁 Script executed:

# Look for any references to the rain.deploy commit in commit messages or changelogs
rg "1120ee36cfb74e228a4aa6fbba02b515fe14f172" --type md --type txt 2>/dev/null || echo "No references found"

Repository: rainlanguage/rain.math.float

Length of output: 91


🏁 Script executed:

# Check git history for when this submodule was added/modified
git log --oneline lib/rain.deploy 2>/dev/null | head -10 || echo "No git history available"

Repository: rainlanguage/rain.math.float

Length of output: 97


🏁 Script executed:

# Get detailed information about the commit from the git history
git log --format="%H %ai %s %b" -1 -- lib/rain.deploy 2>/dev/null | head -20

Repository: rainlanguage/rain.math.float

Length of output: 157


🏁 Script executed:

# Check if there are any tags in the rain.deploy repository
git ls-remote --tags https://github.com/rainlanguage/rain.deploy 2>/dev/null | grep -E "v[0-9]+\.[0-9]+\.[0-9]+" | tail -5

Repository: rainlanguage/rain.math.float

Length of output: 54


🏁 Script executed:

# Look for any LICENSE file or dependency documentation in the repo
fd -i -e license -e license.txt -e license.md | head -10

Repository: rainlanguage/rain.math.float

Length of output: 54


🏁 Script executed:

# Check if Deploy.sol or related files mention rain.deploy dependency
rg "rain.deploy|LibRainDeploy" -t sol --max-count 20 2>/dev/null | head -30

Repository: rainlanguage/rain.math.float

Length of output: 54


Do not pin a work-in-progress commit as a submodule dependency.

The pinned commit 1120ee36cfb74e228a4aa6fbba02b515fe14f172 is the current HEAD of rain.deploy's main branch with the commit message "wip on new deploy"—indicating work-in-progress status. There are no release tags or stable version markers in the rain.deploy repository. Using a WIP commit as a pinned dependency introduces risk of incomplete or unstable code. Either use a tagged release version if available, or clarify why this WIP state is appropriate for production use.

🤖 Prompt for AI Agents
In `@lib/rain.deploy` at line 1, The repo pins rain.deploy to a WIP commit
(1120ee36cfb74e228a4aa6fbba02b515fe14f172) in lib/rain.deploy; replace this with
a non-WIP reference by switching the submodule pointer to a tagged release
(preferred) or a stable release branch, or add a clear justification in the repo
for why this exact WIP commit is required. Update the submodule configuration
(e.g., .gitmodules and the lib/rain.deploy pointer) to reference the chosen tag
or branch, run git submodule sync && git submodule update --init --recursive to
verify, and commit the updated submodule SHA and .gitmodules change; if keeping
the WIP commit, add a note in the repo explaining the risk and why it's
acceptable.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/manual-sol-artifacts.yaml (1)

3-5: 🧹 Nitpick | 🔵 Trivial

Nit: Remove the empty inputs: key.

The inputs: key with no children is a leftover from the removed network and suite inputs. It can be cleaned up:

Suggested cleanup
 on:
-  workflow_dispatch:
-    inputs:
+  workflow_dispatch:

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
script/Deploy.sol (1)

11-13: 🛠️ Refactor suggestion | 🟠 Major

Dead constants: DEPLOYMENT_SUITE_* are no longer used.

These constants were used by the now-commented-out suite-based deployment logic. They should be removed along with the commented-out code block (lines 45-60).

♻️ Proposed cleanup
-bytes32 constant DEPLOYMENT_SUITE_ALL = keccak256("all");
-bytes32 constant DEPLOYMENT_SUITE_TABLES = keccak256("deployment.suite.tables");
-bytes32 constant DEPLOYMENT_SUITE_CONTRACT = keccak256("deployment.suite.contract");
-
 contract Deploy is Script {
🤖 Fix all issues with AI agents
In @.gitmodules:
- Line 9: Update the broken submodule URL in .gitmodules: replace the incorrect
"https://github.com/lib/rain.datacontract" with the correct GitHub organization
URL "https://github.com/rainlanguage/rain.datacontract" for the
rain.datacontract submodule so submodule init/update succeeds (edit the url
entry in the .gitmodules file).

In `@foundry.toml`:
- Around line 45-49: Add the missing block explorer URL to the Flare entry under
the [etherscan] table so verification uses the correct Blockscout API; update
the existing flare entry (the one with key =
"${CI_DEPLOY_FLARE_ETHERSCAN_API_KEY}") to include url =
"https://flare-explorer.flare.network/api/" and ensure any verification commands
for Flare use the blockscout verifier (e.g., --verifier blockscout).

In `@src/lib/deploy/LibDecimalFloatDeploy.sol`:
- Around line 24-26: The constants ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS and
LOG_TABLES_DATA_CONTRACT_HASH are placeholders (address(0) and a fake repeating
hash) which will break Deploy and tests; replace them with the real deployed log
tables address and the actual contract codehash used by Deploy.sol and
LogTest.sol, or if real values are not yet available mark them with a clear TODO
and gate the dependent deployment/tests (skip or require a runtime override/env
var) so DeployDecimalFloat (which reads LOG_TABLES_DATA_CONTRACT_HASH) and the
assertions in LogTest.sol do not assert against placeholder values. Ensure you
update the constants in LibDecimalFloatDeploy.sol
(ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS, LOG_TABLES_DATA_CONTRACT_HASH) and document
the TODO or add a feature flag to avoid failing CI.
- Around line 37-44: ensureDeployed() currently only validates the DecimalFloat
contract; add a parallel existence/hash check for the log tables contract using
the same pattern: verify address(ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS).code.length
!= 0 and address(ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS).codehash ==
LOG_TABLES_DATA_CONTRACT_HASH and revert with a new or existing descriptive
error (e.g., LogTablesNotDeployed) when the check fails; alternatively, if you
prefer scope clarity instead of adding the check, rename ensureDeployed() to
ensureDecimalFloatDeployed() and document that log tables are validated
elsewhere.

In `@test/src/lib/deploy/LibDecimalFloatDeploy.t.sol`:
- Around line 24-51: Remove the dead commented tests to clean up the file:
delete the commented-out functions testDecimalFloatZoltu and
testDecimalFloatZoltuProd and their bodies (which reference decimalFloatZoltu,
DECIMAL_FLOAT_DATA_CONTRACT_HASH, and ZOLTU_DEPLOYED_DECIMAL_FLOAT_ADDRESS)
since those symbols were removed/renamed and the tests are no longer valid; keep
version history in git and add new tests only when the new APIs/constants exist.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@src/lib/deploy/LibDecimalFloatDeploy.sol`:
- Line 26: The constant LOG_TABLES_DATA_CONTRACT_HASH is currently set to the
keccak256 of empty bytecode; replace it with the actual runtime codehash of the
deployed log tables data contract by computing keccak256 on that contract's
deployed bytecode and updating the bytes32 constant
LOG_TABLES_DATA_CONTRACT_HASH in LibDecimalFloatDeploy.sol to that value so the
assertion in LogTest (which deploys the contract with assembly) will match the
real codehash.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
script/Deploy.sol (1)

11-13: 🛠️ Refactor suggestion | 🟠 Major

Dead constants — remove along with the commented-out code.

DEPLOYMENT_SUITE_ALL, DEPLOYMENT_SUITE_TABLES, and DEPLOYMENT_SUITE_CONTRACT are no longer referenced by any active code. They only served the now-commented-out suite-based deployment logic. Remove them together with the commented-out block (lines 45–60) to avoid confusion.

♻️ Proposed cleanup
-bytes32 constant DEPLOYMENT_SUITE_ALL = keccak256("all");
-bytes32 constant DEPLOYMENT_SUITE_TABLES = keccak256("deployment.suite.tables");
-bytes32 constant DEPLOYMENT_SUITE_CONTRACT = keccak256("deployment.suite.contract");
-
 contract Deploy is Script {

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Fix all issues with AI agents
In `@script/Deploy.sol`:
- Around line 38-41: Fix the typo in the user-facing message logged by
console2.log: change "reun" to "rerun" in the second console2.log call so the
message reads "Please rerun the deployment script to deploy the DecimalFloat
contract now that the dependency is in place."; locate the offending string in
the console2.log invocation in the Deploy.sol snippet and update the text
accordingly.

In `@src/lib/deploy/LibDecimalFloatDeploy.sol`:
- Around line 28-35: Add consistent NatSpec `@dev` comments for the two new
constants ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS and LOG_TABLES_DATA_CONTRACT_HASH
similar to the existing comments for ZOLTU_DEPLOYED_DECIMAL_FLOAT_ADDRESS and
DECIMAL_FLOAT_CONTRACT_HASH: provide a one-line description each stating they
represent the address (deterministic proxy-deployed, same across EVM networks)
and the expected contract codehash respectively so documentation style is
uniform across the file.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
script/Deploy.sol (1)

11-13: 🛠️ Refactor suggestion | 🟠 Major

Remove unused constants.

DEPLOYMENT_SUITE_ALL, DEPLOYMENT_SUITE_TABLES, and DEPLOYMENT_SUITE_CONTRACT are only referenced in the commented-out block (lines 57–72). Once that dead code is removed (as previously suggested), these constants become entirely unused.

♻️ Proposed cleanup
-bytes32 constant DEPLOYMENT_SUITE_ALL = keccak256("all");
-bytes32 constant DEPLOYMENT_SUITE_TABLES = keccak256("deployment.suite.tables");
-bytes32 constant DEPLOYMENT_SUITE_CONTRACT = keccak256("deployment.suite.contract");

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
script/Deploy.sol (1)

11-13: 🛠️ Refactor suggestion | 🟠 Major

Unused constants: DEPLOYMENT_SUITE_ALL, DEPLOYMENT_SUITE_TABLES, DEPLOYMENT_SUITE_CONTRACT.

These file-level constants are no longer referenced in any active code — they only appear in the commented-out block (lines 59–74). They should be removed along with the dead comments.

♻️ Proposed cleanup
-bytes32 constant DEPLOYMENT_SUITE_ALL = keccak256("all");
-bytes32 constant DEPLOYMENT_SUITE_TABLES = keccak256("deployment.suite.tables");
-bytes32 constant DEPLOYMENT_SUITE_CONTRACT = keccak256("deployment.suite.contract");
-
 contract Deploy is Script {
🤖 Fix all issues with AI agents
In `@script/Deploy.sol`:
- Line 6: The import currently brings in DataContractMemoryContainer and
LibDataContract but after removing dead comments only LibDataContract is used;
update the import to remove DataContractMemoryContainer and also delete the
unused using directive that references DataContractMemoryContainer (the `using
... for ...` line) so only LibDataContract remains in use; ensure the remaining
import still names LibDataContract exactly as before.

In `@test/src/lib/deploy/LibDecimalFloatDeploy.t.sol`:
- Around line 25-34: In testExpectedCodeHashLogTables, check that the create
call actually succeeded before asserting the codehash: after assembly assigns
deployedAddress, add an assertion that deployedAddress != address(0) (e.g.,
assertTrue/deploy-check with a clear message like "deployment failed") so the
test fails with a clear deployment-failure diagnostic prior to comparing
deployedAddress.codehash with
LibDecimalFloatDeploy.LOG_TABLES_DATA_CONTRACT_HASH.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@script/Deploy.sol`:
- Around line 5-9: The import line brings in console2 but it is unused; edit the
import statement in Deploy.sol (the line importing Script and console2 from
"forge-std/Script.sol") to remove console2 so only Script is imported, ensuring
there are no remaining references to console2 elsewhere (e.g., in any setup or
test scaffolding) before committing.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Fix all issues with AI agents
In `@src/lib/deploy/LibDecimalFloatDeploy.sol`:
- Around line 20-22: Remove the unused error declaration DecimalFloatNotDeployed
from LibDecimalFloatDeploy.sol: delete the error DecimalFloatNotDeployed()
definition (it was only referenced by the removed ensureDeployed() function) so
the contract no longer contains an unused symbol.

In `@test/src/lib/deploy/LibDecimalFloatDeploy.t.sol`:
- Line 5: The import line in LibDecimalFloatDeploy.t.sol brings in an unused
symbol console2; remove console2 from the import so only Test is imported (i.e.,
change the import to import {Test} from "forge-std/Test.sol") to clean up unused
imports and then run your formatter/linter.
- Around line 27-34: Add the same runtime guard used in testDeployAddress to
testDeployAddressLogTables: after deploying (the deployedAddress from
LibRainDeploy.deployZoltu using logTables), assert that
address(deployedAddress).code.length > 0 with a clear message so the test fails
with a diagnostic if the Zoltu deployment produced no bytecode; keep the
existing equality assertions against
LibDecimalFloatDeploy.ZOLTU_DEPLOYED_LOG_TABLES_ADDRESS and
LOG_TABLES_DATA_CONTRACT_HASH.

@thedavidmeister thedavidmeister merged commit 1fa879f into main Feb 8, 2026
10 checks passed
@github-actions
Copy link

github-actions bot commented Feb 8, 2026

@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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 8, 2026

Tip

For best results, initiate chat on the files or code changes.

SIZE=L


🧠 Learnings used
Learnt from: 0xgleb
Repo: rainlanguage/rain.math.float PR: 46
File: .github/workflows/rainix.yaml:4-6
Timestamp: 2025-06-11T10:46:58.363Z
Learning: For GitHub Actions workflows in this repository, the maintainer prefers using `${{ github.ref }}` (full ref path) in the `concurrency.group` key to ensure correct run-cancellation behavior, even if it is less readable than `${{ github.ref_name }}`.

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