Overview
⚠️ Depends on: #44 (GF-12 — Data Service Layer).
Build three protocol transparency and management pages: the pool allocations view, the harvest trigger page, and the governance proposal page. The README explicitly promises the allocations URL (https://yieldladder.dev/allocations). The harvest page enables anyone to claim the 10 bps bounty. The governance page is required for Guardian Multisig members to veto proposals.
Problem
None of these pages exist:
- The README states:
Current allocations are published at https://yieldladder.dev/allocations and on-chain via Strategy.allocations() — the page does not exist
- There is no UI for the permissionless
harvest() function despite the 10 bps incentive
- There is no governance UI despite the protocol having a full on-chain governance contract
Proposed Solution
Page 1: /allocations
Pool allocation table:
| Pool |
Pair |
Allocated (USDC) |
% of Strategy |
vs 35% Cap |
30d Fee APY |
| ... |
USDC/XLM |
|
28% |
7% headroom |
4.2% |
- Source data from
useAllocations() hook (GF-12)
- Show a visual exposure bar for each pool — red if above 30%, green if well below cap
- Impermanent loss tracker per pool: show current IL % based on price feed data (GF-12 price feeds). If IL exceeds a threshold (e.g. >2%), highlight in amber.
- Counterparty asset prices (XLM, EURC, AQUA in USD) sourced from price feeds
Page 2: /harvest
Harvest status card:
- Last harvest: timestamp + ledger number
- Time since last harvest
- Cooldown period remaining (countdown timer, or
Ready to harvest if elapsed)
- Estimated harvestable yield (from StrategyVault)
- Estimated bounty for calling now (10 bps of harvestable yield)
Harvest Now button:
- Active only when cooldown has elapsed
- Calls
sdk.harvest() (via Harvester contract)
- Shows pending/confirmed/failed tx states
- On success, shows the bounty amount received
Harvest history table: last 20 harvests with date, yield, bounty, caller address
Page 3: /governance
Active proposals section:
- Each proposal shows: action description, proposed by (Strategist address), proposed at, timelock expiry countdown
- For Guardian Multisig address: shows a Veto button (calls Governance.veto())
- Once timelock elapses: anyone sees an Execute button (calls Governance.execute())
Proposal history section:
- All past proposals with status: Executed / Vetoed
- Each row links to the Stellar Explorer transaction
Acceptance Criteria
Overview
Build three protocol transparency and management pages: the pool allocations view, the harvest trigger page, and the governance proposal page. The README explicitly promises the allocations URL (
https://yieldladder.dev/allocations). The harvest page enables anyone to claim the 10 bps bounty. The governance page is required for Guardian Multisig members to veto proposals.Problem
None of these pages exist:
Current allocations are published at https://yieldladder.dev/allocations and on-chain via Strategy.allocations()— the page does not existharvest()function despite the 10 bps incentiveProposed Solution
Page 1:
/allocationsPool allocation table:
useAllocations()hook (GF-12)Page 2:
/harvestHarvest status card:
Ready to harvestif elapsed)Harvest Nowbutton:sdk.harvest()(via Harvester contract)Harvest history table: last 20 harvests with date, yield, bounty, caller address
Page 3:
/governanceActive proposals section:
Proposal history section:
Acceptance Criteria
/allocationsshows all active pool allocations with exposure % and IL tracker/harvestshows accurate cooldown countdown based on ledger sequence (not timestamp)Harvest Nowbutton is disabled until cooldown elapses/governancelists all pending proposals with timelock countdowns