Skip to content

Adopt IRaindexV7 and SignedContextV2 - #2929

Merged
thedavidmeister merged 20 commits into
mainfrom
2026-10-26-raindex-v7
Oct 26, 2026
Merged

thedavidmeister merged 20 commits into
mainfrom
2026-10-26-raindex-v7

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

V7 adoption: RaindexV6 implements IRaindexV7 with EIP-712 SignedContextV2. clear4 keeps the signed-context routing that clear3 has on main (alice evaluated with bobSignedContext, bob with aliceSignedContext). The routing fix for #2850 is #2920, which stacks on this PR.

Changes

  • Dependencies: raindex-interface 0.1.10 and rainlang-interface 0.2.14 from the Soldeer registry. rainlang 0.2.26 still imports rainlang-interface-0.2.13/, so 0.2.13 stays installed as rainlang-interface-rainlang; only rainlang's own files use that prefix.
  • Entrypoints, events and structs follow IRaindexV7: entask3, deposit5, withdraw5, quote3, addOrder5, removeOrder4, takeOrders5, clear4 (clear3 selector removed), TakeOrderV4, TaskV3, TakeOrderConfigV5, TakeOrdersConfigV6, QuoteV3. Arbs: arb5 -> arb6, FlashBorrower arb4 -> arb5. OrderCalculateReverted is declared on IRaindexV7.
  • Every signed context is SignedContextV2; LibContext.build -> buildV2 in order eval and LibRaindex.doPost.
  • Context layout: CONTEXT_SIGNED_CONTEXT_DOMAINS_COLUMN = SIGNERS + 1, START = DOMAINS + 1, CONTEXT_COLUMNS_EXTENDED = START + 1. doPost still pads to CALLING_CONTEXT_COLUMNS.
  • Sub parser word signer-domain<i>() reads row i of the domains column, mirroring signer.
  • Subgraph indexes TakeOrderV4; script/build.sh regenerates subgraph codegen and the bindings/test-fixture ABIs.
  • Rust/JS move to the V7 names (JS getTakeOrders3Calldata -> getTakeOrders5Calldata); tsify SignedContextV2 gains domainSeparator. The signed context oracle's OracleResponse requires domainSeparator and rejects a response without it.
  • Regenerated with rainix sol-shell 2aea60e5 (build-meta, Build.sol to fixpoint, forge build, script/build.sh, forge fmt).

Evidence

Head 579d27bce3f4479033094c3ba52d45b16aa87be5, locally at rainix 2aea60e5:

  • Regen (build-meta, Build.sol x2, forge build, script/build.sh, forge fmt); a further Build.sol run changes nothing.
  • forge test: 756 passed, 3 failed, 759 total. The 3 are FLARE_RPC_URL unset (testSuitesLiveOnEverySupportedNetwork, testSupportedNetworkChainIdsAreBound, testIsStartBlockFlare).
  • cargo test --workspace: 1927 passed, 0 failed.
  • subgraph-test (matchstick): 46/46.
  • pre-commit run --all-files in sol-shell and rust-shell: pass, no changes.

