Skip to content

feat: batch emergency pause timelock, runbook and access matrix - #841

Merged
misrasamuelisiguzor-oss merged 2 commits into
WHEELBACK:mainfrom
orunganiekan:feat/batch-emergency-pause-and-docs
Oct 23, 2026
Merged

misrasamuelisiguzor-oss merged 2 commits into
WHEELBACK:mainfrom
orunganiekan:feat/batch-emergency-pause-and-docs

Conversation

@orunganiekan

Copy link
Copy Markdown
Contributor

Batch: emergency pause timelock, runbook and access matrix

Summary

Single cohesive branch covering the emergency-pause workstream:

  • Add a timelock to resume_all after an emergency pause #780 — resume_all timelock: resume_all(env, admin, min_delay_secs) now enforces a minimum cooling-off period measured from get_emergency_paused_at. 0 means no delay (backward compatible); otherwise now < paused_at + min_delay_secs returns new WorkflowError::ResumeTooEarly = 14. Also adds missing DataKey::AlreadyPaused storage key referenced by the fan-out skip-list.
  • Document emergency pause runbook for settlement-workflow #804 — Incident runbook: new docs/incident-response.md with target configuration (initialize_emergency_pause validation, MAX_PAUSE_TARGETS), triggering emergency_pause_all (all-or-nothing), verification (get_emergency_paused_at + per-target is_paused), and resuming with min_delay_secs CLI commands, plus failure-mode table.
  • Update access-control matrix for operators, timelock and emergency pause #805 — Access-control matrix: docs/access-control-matrix.md audited against all pub fns; adds multi-operator (add/remove/get_operators), timelocked signer changes (propose/execute/cancel_signer_change, list_pending_signer_changes, get_timelock_delay), emergency pause (initialize/emergency_pause_all/resume_all + getters, update_contract_ids, pause/unpause/is_paused, simulate_with_compliance), treasury admin/expiry/compliance-ID/transfer/emergency-withdraw/hold-expiry/approvals reads, compliance tier/jurisdiction/migrate/blocklist-root/proof/pause-reason/history/sweep-operator-widening, and invoice templates/transfer/refund/config entrypoints.

Changes

  • contracts/settlement-workflow/src/lib.rs: ResumeTooEarly = 14, DataKey::AlreadyPaused, resume_all signature + delay check + docs.
  • docs/incident-response.md: new (144 lines).
  • docs/access-control-matrix.md: expanded invoice/treasury/compliance/workflow tables + legend.

Verification

No builds or tests run per task constraints. Reviewed by reading:

  • contracts/settlement-workflow/src/lib.rs (WorkflowError, DataKey, resume_all, emergency_pause_all, validate_pause_targets)
  • docs/deployment-runbook.md CLI style, docs/event-schema.md, docs/alerting-guide.md
  • grep pub fn across all four contracts + require_admin/require_auth checks for matrix categories.

Markdown and Rust edits cross-checked for syntax, formatting, and spec alignment.

Closing

Closes #804
Closes #805
Closes #780

- WHEELBACK#780: resume_all cooling-off delay (min_delay_secs, ResumeTooEarly)
- WHEELBACK#804: emergency pause incident runbook with CLI
- WHEELBACK#805: access matrix for operators, timelock, emergency pause, templates
@drips-wave

drips-wave Bot commented Oct 19, 2026

Copy link
Copy Markdown

@orunganiekan Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@misrasamuelisiguzor-oss
misrasamuelisiguzor-oss merged commit 406614a into WHEELBACK:main Oct 23, 2026
5 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants