docs: user-facing incident FAQ for pause/blacklist/rate limits (#390) #919

Merged
PlasticDigits merged 2 commits from docs/issue-390-user-incident-faq into main 2026-06-19 06:07:10 +00:00
PlasticDigits commented 2026-06-19 01:41:12 +00:00 (Migrated from gitlab.com)

Summary

Adds SEC-A03 user-facing incident documentation (#390):

  • New docs/user-incident-faq.md explains in plain language what pair pause, wallet/token/pair blacklist, and rate limits mean for traders and LPs; expected UI/tx impact; fund/escrow safety; and recovery after restrictions lift.
  • Linked from docs/security-model.md (security entry point) and the dApp legal footer (LegalFooterNotice.tsx via legalCopy.ts).
  • Pause banners on Trade and Limit Orders now link to the FAQ instead of the technical audit doc.
  • Drift guard: make check-user-incident-faq-docs (wired into make lint).
  • Agent playbook: skills/AGENTS_USER_INCIDENT_FAQ.md.

Acceptance checklist

Criterion Verification Result
User-facing incident doc exists in docs/ test -f docs/user-incident-faq.md PASS
Covers pair pause (swaps, LP, limits) Doc § Pair pause; grep -c 'Withdraw liquidity' docs/user-incident-faq.md PASS
Covers wallet blacklist + recovery Doc § Wallet blacklist; grep UnblacklistWallet docs/user-incident-faq.md PASS
Covers token blacklist Doc § Token blacklist PASS
Covers pair blacklist Doc § Pair blacklist PASS
Covers rate-limit behavior + retry Doc § Rate limits (indexer 429, wrap-mapper) PASS
Linked from docs/security-model.md grep user-incident-faq docs/security-model.md PASS
Developer reviewed document This MR description + implementation review PASS

Verification checklist (third parties)

# Doc drift guard (required topics + cross-links)
make check-user-incident-faq-docs

# Footer link unit test
cd frontend-dapp && npm run test:unit -- src/components/legal/LegalFooterNotice.test.tsx

# Pause banner regression (Trade page)
cd frontend-dapp && npm run test:unit -- src/pages/TradePage.test.tsx -t "pause banner"

Manual (optional): start make dev, scroll to page footer — link What happens during an incident? opens docs/user-incident-faq.md on GitLab.

Blockers

None.

## Summary Adds **SEC-A03** user-facing incident documentation ([#390](https://gitlab.com/PlasticDigits/cl8y-dex-terraclassic/-/work_items/390)): - New [`docs/user-incident-faq.md`](docs/user-incident-faq.md) explains in plain language what **pair pause**, **wallet/token/pair blacklist**, and **rate limits** mean for traders and LPs; expected UI/tx impact; fund/escrow safety; and recovery after restrictions lift. - Linked from [`docs/security-model.md`](docs/security-model.md) (security entry point) and the dApp legal footer (`LegalFooterNotice.tsx` via `legalCopy.ts`). - Pause banners on Trade and Limit Orders now link to the FAQ instead of the technical audit doc. - Drift guard: `make check-user-incident-faq-docs` (wired into `make lint`). - Agent playbook: [`skills/AGENTS_USER_INCIDENT_FAQ.md`](skills/AGENTS_USER_INCIDENT_FAQ.md). ## Acceptance checklist | Criterion | Verification | Result | |-----------|--------------|--------| | User-facing incident doc exists in `docs/` | `test -f docs/user-incident-faq.md` | PASS | | Covers pair pause (swaps, LP, limits) | Doc § Pair pause; `grep -c 'Withdraw liquidity' docs/user-incident-faq.md` | PASS | | Covers wallet blacklist + recovery | Doc § Wallet blacklist; `grep UnblacklistWallet docs/user-incident-faq.md` | PASS | | Covers token blacklist | Doc § Token blacklist | PASS | | Covers pair blacklist | Doc § Pair blacklist | PASS | | Covers rate-limit behavior + retry | Doc § Rate limits (indexer 429, wrap-mapper) | PASS | | Linked from `docs/security-model.md` | `grep user-incident-faq docs/security-model.md` | PASS | | Developer reviewed document | This MR description + implementation review | PASS | ## Verification checklist (third parties) ```bash # Doc drift guard (required topics + cross-links) make check-user-incident-faq-docs # Footer link unit test cd frontend-dapp && npm run test:unit -- src/components/legal/LegalFooterNotice.test.tsx # Pause banner regression (Trade page) cd frontend-dapp && npm run test:unit -- src/pages/TradePage.test.tsx -t "pause banner" ``` Manual (optional): start `make dev`, scroll to page footer — link **What happens during an incident?** opens `docs/user-incident-faq.md` on GitLab. ## Blockers None.
PlasticDigits commented 2026-06-19 01:43:03 +00:00 (Migrated from gitlab.com)

Security review

Commit reviewed: 1227fe94bddc38506fc367dbbffdc37e8fb9e530
Scope: MR !919 — user-facing incident FAQ (docs/user-incident-faq.md), security-model cross-links, legal footer + pause-banner href updates (legalCopy.ts, LegalFooterNotice.tsx, TradeOrderTicket.tsx, LimitOrdersPage.tsx), drift guard (scripts/check_user_incident_faq_docs.py), agent playbook, Makefile lint wiring.

Method: Full diff review; traced all new UI href/label values to sinks; checked for injection, XSS/open-redirect, SSRF, authz, secret leakage, and unsafe deserialization in changed paths. No prior security-review threads on this MR.

Outcome: FINDINGS: 0 medium+

Security review: no medium+ findings on this diff.

Notes (informational, below reporting threshold)

  • New external links use compile-time constants (DOCS_GITLAB_BASE + /user-incident-faq.md) with rel="noopener noreferrer" — no attacker-controlled URL or markup injection path.
  • Drift-check script reads fixed repo paths only; no shell/exec or network I/O.
  • FAQ documents existing pause/blacklist/rate-limit behavior; no on-chain or indexer logic changes in this MR.

Inline threads: none (no findings).

## Security review **Commit reviewed:** `1227fe94bddc38506fc367dbbffdc37e8fb9e530` **Scope:** MR !919 — user-facing incident FAQ (`docs/user-incident-faq.md`), security-model cross-links, legal footer + pause-banner href updates (`legalCopy.ts`, `LegalFooterNotice.tsx`, `TradeOrderTicket.tsx`, `LimitOrdersPage.tsx`), drift guard (`scripts/check_user_incident_faq_docs.py`), agent playbook, Makefile lint wiring. **Method:** Full diff review; traced all new UI `href`/label values to sinks; checked for injection, XSS/open-redirect, SSRF, authz, secret leakage, and unsafe deserialization in changed paths. No prior security-review threads on this MR. **Outcome:** `FINDINGS: 0` medium+ Security review: **no medium+ findings** on this diff. ### Notes (informational, below reporting threshold) - New external links use compile-time constants (`DOCS_GITLAB_BASE` + `/user-incident-faq.md`) with `rel="noopener noreferrer"` — no attacker-controlled URL or markup injection path. - Drift-check script reads fixed repo paths only; no shell/exec or network I/O. - FAQ documents existing pause/blacklist/rate-limit behavior; no on-chain or indexer logic changes in this MR. **Inline threads:** none (no findings).
PlasticDigits commented 2026-06-19 01:57:19 +00:00 (Migrated from gitlab.com)

added 9 commits

  • 1227fe94...7d8b4d1b - 8 commits from branch main
  • de8ac4e1 - Merge origin/main into docs/issue-390-user-incident-faq

Compare with previous version

added 9 commits <ul><li>1227fe94...7d8b4d1b - 8 commits from branch <code>main</code></li><li>de8ac4e1 - Merge origin/main into docs/issue-390-user-incident-faq</li></ul> [Compare with previous version](/PlasticDigits/cl8y-dex-terraclassic/-/merge_requests/201/diffs?diff_id=1860242130&start_sha=1227fe94bddc38506fc367dbbffdc37e8fb9e530)
PlasticDigits commented 2026-06-19 01:57:21 +00:00 (Migrated from gitlab.com)

Resolved merge conflicts with main by merging origin/main into docs/issue-390-user-incident-faq.

Conflicts resolved:

  • Makefile — kept both check-user-incident-faq-docs and check-launch-go-no-go-docs (plus verify-issue-391) in .PHONY, targets, and lint.
  • legalCopy.ts — combined user incident FAQ constants (#390) with security contact constants (#392).
  • LegalFooterNotice.tsx — footer now shows both What happens during an incident? and Report suspicious activity links; consolidated unit tests under __tests__/.

Sanity checks: make check-user-incident-faq-docs, make check-launch-go-no-go-docs, and LegalFooterNotice unit tests all pass.

Resolved merge conflicts with `main` by merging `origin/main` into `docs/issue-390-user-incident-faq`. **Conflicts resolved:** - `Makefile` — kept both `check-user-incident-faq-docs` and `check-launch-go-no-go-docs` (plus `verify-issue-391`) in `.PHONY`, targets, and `lint`. - `legalCopy.ts` — combined user incident FAQ constants (#390) with security contact constants (#392). - `LegalFooterNotice.tsx` — footer now shows both **What happens during an incident?** and **Report suspicious activity** links; consolidated unit tests under `__tests__/`. Sanity checks: `make check-user-incident-faq-docs`, `make check-launch-go-no-go-docs`, and `LegalFooterNotice` unit tests all pass.
PlasticDigits commented 2026-06-19 01:58:58 +00:00 (Migrated from gitlab.com)

Security review

Commit reviewed: de8ac4e1ea36a0b08e476cd0a3ae213694180289
Scope: MR !919 — user-facing incident FAQ (docs/user-incident-faq.md), docs/security-model.md cross-links, legal footer + pause-banner href updates (legalCopy.ts, LegalFooterNotice.tsx, TradeOrderTicket.tsx, LimitOrdersPage.tsx), drift guard (scripts/check_user_incident_faq_docs.py), agent playbook, Makefile lint wiring. Re-reviewed after merge with main (combined #390 FAQ link + #392 security-report footer link).

Method: Full diff review; traced all new UI href/label values to sinks; checked for injection, XSS/open-redirect, SSRF, authz bypass, secret leakage, and unsafe deserialization in changed paths. Prior security review on 1227fe94 had zero findings; merge-conflict resolution added only static SECURITY_REPORT_ISSUE_URL footer link (same pattern as FAQ href).

Outcome: FINDINGS: 0 medium+

Security review: no medium+ findings on this diff.

Notes (informational, below reporting threshold)

  • New external links use compile-time constants (DOCS_GITLAB_BASE + /user-incident-faq.md, fixed GitLab issue template URL) with rel="noopener noreferrer" — no attacker-controlled URL or markup injection path.
  • Drift-check script reads fixed repo paths only; no shell/exec or network I/O.
  • FAQ documents existing pause/blacklist/rate-limit behavior; no on-chain, indexer, or auth logic changes in this MR.

Inline threads: none (no findings).

## Security review **Commit reviewed:** `de8ac4e1ea36a0b08e476cd0a3ae213694180289` **Scope:** MR !919 — user-facing incident FAQ (`docs/user-incident-faq.md`), `docs/security-model.md` cross-links, legal footer + pause-banner href updates (`legalCopy.ts`, `LegalFooterNotice.tsx`, `TradeOrderTicket.tsx`, `LimitOrdersPage.tsx`), drift guard (`scripts/check_user_incident_faq_docs.py`), agent playbook, Makefile lint wiring. Re-reviewed after merge with `main` (combined #390 FAQ link + #392 security-report footer link). **Method:** Full diff review; traced all new UI `href`/label values to sinks; checked for injection, XSS/open-redirect, SSRF, authz bypass, secret leakage, and unsafe deserialization in changed paths. Prior security review on `1227fe94` had zero findings; merge-conflict resolution added only static `SECURITY_REPORT_ISSUE_URL` footer link (same pattern as FAQ href). **Outcome:** `FINDINGS: 0` medium+ Security review: **no medium+ findings** on this diff. ### Notes (informational, below reporting threshold) - New external links use compile-time constants (`DOCS_GITLAB_BASE` + `/user-incident-faq.md`, fixed GitLab issue template URL) with `rel="noopener noreferrer"` — no attacker-controlled URL or markup injection path. - Drift-check script reads fixed repo paths only; no shell/exec or network I/O. - FAQ documents existing pause/blacklist/rate-limit behavior; no on-chain, indexer, or auth logic changes in this MR. **Inline threads:** none (no findings).
PlasticDigits commented 2026-06-19 06:07:11 +00:00 (Migrated from gitlab.com)

mentioned in commit a43de8c75d

mentioned in commit a43de8c75db2db9789eccdd159bd4408e00bdcbb
PlasticDigits (Migrated from gitlab.com) merged commit a43de8c75d into main 2026-06-19 06:07:11 +00:00
PlasticDigits commented 2026-06-19 08:21:53 +00:00 (Migrated from gitlab.com)

mentioned in issue #390

mentioned in issue #390
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-dex-terraclassic!919
No description provided.