Skip to content

2026 03 10 deploy#167

Merged
thedavidmeister merged 3 commits intomainfrom
2026-03-10-deploy
Mar 10, 2026
Merged

2026 03 10 deploy#167
thedavidmeister merged 3 commits intomainfrom
2026-03-10-deploy

Conversation

@thedavidmeister
Copy link
Contributor

@thedavidmeister thedavidmeister commented Mar 10, 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

  • Documentation

    • Added comprehensive project documentation covering architecture, build instructions, and design details for the decimal floating‑point library.
  • Chores

    • Added Base Sepolia network support to deployment and verification configuration.
    • Updated deployment process to support additional deployment metadata and tracking.
    • Included the new documentation in license/annotation configuration and updated subproject references.

thedavidmeister and others added 2 commits March 10, 2026 15:38
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 10, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 7cde555e-7629-417b-94ab-ddb0c0cab32a

📥 Commits

Reviewing files that changed from the base of the PR and between 451a200 and 9266d7d.

📒 Files selected for processing (1)
  • REUSE.toml

Walkthrough

This PR adds Base Sepolia network configuration across CI and Foundry files, updates a dependency submodule, adds project documentation, and adjusts the deployment script to track code hashes and change a LibRainDeploy call signature.

Changes

Cohort / File(s) Summary
Base Sepolia Network Configuration
.github/workflows/manual-sol-artifacts.yaml, foundry.toml
Added CI_DEPLOY_BASE_SEPOLIA_RPC_URL and CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY to the GitHub Actions deploy job environment and added base_sepolia entries under [rpc_endpoints] and [etherscan] in Foundry config.
Project Documentation
CLAUDE.md
Added a new documentation file describing the project, build commands, architecture, design details, and licensing notes for the decimal floating-point library.
Deployment Script Logic
script/Deploy.sol
Introduced internal mapping sDepCodeHashes and updated deployment calls to LibRainDeploy.deployAndBroadcast, passing sDepCodeHashes (replacing earlier deployAndBroadcastToSupportedNetworks usage).
Dependency Submodule
lib/rain.deploy
Updated referenced subproject commit from 1af8ca2a... to ccfdb378d....
REUSE Annotations
REUSE.toml
Added CLAUDE.md to the REUSE.toml annotations path list.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title '2026 03 10 deploy' is vague and generic, using a date format without describing what is actually being deployed or changed. Replace with a descriptive title that summarizes the main change, such as 'Add Base Sepolia network configuration and deployment infrastructure' or 'Update deployment configuration and add documentation'.
✅ 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-03-10-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

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@CLAUDE.md`:
- Around line 1-78: This PR includes a docs-only file (CLAUDE.md) unrelated to
the Base Sepolia / deploy-path change; remove CLAUDE.md from this branch and
open a separate docs-only follow-up PR (or issue) that contains the same
content, referencing the rainlanguage/rain.math.float repo and maintainer
0xgleb's preference for separate documentation changes. Specifically: revert or
remove the CLAUDE.md addition from the current commit/branch, update the PR
description to note the removal, and create a new issue/PR titled "Add CLAUDE.md
agent guide" containing the file content so reviewers can evaluate docs
separately.
- Around line 11-67: The README has markdownlint violations MD022/MD031 due to
missing blank lines around headings and fenced code blocks (e.g., "## Build
Commands", "### Solidity (Foundry)", the triple-backtick code blocks under
Rust/JavaScript/WASM/Nix, and other "###" section headers); fix by adding a
single blank line before and after each heading and ensuring there is a blank
line above and below every fenced code block (the ```bash blocks) so that
headings like "## Build Commands", "### Solidity (Foundry)", "### Rust", "###
JavaScript/WASM", "### Nix" and their adjacent code fences conform to
markdownlint rules MD022/MD031.

In `@foundry.toml`:
- Around line 42-49: The TOML uses the noncanonical alias base_sepolia
(underscores), which Foundry/Alloy expects as "base-sepolia" (hyphenated and
quoted for TOML keys); change the top-level RPC key base_sepolia and the
[etherscan] table entry base_sepolia to the hyphenated quoted key "base-sepolia"
so vm.rpcUrl(...) and etherscan lookups resolve correctly, ensuring you update
both the RPC variable line (base_sepolia = ...) and the etherscan mapping
arbitrum/base/base_sepolia = ... to use "base-sepolia" instead of base_sepolia.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 1f1f3efd-d14b-420a-be45-3f101ad3bf48

📥 Commits

Reviewing files that changed from the base of the PR and between 1cf3969 and 451a200.

⛔ Files ignored due to path filters (1)
  • foundry.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • .github/workflows/manual-sol-artifacts.yaml
  • CLAUDE.md
  • foundry.toml
  • lib/rain.deploy
  • script/Deploy.sol

Comment on lines +1 to +78
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Project Overview

