Remove: FeeRouter CL8Y LP/burn/podium/Rabbit split; replace with Arena DOUB routing #244

Closed
opened 2026-05-27 07:07:04 +00:00 by PlasticDigits · 14 comments
PlasticDigits commented 2026-05-27 07:07:04 +00:00 (Migrated from gitlab.com)

Context

Replace legacy FeeRouter five-sink CL8Y model with TimeArena DOUB routing. Parent epic: #238.

Relevant files

  • contracts/src/FeeRouter.sol
  • Sinks: DoubLPIncentives.sol, EcosystemTreasury.sol, CL8YProtocolTreasury.sol, PodiumPool.sol
  • docs/onchain/fee-routing-and-governance.md
  • frontend/src/pages/TimeCurveProtocolPage.tsx (fee-sink footer)

Acceptance criteria

  • v2 buy path routes DOUB per spec (40% live pools + 30% seed + 30% admin vault) without legacy 30/40/20/0/10 CL8Y table
  • PodiumPool redesigned or replaced with per-podium DOUB vaults (4× current + 4× seed + 1× admin)

Verification checklist

  • Forge test: buy N DOUB → measured vault balances match bps
  • No CL8Y burn sink in v2 buy path
## Context Replace legacy FeeRouter five-sink CL8Y model with TimeArena DOUB routing. Parent epic: #238. ## Relevant files - `contracts/src/FeeRouter.sol` - Sinks: `DoubLPIncentives.sol`, `EcosystemTreasury.sol`, `CL8YProtocolTreasury.sol`, `PodiumPool.sol` - `docs/onchain/fee-routing-and-governance.md` - `frontend/src/pages/TimeCurveProtocolPage.tsx` (fee-sink footer) ## Acceptance criteria - [ ] v2 buy path routes DOUB per spec (40% live pools + 30% seed + 30% admin vault) without legacy 30/40/20/0/10 CL8Y table - [ ] `PodiumPool` redesigned or replaced with per-podium DOUB vaults (4× current + 4× seed + 1× admin) ## Verification checklist - [ ] Forge test: buy N DOUB → measured vault balances match bps - [ ] No CL8Y burn sink in v2 buy path
PlasticDigits commented 2026-05-27 07:07:05 +00:00 (Migrated from gitlab.com)

marked as related to #238

marked as related to #238
PlasticDigits commented 2026-05-27 07:07:59 +00:00 (Migrated from gitlab.com)

mentioned in issue #238

mentioned in issue #238
PlasticDigits commented 2026-05-28 12:43:12 +00:00 (Migrated from gitlab.com)

mentioned in issue #242

mentioned in issue #242
PlasticDigits commented 2026-05-28 12:43:22 +00:00 (Migrated from gitlab.com)

Implementation complete

What we did

  • Deleted FeeRouter, PodiumPool, DoubLPIncentives, EcosystemTreasury, CL8YProtocolTreasury and deploy wiring
  • Each TimeArena.buy routes DOUB via ArenaBuyRouting: 10%×4 active + 7.5%×4 seed + 30% AdminSellVault (40/30/30)
  • Events: PodiumFunded, SeedFunded, AdminVaultFunded from vault notify helpers
  • Forge: ArenaPrizeRouting.t.sol + TimeArena.t.sol::test_buy_routes_doub_split (1000 DOUB → 700 vault + 300 admin)
  • Indexer: dropped idx_fee_router_* tables/routes in arena v2 migration
  • Frontend: ArenaVaultAddressesPanel + FeeTransparency arena mode when VITE_TIME_ARENA_ADDRESS set
  • Rewrote docs/onchain/fee-routing-and-governance.md for DOUB arena split only

Acceptance criteria for closing

  • v2 buy path routes DOUB 40/30/30 without legacy CL8Y five-sink table
  • PodiumVaults holds four active + four seed pools; AdminSellVault holds admin share
  • No CL8Y burn sink on buy path

Verification checklist

  • forge test --match-contract 'TimeArena|ArenaPrize' green
  • rg 'FeeRouter|PodiumPool|DoubLPIncentives' — zero in contracts/src
## Implementation complete ### What we did - Deleted `FeeRouter`, `PodiumPool`, `DoubLPIncentives`, `EcosystemTreasury`, `CL8YProtocolTreasury` and deploy wiring - Each `TimeArena.buy` routes DOUB via `ArenaBuyRouting`: 10%×4 active + 7.5%×4 seed + 30% `AdminSellVault` (40/30/30) - Events: `PodiumFunded`, `SeedFunded`, `AdminVaultFunded` from vault notify helpers - Forge: `ArenaPrizeRouting.t.sol` + `TimeArena.t.sol::test_buy_routes_doub_split` (1000 DOUB → 700 vault + 300 admin) - Indexer: dropped `idx_fee_router_*` tables/routes in arena v2 migration - Frontend: `ArenaVaultAddressesPanel` + `FeeTransparency` arena mode when `VITE_TIME_ARENA_ADDRESS` set - Rewrote `docs/onchain/fee-routing-and-governance.md` for DOUB arena split only ### Acceptance criteria for closing - [x] v2 buy path routes DOUB 40/30/30 without legacy CL8Y five-sink table - [x] `PodiumVaults` holds four active + four seed pools; `AdminSellVault` holds admin share - [x] No CL8Y burn sink on buy path ### Verification checklist - [x] `forge test --match-contract 'TimeArena|ArenaPrize'` green - [x] `rg 'FeeRouter|PodiumPool|DoubLPIncentives'` — zero in `contracts/src`
PlasticDigits commented 2026-05-29 03:24:01 +00:00 (Migrated from gitlab.com)

