Skip to content

Gate the DeFi Llama integrator slot off-Ethereum - #3

Merged
daedboi merged 3 commits into
mainfrom
temp-integrator-safes
Jul 18, 2026
Merged

Gate the DeFi Llama integrator slot off-Ethereum#3
daedboi merged 3 commits into
mainfrom
temp-integrator-safes

Conversation

@daedboi

@daedboi daedboi commented Jul 18, 2026

Copy link
Copy Markdown
Member

DeFi Llama's address is confirmed for Ethereum only. Same treatment as SEAL: pinned on Ethereum, PENDING_INTEGRATOR elsewhere, env-filled from DEFILLAMA_ADDRESS (fail-loud). Needed for the temp-safe deploy plan on Base/Arbitrum/Robinhood.

1336 tests pass.

Summary by CodeRabbit

  • New Features
    • Integrator fee recipients are now handled per-chain: if an integrator isn’t confirmed yet, it’s pinned to a temporary Boardwalk-controlled Safe that self-rotates to the real recipient after confirmation.
    • DeFi Llama and SEAL integrator slots now apply Ethereum-only confirmation rules, using distinct temporary Safes on non-Ethereum networks.
  • Bug Fixes
    • Updated fee schedule configuration and deployment validation to align with the new per-chain pinned/rotation behavior.
  • Documentation
    • Expanded integrator-slot specifications and clarified deployment guidance for SEAL and DeFi Llama.

Its address is confirmed for Ethereum only, matching the SEAL treatment:
pinned on Ethereum, PENDING elsewhere, filled from DEFILLAMA_ADDRESS at
deploy (fail-loud). Note in the fill loop: temp fills must be distinct
addresses — the collector rejects one address holding two slots — and
each temp slot later self-rotates to the real integrator (14d).
@cursor

cursor Bot commented Jul 18, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Deploy-config and documentation only—no on-chain fee or tax contract logic changes; risk is misconfigured L2 deploy env (distinct pending addresses).

Overview
Treats the DeFi Llama integrator slot (index 4) like SEAL: the known Ethereum address stays pinned on mainnet; on Base, Arbitrum, and Robinhood the slot is PENDING_INTEGRATOR and must be supplied at factory deploy via DEFILLAMA_ADDRESS (fail-loud if missing).

FeeSchedules._integrators no longer hardcodes the DeFi Llama address on every chain. 02_DeployFactory.s.sol maps pending slot 4 to that env var and documents that temporary Boardwalk-controlled fills for pending slots must be distinct (DuplicateIntegrator in IntegratorFeeCollector). DeployConfigs.t.sol pins the new per-chain expectations; AGENTS.md documents the env and rotation flow.

Reviewed by Cursor Bugbot for commit 052bfac. Configure here.

@coderabbitai

coderabbitai Bot commented Jul 18, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: fe05876e-1f3c-48b0-80a6-44f5f8e8335d

📥 Commits

Reviewing files that changed from the base of the PR and between 650dc5d and 62d23df.

📒 Files selected for processing (3)
  • AGENTS.md
  • SPEC.md
  • script/FeeSchedules.sol
🚧 Files skipped from review as they are similar to previous changes (3)
  • SPEC.md
  • script/FeeSchedules.sol
  • AGENTS.md

📝 Walkthrough

Walkthrough

Fee schedules now use fixed or chain-specific temporary Safe addresses for unconfirmed integrator recipients. Deployment supports the DeFi Llama slot, while tests and documentation describe Ethereum-only confirmation and timed self-rotation.

Changes

Integrator slot configuration

Layer / File(s) Summary
Chain-dependent integrator recipients
script/FeeSchedules.sol, test/unit/DeployConfigs.t.sol
Integrator slots use fixed temporary Safe addresses where recipients are unconfirmed, while SEAL and DeFi Llama use confirmed addresses only on Ethereum; tests assert the updated assignments.
Pending slot deployment resolution
script/02_DeployFactory.s.sol
Deployment maps the additional pending slot to DEFILLAMA_ADDRESS.
Integrator slot behavior documentation
AGENTS.md, SPEC.md
Documentation describes distinct temporary Safes and 14-day signalChangeAddress self-rotation to confirmed integrator addresses.

Estimated code review effort: 2 (Simple) | ~10 minutes

Poem

I’m a rabbit with Safes in a row,
Watching Ethereum’s addresses glow.
Distinct little slots wait through the night,
Then self-rotate when the time is right.
DeFi Llama and SEAL join the show!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is specific and accurately reflects the DeFi Llama slot’s new off-Ethereum behavior.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

Replace the env-filled PENDING_INTEGRATOR mechanism with pinned addresses:
DefiLlama Research -> 0xE0DE2EF1 (all chains), SEAL -> 0x9bAee773 and
DeFi Llama -> 0x1350e1C9 off-Ethereum (Ethereum keeps their confirmed
addresses). All three temp Safes are Boardwalk-controlled, code-verified
on all four chains, distinct per slot, and self-rotate to the real
integrator via signalChangeAddress (14d) once confirmed. The deploy
script no longer reads integrator envs.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@script/FeeSchedules.sol`:
- Around line 94-116: Update the Safe rotation descriptions in
script/FeeSchedules.sol lines 94-116, SPEC.md line 139, and AGENTS.md line 26 to
reflect the two-step API: signalChangeAddress schedules the rotation, then
executeChangeAddress performs it after 14 days and is permissionless.
- Around line 94-116: Update the rotation comments for the temporary Safe
entries in the fee-schedule initialization to accurately describe the two-step
API: signalChangeAddress only schedules the change, and
executeChangeAddress(slotIdx, newAddress) must be called after the 14-day delay
to update the slot. Preserve the existing address and fee assignments.

In `@test/unit/DeployConfigs.t.sol`:
- Around line 60-62: Replace the stale DuplicateIntegrator reference with the
implementation’s actual DuplicateAddress error identifier in the explanatory
comment at test/unit/DeployConfigs.t.sol lines 60-62 and the documented
identifier at AGENTS.md line 26.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7e1d39e8-3c75-42fc-ae9f-a32080b9411b

📥 Commits

Reviewing files that changed from the base of the PR and between 052bfac and 650dc5d.

📒 Files selected for processing (5)
  • AGENTS.md
  • SPEC.md
  • script/02_DeployFactory.s.sol
  • script/FeeSchedules.sol
  • test/unit/DeployConfigs.t.sol
💤 Files with no reviewable changes (1)
  • script/02_DeployFactory.s.sol

Comment thread script/FeeSchedules.sol
Comment thread test/unit/DeployConfigs.t.sol
signalChangeAddress only schedules; executeChangeAddress(slotIdx,
newAddress) performs the rotation permissionlessly after the 14-day
delay. Also note the construction vs rotation duplicate-error names.
@daedboi
daedboi merged commit 0e4e349 into main Jul 18, 2026
3 checks passed
@daedboi
daedboi deleted the temp-integrator-safes branch July 18, 2026 17:12
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