Skip to content

[GF-16] [FRONTEND] Protocol Management Pages (/allocations, /harvest, /governance) #48

@wumibals

Description

@wumibals

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

  • /allocations shows all active pool allocations with exposure % and IL tracker
  • Exposure bar turns amber/red as pool allocation approaches the 35% cap
  • /harvest shows accurate cooldown countdown based on ledger sequence (not timestamp)
  • Harvest Now button is disabled until cooldown elapses
  • Harvesting shows the correct bounty amount in the success state
  • /governance lists all pending proposals with timelock countdowns
  • Guardian Multisig address sees and can use the Veto button
  • Execute button appears for all users after timelock elapses
  • Proposal history shows all past proposals with correct status

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions