feat: V3 Grid product — /v3 UI, indexer stats, Pool/Limits links (from #546) #619
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:implement
agent:implement
agent:open_issues
agent:ready
agent:research
agent:security_audit
agent:verify
architecture
backend
blocker:hybrid
blocker:launch
blocker:limit-orders
blocker:v2
block:log_only
block:security
bug
ci
contracts
correctness
deploy
dev
devops
docs
documentation
duplicate
e2e
enhancement
epic
feature
frontend
functional-completion
gas
good first issue
governance
help wanted
high-risk
hooks
hybrid
indexer
infra
infrastructure
integrators
invalid
launch-blocker
limit-orders
localnet
localterra
low priority
missing-implementation
needs-design
ops
performance
priority
high
priority
medium
product
qa
QA
question
ready
ready
research
scripts
security
security-hardening
smartcontracts
tech-debt
testing
ux
UX
v2
verification
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-dex-terraclassic#619
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Ship the V3 Grid product surface: route
/v3, copy “V3 Grid”, indexer APIs for per-grid revenue / APR estimates, and short links from/pooland/limits. Users deposit and withdraw; inventory growth is handled by vaultRebalance. Do not add Claim, Reinvest, or Rebalance buttons.Parent: #546 option E, ship scope S4, economics E2, surface
/v3.Blocked by #617 (instantiate / deposit / withdraw / query shapes). The keeper package (#618 once opened) is not required for the UI to ship (keeper is ops); do not wait on tip→LUNC to land
/v3.Current codebase
App.tsxhas/pool,/limits,/trade,/portfolio,/charts,/protocol, … — no/v3. Unknown pathsNavigateto/.navItems.ts: primary Swap / Pool / Limits / Trade / Portfolio / Charts. More folds at< 1200px(#136, #483). No V3 Grid item./limitsLimitOrdersPage.tsxSingle vs Ladder. Ladder is one-sided, one-shot (LimitOrderLadderPanel.tsx). Crossing guard is client-only (#297, #385). Disconnect still shows create fields (#494)./poolPoolLpHowto/poolLpHowtoCopy.ts(H531-4 no incentive APR; H531-6 limits ≠ LP shares).limit-fills,limit-book, hub prices, pair 24h volume, external oracle (#515). No grid/vault catalog, no per-grid PnL windows, no 95% APR preview.GetDiscount.There is no range+spread+both-sides recycle UX. Power users would bot; #546 chose a vault +
/v3instead.Why this is needed
/pool. A named/v3plus links from Pool and Limits steers them to the grid without pretending the vault mints LP shares.Rebalance. The UI must not re-introduce a harvest loop that fights the vault.Constraints / guardrails
/v3. Page title and primary heading V3 Grid. Do not name the page “LP”, “V3 LP”, or “concentrated liquidity shares.”/pooland/limitsget a short same-origin link to/v3(one line / button). Do not add always-on essays on Swap/Trade (#489). Pool how-to may add one sentence + link; keep H531-4 (no incentive program) and H531-6 (book escrow ≠ pool share).P→ sell atP*(1+s); sell atP*(1+s)→ buy back atP(no drift).GetDiscountis unknown). Do not let a 1 bps spread submit when place-fee is 90 bps (A12 on #546)./limits//pool.forbiddenPoolLpHowtoCopyHits./v3toMORE_NAV_ITEMS(header already tight at 1200px). Do not stuff a seventh primary tab unless a follow-up measures overflow. Pool/Limits links are the discovery path./v3,/poollink,/limitslink — not screenshot-only.Relevant files
frontend-dapp/src/App.tsx/v3(+ optional/v3/:vaultAddr)frontend-dapp/src/components/common/navItems.tsfrontend-dapp/src/pages/PoolPage.tsx/v3frontend-dapp/src/utils/poolLpHowtoCopy.tsfrontend-dapp/src/pages/LimitOrdersPage.tsx/v3from Single/Ladder chromefrontend-dapp/src/components/trade/LimitOrderLadderPanel.tsxfrontend-dapp/src/utils/limitOrderNonCrossing.tsfrontend-dapp/src/utils/limitOrderLadder.tsindexer/src/api/mod.rsindexer/src/api/traders.rs/pairs.rsindexer/src/indexer/parser.rsdocs/frontend.mddocs/design-system.mdskills/AGENTS_FRONTEND_COPY_COGNITIVE_LOAD.mdskills/AGENTS_FRONTEND_POOL_LP_HOWTO.mdskills/AGENTS_LIMIT_PRICE_DECIMALS.mdRecommended direction
Indexer (same issue — product is unusable without it)
grid_rebalance, tip_paid, fee pot. Columnar zip like limit placements — do not usewasm_attr_last.limit_fillswheremaker == vaultto that grid.GET /api/v1/v3/preview?pair=&spread_bps=&range=…&tier=→ estimated 95% APR band + break-even vs place-fee (stateless).GET /api/v1/v3/vaults?beneficiary=→ user’s grids.GET /api/v1/v3/vaults/{addr}→ live params, idle inventory, unclaimed fees, revenue windows, open order ids.nullon missing candles — do not invent a number.dApp
V3GridPageat/v3. Pair picker (catalog rank #534, gems hidden). Inputs: range, spread 1–2500 bps, rung count, deposit amounts. Preview rungs + E2 pairing + estimated APR band./pool: text button/link V3 Grid →/v3near provide chrome or how-to./limits: same near Single/Ladder tabs (“Need a range that flips? V3 Grid”).terraGas.tskeys (do not fall through toBASE_GAS_LIMIT— #475)./v3render + pool/limits links (5 workers).make verify-issue-<iid>.Acceptance criteria
/v3. Route renders V3 Grid; wildcard still does not 404-loop.getByRole/ testid absent)./pooland/limitseach have a same-origin/v3link. More nav lists V3 Grid.make verify-issue-<iid>(indexer tests + frontend unit + optional Playwright).Test plan (all paths)
GET /v3disconnected1.00+ 200 bps → ask1.02; ask fill preview restores1.00data-testid/ roleclaim,reinvest,rebalanceretail buttons/poollink/v3/limitslink/v3; Ladder panel still one-sidedforbiddenPoolLpHowtoCopyHitsTest plan — attack, hack, and abuse vectors
/trade/:pairAddr).OrderStatusfor withdraw gates prefer LCD; stale “active” does not block honest withdraw (parity #530)./v3only./v3still behind existing legal gates ondex.cl8y.com.Verification criteria
/v3is findable from Pool and Limits without reading wasm.AGENTS_FRONTEND_V3_GRID.md) +make verify-issue-<iid>.Out of scope
grid-keeperbinary and tip→LUNC (sibling)./limitsLadder into an auto-flip bot./poolprovide card as if it minted LP tokens.marked as related to #546
marked as related to #617
mentioned in issue #546
mentioned in issue #617
mentioned in issue #655
mentioned in issue #664