# Postmortems and Incident Reports With the Graphs Still In Them

Canonical: https://commareports.com/for/sre-teams
Published: 2026-09-11

> The incident review pastes Grafana screenshots into a doc and loses every axis label. Publish the timeline, the dashboards and the profile as one URL responders can annotate.

# Postmortems that keep their evidence

An incident review is an argument about a sequence of events, and the evidence
for it is almost entirely visual: a latency graph, a saturation chart, a
flamegraph, a trace. The standard workflow destroys all of it. Someone
screenshots Grafana at 2am, crops the y-axis off, pastes it into a doc, and
six weeks later nobody can tell whether that spike was 200ms or 2s.

Then the dashboard's snapshot expires, and the only remaining record is the
cropped PNG.

## Publish the artifacts, link them from the writeup

The postmortem document can live wherever your team already writes — wiki,
repo, ticket. What it needs is working links to things that _render_:

- [Grafana dashboards](/share-grafana-dashboard) ·
  [Kibana](/share-kibana-dashboard) · [Datadog](/share-datadog-dashboard)
- [Flamegraphs](/share-flamegraph) · [Speedscope](/share-speedscope-profile) ·
  [py-spy](/share-py-spy-profile) · [async-profiler](/share-async-profiler-report)
- Load-test evidence: [k6](/share-k6-load-test-report) ·
  [JMeter](/share-jmeter-report) · [Gatling](/share-gatling-report) ·
  [Locust](/share-locust-report) · [Vegeta](/share-vegeta-report)
- [pgBadger](/share-pgbadger-report) for the database side of a bad night.

Scripts run inside a sandboxed iframe, so a flamegraph still zooms and a
dashboard export still shows its tooltips. That is the whole point: the thing
being argued about stays inspectable.

## Or publish the whole thing as one report

For a full incident review, the writeup _is_ HTML — generated from a template,
or by an agent from the incident channel — with the graphs inline. One
report, one URL, one place the conversation happens.

Then run the review on the document itself. Anchored comments mean "we'd
already started the rollback by here" attaches to that timestamp in the
timeline, and "this is the wrong root cause" attaches to the claim it
disputes. See [commenting on HTML](/comment-on-html).

Blameless review works better when the disagreement is visibly _about a line_
rather than about a person in a meeting.

## During the incident, not just after

An incident report is not a one-shot document. Publish it early and revise the
same report as facts change:

```bash
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$INCIDENT_REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d @incident.json
```

One link goes in the status channel at minute five and stays correct at hour
three. Nobody asks which of the four documents is current, because there is
one address.

## Standing digests

Error-budget burn, weekly reliability summaries, monthly capacity reviews:
these are [routines](/features/routines) — a schedule, a regeneration, a
revision at the same URL. See
[scheduled HTML reports](/features/routines/scheduled-html-reports) and
[weekly analytics digest](/features/routines/weekly-analytics-digest).

## Worth knowing

- **Retention is yours.** Dashboard snapshots and CI artifacts expire on
  someone else's schedule; a published report doesn't. See
  [CI artifact expired](/fix/ci-artifact-expired).
- **Private first.** Incident writeups name customers, internal hostnames and
  sometimes people. Publish private, widen to the team, and decide separately
  whether a redacted version goes public — see
  [sharing & access control](/docs/sharing).
- **Readers are free.** Support, sales engineering and execs who only read are
  never charged.
- **Limits.** Entry HTML 5 MB; assets 25 MB per file, 250 MB and 500 files per
  report. Trace exports are the usual file-count offender.

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Start free →](/login)**

### Related

- [For QA engineers](/for/qa-engineers) ·
  [For engineering managers](/for/engineering-managers)
- [Share a profiling report](/share-profiling-report) ·
  [Share a benchmark report](/share-benchmark-report)
- [Publish reports from CI](/ci) · [Troubleshooting](/fix)
