Launch Atlas logoLaunch.Atlas
#47OperateDevOps · SRE

Incident Report · 事故報告

事故當下的事實流水帳,不是檢討會

Incident Report · 事故報告 · 卡片插圖
CHOOSE YOUR MODE

先決定你現在是要學,還是要在專案裡做

網站負責解釋與分發工作包;真正的 Repository 掃描、缺口判斷與文件產出交給 Coding Agent。

SDLC 實作課 · 交付物練習

先理解這份文件替你消除什麼不確定

事故當下的事實流水帳,不是檢討會

事故當下需要的是「現在誰在做什麼、影響範圍、預估恢復時間」的事實紀錄,不是分析。Incident Report 是 Postmortem 的輸入,不是替代品。

OWNER & HANDOFF

誰負責、交給誰

主責: Incident Commander

協作: Scribe 紀錄、Comms 對外通報、on-call 執行

下游收件: Postmortem、Customer Comms、合規

WHEN TO USE

何時值得做

REQUIRED

必要時機: SEV-1/2、SLO 燃燒 ≥ 閾值、外部使用者可感劣化

SKIP

不需要時: 預期維運、SEV-3 以下

CAUTION

常見誤用: 把分析寫進來;缺時間戳;遺漏外部通報紀錄

看懂6 段骨架知道每段要留下哪一種判斷
看會雙版本範本先用輕量版練習,再讀完整版
做出自己的草稿手動貼到 Claude Code、Codex 或其他 Agent
  1. 01讀大綱
  2. 02比範本
  3. 03填素材
  4. 04貼提示詞
  5. 05對照驗收

Anatomy · 文件解剖

輕量版先回答 6 個核心章節

章節名稱可以因團隊調整,但每一段要求的判斷不能被省略。先讀問題,再看格式。

  1. 01

    Header

    範本必要章節

    事故的基本元資料

  2. 02

    Owner & Paging Chain

    範本必要章節

    IC + scribe 必填;comms_lead 在對外通報時必填;paging chain 至少含 first page + ack

  3. 03

    Timeline(UTC,事實流水帳)

    範本必要章節

    用 UTC ISO 8601;每條含 actor + event;不寫推測;至少含 first signal / ack / mitigation start / resolve 四個關鍵時刻

  4. 04

    Impact

    範本必要章節

    affected_users 必須量化(count 或 %);revenue_impact 無資料寫 _TODO_ 不准估算

  5. 06

    Comms Log

    範本必要章節

    對外通報必填;無對外通報寫「無對外通報」並說明為何

  6. 07

    Decision Log(事故中決策,非 root cause)

    範本必要章節

    每條必含 chosen + 至少 1 個 rejected + 拒絕原因;只記事故當下做了什麼決策,不分析「為何發生」

Study · 對照學習

同一份交付物,先練核心,再看完整深度

輕量範本適合第一次練習與 MVP;完整範本保留跨職能交棒需要的細節。兩者都要求未知事項保持可見。

SmartTrip 實例待補

這張卡目前提供已審定的輕量與完整範本;不以 AI 臨時生成的內容冒充實際案例。

LIGHT TEMPLATE

30 分鐘內先完成核心章節。

---
doc_type: "incident-report"
variant: "light"
status: "active"
owner: "<incident-commander>"
last_updated: "YYYY-MM-DDTHH:MM:SSZ"
upstream:
  required: ["chatops-log", "alert-log"]
  optional: ["status-page-comments"]
---

# Incident Report: INC-YYYY-NNNN

**Status:** <investigating / identified / mitigating / monitoring / resolved> · **IC:** <name> · **Last updated:** YYYY-MM-DDTHH:MM:SSZ

> [!IMPORTANT]
> **AI 填寫規則:** 本範本 6 段(編號 1, 2, 3, 4, 6, 7),全部必填——刻意沿用完整版章節編號讓兩版可對照。所有時間用 **UTC ISO 8601**;每結論行內加 `(依據:chatlog §XXX / alert §YYY)`;每量化欄位帶 `[H]/[M]/[L]` confidence badge;缺資料寫 `_TODO: 需要 XXX_` 不編造(**ETR 不知就寫 TODO 不准猜時間**);**只寫事實不寫 root cause**(root cause 屬 postmortem)。

---

## 1. Header

<!-- ai-fill: 事故的基本元資料 -->

| Field | Value | Confidence |
|---|---|---|
| **Incident ID** | INC-YYYY-NNNN | — |
| **Severity** | SEV1 / SEV2 / SEV3 / SEV4 | **[H]** |
| **Detection method** | alert / customer_report / internal_user / synthetic | **[H]** |
| **Current status** | investigating / identified / mitigating / monitoring / resolved | — |
| **ETR (UTC)** | YYYY-MM-DDTHH:MM:SSZ or `_TODO_` | **[M]** |

---

## 2. Owner & Paging Chain

<!-- ai-rule: IC + scribe 必填;comms_lead 在對外通報時必填;paging chain 至少含 first page + ack -->

### Owners

| Role | Name |
|---|---|
| **Incident Commander** | <name> |
| **Scribe** | <name> |
| **Comms lead** | <name or `_TODO_`> |

### Paging chain

