incident-report
Turn a finished investigation into a polished, browser-viewable HTML report artifact β the kind a stakeholder (often non-engineer, often reading Hebrew/RTL) opens in one click and scans in a minute. Published with the Artifact tool.
This is the render/publish step, downstream of the investigation β it presents a finding that is already established, it does not discover one. Consumes the output of identify-bug (root-cause understanding) and obs-logs (the evidence numbers).
When to useβ
- An incident / postmortem / production-bug writeup, or an investigation result, needs to go to a human (a lead, leadership, a client-facing summary).
- You already have the facts: root cause, evidence (real numbers), impact, timeline, and β if any β the fix.
Not for: an internal handoff doc for whoever fixes it (that is identify-bug, plain markdown), or capturing a decision (that is decision-record).
How to build oneβ
- Start from the template β copy
report-template.html. It carries the full design system (palette, type, every component's CSS) and a section skeleton with<PLACEHOLDER>markers. - Fill placeholders with real data; delete sections that don't apply. Never lorem, never a guessed number. Every count, id, timestamp, and code line is a value you actually verified. A report with invented figures is worse than no report.
- Keep it concise β lead with the verdict; one screenful conveys the gist; detail and long lists go lower or behind a link. See the concise-human-read-text team rule. A report is a briefing, not a transcript.
- Publish with the Artifact tool β a stable emoji
favicon(π / π / π; keep it the same across redeploys), a concise<title>. Re-deploy to the same file path to update in place.
Sections β include what the report needsβ
Numbered in the template where order carries meaning; skip any that don't apply.
- Hero + status chips β eyebrow (doc type Β· env), one-line title of what broke, one-paragraph summary, chips (severity, env, a verified-safe claim, tracker id). Always.
- Executive summary card β the ~4 headline metrics a manager needs (impact count, scope, verified-safe figure, current status). When there are headline numbers.
- Root cause + failure flow β the mechanism, as a numbered
.flowending in a.step.bugmarker at the point of failure; an info note on why it looked healthy. Core of an incident report. - Evidence β hard, verifiable observations (counts, timestamps, id ranges, source components). Proves the cause instead of asserting it.
- Blast radius β the direct hit vs any secondary/adjacent effect. When impact has more than one axis.
- Impact / financial verification β why the feared harm structurally can't happen, then a table comparing the incident window to a baseline, ending in a verdict row. When the reader fears something costlier (money, data loss, duplication).
- Who's affected β technical impact translated into human/customer groups. When real users were touched.
- The fix β paired fix cards (root-cause + defense-in-depth), a
dir="ltr"code snippet, a note on PR / required reviews / recovery. When there is a remedy. - Timeline β horizontal, leftβright, dated nodes (crit for onset, good for resolution). When events unfold over time.
- Footer β evidence sources, verification scope, accurate-as-of date. Always.
- Callout notes β reusable good / crit / info blocks dropped inline anywhere; 1β3 per section, don't overuse.
Hard rules (RTL + artifact safety)β
The template already encodes these; keep them if you hand-edit:
- Whole doc
dir="rtl" lang="he"for Hebrew; use logical (inline) CSS properties so it mirrors. - Code is always
dir="ltr"(blocks and inline<code>) or identifiers scramble on an RTL page. - In Hebrew prose, arrows point β (left), not β.
tabular-numson every aligned digit (tables, metrics, timeline dates).- Wide content (tables, code, timeline, id-lists) scrolls inside its own
overflow-x:auto; the page body never scrolls sideways. - System fonts only β the artifact CSP blocks webfonts; no
@import/<link>for fonts. - Self-contained: one inline
<style>, no external CSS/JS/images/CDN. Author page content directly (leading<div dir="rtl" lang="he" class="page">), no<html>/<head>/<body>(publish-time adds them). - The horizontal timeline is
dir="ltr"(chronology reads leftβright) even on the RTL page; flip only the per-node label back todir="rtl".
Semantic status color is fixed: crit = red (damage/failure), good = green (verified-safe/resolved), info/accent = blue (neutral explanation), warn = amber (caution). It is separate from any brand accent.
Referencesβ
report-template.htmlβ the copy-paste starting point (design system + section skeleton).- The bundled
artifact-designskill β general craft; this skill fixes the format so incident reports stay consistent across authors and sessions. docs/methodology/artifact-types.mdβ type justification (a Skill: a repeatable render procedure with a bundled asset).