From ae6b56d8f0b85c03abfd364628076c0eff493c11 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Wed, 19 Aug 2026 04:15:55 +0000 Subject: [PATCH 1/4] Migrate rain-interpreter-interface 0.1.0 -> rainlang-interface 0.2.3 The interface repo/package was renamed (rain.interpreter.interface -> rainlang.interface); legacy rain-interpreter-interface is frozen and all new publishes go to rainlang-interface. - foundry.toml: rain-interpreter-interface 0.1.0 -> rainlang-interface 0.2.3; declare the flat transitive set rainlang-interface's src imports (@openzeppelin-contracts 5.6.1, rain-lib-hash 0.1.0, rain-math-binary 0.1.4, rain-sol-codegen 0.1.0, rain-solmem 0.1.3). - Rewrite all src import paths to rainlang-interface-0.2.3/src/... - Regenerate soldeer.lock via forge soldeer update; drop the stale rain-interpreter-interface-0.1.0 remapping. - Delete stale foundry.lock pinning the pre-soldeer git submodule lib/rain.interpreter.interface (silences the forge build warning). - Update CLAUDE.md dependencies section from submodule-era description to soldeer. No interface changes absorbed: the consumed files are byte-identical between the two packages. Refs rainlanguage/rainlang.interface#107 Co-Authored-By: Claude Fable 5 --- CLAUDE.md | 5 +-- foundry.lock | 5 --- foundry.toml | 7 +++- remappings.txt | 7 +++- soldeer.lock | 43 ++++++++++++++++++-- src/interface/IRaindexV6.sol | 2 +- src/interface/deprecated/v1/IOrderBookV1.sol | 6 +-- src/interface/deprecated/v2/IOrderBookV2.sol | 6 +-- src/interface/deprecated/v3/IOrderBookV3.sol | 4 +- src/interface/deprecated/v4/IOrderBookV4.sol | 2 +- src/interface/deprecated/v5/IOrderBookV5.sol | 2 +- 11 files changed, 63 insertions(+), 26 deletions(-) delete mode 100644 foundry.lock diff --git a/CLAUDE.md b/CLAUDE.md index 8275e03..1799acf 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,10 +52,7 @@ All amounts and ratios are Rain floating point (`Float` from `rain.math.float`). ### Dependencies -Single git submodule: `lib/rain.interpreter.interface` (interpreter interfaces, math libraries, utilities). Remapping in `foundry.toml`: -``` -rain.math.float/=lib/rain.interpreter.interface/lib/rain.math.float/src/ -``` +Soldeer packages, declared in `[dependencies]` in `foundry.toml` and locked in `soldeer.lock` (run `forge soldeer update` after changing them). Import paths carry the package version (e.g. `rainlang-interface-0.2.3/src/...`). Direct deps: `rainlang-interface` (Rainlang interpreter interfaces and caller libs) and `rain-math-float` (Float). Soldeer resolution is flat, so `[dependencies]` also declares everything `rainlang-interface`'s own src imports (`@openzeppelin-contracts`, `rain-lib-hash`, `rain-math-binary`, `rain-sol-codegen`, `rain-solmem`). ## Conventions diff --git a/foundry.lock b/foundry.lock deleted file mode 100644 index ad21b77..0000000 --- a/foundry.lock +++ /dev/null @@ -1,5 +0,0 @@ -{ - "lib/rain.interpreter.interface": { - "rev": "58386557c270301d4eeaa0b101f2326b0cf4db68" - } -} \ No newline at end of file diff --git a/foundry.toml b/foundry.toml index 73583d7..2809e3a 100644 --- a/foundry.toml +++ b/foundry.toml @@ -29,8 +29,13 @@ evm_version = "cancun" [dependencies] forge-std = "1.16.1" -rain-interpreter-interface = "0.1.0" +rainlang-interface = "0.2.3" rain-math-float = "0.1.1" +"@openzeppelin-contracts" = "5.6.1" +rain-lib-hash = "0.1.0" +rain-math-binary = "0.1.4" +rain-sol-codegen = "0.1.0" +rain-solmem = "0.1.3" [soldeer] recursive_deps = false diff --git a/remappings.txt b/remappings.txt index 047cd4a..746242f 100644 --- a/remappings.txt +++ b/remappings.txt @@ -1,3 +1,8 @@ +@openzeppelin-contracts-5.6.1/=dependencies/@openzeppelin-contracts-5.6.1/ forge-std-1.16.1/=dependencies/forge-std-1.16.1/ -rain-interpreter-interface-0.1.0/=dependencies/rain-interpreter-interface-0.1.0/ +rain-lib-hash-0.1.0/=dependencies/rain-lib-hash-0.1.0/ +rain-math-binary-0.1.4/=dependencies/rain-math-binary-0.1.4/ rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/ +rain-sol-codegen-0.1.0/=dependencies/rain-sol-codegen-0.1.0/ +rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/ +rainlang-interface-0.2.3/=dependencies/rainlang-interface-0.2.3/ diff --git a/soldeer.lock b/soldeer.lock index 5caf483..c752b52 100644 --- a/soldeer.lock +++ b/soldeer.lock @@ -1,3 +1,10 @@ +[[dependencies]] +name = "@openzeppelin-contracts" +version = "5.6.1" +url = "https://soldeer-revisions.s3.amazonaws.com/@openzeppelin-contracts/5_6_1_15-03-2026_09:19:50_contracts.zip" +checksum = "a3b6bc661be858c7c27f60a1708cbebe8c71034b4cc1e9fe270d0a05b069352f" +integrity = "bce03af7ada1eee21a7fff393f238bcd7cd75a022a4db55ffb6b0dbb32433d35" + [[dependencies]] name = "forge-std" version = "1.16.1" @@ -6,11 +13,18 @@ checksum = "839b61832925c7152c7b6dffbfa4998d9e606211179bd8f604733124e8a7cb57" integrity = "60e55d10150354ca4a1e2985c5456c834b92b82ef85ab0e1d92a7786cddbd219" [[dependencies]] -name = "rain-interpreter-interface" +name = "rain-lib-hash" version = "0.1.0" -url = "https://soldeer-revisions.s3.amazonaws.com/rain-interpreter-interface/0_1_0_12-05-2026_18:43:02_rain.interpreter.zip" -checksum = "887c4d5f1a87713c49f015b3fcdb295defbb495b126d15f9850c0ce72ef79639" -integrity = "c1b89f8a7ad02507ceb051b6c0f2750f6abe1ba99ffdfe1c9ac93905db90e75d" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-lib-hash/0_1_0_12-05-2026_16:24:56_rain.lib.zip" +checksum = "648f3e38b297dbd3ecb32b82c8b24c322f484e1734eb50fd393bc547c72b59b0" +integrity = "91f5f679a0a27f096fdbc1e41195dd9f42cacfab15735efeb1101cc1b9215b47" + +[[dependencies]] +name = "rain-math-binary" +version = "0.1.4" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-binary/0_1_4_17-08-2026_05:22:01_rain.math.zip" +checksum = "1787eb0bc883c4922deb5e547ecaf0bd0f9a31e99c51f3b11744c3324eb592f6" +integrity = "857d22060d058ec173e88448c2d44f0cb884b2381669d0dbe1d3bebb168715ea" [[dependencies]] name = "rain-math-float" @@ -18,3 +32,24 @@ version = "0.1.1" url = "https://soldeer-revisions.s3.amazonaws.com/rain-math-float/0_1_1_13-05-2026_13:48:34_rain.math.zip" checksum = "322956f272ae3073ee02b0e7301b8834f08f2de62bcd6c309c44e946d7cd7056" integrity = "dccdd4406a37db6af690872b805084a7dbe5211c57961a61ef083a7912ddbdc9" + +[[dependencies]] +name = "rain-sol-codegen" +version = "0.1.0" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-sol-codegen/0_1_0_09-05-2026_20:30:25_rain.sol.zip" +checksum = "6b5abd394c5db86ac64214262b7a5115158f480b2fbd74442672dfe52bb67310" +integrity = "e22748ce2ba7eca3ce71e23b2271d1c0f370b989507e784b0a4850a7a9e52157" + +[[dependencies]] +name = "rain-solmem" +version = "0.1.3" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-solmem/0_1_3_09-05-2026_19:49:33_rain.zip" +checksum = "1d405bb81f7c9e56d1717de0d60da918d2fc2fa4db083efd2abe9906378d019f" +integrity = "e879d2743f9d884f647b9dd489889a83f2cea5f76eb69409a113e1baa69d3643" + +[[dependencies]] +name = "rainlang-interface" +version = "0.2.3" +url = "https://soldeer-revisions.s3.amazonaws.com/rainlang-interface/0_2_3_19-08-2026_03:51:33_rainlang.zip" +checksum = "b8aace080832c17e29aaff400db11607314678035327598eaeca0a3496ac6933" +integrity = "696f8521319c40532c169a44b5fe677b909ea392a6f82398239a4c2a8630c4ad" diff --git a/src/interface/IRaindexV6.sol b/src/interface/IRaindexV6.sol index c49228d..90e29ee 100644 --- a/src/interface/IRaindexV6.sol +++ b/src/interface/IRaindexV6.sol @@ -15,7 +15,7 @@ import { //forge-lint: disable-next-line(unused-import) IInterpreterStoreV3 -} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol"; +} from "rainlang-interface-0.2.3/src/interface/IInterpreterCallerV4.sol"; /// Import unmodified structures from older versions of the Raindex interface. import { diff --git a/src/interface/deprecated/v1/IOrderBookV1.sol b/src/interface/deprecated/v1/IOrderBookV1.sol index 823aa70..50dfc1c 100644 --- a/src/interface/deprecated/v1/IOrderBookV1.sol +++ b/src/interface/deprecated/v1/IOrderBookV1.sol @@ -4,16 +4,16 @@ pragma solidity ^0.8.18; import {IERC3156FlashLender} from "../../ierc3156/IERC3156FlashLender.sol"; //forge-lint: disable-next-line(unused-import) -import {LibEvaluable} from "rain-interpreter-interface-0.1.0/src/lib/caller/LibEvaluable.sol"; +import {LibEvaluable} from "rainlang-interface-0.2.3/src/lib/caller/LibEvaluable.sol"; import { EvaluableConfig, Evaluable, SignedContext, IInterpreterCallerV1 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV1.sol"; import { IExpressionDeployerV3 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// Configuration for a deposit. All deposits are processed by and for /// `msg.sender` so the vaults are unambiguous here. diff --git a/src/interface/deprecated/v2/IOrderBookV2.sol b/src/interface/deprecated/v2/IOrderBookV2.sol index e3da5c7..6621f69 100644 --- a/src/interface/deprecated/v2/IOrderBookV2.sol +++ b/src/interface/deprecated/v2/IOrderBookV2.sol @@ -6,14 +6,14 @@ import {IERC3156FlashLender} from "../../ierc3156/IERC3156FlashLender.sol"; import { EvaluableConfig, Evaluable -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV1.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV1.sol"; import { SignedContextV1, IInterpreterCallerV2 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; import { IExpressionDeployerV2 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV2.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV2.sol"; /// Configuration for a deposit. All deposits are processed by and for /// `msg.sender` so the vaults are unambiguous here. diff --git a/src/interface/deprecated/v3/IOrderBookV3.sol b/src/interface/deprecated/v3/IOrderBookV3.sol index 999da67..e440936 100644 --- a/src/interface/deprecated/v3/IOrderBookV3.sol +++ b/src/interface/deprecated/v3/IOrderBookV3.sol @@ -8,10 +8,10 @@ import { EvaluableConfigV3, IInterpreterCallerV2, SignedContextV1 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; import { IExpressionDeployerV3 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// Import unmodified structures from older versions of `IOrderBook`. import {IO, ClearConfig, ClearStateChange} from "../v2/IOrderBookV2.sol"; diff --git a/src/interface/deprecated/v4/IOrderBookV4.sol b/src/interface/deprecated/v4/IOrderBookV4.sol index c12f2cc..76f7512 100644 --- a/src/interface/deprecated/v4/IOrderBookV4.sol +++ b/src/interface/deprecated/v4/IOrderBookV4.sol @@ -13,7 +13,7 @@ import { //forge-lint: disable-next-line(unused-import) IInterpreterStoreV2 -} from "rain-interpreter-interface-0.1.0/src/interface/deprecated/v2/IInterpreterCallerV3.sol"; +} from "rainlang-interface-0.2.3/src/interface/deprecated/v2/IInterpreterCallerV3.sol"; /// Import unmodified structures from older versions of `IOrderBook`. import {ClearStateChange, ClearConfig, IO} from "../v3/IOrderBookV3.sol"; diff --git a/src/interface/deprecated/v5/IOrderBookV5.sol b/src/interface/deprecated/v5/IOrderBookV5.sol index 699884a..65a9483 100644 --- a/src/interface/deprecated/v5/IOrderBookV5.sol +++ b/src/interface/deprecated/v5/IOrderBookV5.sol @@ -13,7 +13,7 @@ import { //forge-lint: disable-next-line(unused-import) IInterpreterStoreV3 -} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterCallerV4.sol"; +} from "rainlang-interface-0.2.3/src/interface/IInterpreterCallerV4.sol"; /// Import unmodified structures from older versions of `IOrderBook`. //forge-lint: disable-start(unused-import) From c9efbb5b4e9046862951c86dcfc0e2a4f244b890 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Wed, 19 Aug 2026 04:17:45 +0000 Subject: [PATCH 2/4] forge fmt: collapse imports that fit the line width after rename rainlang-interface-0.2.3 is shorter than rain-interpreter-interface-0.1.0, so three previously wrapped single-symbol import blocks now fit on one line. Refs rainlanguage/rainlang.interface#107 Co-Authored-By: Claude Fable 5 --- src/interface/deprecated/v1/IOrderBookV1.sol | 4 +--- src/interface/deprecated/v2/IOrderBookV2.sol | 4 +--- src/interface/deprecated/v3/IOrderBookV3.sol | 4 +--- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/interface/deprecated/v1/IOrderBookV1.sol b/src/interface/deprecated/v1/IOrderBookV1.sol index 50dfc1c..fd73895 100644 --- a/src/interface/deprecated/v1/IOrderBookV1.sol +++ b/src/interface/deprecated/v1/IOrderBookV1.sol @@ -11,9 +11,7 @@ import { SignedContext, IInterpreterCallerV1 } from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV1.sol"; -import { - IExpressionDeployerV3 -} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// Configuration for a deposit. All deposits are processed by and for /// `msg.sender` so the vaults are unambiguous here. diff --git a/src/interface/deprecated/v2/IOrderBookV2.sol b/src/interface/deprecated/v2/IOrderBookV2.sol index 6621f69..aec77ce 100644 --- a/src/interface/deprecated/v2/IOrderBookV2.sol +++ b/src/interface/deprecated/v2/IOrderBookV2.sol @@ -11,9 +11,7 @@ import { SignedContextV1, IInterpreterCallerV2 } from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; -import { - IExpressionDeployerV2 -} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV2.sol"; +import {IExpressionDeployerV2} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV2.sol"; /// Configuration for a deposit. All deposits are processed by and for /// `msg.sender` so the vaults are unambiguous here. diff --git a/src/interface/deprecated/v3/IOrderBookV3.sol b/src/interface/deprecated/v3/IOrderBookV3.sol index e440936..9535632 100644 --- a/src/interface/deprecated/v3/IOrderBookV3.sol +++ b/src/interface/deprecated/v3/IOrderBookV3.sol @@ -9,9 +9,7 @@ import { IInterpreterCallerV2, SignedContextV1 } from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IInterpreterCallerV2.sol"; -import { - IExpressionDeployerV3 -} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; +import {IExpressionDeployerV3} from "rainlang-interface-0.2.3/src/interface/deprecated/v1/IExpressionDeployerV3.sol"; /// Import unmodified structures from older versions of `IOrderBook`. import {IO, ClearConfig, ClearStateChange} from "../v2/IOrderBookV2.sol"; From 221e60ff46095d188bd20fa2ee2a15532bdb2282 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Wed, 19 Aug 2026 06:30:25 +0000 Subject: [PATCH 3/4] Cut CLAUDE.md under the agent-context cap The static gate fails at 4162 bytes against the 4096 cap, 66 over. The multi-line forge-lint suppression bullet is standard tool syntax, not repo knowledge; cutting it (and the denofmt reflow) lands under the cap. Co-Authored-By: Claude Opus 5 (1M context) --- CLAUDE.md | 72 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 1799acf..3f154b1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,12 +1,17 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. +This file provides guidance to Claude Code (claude.ai/code) when working with +code in this repository. ## Project Overview -Solidity interface library for Raindex (Rain Protocol's onchain order book). Defines interfaces and types for an order book where orders are strategies expressed as Rainlang interpreter bytecode. Part of the Rain Protocol ecosystem. +Solidity interface library for Raindex (Rain Protocol's onchain order book). +Defines interfaces and types for an order book where orders are strategies +expressed as Rainlang interpreter bytecode. Part of the Rain Protocol ecosystem. + +License: DecentraLicense 1.0 (DCL-1.0). REUSE 3.2 compliant — all files need +SPDX headers: -License: DecentraLicense 1.0 (DCL-1.0). REUSE 3.2 compliant — all files need SPDX headers: ```solidity // SPDX-License-Identifier: LicenseRef-DCL-1.0 // SPDX-FileCopyrightText: Copyright (c) 2020 thedavidmeister @@ -14,7 +19,8 @@ License: DecentraLicense 1.0 (DCL-1.0). REUSE 3.2 compliant — all files need S ## Build & Development -Requires the Nix package manager. **Only use the nix version of Foundry**, not a system-installed one. +Requires the Nix package manager. **Only use the nix version of Foundry**, not a +system-installed one. ```bash nix develop # Enter dev shell @@ -24,45 +30,71 @@ rainix-sol-static # Static analysis (Slither) rainix-sol-legal # License/REUSE compliance check ``` -Compiler: Solidity 0.8.25, EVM target: cancun, optimizer enabled (1M runs). Fuzz tests run 2048 iterations. +Compiler: Solidity 0.8.25, EVM target: cancun, optimizer enabled (1M runs). Fuzz +tests run 2048 iterations. ## Architecture ### Interfaces (`src/interface/`) -- **IRaindexV6** — Current stable interface. Vault-based order book with deposit/withdraw, add/remove orders, take orders (market buy), and clear (match two orders with bounty). IERC3156 flash loan compliant. Supports vaultless orders (vault ID `0` means tokens move directly from wallet) and input/output-based take order limits via `IOIsInput` flag. -- **IRaindexV6OrderTaker / IRaindexV6ArbOrderTaker** — Callback interfaces for takers receiving tokens during `takeOrders`. -- **ierc3156/** — Flash loan interfaces (IERC3156FlashLender, IERC3156FlashBorrower). -- **deprecated/** (v1-v5) — Old interface versions. Do not modify unless undeprecating. +- **IRaindexV6** — Current stable interface. Vault-based order book with + deposit/withdraw, add/remove orders, take orders (market buy), and clear + (match two orders with bounty). IERC3156 flash loan compliant. Supports + vaultless orders (vault ID `0` means tokens move directly from wallet) and + input/output-based take order limits via `IOIsInput` flag. +- **IRaindexV6OrderTaker / IRaindexV6ArbOrderTaker** — Callback interfaces for + takers receiving tokens during `takeOrders`. +- **ierc3156/** — Flash loan interfaces (IERC3156FlashLender, + IERC3156FlashBorrower). +- **deprecated/** (v1-v5) — Old interface versions. Do not modify unless + undeprecating. ### Interface Lifecycle -Stable interfaces live directly in `src/interface/`. New unstable interfaces go in `src/interface/unstable/` until stabilised. When stabilising, move from `unstable/` to `src/interface/` and move the previous stable version to `deprecated/v/`. +Stable interfaces live directly in `src/interface/`. New unstable interfaces go +in `src/interface/unstable/` until stabilised. When stabilising, move from +`unstable/` to `src/interface/` and move the previous stable version to +`deprecated/v/`. ### Key Types -All amounts and ratios are Rain floating point (`Float` from `rain.math.float`). Converted to absolute token values via `decimals()` only when tokens actually move. +All amounts and ratios are Rain floating point (`Float` from `rain.math.float`). +Converted to absolute token values via `decimals()` only when tokens actually +move. -- `OrderV4` — Deployed order: owner, evaluable (interpreter + store + bytecode), valid inputs/outputs, nonce +- `OrderV4` — Deployed order: owner, evaluable (interpreter + store + bytecode), + valid inputs/outputs, nonce - `OrderConfigV4` — Config for adding an order, includes meta and secret - `IOV2` — Input/output config: token address + vault ID - `TaskV2` — Evaluable + signed context, for post-operation callbacks - `TakeOrdersConfigV4` / `TakeOrdersConfigV5` — Config for batch taking orders -- `ClearConfigV2` / `ClearStateChangeV2` — Config and result for clearing two matched orders +- `ClearConfigV2` / `ClearStateChangeV2` — Config and result for clearing two + matched orders ### Dependencies -Soldeer packages, declared in `[dependencies]` in `foundry.toml` and locked in `soldeer.lock` (run `forge soldeer update` after changing them). Import paths carry the package version (e.g. `rainlang-interface-0.2.3/src/...`). Direct deps: `rainlang-interface` (Rainlang interpreter interfaces and caller libs) and `rain-math-float` (Float). Soldeer resolution is flat, so `[dependencies]` also declares everything `rainlang-interface`'s own src imports (`@openzeppelin-contracts`, `rain-lib-hash`, `rain-math-binary`, `rain-sol-codegen`, `rain-solmem`). +Soldeer packages, declared in `[dependencies]` in `foundry.toml` and locked in +`soldeer.lock` (run `forge soldeer update` after changing them). Import paths +carry the package version (e.g. `rainlang-interface-0.2.3/src/...`). Direct +deps: `rainlang-interface` (Rainlang interpreter interfaces and caller libs) and +`rain-math-float` (Float). Soldeer resolution is flat, so `[dependencies]` also +declares everything `rainlang-interface`'s own src imports +(`@openzeppelin-contracts`, `rain-lib-hash`, `rain-math-binary`, +`rain-sol-codegen`, `rain-solmem`). ## Conventions -- All reverts use custom errors — no `revert("string")` or `require()` with string messages. -- Interfaces use `pragma solidity ^0.8.18` (note: differs from interpreter interface which uses `^0.8.25`). -- Versioned naming: interfaces (`IRaindexV6`), structs (`OrderV4`, `ClearConfigV2`), events (`AddOrderV3`), functions (`deposit4`, `withdraw4`). -- Use `//forge-lint: disable-next-line(...)` comments for lint suppressions: `unused-import`, `mixed-case-variable`, `pascal-case-struct`. -- Use `//forge-lint: disable-start(...)`/`disable-end(...)` for multi-line suppressions. +- All reverts use custom errors — no `revert("string")` or `require()` with + string messages. +- Interfaces use `pragma solidity ^0.8.18` (note: differs from interpreter + interface which uses `^0.8.25`). +- Versioned naming: interfaces (`IRaindexV6`), structs (`OrderV4`, + `ClearConfigV2`), events (`AddOrderV3`), functions (`deposit4`, `withdraw4`). +- Use `//forge-lint: disable-next-line(...)` comments for lint suppressions: + `unused-import`, `mixed-case-variable`, `pascal-case-struct`. - Branch naming: `YYYY-MM-DD-description`. ## Slither Config -Excluded detectors: `assembly-usage`, `solc-version`, `unused-imports`, `pragma`. Filtered paths: `forge-std`, `openzeppelin`, `rain.math.float`. +Excluded detectors: `assembly-usage`, `solc-version`, `unused-imports`, +`pragma`. Filtered paths: `forge-std`, `openzeppelin`, `rain.math.float`. From 1f293e7922fa557187e79e66e790deec0120ea64 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Wed, 19 Aug 2026 06:30:49 +0000 Subject: [PATCH 4/4] Cut the boilerplate line; denofmt reflow left the file 4 over Co-Authored-By: Claude Opus 5 (1M context) --- CLAUDE.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 3f154b1..6c7184e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,8 +1,5 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with -code in this repository. - ## Project Overview Solidity interface library for Raindex (Rain Protocol's onchain order book).