Skip to content

fix/feat: runbook, pause banner, dispute events, is_terminal docs#581

Merged
Haroldwonder merged 3 commits into
Haroldwonder:mainfrom
Markodiba6399:fix/483-485-528-529-runbook-pause-banner-dispute-events
Apr 28, 2026
Merged

fix/feat: runbook, pause banner, dispute events, is_terminal docs#581
Haroldwonder merged 3 commits into
Haroldwonder:mainfrom
Markodiba6399:fix/483-485-528-529-runbook-pause-banner-dispute-events

Conversation

@Markodiba6399
Copy link
Copy Markdown

Closes #483
Closes #485
Closes #528
Closes #529

Summary

#483 — Added RUNBOOK.md covering emergency pause/unpause, admin key rotation via governance proposals, stuck migration handling, webhook replay, storage TTL extension, and escalation contacts/SLA targets. Linked from README.

#485HealthStatus now includes pause_reason (read from the active PauseRecord in circuit breaker storage). ContractHealth.jsx shows a dismissible red banner with the human-readable pause reason, re-appears on the next 60s poll if still paused, and disables transaction buttons while paused. Adds onPausedChange callback prop.

#528is_terminal() in src/types.rs now has a doc comment explicitly clarifying that Failed and Disputed are intentionally excluded — they are transient states with valid outbound transitions. Existing implementation is correct per the state machine.

#529emit_dispute_raised and emit_dispute_resolved refactored to use the standard emit_event``` macro, adding the (SCHEMA_VERSION, ledger_seq, ledger_ts)envelope.emit_dispute_resolvednow includesadminaddress andresulting_status. resolve_disputeinlib.rsupdated accordingly.webhook-handler.tsgainshandleDisputeRaised/handleDisputeResolved` handlers with audit log persistence.

…roldwonder#483 Haroldwonder#485 Haroldwonder#528 Haroldwonder#529)

- Haroldwonder#483: Add RUNBOOK.md covering emergency pause/unpause, admin key
  rotation via governance, stuck migration handling, webhook replay,
  storage TTL extension, and escalation contacts/SLA targets.
  Linked from README documentation section.

- Haroldwonder#485: Surface pause_reason in HealthStatus (health.rs) by reading
  the active PauseRecord from circuit_breaker_storage. ContractHealth.jsx
  now shows a dismissible red status banner with the human-readable pause
  reason, re-appears on next 60s poll if still paused, and disables
  transaction buttons (Withdraw Fees) while paused. Adds onPausedChange
  callback prop for parent components to gate submission buttons.

- Haroldwonder#528: Document in is_terminal() that Failed and Disputed are
  intentionally excluded — they are transient states with valid outbound
  transitions (Failed→Disputed, Disputed→Completed|Cancelled via
  resolve_dispute). Existing implementation is correct per state machine.

- Haroldwonder#529: Refactor emit_dispute_raised and emit_dispute_resolved to use
  the standard emit_event! macro, adding the (SCHEMA_VERSION, ledger_seq,
  ledger_ts) envelope consistent with all other events. emit_dispute_resolved
  now includes admin address and resulting_status symbol. resolve_dispute
  in lib.rs updated to pass caller. webhook-handler.ts gains
  handleDisputeRaised and handleDisputeResolved with audit log persistence
  and routes dispute_raised / dispute_resolved event types.
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 28, 2026

Someone is attempting to deploy a commit to the Harold's projects Team on Vercel.

A member of the Team first needs to authorize it.

Markadrian6399 and others added 2 commits April 28, 2026 14:16
@Haroldwonder Haroldwonder merged commit 378d75d into Haroldwonder:main Apr 28, 2026
8 of 30 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