feat(#503): UST1/wrap production ops registry, health checks, pause playbooks #1048
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!1048
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/503-ust1-wrap-ops-hardening"
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
deployments/mainnet-ust1-wrap/(no secrets).make check-ust1-wrap-ops-health) covering oracle age/pause, wrap pause, treasury wrapping pause, vFDUSD balance/allowance, wrap solvency, wrap-mapperrate_limit.AGENTS_UST1_WRAP_PRODUCTION_OPS.md;make verify-issue-503.Refs #503 for in-repo acceptance. Do not treat merge as full issue close — live oracle pager evidence, columbus-5 pause drill, and Coolify frontend
VITE_*parity still need operator attach on the issue.Test plan
make verify-issue-503(docs/script gates, O1–O8)VERIFY503_MAINNET=1 make verify-issue-503(live LCD; WARNs on low vFDUSD balance/allowance expected today)make check-ust1-wrap-ops-healthwrap-mapper-pause.mddeployments/mainnet-ust1-wrap/coolify.env.exampleReview follow-ups landed (
f8bc750)set_pausedplaybook (A2) + treasury privilege label fixUST1_OPS_STRICT_INVENTORY=1, empty bank LCD hard-fail, rate_limit probelaunch-checklist.mdUST1/wrap go/no-go extras; fee_bps doc drift (live 200)mentioned in issue #503
RECOMMEND: FIX
Thorough review of MR 330 (
feat/503-ust1-wrap-ops-hardening) against #503 acceptance/verification criteria, security surfaces (secrets, access control, agent prompt injection, health-script attack surface, DeFi/ops attack response coverage), and gap analysis (features, testing, DRY, UX, packages).Scope note: This MR is docs/scripts/deployments only (+922 / 23 files). No smart-contract, indexer, or frontend code changes — appropriate for Phase 5 ops hardening. Live contract/economic security of UST1/wrap is out of band except where this MR documents operator response.
Verification performed
make verify-issue-503VERIFY503_MAINNET=1 make verify-issue-503SetPaused+ treasurySetWrappingPausedmatch; ust1-window unverified upstream (doc caveat OK)#503 acceptance / verification checklist
deployments/mainnet-ust1-wrap/check-ust1-wrap-ops-health.shverify_oracle_operator_envdocumentedlaunch-checklist.md“Closes #503” is premature for full issue sign-off. In-repo acceptance is close, but leave #503 open (or use a non-closing reference) until operator evidence is attached. Prefer
Refs #503/ issue comment for remaining gates, or keep Closes only if GitLab workflow intentionally closes and reopens — currently the description overclaims.Security audit
No BLOCK findings
VITE_*onlyset -euo pipefail, jq-built messages, no eval); no DB stringsAGENTS_UST1_WRAP_PRODUCTION_OPS.mdprioritizes read-only probes / no secrets — low prompt-injection riskemergency-commands.mdscope guard is correctFIX before merge (doc correctness / ops safety)
set_paused/set_wrapping_paused. Treasury usesset_wrapping_pausedonly;set_pausedis window/wrap-mapper. Fix the table.rate_limitquery (+ raise-cap pointer or explicit deferral to ustr-cmm).verify-issue-503.sh/ Makefile / commit framing still say O1–O7 and only grep O1–O7. Align automation + docs.0(LOW) — empty bank response coerced to0can false-pass solvency if CW20 supply also fails to0. Treat empty bank as hard FAIL.launch-checklist.mdcross-link (LOW) — wire #503 go/no-go extras so launch gates are discoverable from the canonical checklist.Residual / out-of-MR (not merge blockers for docs, but launch blockers)
UST1_OPS_STRICT_INVENTORY=1for launch gates (today WARN still exits 0).Surfaces correctly N/A for this diff
make smoke-wrap-mapper-pauseGap analysis (non-security)
AGENTS_MAINNET_WRAP_ENABLEMENTW4 / QA template)Required fixes for ACCEPT
set_wrapping_pausedonly.verify-issue-503.sh/ Makefile comments (and AGENTS blurb if needed).launch-checklist.md; harden empty bank LCD to FAIL; add wraprate_limitread example.After those doc/script nits, this is merge-ready for in-repo Phase 5 ops hardening. Not a security BLOCK.
RECOMMEND: FIX
Follow-up review incorporating operator-supplied Coolify oracle-service env (no application log lines were attached in the review thread — env-only). This does not replace the prior FIX findings on MR docs (oracle pause playbook, treasury
set_pausedmislabel, O8 drift, premature full #503 close).Coolify evidence scope
VITE_*deployments/mainnet-ust1-wrap/coolify.env.exampleDo not conflate oracle-service env with the frontend registry pack.
Env audit vs registry / #503
ORACLE_CONTRACTterra1fmht0…gch8nREGISTRY.mdTERRA_CHAIN_IDcolumbus-5TERRA_LCD_URLBSC_RPC_URLSBSC_ALLOWED_CHAIN_IDS56VENUS_VTOKEN_ADDRESSPOLL_INTERVAL_SECS3600POLL_INTERVAL_SECS3600ORACLE_MAX_SILENCE_SECS21600(6h)max_oracle_age_sec=21600; conflicts with MR runbook /ust1-wrap-ops-defaults.sh(~28800 / 8h)TERRA_MNEMONICRUST_LOGinfoHEALTHZ_BIND0.0.0.0:8080/healthzis process-up only, not freshness proofTERRA_GAS_PRICE28.325Security: No mnemonic material was exposed in the paste (Coolify lock placeholder only). Public RPC endpoints are fine to share. Residual risks: single Terra LCD, public BSC seeds (mitigated by multi-RPC + chain-id pin), healthz exposure if port is internet-reachable.
#503 acceptance update
last_update(~40m age, under 21600); still want Coolify startup/broadcast logs orverify_oracle_operator_envexit-0 transcript (no secrets)LIVENESS_ORACLE_NO_BROADCASTor equivalent)coolify.env.example0(launch marketing blocker, not MR code)Doc fix amplified by this env
MR text should stop advertising silence as ~8h / 28800 as the production default. Live Coolify + on-chain age policy are 21600. Align:
docs/runbooks/ust1-wrap-production-ops.mdscripts/lib/ust1-wrap-ops-defaults.sh(UST1_OPS_ORACLE_SILENCE_SECS)Otherwise the health probe under-warns relative to the service’s actual silence alert.
Prior FIX items (unchanged, still required)
set_wrapping_pausedonly (notset_paused)verify-issue-503.sh/ Makefilelaunch-checklist.mdlink; empty bank LCD → hard FAIL; wraprate_limitread exampleVerdict
Still FIX. Coolify oracle-service env is a solid config checkpoint and reduces uncertainty on address/RPC/chain pinning, but it does not complete #503 silence-alert verification and does not clear the MR doc correctness items. Please attach redacted Coolify logs (successful poll/broadcast + any silence-alert test) on #503, and fix the 21600 vs 28800 drift in this MR before merge.
Correction to the Coolify env table in the previous note: ignore the garbled
POLL_INTERVAL_SECS/ vToken row.Correct rows:
VENUS_VTOKEN_ADDRESS— PASS (canonical BSC Venus vFDUSD vToken)POLL_INTERVAL_SECS=3600— PASS (≪ORACLE_MAX_SILENCE_SECS=21600)Verdict unchanged: RECOMMEND: FIX.
added 1 commit
f8bc7506- fix(#503): address MR 330 review — oracle pause, O8, silence 21600Compare with previous version
changed the description
Addressed prior RECOMMEND: FIX items in
f8bc750:set_pausedplaybook (governance preflight + upstream DEPLOYMENT link)set_wrapping_pausedonly (notset_paused)rate_limitUST1_OPS_STRICT_INVENTORY=1for launch gateslaunch-checklist.mdUST1/wrap go/no-go extras; fee_bps docs note live 200make verify-issue-503+VERIFY503_MAINNET=1PASS after changes.mentioned in commit
19e12121ad