| ts (UTC) | Paged | Ack ts (UTC) | Source |
|---|---|---|---|
| YYYY-MM-DDTHH:MM:SSZ | on-call SRE | YYYY-MM-DDTHH:MM:SSZ | pager §1 |
| YYYY-MM-DDTHH:MM:SSZ | DB lead | _TODO_ | pager §2 |

---

## 3. Timeline(UTC,事實流水帳)

<!-- ai-rule: 用 UTC ISO 8601;每條含 actor + event;不寫推測;至少含 first signal / ack / mitigation start / resolve 四個關鍵時刻 -->

| ts (UTC) | Actor | Event | Source |
|---|---|---|---|
| YYYY-MM-DDTHH:MM:SSZ | alertmanager | detect — checkout-api p99 > 2s | alert §2 |
| YYYY-MM-DDTHH:MM:SSZ | on-call SRE | ack page | pager §1 |
| YYYY-MM-DDTHH:MM:SSZ | on-call SRE | identify — DB connection pool exhausted | chatlog §5 |
| YYYY-MM-DDTHH:MM:SSZ | on-call SRE | mitigation start — restart pgbouncer | chatlog §7 |
| YYYY-MM-DDTHH:MM:SSZ | alertmanager | resolve — p99 back to baseline | alert §6 |

---

## 4. Impact

<!-- ai-rule: affected_users 必須量化(count 或 %);revenue_impact 無資料寫 _TODO_ 不准估算 -->

| Field | Value | Confidence |
|---|---|---|
| **Affected users** | <count or %> | **[M]** |
| **Affected regions** | [<region>] | **[H]** |
| **Affected user journey** | <e.g. checkout> | **[H]** |
| **Revenue impact** | <$X estimate or `_TODO_`> | **[L]** |
| **SLO burned** | <SLO-001 burn ~12 min> | **[M]** |

---

## 6. Comms Log

<!-- ai-rule: 對外通報必填;無對外通報寫「無對外通報」並說明為何 -->

| ts (UTC) | Channel | Audience | Message summary | Source |
|---|---|---|---|---|
| YYYY-MM-DDTHH:MM:SSZ | status page | public | Checkout 服務劣化,調查中 | comms §1 |
| YYYY-MM-DDTHH:MM:SSZ | in-app banner | signed-in users | 結帳延遲,已修復 monitor 中 | comms §2 |

---

## 7. Decision Log(事故中決策,非 root cause)

<!-- ai-rule: 每條必含 chosen + 至少 1 個 rejected + 拒絕原因;只記事故當下做了什麼決策,不分析「為何發生」 -->

| ts (UTC) | Decision | Options | Chosen | Rejected why | Confidence |
|---|---|---|---|---|---|
| YYYY-MM-DDTHH:MM:SSZ | mitigate path | restart pgbouncer / failover / scale up | restart | failover (region 太大 blast radius)、scale up (DB 不在 path) | **[H]** |

---

> [!CAUTION]
> **輸出前 AI 自檢:**
> - [ ] 6 段 H2 章節齊全(編號 1, 2, 3, 4, 6, 7)
> - [ ] 所有時間用 UTC ISO 8601
> - [ ] Timeline 至少含 first signal / ack / mitigation / resolve 四個關鍵時刻
> - [ ] Impact 含 affected users 量化(不准只寫「很多」)
> - [ ] ETR 不知寫 `_TODO_`,不准猜時間
> - [ ] **無 root cause 分析**(root cause 屬 postmortem)
> - [ ] Comms log 必填(無對外通報需說明為何)
> - [ ] Decision Log ≥ 1 條,每條有 rejected reason
> - [ ] 無 YAML / JSON schema 輸出

Practice · 換你試做

先用自己的話交代素材,不需要先學會工程術語

確定的就寫,不確定的留白。下一步要做的是請 Agent 找缺口,不是讓它替你猜一套合理答案。

可以先留白;複製提示詞後再到 Coding Agent 裡補充。

AI Practice · 手動三步

先問、再寫、最後審,不把整條流程鎖死

每一步都是獨立工作包。你可以停下補資料、修改限制或重做某一步,不需要服從固定的 Agent 接力流程。

STEP 01

只找阻擋文件成立的未知

先補會改變範圍、判斷或驗收結果的資訊,不急著寫文件。

我要製作「Incident Report · 事故報告」。先不要產出文件。

請根據我的素材,找出會影響這份文件正確性或可執行性的未知事項,一次最多問 5 題。

每題請包含:
1. 問題
2. 為什麼現在必須知道
3. 它會影響哪個章節或決定

已經回答的事不要重問;可以延後的事標成「待決策」;不要替我猜答案。

本文件的核心章節:Header、Owner & Paging Chain、Timeline(UTC,事實流水帳)、Impact、Comms Log、Decision Log(事故中決策,非 root cause)

複製後,請在標示位置貼上自己的素材。

Review · 自己驗收

文件存在,不代表下一個角色真的能使用

逐條檢查 Agent 的輸出。人類負責需求、限制與驗收,也必須能說明重要結論從哪裡來。

CHECKED0 / 6
NEXT HANDOFF

帶著這份文件,繼續到「Postmortem · 事後回顧」

下一張卡會接住新的決策問題;不用一次把整條 SDLC 全做完。

前往下一張卡