Skip to content

2026 03 05 bytecode zoltu#3

Merged
thedavidmeister merged 9 commits intomainfrom
2026-03-05-bytecode-zoltu
Mar 5, 2026
Merged

2026 03 05 bytecode zoltu#3
thedavidmeister merged 9 commits intomainfrom
2026-03-05-bytecode-zoltu

Conversation

@thedavidmeister
Copy link
Contributor

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

  • New Features

    • Deterministic multi-network deployment tooling with etching/verification support.
  • Tests

    • Extensive tests covering deployment flows, dependency checks, idempotent skips, and failure scenarios.
  • Bug Fixes / Refactor

    • Modularized deployment workflow with per-network checks and stronger post-deploy validation.
  • Documentation

    • New project guidance, multi-pass audits, and triage reports documenting findings and resolutions.
  • Chores

    • Added config files, updated .gitignore, and CI now exposes RPC endpoints for forked tests.

thedavidmeister and others added 5 commits March 5, 2026 18:34
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Split monolithic deploy function into checkDependencies, deployToNetworks,
  and deployAndBroadcast for TOCTOU mitigation via codehash tracking
- Add NoNetworks error for empty networks array
- Add DependencyChanged error for codehash/code-length changes between phases
- Add comprehensive test suite (11 tests) covering all functions and error paths
- Fix NatSpec: add missing @param tags, correct description and @return docs
- Rename deployAndBroadcastToSupportedNetworks to deployAndBroadcast
- Fix typo "verficiation" -> "verification"
- Add foundry.toml with cbor_metadata=false for stable bytecode
- Add .env to .gitignore

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ZOLTU_FACTORY_CODEHASH constant for runtime verification
- ZOLTU_FACTORY_BYTECODE constant for vm.etch usage
- etchZoltuFactory(Vm) helper to place factory on any network
- Tests for all three

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Capture createSelectFork return values to silence unused-return warning
- Add slither.config.json: filter forge-std paths, exclude assembly detector
- Run forge fmt for consistent formatting

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 5, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: cdb10a48-096c-42a9-94f7-3b86b03523b2

📥 Commits

Reviewing files that changed from the base of the PR and between 4773937 and 4927c05.

📒 Files selected for processing (8)
  • CLAUDE.md
  • audit/2026-03-05-02/pass0/process.md
  • audit/2026-03-05-02/pass1/LibRainDeploy.md
  • audit/2026-03-05-02/pass2/LibRainDeploy.md
  • audit/2026-03-05-02/pass3/LibRainDeploy.md
  • audit/2026-03-05-02/pass4/LibRainDeploy.md
  • audit/2026-03-05-02/pass5/LibRainDeploy.md
  • src/lib/LibRainDeploy.sol

Walkthrough

Adds LibRainDeploy with modular deployment flows (dependency checks, factory etch, per-network deploy and broadcast), comprehensive tests, Foundry and Slither configs, CI RPC env mappings, many audit/pass documentation artifacts, and small repo housekeeping (.gitignore, tooling config).

Changes

