Conversation
NandyBa
left a comment
There was a problem hiding this comment.
Useful link from by review:
| /** | ||
| * @title Orderly Transition and Offboarding Plan for Chaos Labs | ||
| * @author ChaosLabs (implemented by Aavechan Initiative @aci via Skyward) | ||
| * - Snapshot: TODO |
There was a problem hiding this comment.
Remove Snapshot: TODO here and other occurrences.
|
|
||
| - Implementation: [AaveV3Ethereum](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Ethereum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Polygon](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Polygon_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Avalanche](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Avalanche_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Optimism](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Optimism_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Arbitrum](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Arbitrum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Base](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Base_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Gnosis](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Gnosis_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3BNB](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3BNB_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Linea](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Linea_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol), [AaveV3Plasma](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Plasma_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.sol) | ||
| - Tests: [AaveV3Ethereum](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Ethereum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Polygon](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Polygon_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Avalanche](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Avalanche_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Optimism](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Optimism_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Arbitrum](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Arbitrum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Base](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Base_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Gnosis](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Gnosis_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3BNB](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3BNB_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Linea](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Linea_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol), [AaveV3Plasma](https://github.com/aave-dao/aave-proposals-v3/blob/main/src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Plasma_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol) | ||
| [Snapshot](TODO) |
There was a problem hiding this comment.
| [Snapshot](TODO) |
|
|
||
| The DAO is in a position to transition the majority of ongoing risk-management responsibilities without significant delay. LlamaRisk already exists a secondary risk provider, and has [stated](https://governance.aave.com/t/llamarisk-ensuring-continuity-of-aaves-risk-management/24397) they are fully ready and prepared to take on all risk management functionality. With the key rotation finalized at their [request](https://governance.aave.com/t/llamarisk-ensuring-continuity-of-aaves-risk-management/24397#p-62730-scope-we-will-absorb-4), they’ll be able to update parameters manually via the risk steward. | ||
|
|
||
| In summary, the addresses associated with the current 2/2 multisig for manual Risk Steward purposes will be rotated from Chaos Labs and BGD to Aave Labs and LlamaRisk, as requested by both, to ensure operational continuity. |
There was a problem hiding this comment.
Maybe indicate that the multisig stay the same, signers are rotating, not the Risk steward council address.
At least I indicate here for reviewers
Signer references: https://governance.aave.com/t/arfc-manual-risk-agents-manual-agrs-migration/24311/6?u=nandy.eth
|
Please also fix the following typos: |
| uint256 public constant AMOUNT_PER_SECOND = 80859969558599695; // from stream 100073 | ||
|
|
||
| function execute() external { | ||
| // custom code goes here |
There was a problem hiding this comment.
can we also revoke RISK_ADMIN role from all agents, for example on eth they are: EModeCategory_CoreAgent, PendleDiscountRate_CoreAgent, RateStrategy_CoreAgent, CapoPriceCap_CoreAgent
There was a problem hiding this comment.
we should also cancel the robots on AaveCLRobotOperator and freed up LINK can be returned to collector
|
It seems there is an AgentHub on the Ink Whitelabel instance as well, were the owners of that Ink instance notified so they can also execute the Offboarding on their side ? |
🌈Test ResultsCompiling 536 files with Solc 0.8.27 Solc 0.8.27 finished in 186.59s Compiler run successful!Ran 4 tests for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Arbitrum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3Arbitrum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test [PASS] test_linkReturnedToCollectorAfterCancellation() (gas: 445792) Ran 1 test suite in 11.64s (11.64s CPU time): 4 tests passed, 0 failed, 0 skipped (4 total tests) Ran 4 tests for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Avalanche_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3Avalanche_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test [PASS] test_linkReturnedToCollectorAfterCancellation() (gas: 446699) Ran 1 test suite in 2.14s (2.14s CPU time): 4 tests passed, 0 failed, 0 skipped (4 total tests) Ran 4 tests for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3BNB_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3BNB_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test [PASS] test_linkReturnedToCollectorAfterCancellation() (gas: 341534) Ran 1 test suite in 2.12s (2.12s CPU time): 4 tests passed, 0 failed, 0 skipped (4 total tests) Ran 4 tests for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Base_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3Base_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test [PASS] test_linkReturnedToCollectorAfterCancellation() (gas: 379303) Ran 1 test suite in 2.10s (2.10s CPU time): 4 tests passed, 0 failed, 0 skipped (4 total tests) Ran 4 tests for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Ethereum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3Ethereum_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test [PASS] test_linkReturnedToCollectorAfterCancellation() (gas: 896951) Ran 1 test suite in 3.04s (3.02s CPU time): 4 tests passed, 0 failed, 0 skipped (4 total tests) Ran 1 test for src/20260410_Multi_OrderlyTransitionAndOffboardingPlanForChaosLabs/AaveV3Gnosis_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410.t.sol:AaveV3Gnosis_OrderlyTransitionAndOffboardingPlanForChaosLabs_20260410_Test |
- Cancel all AGENT_HUB_AUTOMATION robots dynamically via getKeepersList() + getKeeperInfo() filter instead of hardcoded constants - Revoke RISK_ADMIN from all agents on both AaveV3Ethereum (Core) and AaveV3EthereumLido ACL managers - Extend IAaveCLRobotOperator with KeeperInfo struct, getKeepersList(), and getKeeperInfo() - Add test_agentsDisabledAndRiskAdminRevoked (Core + Lido) and test_robotsCancelled Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… library - Create CancelAgentRobots library (mirrors DelistAllAgents pattern): iterates getKeepersList(), cancels any keeper registered for AGENT_HUB_AUTOMATION - Apply to Ethereum, Arbitrum, Avalanche, Base, BNB, Optimism, Polygon (Gnosis and Linea have no AAVE_CL_ROBOT_OPERATOR on-chain) - Ethereum: replace inline robot loop with CancelAgentRobots.cancel() - Remove IAaveCLRobotOperator direct import from Ethereum payload (now handled through library) - Deduplicate Ethereum delist into two-manager overload on DelistAllAgents - Clean up leftover boilerplate comments across all chain contracts Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Chainlink Automation Registry on Arbitrum calls the arbBlockNumber() precompile (0x0000...0064) inside cancelUpkeep. Foundry fork mode does not replicate Arbitrum native precompiles — known limitation: foundry-rs/foundry#5085 foundry-rs/foundry#7294 foundry-rs/foundry#6035 Mock the precompile in setUp() so the cancel path is exercisable in tests. The proposal executes correctly on Arbitrum mainnet. All 11 tests now pass across 9 chains. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix comment: CANCELLATION_DELAY is 50 blocks (not ~20), sourced from KeeperRegistryBase2_1 - Add test_linkReturnedToCollectorAfterCancellation: executes proposal, rolls 50 blocks using getCancellationDelay() on the deployed registry, withdraws LINK for all cancelled agent hub robots and asserts collector balance increased - Use AaveV3EthereumAssets.LINK_UNDERLYING from address book instead of hardcoded address Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds LINK recovery test to Arbitrum, Avalanche, Base, BNB, Optimism, Polygon. Pattern: discover AGENT_HUB_AUTOMATION robots dynamically, execute proposal, roll forward getCancellationDelay() blocks, withdrawLink, assert collector LINK balance increased. Chain-specific notes: - Arbitrum: vm.roll resets Foundry mocks, so the arbBlockNumber() mock is re-applied with fork_block + delay instead of using vm.roll. - Polygon: Chainlink registry uses a different LINK than AaveV3PolygonAssets; getLinkAddress() is called on the registry to get the correct token. - LINK in address book (Arbitrum, Optimism): AaveV3<Chain>Assets used. - LINK not in address book (Avalanche, Base, BNB, Polygon): getLinkAddress() from registry. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add test_agentsDisabledAndRiskAdminRevoked and test_robotsCancelled to Arbitrum, Avalanche, Base, BNB, Optimism, Polygon — mirroring the Ethereum test suite. Also fix duplicate comment block in Arbitrum setUp. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
currently in internal review
Pre-review checklist: