<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Postmortem · XB 现场笔记</title><link>https://www.xbcatm.com/zh/tags/postmortem/</link><description>基于 HTTP、DNS、TLS、Caddy、SSH、发布与恢复的可复现运维现场笔记。</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://www.xbcatm.com/zh/tags/postmortem/index.xml" rel="self" type="application/rss+xml"/><item><title>事故复盘应留下一份事实记录</title><link>https://www.xbcatm.com/zh/notes/a-postmortem-should-leave-a-fact-record/</link><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid>https://www.xbcatm.com/zh/notes/a-postmortem-should-leave-a-fact-record/</guid><description>围绕捕获到的输出来组织事故记录，让复盘线程停留在证据而非记忆上。</description><content:encoded>&lt;p&gt;一份复盘在它的说法能被重新检查时才赢得信任。这意味着每个阶段都要点名产生该事实的命令，而不是某人记忆的转述。下面的四个阶段让任何写下来的复盘在日后都可复核。&lt;/p&gt;
&lt;h2 id="检测症状而且要带证据"&gt;检测：症状，而且要带证据&lt;/h2&gt;
&lt;p&gt;从最小的可验证症状与展示它的命令开始。&amp;ldquo;截图&amp;quot;好过一段散文描述：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ check-http-headers.sh https://www.xbcatm.com/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HTTP/2 200
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;content-security-policy: ... script-src &amp;#39;none&amp;#39; ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;last-modified: Mon, 24 Aug 2026 11:20:54 GMT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;如果症状是某个响应头变了，那么展示旧策略与新策略的输出应并排放在一起。如果是失败，请包含退出状态与错误行。&lt;/p&gt;
&lt;h2 id="界定范围影响多广以及你如何知道"&gt;界定范围：影响多广，以及你如何知道&lt;/h2&gt;
&lt;p&gt;用证据而不是形容词陈述爆炸半径。修复一个你能检视的边界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些主机或路径返回同样的症状？每个候选主机跑一次 &lt;code&gt;check-http-headers.sh&lt;/code&gt; 就能回答。&lt;/li&gt;
&lt;li&gt;缓存与源站是否不同？比较 &lt;code&gt;Vary&lt;/code&gt; 与验证器。&lt;/li&gt;
&lt;li&gt;适用哪个回滚窗口？使用变更前仍生效的 TTL。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="修复变更及其预期效果"&gt;修复：变更及其预期效果&lt;/h2&gt;
&lt;p&gt;写出可重放的正确动作。优先选择恢复契约的最小变更，并说明修复后运行应显示什么：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 期望出现在响应里的新策略行：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;script-src &lt;span class="s1"&gt;&amp;#39;none&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="验证事后运行"&gt;验证：事后运行&lt;/h2&gt;
&lt;p&gt;变更后重复检测命令，并演示观察到的输出现在与预期契约一致。没有最后这一节的复盘只是一个故事；有了它，它就是一份允许自己未来被再检查的记录。&lt;/p&gt;
&lt;h2 id="来源"&gt;来源&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.rfc-editor.org/rfc/rfc9110.html"&gt;RFC 9110 — HTTP Semantics&lt;/a&gt;，响应元数据与条件请求，已核验 2026-08-24。&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.xbcatm.com/zh/resources/"&gt;制品 HTTP 响应头检查&lt;/a&gt;，贯穿本记录使用的只读检查。&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item></channel></rss>