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#598
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?
Why
!1116 merged and closed #596. Retail Swap and Trade Market now always consider the limit book (
GET /route/solve); users cannot opt in or opt out. GitLab CI for the MR failed withci_quota_exceeded(jobs never ran). Localmake verify-issue-596passed 11/11.This ticket is production bake + leftover QA. It is not a second product-rule ticket.
Do
npm ci/ image rebuild). No indexer schema change.VERIFY_ISSUE_596_CHAIN=1 make verify-issue-596(Playwrighthybrid-swap.spec.ts) when chain +frontend-dapp/.env.localare up.book_leg_volumevspool_leg_volumeon venue swaps. Higher book share is the product outcome, not a unit test.TradeMarketOrderPanel.tsx. Consider Swap network-feecw20Hybridwhen GET allocates interiorbook_inputwithout a typed Advanced override (Trade already assumes hybrid per H596-8).Out of scope
useHybridBook/ pool-only toggleGET /route/solve?pool_only=truefor integrators (stays)Verify
Playbook:
skills/AGENTS_FRONTEND_HYBRID_ALWAYS_ON.md(H596-1–H596-8).marked as related to #596
mentioned in issue #596
Redeploy check (2026-08-22 ~13:55 UTC Coolify bake)
Production
https://dex.cl8y.com/HTML + JSLast-Modified: Sat, 22 Aug 2026 13:55:14 GMT(/assets/index-DaEafJXE.js,SwapPage-LHH9OYwc.js,TradePage-BcBYUL4Z.js). Indexerhttps://indexer.dex.cl8y.com/health= ok. No indexer schema change required.Checklist
GET /route/solve(nopool_only); typed bookPOSThybrid_by_hopVERIFY_ISSUE_596_CHAIN=1Playwright (ran, FAIL — see below)book_leg_volumevspool_leg_volumeafter this bake (no post-deploy venue swaps yet)Production evidence (UST1 → USTR)
GET https://indexer.dex.cl8y.com/api/v1/route/solve?token_in=…UST1…&token_out=…USTR…&amount_in=1000000&max_maker_fills=8— nopool_only. Quote UI: Execution Limit book + pool.0.1:POST /api/v1/route/solvebody includeshybrid_by_hop.useHybridBook/trade-market-hybrid-toggle/ old checkbox copy.Local verify
make verify-issue-596(unit + docs): 11 PASS / 0 FAIL (61 Vitest).VERIFY_ISSUE_596_CHAIN=1 make verify-issue-596: unit/docs still pass; chain Playwright FAIL (e2e-tx/hybrid-swap.spec.ts“shows hybrid book disclosure…”). AssertiongetByRole('alert')/limit book/isaw"Quote may change before submit. Docs"(SwapPage hybrid LCD warning, link text Docs). Execution summary still says Limit book + pool. This is stale e2e vs #489/#596 copy, not a retail opt-out regression. Follow-up: point the spec atswap-execution-summary/ Docs href, not the firstrole=alert.Observational metrics (
GET /cg/tickers)UST1_USTR 24h
cl8y_extensions:hybrid_trade_count_24h=2,pool_only_trade_count_24h=3,book_leg_volume_quote_24h=890713970484280865828,pool_leg_volume_quote_24h=886847811504280879361. Other listed pairs: book 0. The two hybrid fills in the trailing window are 2026-08-21 14:31 and 14:09 UTC (3385F07E…,0442C5EA…) — before !1116 merge and this Coolify bake. Latest UST1/USTR tapes on 22 Aug (5A7C9EA7…09:58,FEE81836…08:18) are pool-leg only and also pre-bake. Re-check after live taker flow.Leave #598 open for: e2e copy update, post-bake book-share observation, JSDoc (
TradeMarketOrderPanelstill documents “Hybrid off → pool-only”), optional Swap gas when GET allocates interior book.On-chain verification of #596 (best-execution routing)
Tested with live swaps on UST1/USTR after the !1116 deploy. The router picks the genuinely best leg in both directions:
1. Book beats pool → routed to book ✅
A 100 USTR → UST1 swap went through the router hybrid op (
hybrid{ pool_input:0, book_input:100e18, max_maker_fills:8 }) and filled 100% from the resting book —book_return_amount≈ 1.0774 UST1,pool_return_amount= 0. On-chain result matched theglobal_v4solver quote (predicted 1.0757, actual 1.0774). Executed from a wallet that doesn't own the resting orders, so it's a genuine third-party book fill.2. Pool beats book → routed to pool ✅
A 5 UST1 → USTR swap correctly routed pool-only (
book_return_amount= 0) because the pool genuinely beat the book quote at that size. Tier-9 discount applied (effective_fee_bps= 9), confirming the #535 registry too.Frontend
Production
dex.cl8y.com(rebuilt 2026-08-22) callsGET /api/v1/route/solve?…&max_maker_fills=8by default from the Market/Swap ticket — no opt-in toggle; the only checkbox left is the risk disclaimer. Matches #596 / !1116. No worse-than-best routes observed across tested sizes (1–1000 UST1, both directions).