Runbooks
Round close package
SEV2 runbook for a stalled or failed Round close-package saga.
Last updated
Round close package (SEV2)
Triggered by: the 10-step CLOSE_PACKAGE_STEPS saga at
apps/api/lib/round-lifecycle.ts reports failed or stalled on
any step. Customer-facing impact: round in closing state without
progressing.
On-call: Primary (cap-table bounded context). Estimated MTTR: 30 minutes - 4 hours depending on failed step.
Stop-the-bleed
- Identify failed step + state:
matter ops round-saga-status --round-id <id> - Capture forensics:
matter ops snapshot-round --round-id <id>
Per-step recovery
verify_readiness failure
Missing precondition (SPA template signed, escrow funded, etc.). Resolution: customer-side action. Email customer with specific missing item.
convert_existing_safes failure
SAFE conversion math edge case. Check apps/api/lib/convertible.ts
computeConversionPrice against the failing SAFE.
issue_preferred_shares failure
Plan headroom exhausted OR authorising resolution missing. Check
apps/api/lib/equity-plan.ts admissibility.
execute_spa / side_letters / indemnification failure
E-sign provider issue. Check signing-envelope state machine (P2.6). Retry via the provider's resume endpoint.
pass_closing_resolutions failure
Resolution-linkage gap. Check
apps/api/lib/resolution-round-linkage.ts for the action ↔
resolution body match.
release_funds_from_escrow failure
Bank API issue. Provider-failover may be needed
(provider-failover.mdx).
update_cap_table failure
Cap-table invariant violated (apps/api/lib/cap-table-invariants.ts).
This is the most critical failure — DO NOT resume blindly. Diagnose
the invariant break first.
seal_round_artefacts failure
This step is non-compensable per close-package.tla. If it
fails forward, the saga halts. Resolution: manual sealing review.
Resume
For compensable failures:
matter ops saga-resume --instance <id>For non-compensable halt:
- Engage the bounded-context owner.
- Two-engineer review of the next step.
- Manual sealing only after invariants verified.
Validate
matter ops verify-round-close --round-id <id>Expected: round state closed, every step succeeded, audit chain
contains round.closed event.
Communicate
- Customer email same-day with current status.
- Internal #incidents updated every 30 minutes.
- Postmortem if MTTR > 2 hours.