feat(#506): /ust1 oracle window mint/redeem UI #1045
No reviewers
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!1045
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/506-ust1-window-ui"
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
/ust1Deposit/Withdraw UI for vFDUSD ↔ UST1 via ust1-window CW20Send+ on-chaineffective_swapquotes/gates (not AMM router, not faucet/mint).VITE_UST1_*env, token registry + logos, andUST1_WINDOW_SEND_GAS_LIMITretail gas inventory.docs/runbooks/ust1-window-ui.mdand agent playbookskills/AGENTS_UST1_WINDOW_UI.md(cross-linked from AGENTS.md / shell-nav / soft-launch / gas skills).Closes #506
Test plan
make verify-issue-506(math, gates, client, page, nav, retail gas + source guards)make lint-frontend(no new errors)VITE_UST1_*(Dockerfile defaults present)effective_swapvs UI quotementioned in issue #506
RECOMMEND: FIX
Thorough review of MR !1045 (
feat(#506): /ust1 oracle window mint/redeem UI) against issue #506 acceptance criteria, attack/abuse table, verification checklist, and a security/gap pass over the changed surface (frontend-only; no indexer/DB/Rust/smart-contract code in this MR).Verified locally:
make verify-issue-506→ PASS (5/5 checks, 58 unit tests). Branch tip reviewed:962fe51.Verdict
Ship-quality core: dedicated
/ust1, CW20Sendto ust1-window only, LCDeffective_swapquote/gates, faucet separation, Coolify env docs, retail gas inventory (UST1_WINDOW_SEND_GAS_LIMIT800k), and solid unit coverage.Not ACCEPT yet because #506 ACs / test plan still have material gaps (on-page logos, Playwright disabled-state coverage, mainnet smoke, withdraw min-out disclosure). Not BLOCK: no medium+/critical security findings; chain remains the authority for pause/stale/limits/economics.
Issue #506 acceptance criteria
/ust1mint/redeem UI ≠ faucetApp.tsx/ust1→Ust1Page; Deposit/Withdraw; copy distinguishes AMM/faucet/mintUST1_NAV_ITEMlabel UST1;includeUst1: isUst1WindowEnabled(); source guards inverify-issue-506effective_swap; CTA pause/stale/per-tx/24hgetUst1EffectiveSwap+evaluateUst1SubmitGate; submit re-check with freshnowSecpayTokenForDirectionhardcodes env addressestokenlist/+ PNGs;Ust1Pagedoes not renderTokenLogo/TokenDisplayVITE_*documented.env.example,docs/runbooks/ust1-window-ui.mdverify-issue-506+ lint reported green in MRVerification checklist (#506)
effective_swapvs UI quote — open (unit math mirrors INV-SWAP; live side-by-side not done)Attack / abuse vectors from #506
Sendto window only.env.exampleempty/mintspoofing UST1Security audit (changed code)
Scope: Frontend UI/client/docs/tokenlist only. No Rust indexer, Postgres, or CosmWasm contract changes in this MR — database-leak and on-chain privilege reviews are N/A for the diff (upstream ust1-window/oracle assumed already deployed).
Findings
ust1Window.ts(~96–103),Ust1Page.tsxmin_vfdusd_outhaircut (UST1_WITHDRAW_MIN_OUT_SLIPPAGE_BPS=100) not shown in UI — trust/UX surprise, not theftust1Window.tsdeposit pathmin_out; rate can move between quote display and inclusion (contract design). UI should set expectationsUst1Page.tsxnowSecust1Window.tsgetUst1WindowConfigconfigterraGas.tsdeposit/withdraw hook namessendwith those inner keys gets 800k gas — overpay-safe, not underpayNo medium/high/critical issues found for: authorization bypass, XSS, CW20 hook injection, wrong-token UI path, faucet conflation, prompt injection in runtime paths, or client-gate bypass that enables fund theft (chain still enforces).
Threat areas requested
fee_chain_tax_bps/fee_cmm_protocol_bps) unusedfrontend-dapp/e2efor/ust1(issue asked for disabled-state coverage)Gap analysis
Features / retail expectations
Present: Deposit/Withdraw tabs, fee %, per-tx max, 24h remaining, oracle Fresh/Stale/Paused, Max balance, receive quote debounce, broadcast pending link, gas footnote, unavailable state when env incomplete.
Missing / weak (user-expected):
getExplorerTxUrl/TxResultAlertpattern used elsewhere)oracle_paused/per_tx_limit/rolling_limitUI (gates unit-tested; page only covers pause/stale/happy)UI/UX
Aligned with retail copy / shell-panel patterns and low cognitive load. Weaker token identity vs Swap/Trade (no logos). Clear faucet/AMM disambiguation — good.
Testing
Packages / DRY / gas / practices
ust1WindowMath/Gates/ client / page).isUst1WindowEnabled.effective_swapwould reduce quote/execute drift (defense-in-depth).Required fixes before ACCEPT (or track tightly before closing #506)
TokenLogo/ token display on Pay & Receive (satisfies AC #6 on-page)./ust1disabled CTA: paused, stale, over per-tx/24h; enabled when healthy.oracle_paused,per_tx_limit,rolling_limitblock copy.Nice-to-have
configcross-check in QA script; fresheffective_swapat submit.Summary
Core #506 implementation is sound and security posture is appropriate for a frontend oracle window. Recommend FIX for logos, Playwright/disabled-state coverage, slippage disclosure, and completing mainnet verification before treating #506 as closed. No BLOCK-level security defects in the MR diff.
added 1 commit
cfd6f13d- fix(#506): logos, withdraw min-out disclosure, and /ust1 gate e2eCompare with previous version
added 4 commits
main12be42ce- merge(main): integrate #507 wrap UX into #506 branchCompare with previous version
mentioned in commit
361cd8083cmentioned in issue #508