KVORUM
aaveSource: Aave governance v3 · #538

Onboard PT-USDG-25FEB2027 to the LlamaRisk PT Risk Oracle

executedOct 31, 2026, 10:19 AM UTCby660x66a2…73ff

01Summary

AISummary by Kvorum

An AI summary is not generated yet. Read the description →

02Description

886 words

Simple Summary

Registers two predeployed risk agents on the Aave-owned AgentHub so that discount rate and eMode risk parameters for PT-USDG-25FEB2027 on Aave V3 X Layer can be maintained automatically from the LlamaRisk PT Risk Oracle, within bounds this proposal sets.

Motivation

PT-USDG-25FEB2027 is a Pendle principal token onboarded to Aave V3 X Layer by a separate AIP, Onboard PT-USDG-25FEB2027 on X Layer, as collateral in eMode category 9. Its fair value depends on an implied discount rate that decays to zero at maturity, so a static discount rate is wrong almost everywhere: too high early, and increasingly too low as maturity approaches. The same drift affects the liquidation threshold and bonus that should apply to it.

LlamaRisk operates an offchain pipeline on Chainlink CRE that tracks the Pendle market, maintains an EMA of the implied rate, and derives both the discount rate and the eMode parameters from it. This proposal is the last link in that chain: it grants the two agent contracts permission to apply those values, and bounds how far each application may move a parameter.

The pipeline publishes to a RiskOracle that only LlamaRisk's router can write to, and the router only accepts reports from the Chainlink CRE forwarder for a workflow owned by the Aave CRE organisation multisig. Governance retains the ability to disable either agent at any time.

Specification

The payload performs three groups of actions.

1. Register the discount rate agent. The payload registers the predeployed AaveDiscountRateAgent from MiscXLayer.LLAMARISK_PT_DISCOUNT_RATE_AGENT on MiscXLayer.AGENT_HUB, consuming PendleDiscountRateUpdate records from the LlamaRisk RiskOracle and allowed to act only on PT-USDG-25FEB2027. Minimum delay 2 days, expiration period 2 days.

2. Register the eMode agent. The predeployed AaveEModeAgent from MiscXLayer.LLAMARISK_PT_EMODE_AGENT is registered for the same oracle, consuming EModeCategoryUpdate and allowed to act only on eMode category 9. Minimum delay 3 days, expiration period 3 days. Its agent context encodes AaveV3XLayer.CONFIG_ENGINE, which it delegatecalls to apply category updates.

Both are registered with admin set to MiscXLayer.PROTOCOL_GUARDIAN, so a misbehaving agent can be disabled without a governance cycle. Registration stays governance-only: registerAgent and setAgentAdmin are onlyOwner, and the AgentHub is owned by GovernanceV3XLayer.EXECUTOR_LVL_1. Both isAgentPermissioned and isMarketsFromAgentEnabled are left at their defaults.

These are the first agents on the X Layer AgentHub, so they take agent ids 0 and 1. Both agent addresses and the RiskOracle are imported from MiscXLayer. Neither agent is registered with a suffixed update type: the LlamaRisk RiskOracle serves this stack alone, so the base types are unambiguous.

3. Grant RISK_ADMIN and bound the ranges. addRiskAdmin on AaveV3XLayer.ACL_MANAGER for both predeployed agents, then setDefaultRangeConfig on MiscXLayer.RANGE_VALIDATION_MODULE for each parameter each agent can move.

The role is required because of how the agents write. The discount rate agent resolves the PT price source through the Aave oracle and calls setDiscountRatePerYear on the PendlePriceCapAdapter, which gates that call on isRiskAdmin || isPoolAdmin. The eMode agent delegatecalls the config engine, and because delegatecall preserves the caller, the PoolConfigurator sees the agent rather than the engine, so the role has to sit on the agent there as well.

Bounds and timelocks

Every bound is absolute rather than relative. A relative cap is measured against the last value the agent injected, which does not exist on a freshly assigned agent id, so a relative configuration would leave the first injection unbounded. The minimum delay is the timelock the hub enforces between injections per agent and market, and the expiration period is how long a published update remains applicable.

AgentParameterMaximum move per injectionMinimum delayExpiration period
Discount ratePendleDiscountRateUpdate100 bps (1e16)2 days2 days
eModeEModeLTV50 bps3 days3 days
eModeEModeLiquidationThreshold50 bps3 days3 days
eModeEModeLiquidationBonus50 bps3 days3 days

These configurations are not optional. A fresh agent id inherits no default range config, and the module reads a missing config as a zero bound, which rejects every injection. Omitting them would produce a registered but permanently inert agent.

Affected eMode categories

IdLabel
9PT_USDG_25FEB2027__Stablecoins

No reserve configuration is changed by this payload. The snapshot diff is empty by design.

Deployed Contracts

The payload references the RiskOracle and both agents directly. The Router and CRE Forwarder are included above to make the complete write path easier to review.

Existing Aave contracts referenced, all from the address book:

  • AgentHub: MiscXLayer.AGENT_HUB
  • RangeValidationModule: MiscXLayer.RANGE_VALIDATION_MODULE
  • PT-USDG-25FEB2027: AaveV3XLayerAssets.PT_USDG_25FEB2027_UNDERLYING
  • eMode category 9 (PT_USDG_25FEB2027__Stablecoins): AaveV3XLayerEModes.PT_USDG_29OCT2026_PT_USDG_25FEB2027__USDT_GHO_USDC
  • ACL manager: AaveV3XLayer.ACL_MANAGER
  • Config engine: AaveV3XLayer.CONFIG_ENGINE
  • Agent admin: MiscXLayer.PROTOCOL_GUARDIAN
  • AgentHub owner: GovernanceV3XLayer.EXECUTOR_LVL_1

Agent source

Both predeployed agents are verified deployments of the stock implementations from aave-dao/aave-risk-agents. The tests verify their bytecode is present and their immutable AgentHub, RangeValidationModule, pool, oracle and update-type wiring matches the configuration registered by this payload.

References

Copyright

Copyright and related rights waived via CC0.

03Mismatch analysis

AIMismatch analysis by Kvorum

A calldata-vs-description analysis is not generated yet. Review the decoded actions →

04Actions

0 total

This proposal carries no on-chain actions.

05Tally

Summed from votes

Voters15
VP participating371.1K
Outcome (current)for
Current support100%

06Voters

15 total
Filter:
VoterChoice% of totalRationale
330x3320…3bb7for107.2K28.90%—9d ago
2C0x2cc1…4df1for88.6K23.88%—7d ago
8B0x8b37…2a22for75.9K20.46%—8d ago
B90xb933…8dd1for53.7K14.47%—9d ago
360x3676…574dfor25K6.74%—8d ago
C00xc0d6…b802for20.2K5.44%—7d ago
EA0xea99…894afor173.50.05%—8d ago
080x0865…24cefor151.20.04%—9d ago
880x88c4…2fddfor38.50.01%—8d ago
610x6134…118bfor15.50.00%—8d ago
960x96ea…c6a4for5.10.00%—8d ago
850x850e…75d7for2.40.00%—7d ago
2F0x2f2f…f78afor0.20.00%—9d ago
160x168f…7400for0.10.00%—8d ago
530x53da…c14bfor00.00%—7d ago
Showing 15

07Forum

No forum thread is confidently linked to this proposal.

08Similar proposals

AI · embeddings

No semantically similar proposals found yet.