Downstream migration

  • Offchain signers sign EIP-712 typed data for SignedContextV2(address signer,bytes32[] context) and send domainSeparator. Oracle servers add domainSeparator to every response.
  • Expressions: signed-context data columns shift right by one; pin each signer's domain with signer-domain<i>().
  • Callers move to the renamed entrypoints, events and structs.
  • Webapp: merging redeploys the production webapp (vercel-prod.yaml triggers on crates/**, packages/**) while settings point at the V6 raindex 0x37FC0EFec37D19f8A221aa4F8F7600C9ba2AcD20, so V7 must be deployed and settings repointed before merge.
  • Subgraph (manual deploy): subgraph/networks.json must be repointed at the V7 raindex too.

QA

  • Discriminating tests: RaindexV6.clear.signedContextV2.t.sol gives both orders the same EIP-712 signed context and each expression asserts signer, domain and content, so it holds under either routing; testClear3SelectorIsRemoved pins the dispatch revert. RaindexV6SubParser.signerDomains.t.sol and testRouteSignerDomainsRowFromOperand cover signer-domain. *TaskSignerWordsReadRealSigners (entask/addOrder/removeOrder/deposit/withdraw/finalizeArb) sign under two domains and read the domain column in post tasks. main's clear3 tests are ported to clear4 as they were. None of these exist on main (V6 has no domains column or clear4).
  • Mutations applied: recorded on Route each clear4 signed context to its own order #2920 (M01-M13, M05b, all killed: domains/start/extended column offsets, signer-domain column/row, order-eval and doPost domains zeroed/dropped, doPost padding). M09/M10 (order-eval domains zeroed/dropped) were killed only by Route each clear4 signed context to its own order #2920's routing tests there; re-run on this head (targeted RaindexV6.clear.*): both killed by testClearEvalSeesSignedContextV2.
  • Oracle: signatures built with OZ MessageHashUtils.toTypedDataHash(domainSeparator, LibContext.hashStruct(...)) and vm.sign; layout from IInterpreterCallerV5 / LibContext.buildV2.
  • Category check: This PR is the V7 adoption (renames, SignedContextV2 on every entrypoint, domains column + word, Rust/JS/subgraph/oracle follow-through). The clear4 routing change is Route each clear4 signed context to its own order #2920.

🤖 Generated with Claude Code

thedavidmeister and others added 14 commits October 25, 2026 20:46
…s own eval

Replaces clear3 with clear4, which evaluates alice's order with
aliceSignedContext and bob's with bobSignedContext, matching quote2 and
takeOrders4. clear3 is removed so callers carrying V6 assumptions revert at
the missing selector. All consumers move from IRaindexV6 to IRaindexV7.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…134 merge

rainlang 0.2.19 still imports rainlang-interface-0.2.13, so that release is
kept alongside under its own Soldeer name and remapped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ector

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ead d7e43ba; derive CONTEXT_COLUMNS_EXTENDED from the signed context start column

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t_fixtures ABIs for IRaindexV7

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s carry the EIP-712 domainSeparator

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Carries #2923's calculate-revert skip into takeOrders5 (quote3/clear4 pass
skipFailure=false), takes OrderCalculateReverted from IRaindexV7 and pins
raindex-interface to raindex.interface#79 head 7107727.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
clear4 evaluates alice with bobSignedContext and bob with aliceSignedContext,
as clear3 did. The routing tests are replaced by a routing-agnostic
SignedContextV2 test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thedavidmeister thedavidmeister self-assigned this Oct 26, 2026
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 253 files, which is 153 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Check out review usage here.

Run configuration
Commits

Reviewing files that changed from the base of the PR and between 823ebfe and c3d2923.

Files ignored due to path filters: 8
  • soldeer.lock is excluded by !**/*.lock
  • src/generated/RaindexV6SubParserPointers.sol is excluded by !**/generated/**
  • src/generated/candidate/GenericPoolRaindexV6ArbOrderTaker.sol is excluded by !**/generated/**
  • src/generated/candidate/GenericPoolRaindexV6FlashBorrower.sol is excluded by !**/generated/**
  • src/generated/candidate/RaindexV6.sol is excluded by !**/generated/**
  • src/generated/candidate/RaindexV6SubParser.sol is excluded by !**/generated/**
  • src/generated/candidate/RouteProcessorRaindexV6ArbOrderTaker.sol is excluded by !**/generated/**
  • subgraph/generated/Raindex/Raindex.ts is excluded by !**/generated/**
Files selected for processing: 253
  • crates/bindings/ARCHITECTURE.md
  • crates/bindings/abis/IRaindexV7.json
  • crates/bindings/abis/RaindexV6.json
  • crates/bindings/src/js_api.rs
  • crates/bindings/src/lib.rs
  • crates/common/ARCHITECTURE.md
  • crates/common/src/add_order.rs
  • crates/common/src/deposit.rs
  • crates/common/src/local_db/address_collectors.rs
  • crates/common/src/local_db/decode.rs
  • crates/common/src/local_db/fetch.rs
  • crates/common/src/local_db/insert.rs
  • crates/common/src/local_db/pipeline/adapters/apply.rs
  • crates/common/src/local_db/pipeline/engine.rs
  • crates/common/src/raindex_client/markets/mod.rs
  • crates/common/src/raindex_client/order_quotes.rs
  • crates/common/src/raindex_client/orders.rs
  • crates/common/src/raindex_client/remove_orders.rs
  • crates/common/src/raindex_client/take_orders/e2e_tests.rs
  • crates/common/src/raindex_client/take_orders/mod.rs
  • crates/common/src/raindex_client/take_orders/result.rs
  • crates/common/src/raindex_client/take_orders/single.rs
  • crates/common/src/raindex_client/take_orders/single_tests.rs
  • crates/common/src/raindex_client/vaults.rs
  • crates/common/src/raindex_client/vaults_list.rs
  • crates/common/src/raindex_order_builder/order_operations.rs
  • crates/common/src/remove_order.rs
  • crates/common/src/replays.rs
  • crates/common/src/take_orders/candidates.rs
  • crates/common/src/take_orders/config.rs
  • crates/common/src/take_orders/preflight.rs
  • crates/common/src/test_helpers.rs
  • crates/common/src/types/orders_list_flattened.rs
  • crates/common/src/withdraw.rs
  • crates/integration_tests/src/lib.rs
  • crates/js_api/ARCHITECTURE.md
  • crates/js_api/src/bindings/mod.rs
  • crates/quote/ARCHITECTURE.md
  • crates/quote/src/cli/input.rs
  • crates/quote/src/cli/mod.rs
  • crates/quote/src/injector.rs
  • crates/quote/src/oracle.rs
  • crates/quote/src/order_quotes.rs
  • crates/quote/src/quote.rs
  • crates/quote/src/quote_debug.rs
  • crates/quote/src/rpc.rs
  • crates/subgraph/src/types/order_detail_traits.rs
  • crates/test_fixtures/abis/RaindexV6.json
  • crates/test_fixtures/abis/RaindexV6SubParser.json
  • crates/test_fixtures/src/lib.rs
  • foundry.toml
  • meta/RaindexV6SubParser.rain.meta
  • meta/RaindexV6SubParserAuthoringMeta.rain.meta
  • packages/raindex/ARCHITECTURE.md
  • packages/raindex/README.md
  • packages/raindex/test/js_api/builder.test.ts
  • packages/raindex/test/js_api/raindexClient.test.ts
  • remappings.txt
  • script/Build.sol
  • script/build.sh
  • src/abstract/RaindexV6ArbCommon.sol
  • src/abstract/RaindexV6ArbOrderTaker.sol
  • src/abstract/RaindexV6ArbTaskGated.sol
  • src/abstract/RaindexV6FlashBorrower.sol
  • src/abstract/RaindexV6FlashLender.sol
  • src/concrete/arb/GenericPoolRaindexV6FlashBorrower.sol
  • src/concrete/parser/RaindexV6SubParser.sol
  • src/concrete/raindex/RaindexV6.sol
  • src/constant/OrderEntrypoints.sol
  • src/lib/LibOrder.sol
  • src/lib/LibRaindex.sol
  • src/lib/LibRaindexArb.sol
  • src/lib/LibRaindexSubParser.sol
  • src/struct/OrderIOCalculationV4.sol
  • src/struct/TakeOrdersIO.sol
  • subgraph/abis/Raindex.json
  • subgraph/src/handlers.ts
  • subgraph/src/takeorder.ts
  • subgraph/subgraph.yaml
  • subgraph/tests/event-mocks.test.ts
  • test/abstract/RaindexV6ArbOrderTaker.badRaindex.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.beforeArbOrder.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.context.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.finalizeDecimals.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.finalizeTaskArg.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.ierc165.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.ioIndexSelection.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.noOrders.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Base.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol
  • test/abstract/RaindexV6ArbOrderTaker.reentrancy.t.sol
  • test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassMatch.t.sol
  • test/abstract/RaindexV6ArbTaskGated.checkTaskHashPassZero.t.sol
  • test/abstract/RaindexV6ArbTaskGated.checkTaskHashWrongTask.t.sol
  • test/abstract/RaindexV6ArbTaskGated.construct.t.sol
  • test/abstract/RaindexV6ArbTaskGated.iTaskHashBoundary.t.sol
  • test/abstract/RaindexV6ArbTaskGated.iTaskHashNonzero.t.sol
  • test/abstract/RaindexV6ArbTaskGated.iTaskHashZero.t.sol
  • test/abstract/RaindexV6FlashBorrower.badRaindex.t.sol
  • test/abstract/RaindexV6FlashBorrower.beforeArbOrder.t.sol
  • test/abstract/RaindexV6FlashBorrower.finalizeDecimals.t.sol
  • test/abstract/RaindexV6FlashBorrower.flashLoanAmountLossless.t.sol
  • test/abstract/RaindexV6FlashBorrower.flashLoanAmountValue.t.sol
  • test/abstract/RaindexV6FlashBorrower.flashLoanFailed.t.sol
  • test/abstract/RaindexV6FlashBorrower.inputIoIndexSelection.t.sol
  • test/abstract/RaindexV6FlashBorrower.ioIsInput.t.sol
  • test/abstract/RaindexV6FlashBorrower.mixedDecimals.t.sol
  • test/abstract/RaindexV6FlashBorrower.noOrders.t.sol
  • test/abstract/RaindexV6FlashBorrower.orders0Selection.t.sol
  • test/abstract/RaindexV6FlashBorrower.payable.t.sol
  • test/abstract/RaindexV6FlashBorrower.realTokenTransfers.t.sol
  • test/abstract/RaindexV6FlashBorrower.reentrancy.t.sol
  • test/abstract/RaindexV6FlashLender.griefRecipient.t.sol
  • test/abstract/RaindexV6FlashLender.mockSuccess.t.sol
  • test/abstract/RaindexV6FlashLender.reentrant.t.sol
  • test/abstract/RaindexV6FlashLender.transfers.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.approvalRevoked.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.exchangeRevert.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.raindexApprovalRevoked.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.reentrantCallback.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.sender.t.sol
  • test/concrete/arb/GenericPoolRaindexV6ArbOrderTaker.zeroAddress.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.approvalRevoked.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.ethForwarded.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeRevert.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.exchangeTokenSelection.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.raindexApprovalRevoked.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.sender.t.sol
  • test/concrete/arb/GenericPoolRaindexV6FlashBorrower.zeroAddress.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.lossyRounding.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.noEthForward.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.nonStandardDecimals.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Direct.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.onTakeOrders2Fuzz.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.sender.t.sol
  • test/concrete/arb/RouteProcessorRaindexV6ArbOrderTaker.tofuDecimals.t.sol
  • test/concrete/parser/RaindexV6SubParser.ierc165.t.sol
  • test/concrete/parser/RaindexV6SubParser.operandHandlersWiring.t.sol
  • test/concrete/parser/RaindexV6SubParser.pointers.t.sol
  • test/concrete/parser/RaindexV6SubParser.routing.t.sol
  • test/concrete/parser/RaindexV6SubParser.routingTokenDecimalsAndMasks.t.sol
  • test/concrete/parser/RaindexV6SubParser.signerDomains.t.sol
  • test/concrete/parser/RaindexV6SubParser.wordParsersWiring.t.sol
  • test/concrete/raindex/RaindexV6.addOrder.entask.t.sol
  • test/concrete/raindex/RaindexV6.addOrder.mock.t.sol
  • test/concrete/raindex/RaindexV6.addOrder.nonce.t.sol
  • test/concrete/raindex/RaindexV6.addOrder.owner.t.sol
  • test/concrete/raindex/RaindexV6.addOrder.t.sol
  • test/concrete/raindex/RaindexV6.calculateOrderIOHarness.t.sol
  • test/concrete/raindex/RaindexV6.clear.badStack.t.sol
  • test/concrete/raindex/RaindexV6.clear.calculateRevert.t.sol
  • test/concrete/raindex/RaindexV6.clear.calculateStateChange.t.sol
  • test/concrete/raindex/RaindexV6.clear.context.t.sol
  • test/concrete/raindex/RaindexV6.clear.deadOrder.t.sol
  • test/concrete/raindex/RaindexV6.clear.freshDriver.t.sol
  • test/concrete/raindex/RaindexV6.clear.handleIO.revert.t.sol
  • test/concrete/raindex/RaindexV6.clear.mock.t.sol
  • test/concrete/raindex/RaindexV6.clear.sameOwner.t.sol
  • test/concrete/raindex/RaindexV6.clear.sameToken.t.sol
  • test/concrete/raindex/RaindexV6.clear.signedContextV2.t.sol
  • test/concrete/raindex/RaindexV6.clear.zeroAmount.t.sol
  • test/concrete/raindex/RaindexV6.contextWordEntrypoints.t.sol
  • test/concrete/raindex/RaindexV6.deposit.entask.t.sol
  • test/concrete/raindex/RaindexV6.deposit.t.sol
  • test/concrete/raindex/RaindexV6.depositWithdrawHarness.t.sol
  • test/concrete/raindex/RaindexV6.doPost.fresh.t.sol
  • test/concrete/raindex/RaindexV6.entask.t.sol
  • test/concrete/raindex/RaindexV6.errorSelector.t.sol
  • test/concrete/raindex/RaindexV6.multicall.t.sol
  • test/concrete/raindex/RaindexV6.orderMgmt.fresh.t.sol
  • test/concrete/raindex/RaindexV6.postTaskSignedContext.t.sol
  • test/concrete/raindex/RaindexV6.quote.calculateRevert.t.sol
  • test/concrete/raindex/RaindexV6.quote.sameToken.t.sol
  • test/concrete/raindex/RaindexV6.quote.t.sol
  • test/concrete/raindex/RaindexV6.removeOrder.entask.t.sol
  • test/concrete/raindex/RaindexV6.removeOrder.mock.t.sol
  • test/concrete/raindex/RaindexV6.removeOrder.owner.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.badStack.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.batchEvalConsistency.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.batchStateAdversarial.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.batchStateBypass.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.calculateRevert.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.calculationsContext.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.dirtyFreeMemory.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.exceedsMaxRatio.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.freshMutation.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.freshVaultZero.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.handleIO.revert.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.maximumInput.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.maximumOutput.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.minimumIO.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.minimumIOOutput.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.noop.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.precision.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.sameToken.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.skippedOrder.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.takenFlag.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.tokenMismatch.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.vaultZeroInput.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.zeroAmount.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.zeroMaxOOBIndex.t.sol
  • test/concrete/raindex/RaindexV6.takeOrder.zeroRatio.t.sol
  • test/concrete/raindex/RaindexV6.vaultBalance.t.sol
  • test/concrete/raindex/RaindexV6.vaultBalanceVault0.t.sol
  • test/concrete/raindex/RaindexV6.withdraw.entask.t.sol
  • test/concrete/raindex/RaindexV6.withdraw.t.sol
  • test/lib/LibOrder.t.sol
  • test/lib/LibRaindex.doPost.t.sol
  • test/lib/LibRaindexArb.finalizeArbGasExtreme.t.sol
  • test/lib/LibRaindexArb.finalizeArbNativeGas.t.sol
  • test/lib/LibRaindexArb.finalizeArbTaskContext.t.sol
  • test/lib/LibRaindexArb.finalizeArbTaskSignedContext.t.sol
  • test/util/abstract/ArbTest.sol
  • test/util/abstract/IRaindexV7Stub.sol
  • test/util/abstract/MockRaindexBase.sol
  • test/util/abstract/RaindexV6ExternalMockTest.sol
  • test/util/abstract/RaindexV6ExternalRealTest.sol
  • test/util/concrete/Alice.sol
  • test/util/concrete/CalcInterpreter.sol
  • test/util/concrete/ChildGatedRaindexV6ArbOrderTaker.sol
  • test/util/concrete/ChildGatedRaindexV6FlashBorrower.sol
  • test/util/concrete/ChildRaindexV6ArbTaskGated.sol
  • test/util/concrete/FixedStackInterpreter.sol
  • test/util/concrete/FlashLendingMockRaindex.sol
  • test/util/concrete/LeftoverFlashLendingMockRaindex.sol
  • test/util/concrete/LibRaindexArbFinalizeHarness.sol
  • test/util/concrete/LibRaindexDoPostHarness.sol
  • test/util/concrete/MockInterpreter.sol
  • test/util/concrete/NoExchangeFlashBorrower.sol
  • test/util/concrete/RaindexV6CalculateOrderIOHarness.sol
  • test/util/concrete/RaindexV6ClearDriverHarness.sol
  • test/util/concrete/RaindexV6ClearStateChangeHarness.sol
  • test/util/concrete/RealisticFlashLendingMockRaindex.sol
  • test/util/concrete/RealisticOrderTakerMockRaindex.sol
  • test/util/concrete/RecordingFlashLendingMockRaindex.sol
  • test/util/concrete/RecordingOrderTaker.sol
  • test/util/concrete/RecordingTaker.sol
  • test/util/concrete/Reenteroor.sol
  • test/util/concrete/ReentrantExchange.sol
  • test/util/concrete/ReentrantMockRaindex.sol
  • test/util/concrete/ReentrantOnTakeOrdersStore.sol
  • test/util/fixture/LibRaindexSubParserContextFixture.sol
  • test/util/interface/IRaindexV6CalculateOrderIOHarness.sol
  • test/util/interface/IRaindexV6ClearDriverHarness.sol
  • test/util/interface/IRaindexV6ClearStateChangeHarness.sol
  • test/util/interface/IRaindexV6VaultBalanceHarness.sol
  • test/util/lib/LibTestAddOrder.sol
  • test/util/lib/LibTestArb.sol
  • test/util/lib/LibTestFlashBorrowerArb.sol
  • test/util/lib/LibTestSignedContext.sol
  • test/util/lib/LibTestTakeOrder.sol

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

thedavidmeister and others added 4 commits October 26, 2026 19:01
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
thedavidmeister and others added 2 commits October 26, 2026 22:49
…ainlang version comment

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thedavidmeister
thedavidmeister merged commit 8babc6b into main Oct 26, 2026
18 of 20 checks passed
@linear

linear Bot commented Oct 26, 2026

Copy link
Copy Markdown

RAI-3909

@github-actions

Copy link
Copy Markdown
Contributor

@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

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