Decimal floating-point math library for Rainlang/DeFi. The `Float` type packs a 224-bit signed coefficient and 32-bit signed exponent into a single `bytes32`. Decimal (not binary) representation ensures exact decimal values (e.g., `0.1`). No NaN, Infinity, or negative zero — operations error on nonsense rather than producing special values.

Dual implementation: Solidity for on-chain, Rust/WASM for off-chain JS/TS consumption. The Rust crate uses revm to execute Solidity via an in-memory EVM, ensuring identical behavior.

## Build Commands

### Solidity (Foundry)
```bash
forge build # Compile contracts
forge test # Run all Solidity tests (5096 fuzz runs)
forge test --mt testFunctionName # Run specific test by name
forge test -vvvv # Verbose trace output for debugging
```

### Rust
```bash
cargo build # Build native
cargo build --target wasm32-unknown-unknown --lib -r # Build WASM
cargo test # Run Rust tests
cargo test test_name # Run specific test
```

Rust tests depend on Foundry build artifacts (`out/`). Run `forge build` before `cargo test` if artifacts are missing.

### JavaScript/WASM
```bash
npm install
npm run build # Full pipeline: Rust WASM → wasm-bindgen → base64 embed → CJS/ESM dist
npm test # TypeScript type check + vitest (tests in test_js/)
```

### Nix
```bash
nix develop # Enter dev shell with all tooling
```

## Architecture

### Solidity Layer (`src/`)
- **`lib/LibDecimalFloat.sol`** — Public API: arithmetic, comparison, conversion, formatting, parsing. User-defined type `Float` wrapping `bytes32`.
- **`lib/implementation/`** — Internal arithmetic (512-bit intermediates for mul/div), normalization, packing.
- **`lib/parse/`** — String-to-Float parsing.
- **`lib/format/`** — Float-to-string formatting.
- **`lib/table/`** — Log lookup tables (deployed as a data contract at a deterministic address).
- **`concrete/DecimalFloat.sol`** — Exposes library functions as contract methods (required for Rust/revm interop via ABI).
- **`error/`** — Custom error definitions (CoefficientOverflow, ExponentOverflow, DivisionByZero, etc.).

### Rust Layer (`crates/float/`)
- **`lib.rs`** — `Float` struct wrapping `B256`, implements `Add`/`Sub`/`Mul`/`Div`/`Neg`. Uses `alloy::sol!` macro to generate bindings from Foundry JSON artifacts in `out/`.
- **`js_api.rs`** — `#[wasm_bindgen]` exports for JS consumption (parse, format, arithmetic, conversions).
- **`evm.rs`** — In-memory EVM setup via revm. All Rust float operations delegate to Solidity through this.
- **`error.rs`** — Maps Solidity error selectors to Rust error types.

### JavaScript Layer
- **`scripts/build.js`** — Build pipeline: compiles WASM, runs wasm-bindgen, base64-encodes WASM into JS modules for both CJS and ESM.
- **`test_js/`** — Vitest tests for the WASM bindings.
- **`dist/`** — Generated output (CJS + ESM with embedded WASM).

### Dependencies (`lib/`)
Git submodules: forge-std, rain.string, rain.datacontract, rain.math.fixedpoint, rain.deploy, rain.sol.codegen.

## Key Design Details

- 512-bit intermediate values in multiply/divide to preserve precision.
- Exponent underflow silently rounds toward zero; exponent overflow reverts.
- Log/power use lookup table approximations with linear interpolation (table deployed as a data contract).
- Two packing modes: lossless (reverts on precision loss) and lossy (returns bool flag).
- Solidity compiler: 0.8.25, EVM target: Cancun, optimizer: 1,000,000 runs.

## License

LicenseRef-DCL-1.0 (Rain Decentralized Computer License). All source files require SPDX headers per REUSE.toml.
Copy link
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick | 🔵 Trivial

Split this agent guide into a docs-only follow-up.

This file is orthogonal to the Base Sepolia / deploy-path change, so keeping it in the same PR makes the deployment review harder to reason about.