Cohort / File(s) Summary
Repository config & CI
\.gitignore, foundry.toml, slither.config.json, .github/workflows/rainix.yaml
Adds ignore patterns (.fixes, .env), new foundry.toml with RPC endpoints sourced from env vars, Slither config (filter_paths, detectors_to_exclude), and exposes RPC env mappings in CI.
Core library
src/lib/LibRainDeploy.sol
Introduces modular deployment API: etchZoltuFactory, checkDependencies, deployToNetworks, deployAndBroadcast, plus deployZoltu; adds errors (DependencyChanged, NoNetworks), Zoltu factory bytecode/codehash constants, and removes the old deployAndBroadcastToSupportedNetworks.
Tests
test/src/lib/LibRainDeploy.t.sol
Adds extensive unit tests and mocks exercising etch/deploy paths, dependency checks/recording, skip-deploy behavior, and multiple revert scenarios (NoNetworks, MissingDependency, UnexpectedDeployedAddress, UnexpectedDeployedCodeHash).
Audit & documentation
CLAUDE.md, audit/..., audit/.../pass*/..., audit/.../triage.md
Adds CLAUDE.md guidance and a multi-pass audit directory (pass0–pass5) plus triage files documenting findings, test/coverage notes, NatSpec issues, and triage decisions.
Tooling config
.coderabbitai.yaml
Adds SPDX header and review path filters excluding audit/** and .fixes/**.

Sequence Diagram(s)

sequenceDiagram
    participant Caller
    participant Vm as Vm (Foundry)
    participant Lib as LibRainDeploy
    participant Zoltu as ZoltuFactory
    participant Net as EVM_Network

    Caller->>Lib: deployAndBroadcast(privateKey, networks, creationCode, ...)
    Lib->>Vm: checkDependencies(networks, dependencies)
    Vm->>Net: fork & query dependency bytecode/codehash
    Net-->>Vm: return code & codehash
    Vm-->>Lib: record dep codehashes
    Lib->>Vm: etchZoltuFactory() / verify factory codehash
    Lib->>Zoltu: deployZoltu(creationCode) per network
    Zoltu->>Net: perform CREATE deploy
    Net-->>Zoltu: deployed address & codehash
    Zoltu-->>Lib: report deployed address & codehash
    Lib->>Lib: validate address & codehash against expected
    Lib->>Vm: stop broadcast / finalize
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title '2026 03 05 bytecode zoltu' is vague and lacks meaningful specificity about the core changes; while it references a date and component, it does not convey the primary objective or impact of the changeset to a reviewer scanning history. Use a more descriptive title that captures the main intent, such as 'Verify Zoltu factory bytecode and codehash in deployment checks' or 'Add Zoltu factory verification and split dependency error handling'.
✅ 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-05-bytecode-zoltu

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

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

Caution

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

⚠️ Outside diff range comments (1)
src/lib/LibRainDeploy.sol (1)

114-126: ⚠️ Potential issue | 🟠 Major

Enforce Zoltu factory codehash, not only code presence.

The flow currently checks only ZOLTU_FACTORY.code.length. A non-empty but non-canonical factory can pass dependency checks, and deployToNetworks does not re-verify the factory hash. Since ZOLTU_FACTORY_CODEHASH already exists, this should be enforced in both phases.

Suggested integrity check patch
             console2.log(" - Zoltu Factory:", ZOLTU_FACTORY);
             // Zoltu factory must exist always.
             if (ZOLTU_FACTORY.code.length == 0) {
                 revert MissingDependency(networks[i], ZOLTU_FACTORY);
             }
+            bytes32 factoryCodeHash = ZOLTU_FACTORY.codehash;
+            if (factoryCodeHash != ZOLTU_FACTORY_CODEHASH) {
+                revert DependencyChanged(networks[i], ZOLTU_FACTORY, ZOLTU_FACTORY_CODEHASH, factoryCodeHash);
+            }
+            depCodeHashes[networks[i]][ZOLTU_FACTORY] = factoryCodeHash;
@@
             // Re-verify dependencies have not changed since the check phase.
+            bytes32 expectedFactoryCodeHash = depCodeHashes[networks[i]][ZOLTU_FACTORY];
+            bytes32 actualFactoryCodeHash = ZOLTU_FACTORY.codehash;
+            if (ZOLTU_FACTORY.code.length == 0 || actualFactoryCodeHash != expectedFactoryCodeHash) {
+                revert DependencyChanged(networks[i], ZOLTU_FACTORY, expectedFactoryCodeHash, actualFactoryCodeHash);
+            }
+
             for (uint256 j = 0; j < dependencies.length; j++) {
                 if (
                     dependencies[j].code.length == 0
                         || dependencies[j].codehash != depCodeHashes[networks[i]][dependencies[j]]
                 ) {

Also applies to: 159-172

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

In `@src/lib/LibRainDeploy.sol` around lines 114 - 126, The check that currently
only verifies ZOLTU_FACTORY.code.length must also enforce its codehash equals
ZOLTU_FACTORY_CODEHASH: update the block that logs and validates ZOLTU_FACTORY
to compare ZOLTU_FACTORY.codehash to ZOLTU_FACTORY_CODEHASH and revert
MissingDependency if it mismatches; do the same in the second occurrence (the
later validation block) and ensure depCodeHashes still records
dependencies[j].codehash. Also add the same codehash verification inside
deployToNetworks where the factory is re-validated so a non-canonical factory
cannot pass that phase either.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@audit/2026-03-05-01/pass1/LibRainDeploy.md`:
- Around line 11-33: The markdown tables for the "Function" block (containing
deployZoltu, supportedNetworks, deployAndBroadcastToSupportedNetworks), the
"Errors" block (containing DeployFailed, MissingDependency,
UnexpectedDeployedAddress, UnexpectedDeployedCodeHash), and the "Constants"
block (containing ZOLTU_FACTORY, ARBITRUM_ONE, BASE, FLARE, POLYGON) need blank
lines inserted immediately before each table header and immediately after each
table ends to satisfy MD058; update the LibRainDeploy.md sections so there is an
empty line above the pipe-separated header row and an empty line after the
trailing table row for each of those three tables.

In `@audit/2026-03-05-01/pass2/LibRainDeploy.md`:
- Around line 11-33: Add blank lines before and after each Markdown table block
so they are separated from surrounding text: ensure the "Function" table
(containing deployZoltu, supportedNetworks,
deployAndBroadcastToSupportedNetworks), the "Errors" table (DeployFailed,
MissingDependency, UnexpectedDeployedAddress, UnexpectedDeployedCodeHash), and
the "Constants" table (ZOLTU_FACTORY, ARBITRUM_ONE, BASE, FLARE, POLYGON) each
have an empty line above and below the table delimiter rows to satisfy MD058.

In `@audit/2026-03-05-01/pass4/LibRainDeploy.md`:
- Around line 13-16: The report still references the removed function name
deployAndBroadcastToSupportedNetworks; update the document to reflect the
current API by replacing that symbol with deployAndBroadcast (and adjust any
parameter/signature text if necessary to match the new function's parameters),
and search for any other occurrences of deployAndBroadcastToSupportedNetworks in
the report to remove or rename so the function table and descriptions match the
library's current API.
- Around line 11-26: Add blank lines before and after each markdown table in the
report (e.g., the tables listing Functions, Errors, and Constants) so they are
separated from surrounding text, and update the fenced code block at the
deployAndBroadcastToSupportedNetworks example to include a language identifier
(for example ```solidity or ```bash) on the opening fence to satisfy
MD058/MD040; ensure the code fence that was at Line 86 is changed from ``` to
something like ```solidity and that surrounding tables have an empty line above
and below them.

In `@audit/2026-03-05-01/pass5/LibRainDeploy.md`:
- Around line 13-16: The report references the old function name
deployAndBroadcastToSupportedNetworks; update all occurrences to the current
function name deployAndBroadcast and adjust any referenced line-range/location
notes accordingly (including the table row and the sections noted at lines 68-75
and 97-107) so the documentation matches the code surface; ensure other symbols
like deployZoltu, supportedNetworks, and the signature format remain unchanged
while replacing the old function name and any dead links or cross-references
that point to deployAndBroadcastToSupportedNetworks.
- Around line 11-26: Add required surrounding blank lines before and after each
Markdown table (the Function, Errors, and Constants tables referenced by
`deployZoltu`, `supportedNetworks`, and `deployAndBroadcastToSupportedNetworks`)
and ensure the fenced code block at the indicated location includes a language
tag (e.g., `solidity`) and also has blank lines before and after the fence;
update the fenced block around lines 43-45 to start with ```solidity and end
with ``` with a blank line separating it from adjacent text so markdownlint no
longer flags the tables or fenced block.

In `@audit/2026-03-05-01/triage.md`:
- Line 34: Update the test coverage summary to use the renamed function name:
replace the reference to deployAndBroadcastToSupportedNetworks with
deployAndBroadcast in the triage.md entry so it matches the actual test file and
the mention at Line 52; ensure the summary lists deployAndBroadcast (happy path
+ NoNetworks) alongside the other tests and any related function names like
supportedNetworks, deployZoltu, checkDependencies, deployToNetworks remain
unchanged.
- Around line 21-52: Add a single blank line after each subsection heading (for
example "### P0-A01-1 — Missing foundry.toml", "### P0-A01-2 — CLAUDE.md
describes Zoltu as \"CREATE2-style\"", "### P1-A01-1 — Silent address(0) return
when networks array is empty", etc.) so that the subsequent "**Status:**" lines
are separated by one empty line; update every subsection from the P0/P1... list
to comply with MD022.

In `@CLAUDE.md`:
- Around line 42-46: Update the Architecture section to reflect the current
LibRainDeploy API: replace the old reference to
deployAndBroadcastToSupportedNetworks(...) with the new flow and function
names—describe checkDependencies (validates required artifacts/dependencies per
network), deployToNetworks (per-network deployment logic using deployZoltu(bytes
creationCode) and supportedNetworks()), and deployAndBroadcast (aggregates
results and broadcasts proofs); also mention the relevant errors/constants used
by these functions for failure modes. Ensure each function name
(checkDependencies, deployToNetworks, deployAndBroadcast, deployZoltu,
supportedNetworks) is referenced explicitly and the sequence of operations
(dependency check → per-network deploy → verification/broadcast) is clearly
described so the doc matches the current code.
- Line 10: Update the README/CLAUDE.md setup section to explicitly list the
required RPC environment variables for each supported network (e.g.,
RPC_URL_ARBITRUM, RPC_URL_BASE, RPC_URL_FLARE, RPC_URL_POLYGON or a documented
pattern like RPC_URL_<NETWORK>) and state the fallback behavior when they are
unset (e.g., use a default local RPC endpoint or abort with a clear error
instructing the user to set the env var). Reference the supported-networks
sentence (the rain.deploy description listing Arbitrum, Base, Flare, Polygon)
and add a short bullet or sentence giving the exact variable names, expected
formats (HTTP WebSocket), and what happens if a variable is missing. Ensure the
doc mentions any alternate config keys (like a single RPC_URL or a networks
config file) if the code supports them.

In `@foundry.toml`:
- Around line 11-13: The RPC endpoints block in foundry.toml only defines
arbitrum and base but must include endpoints for the other supported networks
declared in src/lib/LibRainDeploy.sol (constants ARBITRUM_ONE, BASE, FLARE,
POLYGON); update the [rpc_endpoints] section to add flare = "${FLARE_RPC_URL}"
and polygon = "${POLYGON_RPC_URL}" so fork selection and deployments can resolve
all four networks.

In `@slither.config.json`:
- Line 3: Remove the global "assembly" suppression from slither.config.json
(remove the detectors_to_exclude entry for "assembly") and instead add a scoped
suppression comment directly above the inline assembly in the deployZoltu
function in src/lib/LibRainDeploy.sol (use a slither-disable-next-line comment
at the assembly block around line 71) so that only that known assembly usage is
ignored and the assembly detector remains active elsewhere.

In `@test/src/lib/LibRainDeploy.t.sol`:
- Around line 265-266: Replace the generic vm.expectRevert() calls with
selector-specific expectations to ensure the test only passes for the intended
revert; specifically, before calling this.externalDeployToNetworks(...) use
vm.expectRevert(LibRainDeploy.DependencyChanged.selector) (and do the same for
the second occurrence around lines 283-284) so the test asserts the revert
raised is the LibRainDeploy.DependencyChanged selector rather than any revert.

---

Outside diff comments:
In `@src/lib/LibRainDeploy.sol`:
- Around line 114-126: The check that currently only verifies
ZOLTU_FACTORY.code.length must also enforce its codehash equals
ZOLTU_FACTORY_CODEHASH: update the block that logs and validates ZOLTU_FACTORY
to compare ZOLTU_FACTORY.codehash to ZOLTU_FACTORY_CODEHASH and revert
MissingDependency if it mismatches; do the same in the second occurrence (the
later validation block) and ensure depCodeHashes still records
dependencies[j].codehash. Also add the same codehash verification inside
deployToNetworks where the factory is re-validated so a non-canonical factory
cannot pass that phase either.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 3bf1c08e-5edb-467e-bb76-aabbea5f85de

📥 Commits

Reviewing files that changed from the base of the PR and between f972424 and c543053.

📒 Files selected for processing (13)
  • .gitignore
  • CLAUDE.md
  • audit/2026-03-05-01/pass0/process.md
  • audit/2026-03-05-01/pass1/LibRainDeploy.md
  • audit/2026-03-05-01/pass2/LibRainDeploy.md
  • audit/2026-03-05-01/pass3/LibRainDeploy.md
  • audit/2026-03-05-01/pass4/LibRainDeploy.md
  • audit/2026-03-05-01/pass5/LibRainDeploy.md
  • audit/2026-03-05-01/triage.md
  • foundry.toml
  • slither.config.json
  • src/lib/LibRainDeploy.sol
  • test/src/lib/LibRainDeploy.t.sol

thedavidmeister and others added 3 commits March 5, 2026 20:31
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Verify Zoltu factory codehash in checkDependencies and deployToNetworks
- Add flare and polygon RPC endpoints to foundry.toml
- Replace bare vm.expectRevert() with exact error encoding
- Update CLAUDE.md architecture docs and add RPC config section

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- CI: add FLARE_RPC_URL and POLYGON_RPC_URL env vars
- CLAUDE.md: replace placeholder RPC URLs with real endpoints
- Add NoNetworks guard to checkDependencies and deployToNetworks
- Split combined error checks in deployToNetworks to match
  checkDependencies pattern (MissingDependency vs DependencyChanged)
- Fix NatSpec: "proxy" -> "factory", broaden DependencyChanged desc
- Add assembly inline comments explaining memory layout
- Document slither (forkId) suppression pattern
- Add 9 new tests: NoNetworks guards, Zoltu factory verification
  paths, reverting constructor DeployFailed, skip-deployment path
- Add .coderabbitai.yaml to exclude audit artifacts from review

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy link

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

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

Inline comments:
In `@audit/2026-03-05-02/pass0/process.md`:
- Around line 3-8: Add a blank line after the heading "## Documents Reviewed" so
the markdown has an empty line between that heading and the following list
(fixing MD022); update the section around the "## Documents Reviewed" heading in
audit/2026-03-05-02/pass0/process.md to ensure there is one empty line before
the list that starts with `- CLAUDE.md`.

In `@audit/2026-03-05-02/pass1/LibRainDeploy.md`:
- Around line 10-19: The markdown tables (e.g., the Functions table listing
etchZoltuFactory, deployZoltu, supportedNetworks, checkDependencies,
deployToNetworks, deployAndBroadcast) must be surrounded by blank lines to
satisfy MD058; edit the MD file to ensure there is an empty line immediately
before the table's first line (the one starting with "| Function") and an empty
line immediately after the table's last line, and apply the same change to the
other two table blocks referenced around lines 20-29 and 30-40 so each table is
isolated by blank lines.

In `@audit/2026-03-05-02/pass3/LibRainDeploy.md`:
- Line 4: Replace the environment-specific absolute path
'/Users/thedavidmeister/Code/rain.deploy/src/lib/LibRainDeploy.sol' in the audit
artifact with a repository-relative path (e.g., src/lib/LibRainDeploy.sol) so
the audit is portable; update any occurrences in
audit/2026-03-05-02/pass3/LibRainDeploy.md to reference the repo-relative path
instead of the local absolute path.

In `@audit/2026-03-05-02/pass4/LibRainDeploy.md`:
- Line 4: Replace the absolute local filesystem path
`/Users/thedavidmeister/Code/rain.deploy/src/lib/LibRainDeploy.sol` in the
Markdown entry with a relative repository path (for example
`src/lib/LibRainDeploy.sol` or `./src/lib/LibRainDeploy.sol`) so the reference
is portable; update the string in LibRainDeploy.md (the line that currently
contains the absolute path) to the chosen relative path and ensure any
surrounding documentation links or references still resolve correctly.

In `@audit/2026-03-05-02/pass5/LibRainDeploy.md`:
- Around line 16-25: The Markdown tables lack surrounding blank lines which
triggers MD058; edit LibRainDeploy.md to ensure each table block (for example
the Functions table listing `etchZoltuFactory(Vm)`, `deployZoltu(bytes memory)`,
`supportedNetworks()`, `checkDependencies(Vm, string[], address[], mapping)`,
`deployToNetworks(Vm, string[], address, bytes, string, address, bytes32,
address[], mapping)`, `deployAndBroadcast(Vm, string[], uint256, bytes, string,
address, bytes32, address[], mapping)` and the other table sections covering
lines 26-35, 36-45, 56-77) has a blank line immediately before and after the
table markdown so it conforms to MD058.

In `@CLAUDE.md`:
- Around line 40-47: The fenced code block showing RPC environment variables
(e.g., ARBITRUM_RPC_URL, BASE_RPC_URL, FLARE_RPC_URL, POLYGON_RPC_URL) in
CLAUDE.md should include a language identifier; update the opening fence to use
```bash (or ```env) so the block is labeled for proper rendering and
accessibility and leave the environment variable lines unchanged.

In `@src/lib/LibRainDeploy.sol`:
- Around line 140-142: Update the NatSpec for the function deployToNetworks to
state that the function is idempotent and may skip deploying to a network if
code already exists at the expectedAddress; specifically edit the comment block
for deployToNetworks to explain that after verifying dependencies the function
will check expectedAddress on each network and will not re-deploy if non-empty
code is found, and that callers can rely on this skip behavior as a safe no-op
rather than an error.
- Around line 99-104: Update the NatSpec for the function checkDependencies to
state that it verifies both that each dependency has code and that the Zoltu
factory's codehash matches the expected ZOLTU_FACTORY_CODEHASH; mention that it
records each dependency's codehash into the depCodeHashes mapping and verifies
the factory codehash exactly. Refer to the function name checkDependencies, the
constant ZOLTU_FACTORY_CODEHASH, and the storage mapping depCodeHashes so
readers know which symbols are involved and what the function guarantees.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 670662cf-fe51-4b6b-9918-aa7cdce5c9f4

📥 Commits

Reviewing files that changed from the base of the PR and between 072fa3d and 4773937.

📒 Files selected for processing (13)
  • .coderabbitai.yaml
  • .github/workflows/rainix.yaml
  • CLAUDE.md
  • audit/2026-03-05-02/pass0/process.md
  • audit/2026-03-05-02/pass1/LibRainDeploy.md
  • audit/2026-03-05-02/pass2/LibRainDeploy.md
  • audit/2026-03-05-02/pass3/LibRainDeploy.md
  • audit/2026-03-05-02/pass4/LibRainDeploy.md
  • audit/2026-03-05-02/pass5/LibRainDeploy.md
  • audit/2026-03-05-02/triage.md
  • foundry.toml
  • src/lib/LibRainDeploy.sol
  • test/src/lib/LibRainDeploy.t.sol

- Expand checkDependencies NatSpec to mention codehash verification
- Document idempotent skip behavior in deployToNetworks NatSpec
- Add bash language identifier to CLAUDE.md RPC fence block
- Fix absolute paths in pass3/pass4 audit files
- Fix MD058 (blank lines around tables) in audit markdown files
- Fix MD022 (blank line after heading) in pass0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@thedavidmeister thedavidmeister merged commit 7b32ed0 into main Mar 5, 2026
1 check was pending
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