mentioned in issue #263

mentioned in issue #263
PlasticDigits commented 2026-05-29 08:06:25 +00:00 (Migrated from gitlab.com)

mentioned in issue #264

mentioned in issue #264
PlasticDigits commented 2026-05-29 08:09:55 +00:00 (Migrated from gitlab.com)

mentioned in issue #266

mentioned in issue #266
PlasticDigits commented 2026-05-29 08:24:35 +00:00 (Migrated from gitlab.com)

mentioned in issue #270

mentioned in issue #270
PlasticDigits commented 2026-05-30 13:29:09 +00:00 (Migrated from gitlab.com)

mentioned in commit bef77d0d29

mentioned in commit bef77d0d299c9cbeb1220d0d832d22ebe0aa01e4
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-05-30 13:29:15 +00:00
PlasticDigits commented 2026-05-30 13:29:21 +00:00 (Migrated from gitlab.com)

Verification complete (agent, 2026-05-30)

Independent verification of #244 on origin/main using worktree issue/244-feerouter-verify.

What was checked

  • Onchain: contracts/src has no FeeRouter, PodiumPool, DoubLPIncentives, EcosystemTreasury, or CL8YProtocolTreasury. TimeArena.buy routes DOUB via ArenaBuyRouting (40% active · 30% seed · 30% admin); no CL8Y burn sink on the buy path.
  • Forge: forge test --match-contract 'TimeArena|ArenaPrize' — 43/43 passed (includes test_buy_routes_doub_split, ArenaPrizeRouting.t.sol).
  • Indexer: no idx_fee_router_* tables; GET /v1/arena/vault-funding/totals returns active/seed/admin breakdown on local stack.
  • Frontend: FeeTransparency / ArenaVaultAddressesPanel show Arena 40/30/30 when VITE_TIME_ARENA_ADDRESS is set.
  • Docs/skills: merged bef77d0 — contract map + PARAMETERS.md TimeArena section, INV-TIME-ARENA-ROUTE-SPLIT ↔ #244, skills/play-time-arena-doub retired FeeRouter note.

Manual re-check checklist

  • cd contracts && forge test --match-contract 'TimeArena|ArenaPrize'
  • rg 'FeeRouter\.sol|PodiumPool\.sol|DoubLPIncentives' contracts/src → no matches (note: PodiumPoolsToppedUp event name is expected)
  • One Anvil DOUB buy → vault balances ≈ 700 prize + 300 admin per 1000 DOUB
  • GET /v1/arena/vault-funding/by-tx/{tx} shows 9 funding rows for a DOUB buy
  • /arena/protocol fee panel lists podium + admin vault addresses (no five-sink CL8Y table)

All acceptance criteria and verification items from the issue body + prior implementation comment pass.

## Verification complete (agent, 2026-05-30) Independent verification of #244 on `origin/main` using worktree `issue/244-feerouter-verify`. ### What was checked - **Onchain:** `contracts/src` has no `FeeRouter`, `PodiumPool`, `DoubLPIncentives`, `EcosystemTreasury`, or `CL8YProtocolTreasury`. `TimeArena.buy` routes DOUB via `ArenaBuyRouting` (40% active · 30% seed · 30% admin); no CL8Y burn sink on the buy path. - **Forge:** `forge test --match-contract 'TimeArena|ArenaPrize'` — **43/43 passed** (includes `test_buy_routes_doub_split`, `ArenaPrizeRouting.t.sol`). - **Indexer:** no `idx_fee_router_*` tables; `GET /v1/arena/vault-funding/totals` returns active/seed/admin breakdown on local stack. - **Frontend:** `FeeTransparency` / `ArenaVaultAddressesPanel` show Arena 40/30/30 when `VITE_TIME_ARENA_ADDRESS` is set. - **Docs/skills:** merged `bef77d0` — contract map + `PARAMETERS.md` TimeArena section, `INV-TIME-ARENA-ROUTE-SPLIT` ↔ #244, `skills/play-time-arena-doub` retired FeeRouter note. ### Manual re-check checklist - [ ] `cd contracts && forge test --match-contract 'TimeArena|ArenaPrize'` - [ ] `rg 'FeeRouter\.sol|PodiumPool\.sol|DoubLPIncentives' contracts/src` → no matches (note: `PodiumPoolsToppedUp` event name is expected) - [ ] One Anvil DOUB `buy` → vault balances ≈ 700 prize + 300 admin per 1000 DOUB - [ ] `GET /v1/arena/vault-funding/by-tx/{tx}` shows 9 funding rows for a DOUB buy - [ ] `/arena/protocol` fee panel lists podium + admin vault addresses (no five-sink CL8Y table) All acceptance criteria and verification items from the issue body + prior implementation comment pass.
PlasticDigits commented 2026-06-01 10:48:22 +00:00 (Migrated from gitlab.com)

mentioned in issue #274

mentioned in issue #274
PlasticDigits commented 2026-06-01 12:28:49 +00:00 (Migrated from gitlab.com)

mentioned in issue #276

mentioned in issue #276
PlasticDigits commented 2026-06-02 13:45:12 +00:00 (Migrated from gitlab.com)

mentioned in issue #280

mentioned in issue #280
PlasticDigits commented 2026-06-07 07:50:10 +00:00 (Migrated from gitlab.com)

mentioned in issue #299

mentioned in issue #299
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#244
No description provided.