Based on learnings, in the rainlanguage/rain.math.float repository, the maintainer 0xgleb prefers to handle documentation additions and improvements in separate issues rather than inline with feature PRs.

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 14-14: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 22-22: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 31-31: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 38-38: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 54-54: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 60-60: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 65-65: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CLAUDE.md` around lines 1 - 78, This PR includes a docs-only file (CLAUDE.md)
unrelated to the Base Sepolia / deploy-path change; remove CLAUDE.md from this
branch and open a separate docs-only follow-up PR (or issue) that contains the
same content, referencing the rainlanguage/rain.math.float repo and maintainer
0xgleb's preference for separate documentation changes. Specifically: revert or
remove the CLAUDE.md addition from the current commit/branch, update the PR
description to note the removal, and create a new issue/PR titled "Add CLAUDE.md
agent guide" containing the file content so reviewers can evaluate docs
separately.

Comment on lines +11 to +67
## Build Commands

### Solidity (Foundry)
```bash
forge build # Compile contracts
forge test # Run all Solidity tests (5096 fuzz runs)
forge test --mt testFunctionName # Run specific test by name
forge test -vvvv # Verbose trace output for debugging
```

### Rust
```bash
cargo build # Build native
cargo build --target wasm32-unknown-unknown --lib -r # Build WASM
cargo test # Run Rust tests
cargo test test_name # Run specific test
```

Rust tests depend on Foundry build artifacts (`out/`). Run `forge build` before `cargo test` if artifacts are missing.

### JavaScript/WASM
```bash
npm install
npm run build # Full pipeline: Rust WASM → wasm-bindgen → base64 embed → CJS/ESM dist
npm test # TypeScript type check + vitest (tests in test_js/)
```

### Nix
```bash
nix develop # Enter dev shell with all tooling
```

## Architecture

### Solidity Layer (`src/`)
- **`lib/LibDecimalFloat.sol`** — Public API: arithmetic, comparison, conversion, formatting, parsing. User-defined type `Float` wrapping `bytes32`.
- **`lib/implementation/`** — Internal arithmetic (512-bit intermediates for mul/div), normalization, packing.
- **`lib/parse/`** — String-to-Float parsing.
- **`lib/format/`** — Float-to-string formatting.
- **`lib/table/`** — Log lookup tables (deployed as a data contract at a deterministic address).
- **`concrete/DecimalFloat.sol`** — Exposes library functions as contract methods (required for Rust/revm interop via ABI).
- **`error/`** — Custom error definitions (CoefficientOverflow, ExponentOverflow, DivisionByZero, etc.).

### Rust Layer (`crates/float/`)
- **`lib.rs`** — `Float` struct wrapping `B256`, implements `Add`/`Sub`/`Mul`/`Div`/`Neg`. Uses `alloy::sol!` macro to generate bindings from Foundry JSON artifacts in `out/`.
- **`js_api.rs`** — `#[wasm_bindgen]` exports for JS consumption (parse, format, arithmetic, conversions).
- **`evm.rs`** — In-memory EVM setup via revm. All Rust float operations delegate to Solidity through this.
- **`error.rs`** — Maps Solidity error selectors to Rust error types.

### JavaScript Layer
- **`scripts/build.js`** — Build pipeline: compiles WASM, runs wasm-bindgen, base64-encodes WASM into JS modules for both CJS and ESM.
- **`test_js/`** — Vitest tests for the WASM bindings.
- **`dist/`** — Generated output (CJS + ESM with embedded WASM).

### Dependencies (`lib/`)
Git submodules: forge-std, rain.string, rain.datacontract, rain.math.fixedpoint, rain.deploy, rain.sol.codegen.

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 | 🟡 Minor

Fix the markdownlint spacing violations.

MD022 and MD031 are already firing across the new headings and fenced blocks, so this file will keep the docs lint noisy until blank lines are added around those sections.

🧰 Tools
🪛 markdownlint-cli2 (0.21.0)

[warning] 13-13: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 14-14: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 22-22: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 31-31: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 32-32: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 38-38: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 39-39: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 45-45: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 54-54: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 60-60: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 65-65: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CLAUDE.md` around lines 11 - 67, The README has markdownlint violations
MD022/MD031 due to missing blank lines around headings and fenced code blocks
(e.g., "## Build Commands", "### Solidity (Foundry)", the triple-backtick code
blocks under Rust/JavaScript/WASM/Nix, and other "###" section headers); fix by
adding a single blank line before and after each heading and ensuring there is a
blank line above and below every fenced code block (the ```bash blocks) so that
headings like "## Build Commands", "### Solidity (Foundry)", "### Rust", "###
JavaScript/WASM", "### Nix" and their adjacent code fences conform to
markdownlint rules MD022/MD031.

Comment on lines +42 to +49
base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
flare = "${CI_DEPLOY_FLARE_RPC_URL}"
polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"

