Security: no user-facing incident explanation for pause/blacklist/rate-limit states and missing link from security docs [SEC-A03] #390
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#390
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?
Checklist Item
SEC-A03: Add a "what happens during an incident" explanation: pause/blacklist/rate-limit actions, expected user impact, and how funds/LP positions are handled. Verify: runbook or FAQ reviewed by developer and linked from security docs.
Summary
All incident-related documentation in the repo is either admin-facing, integration-reference, or terse technical invariants. There is no single user-facing document explaining what pause, blacklist, and rate-limit mean for a regular user, how their funds and LP positions are handled during each state, or what to do when the restriction is lifted. Nothing matching this description is linked from the security docs.
What Was Checked
docs/security-model.md-- technical governance/admin doc, not user-facingdocs/contracts-security-audit.md-- invariant L6 documents pause mechanics for developers, not usersdocs/adr/0003-governance-trading-blacklist.md-- ADR explaining blacklist design, admin-focuseddocs/limit-orders.md-- pause section covers limit order freeze mechanics for integratorsdocs/templates/incident-dex-indexer.md-- internal incident command template for admin triagedocs/integrators.md-- integration reference, not user communicationdocs/runbooks/-- all runbooks are admin operational guidesdocs/security-model.mdchecked for links to any user-facing runbook or FAQ: none foundExpected (per checklist)
A runbook or FAQ must exist that explains in plain user-facing language: what pause, blacklist, and rate-limit do; what the user will see and cannot do during each state; that funds, LP positions, and limit order escrow are safe and recoverable; and what to do when the restriction is lifted. This document must be linked from
docs/security-model.mdor equivalent security entry point.Actual
No such document exists. The closest content is:
frontend-dapp/src/services/terraclassic/blacklist.tslines 39-53: inline UI strings ("Swaps, liquidity, and limit orders are disabled until governance removes the restriction") -- not a standalone docfrontend-dapp/src/components/trade/TradeOrderTicket.tsxlines 674-675: pause banner copy referencing invariant L6 and a GitLab issue number -- not user-readabledocs/contracts-security-audit.md: invariant L6 states "parked expired escrow stays in EXPIRED_LIMIT_CLAIMS until unpause" -- technical invariant, not user guidanceNone of these are linked from security docs or surfaced as a user-readable FAQ.
Evidence
docs/security-model.md: no link to incident FAQ or user-facing runbookdocs/runbooks/launch-checklist.md: admin deploy checklist only, no user impact sectiondocs/templates/incident-dex-indexer.md: internal triage template, no user communication sectiondocs/directory: no file named faq.md, incident-user-guide.md, or equivalentfrontend-dapp/src/: no modal, page, or help component explaining incident impact to users beyond inline button/banner copySuggested Fix
Create a user-facing incident FAQ or runbook section (could be a new
docs/user-incident-faq.mdor a section added todocs/security-model.md) covering:Link this document from
docs/security-model.mdand fromLegalFooterNotice.tsx(or the security posture page once Issue 1 is resolved).Verification Checklist
Steps to confirm the fix is complete and the checklist item can be marked done.
docs/docs/security-model.mdLabels
~security ,
pre-launchCc: @PlasticDigits
mentioned in issue #381
mentioned in commit
1227fe94bdmentioned in merge request !919
mentioned in commit
a43de8c75dmentioned in merge request !915
Verification complete — SEC-A03 (#390)
Verified on
mainat13900236(merged via !919). No additional repo changes required.Acceptance checklist
docs/test -f docs/user-incident-faq.mdgrep 'Withdraw liquidity|Limit order escrow'grep UnblacklistWalletdocs/security-model.mdgrep user-incident-faq docs/security-model.md(2 links)Automated checks
Cross-links confirmed
docs/security-model.md→user-incident-faq.md(entry-point section + blacklist recovery)frontend-dapp/src/components/legal/legalCopy.ts→USER_INCIDENT_FAQ_HREFLegalFooterNotice.tsx,TradeOrderTicket.tsx,LimitOrdersPage.tsx→ FAQ link withnoopener noreferrerscripts/check_user_incident_faq_docs.py(wired inmake lint)skills/AGENTS_USER_INCIDENT_FAQ.mdClosing as complete.
mentioned in issue #387
mentioned in issue #663