创作日期:2026年9月26日
第(二十八)篇,我们解决的是 Command Bus + Execution State Machine + Idempotency + Saga / Compensating Action,让跨 WordPress、GitHub、Cloudflare、Database 等多个系统的生产动作,不会因为重试、超时和部分失败而失控。
第(二十九)篇继续建立 Execution Journal + Reconciliation Engine + DLQ + Repair Queue + Operator Console,让已经进入异常状态的任务可以被发现、对账、修复和重新接管。
第(三十)篇则把系统推到 SLO + Incident Detection + Circuit Breaker + Kill Switch + Break Glass + Incident Command,开始解决当失败演变成系统性事故时,怎样快速控制 Blast Radius、停止继续制造损害,并恢复到已知安全状态。
到这里,我们已经建立:
Reliable Execution
↓
Operational Recoverability
↓
Incident Control
但仍然缺最后一层。
假设今天发生一次重大事故:
WordPress 自动发布异常
↓
800 个页面被错误覆盖
↓
Kill Switch 生效
↓
系统停止写入
↓
Rollback 完成
↓
网站恢复
是不是意味着事故结束了?
从业务恢复角度,可能结束了;从可靠性工程角度,远远没有。
因为如果我们只是恢复服务、写一份事故总结、开一个会议,然后继续运行,那么下一次同一类 Failure Mode 仍然可能再次出现。
真正成熟的系统必须完成另一条链:
Incident
↓
Postmortem
↓
Causal Model
↓
Action Items
↓
Safety Invariants
↓
Regression Guards
↓
Chaos / Game Day
↓
Validation
↓
Institutional Learning
这就是第(三十一)篇的核心:
Incident Learning Control Plane
也就是:不只从事故中“吸取教训”,而是把教训转化成系统以后无法轻易违反的工程能力。
1、事故恢复不是事故完成
很多团队的 Incident State Machine 是 DETECTED → MITIGATING → RECOVERING → RESOLVED。问题就在最后一个状态:RESOLVED 往往被误解成“服务恢复,所以事情结束”。
成熟系统应该继续:
DETECTED
↓
CONTAINED
↓
RECOVERED
↓
POSTMORTEM_REQUIRED
↓
CAUSE_ANALYZED
↓
ACTIONS_OPEN
↓
GUARDS_IMPLEMENTED
↓
VALIDATED
↓
CLOSED
Recovery ≠ Closure。 恢复服务只是把当前事故停止;真正关闭事故,还必须证明导致事故发生或扩大影响的系统条件已经得到可验证处理。
2、Postmortem 不是“事故作文”
很多所谓 Postmortem 实际只是“发生了什么、谁处理了、几点恢复、以后注意”。这只是一份 Incident Summary,不是 Reliability Artifact。
一个真正有工程价值的 Postmortem 至少必须回答:
What happened?
What was the impact?
What triggered it?
What conditions allowed it?
Why did detection not happen earlier?
Why did containment not happen faster?
Why was blast radius this large?
Which controls worked?
Which controls failed?
Where did we get lucky?
What must change?
How will we prove that change works?
3、Postmortem 应该成为结构化对象
不能继续只保存 postmortem-final-v3.docx,而应该建立正式数据对象:
{
"postmortem_id": "pm_20260926_001",
"incident_id": "inc_8841",
"severity": "SEV1",
"started_at": "...",
"detected_at": "...",
"contained_at": "...",
"recovered_at": "...",
"impact": {},
"trigger": {},
"causes": [],
"contributing_factors": [],
"controls_worked": [],
"controls_failed": [],
"action_items": [],
"safety_invariants": [],
"regression_guards": [],
"chaos_scenarios": [],
"owner": "reliability-owner",
"status": "ACTIONS_OPEN"
}
这样 Postmortem 才能进入 Query、Analysis、Automation、Governance、Trend Detection,而不是写完以后躺在文件夹里。
4、Incident Timeline 必须先于 Root Cause Narrative
一个常见错误是事故刚结束,就直接写“根因是 Publisher Agent 出错”。这通常太早。
首先应该建立 Incident Timeline:
09:01 Content workflow approved
09:02 Publisher capability issued
09:03 WordPress batch started
09:04 Validation latency increased
09:05 First malformed page published
09:07 Monitoring signal generated
09:11 Alert triggered
09:14 Incident declared
09:17 Kill Switch activated
09:19 Writes stopped
09:24 Rollback started
09:41 Rollback completed
09:55 Frontend validation passed
先确定 What happened,再解释 Why it happened,否则很容易把第一眼看到的现象误写成 Root Cause。
5、Trigger、Root Cause、Contributing Factor 必须分开
例如 Trigger = A malformed content payload entered publishing,不等于 Root Cause = Payload validation architecture was insufficient,也不等于 Contributing Factor = Bulk publishing had no canary,更不等于 Impact Amplifier = Kill Switch detection took 12 minutes。
应该正式区分:
Trigger
Root Cause
Contributing Factor
Impact Amplifier
Detection Gap
Recovery Gap
6、“最后一个操作的人”通常不是 Root Cause
Publisher Agent 执行了错误操作,很容易被写成 Root Cause: Publisher Agent generated invalid content。但真正的问题可能是:
Invalid payload
was accepted
because
Schema validation missing
and
Bulk scope unrestricted
and
Canary absent
and
Post-release verification delayed
真正要问的是:为什么一个错误输入能够穿过这么多层系统,并最终产生大规模生产影响?
7、Blameless 不等于“不追责”
Blameless Postmortem 的真正含义不是 Nobody is responsible,而是 Do not stop analysis at the person。
不要停在“谁点了按钮”,而要继续追问:为什么一个按钮、一次调用、一个 Agent 输出,能够造成这么大的后果?
8、从 Root Cause Tree 升级到 Causal Graph
单一 Root Cause 在复杂 Agent 系统中经常过于简单。真正的事故往往是 A + B + C + D 共同成立以后才发生。
INVALID OUTPUT
│
▼
Schema Validation Gap
│
▼
Payload Accepted
│
┌─────────────┴─────────────┐
▼ ▼
No Canary Bulk Scope High
│ │
└─────────────┬─────────────┘
▼
Large Blast Radius
│
▼
Monitoring Delay
│
▼
Slow Incident Detection
│
▼
User Impact
这比 Root Cause: Agent hallucinated 有用得多。
9、Causal Graph 不一定要寻找唯一“根”
复杂系统的事故可能没有 THE root cause,而是 Necessary Conditions + Contributing Conditions + Amplifiers。
如果删除图中的任何一个关键节点,事故可能不会发生,或者影响会小很多,这才是我们真正需要找到的工程控制点。
10、把 Human Error 改写成 Control Gap
例如 Human selected wrong environment。不要停止在 Training required,而应该继续问 Why could production be selected accidentally?
可能得到:Environment not visually differentiated、No second confirmation、Capability not environment-bound、Production credential too broad。
11、把 Agent Error 也改写成 Control Gap
LLM generated incorrect output 不是足够的 Root Cause,因为 LLM can produce incorrect output 本来就应该是系统假设。
真正问题应该是:Why did incorrect model output become production state?
可能涉及 No evidence validation、No deterministic schema、No approval、No capability binding、No canary、No postcondition check。
12、Postmortem 最重要的产物不是文章,而是 Action Item
Postmortem Written 不应该等于 Postmortem Done。真正完成条件应该是 Actions Implemented + Validated。
13、Action Item 必须进入 Governance
{
"action_item_id": "ai_991",
"postmortem_id": "pm_882",
"type": "PREVENT",
"title": "Require payload schema validation before bulk publish",
"priority": "P0",
"owner": "publishing-platform",
"due_at": "...",
"status": "OPEN",
"verification": {
"type": "regression_test",
"test_id": "test_bulk_payload_01"
}
}
这样 Action Item 才不是普通 TODO。
14、Action Item 类型必须区分
PREVENT
DETECT
CONTAIN
MITIGATE
RECOVER
OBSERVE
例如 PREVENT → Reject invalid payload;DETECT → Alert malformed publish;CONTAIN → Maximum 10-post batch;MITIGATE → Automatic suspension;RECOVER → Snapshot rollback;OBSERVE → Execution trace dashboard。
15、只增加 Monitoring 是一种典型错误
事故之后如果所有 Action Items 都变成 Add alert、Add dashboard、Add logging,那么只是增强 Detection,却没有降低 Occurrence Probability。
成熟 Postmortem 应同时考虑 Prevent、Detect、Contain、Recover。
16、Action Item 必须有 Priority
Priority 可以结合 Incident Severity、Recurrence Probability、Potential Blast Radius、Control Gap Severity、Implementation Cost,确定 P0 / P1 / P2 / P3。
17、Action Item 必须有单一 Owner
可以有多个 Contributor,但应该只有一个 Accountable Owner。
18、Action Item 必须有 Verification
不能只是 Status=DONE,还需要回答 How do we know the risk is actually reduced?
Code merged 并不能证明 Incident cannot recur。所以 Implementation ≠ Verification。
19、Action Item Closure 应成为受控状态机
OPEN
↓
PLANNED
↓
IN_PROGRESS
↓
IMPLEMENTED
↓
VALIDATION_PENDING
↓
VALIDATED
↓
CLOSED
禁止 OPEN → CLOSED。
20、Overdue Action Item 应进入 Reliability Risk
如果一个 SEV1 Postmortem 的 P0 Prevent Action 已经逾期,这本身就是 Known Reliability Risk,应该进入 Governance Engine、Risk Engine、Command Center,甚至降低 Allowed Automation Level。
21、未关闭的高风险 Action Item 可以限制 Agent 自主权
例如 Bulk Publishing Incident 暴露 No Canary,而 Canary Action Item 尚未完成,那么 Governance Engine 可以自动执行 bulk_publish autonomy = disabled,直到 Canary Guard = VALIDATED。
这叫 Reliability-aware Autonomy。
22、Action Item 最终应该升级成 Safety Invariant
普通 Action Item:Add a check before publishing,太弱。
Safety Invariant 应写成:
No production bulk publish
may start without a validated snapshot.
或者:
No production action
may affect more than 50 resources
without canary approval.
也就是:哪些条件在任何情况下都不能被打破?
23、Safety Invariant 是事故经验的“压缩形式”
Invariant 1
No stale capability may execute.
Invariant 2
No bulk action without dry-run.
Invariant 3
No production write without snapshot.
Invariant 4
No rollout continuation after validation failure.
这就是把 Narrative Knowledge 转成 Executable Knowledge。
24、Safety Invariant 必须尽可能机器可检查
最弱形式是 Documentation,更强是 Code assertion,再强是 Policy-as-Code,再强是 Infrastructure constraint。
例如“No Agent should bypass Gateway”,最终应该落实为 Network denies direct production writes,而不只是写进 Agent Prompt。
25、事故应该产生 Policy Patch
例如 Postmortem 发现 Page count > 500 的变更风险严重被低估。事故之后不仅修改代码,还应该产生 Policy Patch:
IF production_change.resource_count > 500
THEN REQUIRE_CANARY
AND REQUIRE_APPROVAL
于是 Incident → Policy Improvement 真正进入 Governance Loop。
26、事故还应该产生 Risk Model Patch
如果原来 Bulk metadata update = MEDIUM risk,事故证明其实际 Blast Radius 远高于预期,那么 Risk Engine 也应该重新校准 Exposure Weight ↑、Detectability Penalty ↑、Reversibility Score ↓。
27、事故应该产生 Schema Patch
例如 canonical_url 接受任意字符串,那么 Postmortem Action 可以直接变成:
canonical_url
must be absolute HTTPS URL
host
must belong to approved domains
这比“下次注意 canonical”强得多。
28、事故应该产生 Test
关键原则是:Every meaningful incident should ask whether a regression test can be created。
例如 Incident: Duplicate publishing after timeout,可以变成:
Regression Test:
same idempotency_key
sent 5 times
must produce
1 production mutation
29、Regression Guard 比 Regression Test 更宽
Regression Guard 可以包括 Unit Test、Integration Test、Policy Test、Schema Test、Contract Test、Chaos Test、Monitor、SLO、Runtime Assertion、Deployment Gate。
所以我们把这一层称为 Regression Guard Layer。
30、每个 Incident 应至少尝试生成一个 Guard
例如 Incident: WordPress publish succeeded but frontend page broken。
Guard:
CMS_PUBLISHED
cannot transition to SUCCESS
until
FRONTEND_VERIFIED
这直接继承项目已有的 deploy → verify 原则。
31、Regression Guard 应该进入 CI/CD
例如 Incident: Cloudflare deployment succeeded but route configuration was wrong。以后 Pipeline 中增加:
Deploy
↓
Smoke Test
↓
Route Check
↓
Health Check
↓
Critical Page Validation
↓
Production Complete
只有全部通过,Deployment State 才能进入 VERIFIED。
32、Regression Guard 也可以进入 Runtime
某些风险无法在 CI 阶段验证。例如 GSC data suddenly stale,可以加入 Runtime Guard:
IF evidence_age > threshold
THEN
disable autonomous optimization
33、同一个 Incident 最好产生多层 Guard
例如 Agent changed robots.txt incorrectly,可以同时产生:
Schema Guard
→ robots syntax valid
Policy Guard
→ robots change requires approval
Scope Guard
→ protected resource
Runtime Guard
→ verify Googlebot accessibility
Monitoring Guard
→ robots hash change alert
Rollback Guard
→ snapshot required
这叫 Defense in Depth from Incident Learning。
34、Postmortem 还需要记录“哪些控制成功了”
很多复盘只分析 What failed? 却忽略 What worked?
例如事故期间 Kill Switch worked、Snapshot worked、Rollback worked、Alert worked。这些同样重要,因为我们需要知道 Which controls deserve continued investment?
35、建立 Control Effectiveness
每次 Incident 后都可以更新:
Control
Expected Behavior
Actual Behavior
Effectiveness
例如 Circuit Breaker,Expected: stop repeated failures;Actual: triggered after 5 failures;Effectiveness: PARTIAL。
于是治理系统逐渐拥有 Control Effectiveness Evidence。
36、Where We Got Lucky 必须正式记录
成熟 Postmortem 应该问:What prevented this from becoming worse only by chance?
例如 Traffic happened to be low、Batch happened to contain 20 pages、Operator happened to be online、The API happened to rate-limit requests。这些都不是 Controls,而是 Luck。
37、Luck Dependency 应转换成 Action Item
例如 We were lucky the operator noticed quickly,对应 Action: automated anomaly detection。如果不转化,下一次 luck may not repeat。
38、Incident Database 不应该只保存 Incident
随着事故积累,应该建立 Failure Mode Registry:
FM-001 Duplicate Command Execution
FM-002 Partial Multi-system Commit
FM-003 Stale Evidence Execution
FM-004 Capability Replay
FM-005 Post-release Validation Failure
FM-006 Third-party API Degradation
FM-007 Monitoring Blind Spot
每个 Postmortem 与这些 Failure Modes 建立关联。
39、Failure Mode 比 Incident ID 更适合长期学习
Incident inc_8291 只是某一次发生;Failure Mode FM-003 Stale Evidence Execution 描述的是一类系统性失败方式。
未来可以统计 Occurrences、Severity、Affected Systems、Control Coverage、Last Tested、Regression Status。
40、Causal Graph 最终应该连接 Failure Mode Registry
Incident
↓
Causal Graph
↓
Failure Mode
↓
Control
↓
Safety Invariant
↓
Regression Guard
系统开始形成 Reliability Knowledge Graph。
41、为什么这比“事故知识库”强?
传统事故知识库只能搜索 WordPress outage,返回 5 篇事故文档。
Reliability Knowledge Graph 则可以回答:
Which incidents involved missing canary?
Which failure modes have no validated guard?
Which safety invariants came from SEV1 incidents?
Which controls failed more than once?
Which P0 actions remain overdue?
42、Incident Review 必须进入定期运行机制
Incident Review 不应该是偶发会议,而应该成为 Weekly Reliability Review、Monthly Failure Mode Review、Quarterly Game Day 的一部分。
43、事故学习不能只依靠真实事故
真实 SEV1 Incident 的成本太高,所以成熟系统不能等 Production teaches us everything,还需要 Controlled Failure,也就是 Chaos Engineering。
44、Chaos Engineering 不是“随机搞坏生产”
Chaos 应该是:
Hypothesis
+
Controlled Fault
+
Defined Blast Radius
+
Observability
+
Stop Condition
+
Learning
而不是“随机破坏”。
45、Chaos Experiment 必须从假设开始
例如:
Hypothesis:
If WordPress API latency
exceeds 10 seconds,
Publisher Agent
will not duplicate posts,
Circuit Breaker
will open,
and no more than
one production mutation
will occur.
46、Chaos Experiment 也必须有 Safety Boundary
environment:
staging
max_duration:
5 min
max_resources:
20
stop_condition:
error_rate > 5%
rollback:
automatic
不是“我们看看会发生什么”。
47、事故应该直接生成 Chaos Scenario
例如真实事故是 Cloudflare API timeout after deployment accepted。那么下一步不只是修 Bug,还应该保存 Chaos Scenario: API accepts request but response times out,并持续验证 idempotency、reconciliation、deployment verification 是否真正有效。
48、Postmortem → Chaos 是 Reliability Flywheel
Real Incident
↓
Postmortem
↓
Failure Mode
↓
Control Improvement
↓
Chaos Scenario
↓
Validation
↓
Regression Guard
↓
Higher Confidence
49、Game Day 与 Chaos Experiment 不是同一件事
Chaos Experiment 通常更关注 System Behavior;Game Day 更关注 System + Process + People。
Chaos:
Will Circuit Breaker work?
Game Day:
Will the entire organization
detect, declare, contain,
communicate and recover?
50、Game Day 应该真正测试第(三十)篇的控制面
例如 Scenario: WordPress API starts returning intermittent 500s during bulk publishing。
观察:
Does alert trigger?
Does Incident Detection classify correctly?
Does Circuit Breaker open?
Does Kill Switch stop the workflow?
Does Incident Commander take ownership?
Does Change Freeze activate?
Can Break Glass be used correctly?
Can rollback restore service?
Does monitoring prove recovery?
51、Kill Switch 如果从未测试,就只是一个假设
Kill Switch exists 不等于 Kill Switch works。只有经过 Game Day 以后,我们才知道 activation time、coverage、dependencies、permissions、operator understanding、recovery procedure 是否符合设计。
52、Break Glass 也必须演练
Break Glass 最大风险之一是只有事故发生时才第一次使用。真正 Incident 时可能发现 credential expired、owner unavailable、procedure unclear、audit logging broken。
所以 Break Glass 也应该进入定期 Game Day。
53、Incident Command 同样需要 Muscle Memory
一个 Incident Command 文档写得再完善,如果从不演练,真正 SEV1 时仍然可能出现 Multiple people issuing commands、No single owner、Communication channels fragmented、No status cadence、No decision log。
Game Day 的价值之一,就是把 written process 变成 operational habit。
54、Game Day 结果也必须进入 Postmortem Loop
模拟事故也应该产生 Exercise Report:
Expected:
Kill Switch < 60s
Observed:
3m42s
Gap:
Operator could not find control
Action:
Move Kill Switch into Command Center
Guard:
Quarterly activation test
所以 Game Day → Action Item → Guard 和真实 Incident 使用同一套改进链。
55、Chaos 不应该从最危险动作开始
Simulation
↓
Unit / Integration Failure
↓
Staging
↓
Limited Production
↓
Production Game Day
而不是第一天就 disable production database。
56、SEO / GEO 自动化自己的 Chaos 场景是什么?
不一定需要 CPU Failure,更重要的可能是:
GSC API stale
GA4 delayed
WordPress returns 500
GitHub merge succeeds but webhook lost
Cloudflare deployment response timeout
Search data source conflicts
LLM returns malformed schema
Capability expires mid-command
Approval is revoked
Queue duplicates message
Monitoring stops reporting
Rollback artifact missing
这些才是真正适合本项目的 Search Automation Failure Injection。
57、场景一:WordPress Timeout After Commit
实验:WordPress accepts publish → response intentionally dropped。
正确结果应该是:
Same Idempotency Key
↓
Reconciliation
↓
Detect existing post
↓
No duplicate publish
如果生成第二篇文章,Regression Guard failed。
58、场景二:GitHub Merge 成功但状态事件丢失
模拟 PR merged,但 workflow does not receive expected callback。
系统不应该永久卡在 MERGING,而应该由 Reconciliation Engine queries GitHub → detects merged state → continues execution。
59、场景三:Cloudflare 部署完成但 Verification 失败
正常链是 DEPLOYED → VERIFY。模拟 Worker deployed but critical endpoint broken。
系统应该 not declare SUCCESS,而是 VALIDATION_FAILED → Circuit Breaker → Rollback / Incident。
60、场景四:Evidence Plane 过期
让 GSC ingestion 停止更新,然后请求 Autonomous SEO Optimization。
正确系统应该是 Evidence Freshness = STALE → Governance = DEFER,而不是继续执行。
61、场景五:Monitoring Failure
最危险的失败之一不是 system failed,而是 system failed and nobody knows。
因此需要主动测试 What happens if monitoring disappears?
62、Monitoring 必须监测 Monitoring
例如 Heartbeat、Last Successful Ingestion、Alert Pipeline Health、Webhook Delivery、Queue Consumer Lag、Trace Ingestion、Synthetic Checks。
否则 green dashboard 可能只是因为 dashboard stopped receiving data。
63、建立 Regression Guard Registry
{
"guard_id": "guard_821",
"source_incident": "inc_771",
"failure_mode": "FM_DUPLICATE_PUBLISH",
"type": "integration_test",
"target": "wordpress-publisher",
"expected_property": "same command id produces <=1 mutation",
"last_run_at": "...",
"last_result": "PASS",
"owner": "publishing-platform"
}
64、Guard 也会腐化
一个 Test 2026-09-26 PASS,不代表 2027-03-26 still valid,因为 Architecture changed、API changed、Policy changed、Adapter changed。
所以 Guard 本身也需要 Freshness。
65、建立 Guard Freshness
P0 Safety Guard
must run
on every deployment
P1 Chaos Scenario
must run
monthly
Break Glass Game Day
must run
quarterly
如果 last_verified_at 过期,可以把 Control Confidence 自动降低。
66、Control Confidence 应进入 Risk Engine
第(二十六)篇中 Control Coverage 可以降低 Residual Risk。第三十一篇进一步增加:Control Exists 还不够,必须知道 Control Verified?
因此 Control Coverage × Control Confidence 才应该影响 Residual Risk。
67、Never-tested Control 不应该拥有满分 Confidence
例如 Rollback: implemented,但 last tested: never,那么 Risk Engine 不应该把 Reversibility 直接判定为 HIGH。
Rollback Available:
YES
Rollback Confidence:
LOW
68、这一点会改变整个 Governance Engine
过去:Rollback exists → lower risk。
未来:Rollback exists + recently validated + same environment + same resource class → lower risk。
这才是真正 Evidence-backed Risk。
69、Postmortem Action Item 关闭也应该要求 Evidence
例如 Action: Add automatic rollback,不能因为 code merged 就关闭。
应该看到 Test: PASS、Game Day: PASS、Recovery Time: 43s、Rollback Result: VALIDATED,才能进入 CLOSED。
70、建立 Incident Learning Score
以后可以衡量 Postmortem Completion Rate、Action Item Closure Rate、P0 Action Overdue Rate、Regression Guard Coverage、Repeat Incident Rate、Control Validation Freshness、Game Day Pass Rate、Known Failure Mode Coverage。
但不要把它压缩成一个毫无解释力的 Reliability Score=87。和 Risk Score 一样,底层结构比单一数字更重要。
71、最值得关注的是 Repeat Incident Rate
如果同一 Failure Mode 不断产生 Incident,说明 Postmortem exists,但 Learning Loop failed。
真正成熟的系统应该能够回答:Did this incident already happen before?
72、Repeat Incident 自动升级 Severity
例如 FM_DUPLICATE_PUBLISH 第一次 SEV3,修复后再次发生 SEV2,第三次进入 Reliability Escalation,因为这已经不是单纯 Failure,而是 Failed Organizational Learning。
73、Postmortem 也应该进入 Knowledge System
项目长期闭环本身就是研究 → 实施 → 发布 → 监测 → 优化 → 知识沉淀。第三十一篇增加 Failure → Learning → Guard,使“知识沉淀”不再只是文档,而包含 Executable Reliability Knowledge。
74、最终需要建立 Reliability Learning Plane
前面的架构已经存在 Data Plane、Evidence Plane、Control Plane、Execution Plane。现在还需要 Reliability Learning Plane,负责保存:
Incidents
Postmortems
Causal Graphs
Failure Modes
Action Items
Safety Invariants
Regression Guards
Chaos Scenarios
Game Day Results
Control Effectiveness
75、Reliability Learning Plane 不应该直接修改生产
这一层负责 Learn、Recommend、Generate Change Request。真正修改 Policy、Code、Configuration,仍然需要经过 Governance → Capability → Action Gateway。
否则 Learning System 自己又成为新的 Uncontrolled Production Writer。
76、事故经验可以自动生成候选 Action,但不能自动认定 Root Cause
LLM 非常适合 summarize timeline、cluster evidence、suggest contributing factors、draft action items、generate candidate tests。
但系统不能把 LLM Root Cause 直接标记为 Confirmed Root Cause,仍然需要 Evidence + Review + Validation。
77、AI 可以帮助构建 Causal Graph,但必须保留证据链接
例如每一个 A caused B 的 Edge 都应该有 evidence_refs,否则 Causal Graph 很容易变成 beautiful hallucination。
78、每一个 Cause 应该标记 Confidence
例如 Cause: No canary increased blast radius,Confidence: HIGH;Cause: API latency may have delayed detection,Confidence: LOW。必须分开。
这样第(二十六)篇的 Evidence Confidence 继续进入 Incident Analysis。
79、Unknown Cause 也应该允许存在
有些事故最终 Root Cause: UNKNOWN,这是可以接受的。不应该为了让 Postmortem 看起来完整,强行制造确定根因。
更好的处理是 Unknown → Additional Instrumentation → Future Evidence。
80、事故学习本身也需要 Governance
Delete incident record、Edit root cause、Close P0 action、Disable regression guard、Suppress chaos test 都不是普通操作。
应该进入 Governance Engine,因为这些操作会改变系统对风险的认知。
81、关闭 P0 Action 可能需要双重验证
例如 Owner: IMPLEMENTED,再由 Reliability Reviewer: VALIDATED,最终 CLOSED,避免 builder marks own control as effective。
82、事故学习应该参与 Autonomy Budget
如果某 Agent recent incidents ↑、repeat failure ↑、guard failures ↑,那么系统可以自动降低 Autonomy Budget,例如从 A4 降为 A2,直到 Guard 再验证通过。
83、相反,长期验证通过可以提升自治
例如 1000 executions、0 unauthorized mutation、0 duplicate publish、0 rollback failure、P0 guards all fresh、Game Day passed,系统才有依据提高 Autonomous Execution Limit。
这才是真正的 Evidence-based Autonomy Expansion。
84、成熟自治不是“一次授权后永远信任”
Trust
↓
Verify
↓
Operate
↓
Observe
↓
Challenge
↓
Learn
↓
Re-verify
Agent 自治权应该是一种 continuously earned capability,而不是 permanent privilege。
85、完整闭环
INTENT
│
▼
EVIDENCE PLANE
│
▼
RISK ENGINE
│
▼
GOVERNANCE ENGINE
│
▼
DECISION
│
▼
CAPABILITY TOKEN
│
▼
ACTION GATEWAY
│
▼
COMMAND BUS
│
▼
EXECUTION STATE MACHINE
│
▼
IDEMPOTENCY / SAGA
│
▼
EXECUTION JOURNAL
│
▼
RECONCILIATION
│
▼
SUCCESS / EXCEPTION
│
▼
INCIDENT DETECTION
│
▼
CIRCUIT BREAKER / KILL SWITCH
│
▼
INCIDENT COMMAND
│
▼
RECOVERY
│
▼
POSTMORTEM
│
▼
CAUSAL GRAPH
│
▼
FAILURE MODE REGISTRY
│
▼
ACTION ITEMS
│
▼
SAFETY INVARIANTS
│
▼
REGRESSION GUARDS
│
▼
CHAOS / GAME DAY
│
▼
VALIDATION
│
└───────────────┐
│
▼
EVIDENCE / RISK
现在整个系统终于形成 Closed Reliability Learning Loop。
86、事故真正结束的定义应该改变
过去 Service Restored = Incident Closed。
未来:
Service Restored
+
Postmortem Reviewed
+
Cause Model Accepted
+
P0 Actions Completed
+
Safety Guards Implemented
+
Critical Guards Validated
=
Incident Closed
87、真正的目标不是 Zero Incident
复杂系统不可能承诺 never fail。真正目标应该是 Fewer repeat failures、Smaller blast radius、Faster detection、Faster containment、Safer recovery、Stronger controls、More validated assumptions。
88、Incident 应该被视为一次昂贵的实验
真实事故已经付出了用户影响、流量影响、运营成本、工程时间、商业风险。如果最后没有产生 new invariant、new guard、new test、new policy、new monitoring、new knowledge,那么这次昂贵的事故价值基本被浪费了。
89、最成熟的系统会把事故经验变成“以后不能再错”的东西
We remember it.
↓
We documented it.
↓
We created an action item.
↓
We changed the system.
↓
We created a guard.
↓
We continuously test the guard.
↓
The architecture makes recurrence difficult.
结语:真正的可靠性,不是“出事以后恢复得快”,而是“每次事故以后,系统都永久少一个失败自由度”
第(二十八)篇解决动作怎样可靠执行;第(二十九)篇解决异常任务怎样被发现和修复;第(三十)篇解决系统性事故怎样停止扩散;第三十一篇进一步解决:事故结束以后,怎样让同一种失败越来越难再次发生。
完整路径已经从 Execute 发展为:
Execute
↓
Observe
↓
Detect
↓
Contain
↓
Recover
↓
Explain
↓
Learn
↓
Encode
↓
Test
↓
Verify
真正成熟的 Autonomous SEO / GEO Platform,不能只有 Agent Intelligence,也不能只有 Governance,甚至不能只有 Reliability Engineering,还必须拥有 Institutionalized Learning。
也就是把一次事故中的经验,从 human memory 变成 machine-enforced system property。
最终每一次重大 Incident 都应该至少尝试产生:
one clearer causal model
one governed action plan
one stronger safety invariant
one regression guard
one executable failure scenario
如果未来再次发生同类事故,系统应该能够自动回答:
Have we seen this failure mode before?
Which incident taught us about it?
Which safety invariant should prevent it?
Which regression guard covers it?
When was that guard last validated?
Did the guard fail?
Which control needs escalation?
这时,Postmortem 才不再是一份事故总结,而成为 Reliability Compiler,把 Failure Experience 编译成 Policy、Code、Tests、Controls、Monitoring、Automation、Knowledge。
第(三十)篇建立的是:
Execute Fast
Stop Faster
Recover Carefully
第三十一篇最终补上:
Learn Permanently
于是完整原则变成:
Execute Fast
Stop Faster
Recover Carefully
Learn Permanently
真正成熟的 Agent 系统,不是不会犯错,而是:
每一次犯错以后,都把一个曾经依赖人类记忆的经验,变成下一次系统自动执行的约束。
当 Incident → Invariant → Guard → Chaos Validation 形成闭环以后,系统才真正开始从 Automation Platform 成长为 Self-improving Reliability System。
官方依据与工程边界说明
本文提出的 Incident Learning Control Plane、Causal Graph、Failure Mode Registry、Safety Invariant、Regression Guard Registry、Control Confidence、Reliability Learning Plane 等,是本 SEO / GEO 自动化项目的工程架构抽象,并非 Google SRE、AWS、NIST 或其他组织共同定义的一套统一 Agent Reliability 标准。
Google SRE — Postmortem Culture:Google SRE 将 Postmortem 作为重大异常事件后的正式学习工具,其目标包括记录事故、理解 contributing root causes,并制定有效的预防行动;同时强调 blameless、正式 Review 与知识共享。官方资料:https://sre.google/sre-book/postmortem-culture/
Google SRE Workbook — Postmortem Culture:该实践进一步强调 Trigger 与 Root Cause 的深入分析,以及 Action Item 的 Ownership、Priority、Tracking 与持续 Closeout。官方资料:https://sre.google/workbook/postmortem-culture/
AWS Well-Architected Reliability Pillar:AWS Reliability guidance 将 Post-incident Analysis、Chaos Engineering 和定期 Game Day 列为可靠性测试的重要实践,并强调系统设计完成以后仍必须通过测试验证实际 resilience。官方资料:https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/test-reliability.html
AWS Fault Injection Service:AWS FIS 用于在受控条件下向 workload 注入 disruptive events,从而观察系统响应并改进 resilience;官方支持实验 guardrails 和 stop conditions。官方资料:https://docs.aws.amazon.com/fis/latest/userguide/what-is.html
AWS Chaos Engineering Guidance:AWS 建议把过去 Post-incident Analysis 中识别出的 Failure Modes 用作 Chaos Experiment 的重要输入,并在验证假设以后逐渐将适合的实验纳入持续验证体系。官方资料:https://docs.aws.amazon.com/wellarchitected/2024-06-27/framework/rel_testing_resiliency_failure_injection_resiliency.html
NIST SP 800-61 Rev. 3:NIST 于 2025 年发布 SP 800-61 Rev. 3,将 Incident Response 与更广泛的 Cybersecurity Risk Management 结合,目标包括降低 Incident 数量与影响,并提升 Detection、Response 与 Recovery 的效率和效果。官方资料:https://www.nist.gov/news-events/news/2025/04/nist-revises-sp-800-61-incident-response-recommendations-and-considerations