Skip to content

Post-Mortems

Alga provides a structured, blameless post-mortem workflow for incidents, with review/approval processes and trackable action items. Each post-mortem is linked 1:1 to an incident (incident_id is unique).

Post-Mortem Lifecycle

draft → in_review → approved → published
StatusDescription
draftInitial creation, being written
in_reviewSubmitted for review
approvedReviewed and approved (records approved_by_id)
publishedPublicly visible (records published_at)

Allowed transitions: draft → in_review; in_review → draft or approved; approved → in_review or published. published is terminal — published post-mortems cannot be edited or reverted (PATCH returns 409). Submitting for review requires blameless_confirmed to be set and notifies the incident commander that a review is requested.

Content Fields

A post-mortem includes the following fields:

FieldDescription
titlePost-mortem title
summaryBrief description of what happened
timelineKey events during the incident (structured JSON)
root_causeTechnical explanation
contributing_factorsAdditional factors that contributed (list)
impactDuration, affected services, user impact
what_went_wellThings that worked during the response
what_went_wrongThings that did not work or could be improved
lessons_learnedWhat was learned and what could be improved
blameless_confirmedAcknowledgement that the review is blameless
blameless_notesNotes supporting the blameless confirmation

AI Draft Builder

When an incident is resolved, Alga can auto-create a post-mortem draft pre-populated from incident context — the incident document sections, coordination messages, timeline entries, status updates, and linked alerts. The same enrichment logic backs both the operator resolve flow and the agent resolve tool.

Action Items

Action items are tracked per post-mortem and can be assigned, prioritized, and driven to completion.

FieldDescription
descriptionWhat needs to be done (required)
typeKind of follow-up (prevent, mitigate, detect, investigate; defaults to investigate)
assignee_id / assignee_nameUser responsible (assignee_id must reference an existing user; reassignment notifies the new assignee)
statusopenin_progresscompleted (or cancelled; defaults to open)
priorityPriority level (low, medium, high; defaults to medium)
due_dateTarget completion date — RFC3339 timestamp or YYYY-MM-DD (interpreted as end of day UTC)

Action item mutations are scoped to the path incident: an item id from a different incident's post-mortem returns 404. Overdue items (due date in the past, not completed/cancelled) are detected by a background sweep every 5 minutes; the sweep emits an action_item_overdue SSE event and notifies the assignee at most once per item per 24 hours.

View all open action items globally at GET /api/v1/action-items (sorted by due date, undated items last).

Workflow

  1. Create the post-mortem (auto-drafted on resolve, or created manually)
  2. Edit content as needed (while in draft; editing is allowed in any non-published state)
  3. Submit for Review — moves to in_review and notifies the commander (requires blameless_confirmed)
  4. Approve — moves to approved and records the approver
  5. Publish — moves to published (immutable)
  6. Track Action Items — ensure follow-up tasks are completed
  7. Revertin_review/approved post-mortems can be returned to draft (or approved to in_review) via POST …/revert-to-draft / POST …/revert-to-review

API Endpoints

Post-Mortem Management

MethodPathAuthPermissionDescription
GET/api/v1/post-mortemsSessionpostmortems:readList all post-mortems
GET/api/v1/incidents/{id}/post-mortemSessionpostmortems:readGet post-mortem
POST/api/v1/incidents/{id}/post-mortemSessionpostmortems:writeCreate post-mortem
PATCH/api/v1/incidents/{id}/post-mortemSessionpostmortems:writeUpdate post-mortem (409 when published)
DELETE/api/v1/incidents/{id}/post-mortemSessionpostmortems:deleteDelete post-mortem

{id} accepts either the incident number or the incident UUID.

Workflow Actions

MethodPathAuthPermissionDescription
POST/api/v1/incidents/{id}/post-mortem/submit-reviewSessionpostmortems:writeSubmit for review (in_review)
POST/api/v1/incidents/{id}/post-mortem/revert-to-draftSessionpostmortems:writeReturn in_review/approved to draft
POST/api/v1/incidents/{id}/post-mortem/revert-to-reviewSessionpostmortems:writeReturn approved to in_review
POST/api/v1/incidents/{id}/post-mortem/approveSessionpostmortems:writeApprove post-mortem
POST/api/v1/incidents/{id}/post-mortem/publishSessionpostmortems:writePublish post-mortem

Action Items

MethodPathAuthPermissionDescription
GET/api/v1/incidents/{id}/post-mortem/action-itemsSessionpostmortems:readList action items
POST/api/v1/incidents/{id}/post-mortem/action-itemsSessionpostmortems:writeCreate action item
PATCH/api/v1/incidents/{id}/post-mortem/action-items/{itemId}Sessionpostmortems:writeUpdate action item
DELETE/api/v1/incidents/{id}/post-mortem/action-items/{itemId}Sessionpostmortems:deleteDelete action item

Global Action Items

MethodPathAuthPermissionDescription
GET/api/v1/action-itemsSessionpostmortems:readAll open action items

See Also

Released under the MIT License.