[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
base_sepolia = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
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:

#!/bin/bash
set -euo pipefail

rg -n --hidden -S '\bbase[-_]sepolia\b|supportedNetworks\s*\('

Repository: rainlanguage/rain.math.float

Length of output: 1822


🌐 Web query:

Foundry Alloy chain aliases base-sepolia documentation

💡 Result:

In Foundry, the chain keys you use in TOML config files (e.g., deployments.toml) must be either a numeric chain id ([84532]) or a valid Alloy chain alias (like [base-sepolia]). If you use a custom name that isn’t an Alloy alias, you’ll hit InvalidChainKey. [1]

Where it’s documented / defined

  • Foundry docs (chain keys + Alloy aliases + InvalidChainKey): “Scripting with config” guide. [1]
  • Alloy alias exists: alloy_chains::Chain::base_sepolia() (shows Base Sepolia is a known chain in Alloy’s chain list). [2]

Base Sepolia network details (for your endpoint_url)

Example

# deployments.toml
[base-sepolia]
endpoint_url = "https://sepolia.base.org"

(Or use [84532] instead of [base-sepolia] for maximum compatibility.) [1][3]


Use the canonical Base Sepolia alias spelling in foundry.toml.

The base_sepolia keys will not be resolved by vm.rpcUrl(...) or etherscan lookups. Foundry's documented Alloy chain alias for Base Sepolia is base-sepolia (with hyphens), not underscores. TOML keys with hyphens must be quoted.

Suggested change
 [rpc_endpoints]
 arbitrum = "${CI_DEPLOY_ARBITRUM_RPC_URL}"
 base = "${CI_DEPLOY_BASE_RPC_URL}"
-base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
+"base-sepolia" = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
 flare = "${CI_DEPLOY_FLARE_RPC_URL}"
 polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"
 
 [etherscan]
 arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
 base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
-base_sepolia = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
+"base-sepolia" = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
 flare = { key = "${CI_DEPLOY_FLARE_ETHERSCAN_API_KEY}" }
 polygon = { key = "${CI_DEPLOY_POLYGON_ETHERSCAN_API_KEY}" }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
flare = "${CI_DEPLOY_FLARE_RPC_URL}"
polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"
[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
base_sepolia = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
flare = "${CI_DEPLOY_FLARE_RPC_URL}"
polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"
[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
"base-sepolia" = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
Suggested change
base_sepolia = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
flare = "${CI_DEPLOY_FLARE_RPC_URL}"
polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"
[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
base_sepolia = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
[rpc_endpoints]
arbitrum = "${CI_DEPLOY_ARBITRUM_RPC_URL}"
base = "${CI_DEPLOY_BASE_RPC_URL}"
"base-sepolia" = "${CI_DEPLOY_BASE_SEPOLIA_RPC_URL}"
flare = "${CI_DEPLOY_FLARE_RPC_URL}"
polygon = "${CI_DEPLOY_POLYGON_RPC_URL}"
[etherscan]
arbitrum = { key = "${CI_DEPLOY_ARBITRUM_ETHERSCAN_API_KEY}" }
base = { key = "${CI_DEPLOY_BASE_ETHERSCAN_API_KEY}" }
"base-sepolia" = { key = "${CI_DEPLOY_BASE_SEPOLIA_ETHERSCAN_API_KEY}" }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@foundry.toml` around lines 42 - 49, The TOML uses the noncanonical alias
base_sepolia (underscores), which Foundry/Alloy expects as "base-sepolia"
(hyphenated and quoted for TOML keys); change the top-level RPC key base_sepolia
and the [etherscan] table entry base_sepolia to the hyphenated quoted key
"base-sepolia" so vm.rpcUrl(...) and etherscan lookups resolve correctly,
ensuring you update both the RPC variable line (base_sepolia = ...) and the
etherscan mapping arbitrum/base/base_sepolia = ... to use "base-sepolia" instead
of base_sepolia.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@thedavidmeister thedavidmeister merged commit f093cd0 into main Mar 10, 2026
10 checks passed
@github-actions
Copy link

@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 Mar 10, 2026

Tip

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

SIZE=M


🧠 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 }}`.

Learnt from: 0xgleb
Repo: rainlanguage/rain.math.float PR: 59
File: crates/float/src/lib.rs:233-242
Timestamp: 2025-06-17T10:17:56.205Z
Learning: In the rainlanguage/rain.math.float repository, the maintainer 0xgleb prefers to handle documentation additions and improvements in separate issues rather than inline with feature PRs.

Learnt from: thedavidmeister
Repo: rainlanguage/rain.math.float PR: 110
File: src/lib/implementation/LibDecimalFloatImplementation.sol:1011-1011
Timestamp: 2025-08-26T15:50:31.262Z
Learning: In the rain.math.float repository, thedavidmeister prefers concise, high-level documentation comments that capture intent rather than detailed comments that mirror implementation specifics. Detailed implementation-focused comments are considered fragile because they become outdated when code changes but comments aren't updated.

Learnt from: thedavidmeister
Repo: rainlanguage/rain.math.float PR: 96
File: test/src/lib/implementation/LibDecimalFloatImplementation.maximize.t.sol:15-29
Timestamp: 2025-08-11T14:32:50.439Z
Learning: In test code for the rain.math.float repository, redundant checks may be intentionally kept for clarity and documentation purposes, even when they could be simplified. The maintainer (thedavidmeister) prefers explicit assertions in test code to make the test's intent clear to future readers, prioritizing readability over conciseness.

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