Security: unpause command has no prerequisite root-cause or risk-acceptance checklist [SEC-G07] #440
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#440
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?
Summary
docs/runbooks/blacklist-decision.mdhas a thorough 7-step "False-positive rollback" checklist that requires documented root cause (step 2: "document reversal reason") and funds-at-risk confirmation (step 3) before executing anyUnblacklist*governance message. However,docs/runbooks/emergency-commands.mdsection 2 (Unpause a pair) presents the unpause command with no analogous prerequisite checklist. An operator can reach the unpause command without passing any gate that requires root cause identification or explicit risk acceptance. The two restore paths (unblacklist and unpause) have asymmetric prerequisite documentation.What Was Checked
docs/runbooks/blacklist-decision.mdlines 115-127: "False-positive rollback" section. 7 steps: preserve evidence, document reversal reason, confirm no funds at risk, log in incident timeline, execute Unblacklist, comms, post-incident. Root cause required at step 2. Confirmed by direct read.docs/runbooks/emergency-commands.mdlines 87-107: section 2 "Unpause a pair". Contains the governance execute command and a post-confirmation query. The global "Before you broadcast" header (lines 9-16) requires: confirm governance key, fill parameters, dry-run on staging, record tx hashes. No step requires documenting root cause, confirming the exploit is resolved, or obtaining explicit risk acceptance before restoring trading.Expected (per checklist)
Both restore paths (unpause and unblacklist) must require root cause documentation or explicit risk acceptance before the restore governance tx is broadcast. The runbook for unpause must include a prerequisite checklist equivalent to the blacklist rollback checklist: document why trading was paused, confirm the condition is resolved, confirm no funds are at risk, log the decision.
Actual
Unblacklist: covered. A 7-step rollback checklist in
blacklist-decision.mdrequires root cause and funds-at-risk confirmation.Unpause: not covered.
emergency-commands.mdsection 2 presents the unpause command with no prerequisite requiring root cause or risk acceptance. An operator can unpause without documented confirmation that the incident condition is resolved.Evidence
docs/runbooks/blacklist-decision.mdlines 115-127: unblacklist has 7-step rollback checklist with root cause required at step 2docs/runbooks/emergency-commands.mdlines 87-107: unpause command with no prerequisite checklist beyond governance key confirmation and dry-runSuggested Fix
Add a Before you unpause checklist to section 2 of
docs/runbooks/emergency-commands.md, mirroring the structure of the blacklist rollback checklist: (1) document why the pair was paused (incident reference or issue link); (2) confirm the triggering condition is resolved (attach evidence: tx traces, contract state reads); (3) confirm no funds are at risk if trading resumes; (4) log the unpause decision in the incident timeline with approver and UTC timestamp; (5) then execute the governance unpause command. Link the blacklist rollback checklist for cross-reference so both restore paths are symmetrically gated.Verification Checklist
emergency-commands.mdsection 2 includes a prerequisite checklist requiring: documented incident reference, resolution confirmation, funds-at-risk check, incident timeline entry, and approverblacklist-decision.mdLabels
security,pre-launchCc: @PlasticDigits
mentioned in issue #381
mentioned in commit
dc26e35f45mentioned in merge request !967
Verified #440 (fix/440-unpause-prerequisite-checklist).
emergency-commands.md section 2 now opens with a "Before you unpause (mandatory)" 8-step gate: preserve evidence, document rationale with incident link, confirm triggering condition resolved, confirm no funds at risk, log timeline with approver + UTC, execute governance set_pair_paused:false, comms, post-incident. That hits every required item (incident ref, resolution, funds-at-risk, timeline entry, approver) and mirrors the blacklist false-positive rollback checklist, with bidirectional cross-links between the two restore paths.
Docs/runbook-only, no code. Verified on my side — @PlasticDigits good to merge !967 + close.
mentioned in commit
9fcb468bc9mentioned in commit
114d10b79dmentioned in merge request !968
Verification — #440 (SEC-G07 unpause prerequisite checklist)
Verified on
mainafter merge of !967. No repo changes required from this verification pass.Acceptance criteria
emergency-commands.md§ 2 includes prerequisite checklist (incident reference, resolution confirmation, funds-at-risk, timeline entry, approver)docs/runbooks/emergency-commands.mdlines 160–173: Before you unpause (mandatory) 8-step gate precedes theset_pair_pausedexecute block; steps 2–5 cover rationale/incident link, resolution evidence, funds-at-risk, and timeline entry with approver + UTC.blacklist-decision.mdblacklist-decision.md#false-positive-rollback-unblacklist↔emergency-commands.md#2-unpause-a-pair).Automated checks
Steps exercised: doc invariant, prerequisite heading, incident/approver markers, resolution + funds-at-risk markers, symmetric cross-links,
skills/AGENTS_EMERGENCY_COMMANDS.mdSEC-G07 gate,docs/security-model.mdSEC-G07 link.Manual review
terrad tx wasm executecommand in § 2.blacklist-decision.mdFalse-positive rollback section cross-links to unpause § 2.Closing as verified.