<?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>Decision Log on Tarragon</title><link>https://tarrragon.github.io/blog/tags/decision-log/</link><description>Recent content in Decision Log on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/decision-log/index.xml" rel="self" type="application/rss+xml"/><item><title>8.23 Control Plane Decision Log and Write-back 實作示範</title><link>https://tarrragon.github.io/blog/backend/08-incident-response/control-plane-decision-log-write-back/</link><pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/08-incident-response/control-plane-decision-log-write-back/</guid><description>&lt;p>Control plane decision log and write-back 的核心責任是讓規則或配置事故的事中判斷可回放、事後修正可追蹤。&lt;/p>
&lt;h2 id="服務路徑與事件邊界">服務路徑與事件邊界&lt;/h2>
&lt;p>示範事件是全域 rule rollout 後 CPU 激增與錯誤率上升。這類事故的難點在決策序列是否清楚、偵測本身反而容易：先限流、先回退、還是先分區隔離。&lt;/p>
&lt;p>事中決策欄位固定用 &lt;code>Timestamp&lt;/code>、&lt;code>Decision&lt;/code>、&lt;code>Context&lt;/code>、&lt;code>Evidence&lt;/code>、&lt;code>Owner&lt;/code>、&lt;code>Expected effect&lt;/code>、&lt;code>Rollback condition&lt;/code>。write-back 再補 &lt;code>target artifact&lt;/code>、&lt;code>closure signal&lt;/code>、&lt;code>review date&lt;/code>。&lt;/p>
&lt;h2 id="實作步驟">實作步驟&lt;/h2>
&lt;ol>
&lt;li>建立 incident intake：彙整告警、dashboard、客訴與 deploy event。&lt;/li>
&lt;li>啟動 decision log：每個會改變路由的動作都記錄欄位。&lt;/li>
&lt;li>每 10-15 分鐘更新一次 expected effect 是否達成。&lt;/li>
&lt;li>事故收斂後建立 write-back 條目：對應到 runbook、gate、signal 或 ownership 缺口。&lt;/li>
&lt;li>在下一次 readiness review 檢查 closure signal 是否達成。&lt;/li>
&lt;/ol>
&lt;h2 id="判讀訊號">判讀訊號&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>判讀重點&lt;/th>
 &lt;th>對應動作&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>事故頻道討論很多但決策記錄很少&lt;/td>
 &lt;td>已決事項與討論事項混在一起&lt;/td>
 &lt;td>強制 decision log 欄位化&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>回退後暫時恢復但再次抖動&lt;/td>
 &lt;td>rollback condition 不完整&lt;/td>
 &lt;td>補充次級門檻與觀察窗&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>通訊內容與內部判斷不一致&lt;/td>
 &lt;td>evidence 版本不同步&lt;/td>
 &lt;td>以 decision log 為唯一對外事實來源&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>write-back 列很多但無人關閉&lt;/td>
 &lt;td>owner 與 review date 缺失&lt;/td>
 &lt;td>補責任人與 closure signal&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>同類事故重複發生&lt;/td>
 &lt;td>回寫只寫故事，沒進入上游控制面&lt;/td>
 &lt;td>把項目映射到 4.20/6.8/6.23&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="常見誤區">常見誤區&lt;/h2>
&lt;p>把 decision log 當成事後整理會失去事故價值。事故當下不記，事後只能用記憶補洞，容易產生 hindsight 偏差。&lt;/p>
&lt;p>把 write-back 當成待辦清單也會失效。沒有 &lt;code>closure signal&lt;/code> 的改善項目很快會退化成長期債務。&lt;/p>
&lt;h2 id="案例回寫">案例回寫&lt;/h2>
&lt;p>這條路徑可用 &lt;a href="https://tarrragon.github.io/blog/backend/08-incident-response/cases/cloudflare/2023-workers-kv-deployment-tool-misconfiguration/" data-link-title="Cloudflare 2023 Workers KV Deployment Tool Misconfiguration" data-link-desc="2023-10-30 Cloudflare 控制面事故：deployment tool 設定錯誤造成 Workers KV 連鎖影響，重點在變更範圍限制與決策回寫。">Cloudflare 2023 Workers KV Deployment Tool Misconfiguration&lt;/a> 回寫。先看控制面變更如何擴散，再回到本章檢查決策欄位與回寫欄位是否能完整重放事故節奏。&lt;/p>
&lt;p>這個案例主要支撐的是「控制面決策可回放」判讀，不直接支撐 provider dependency gate 門檻；放行策略回到 6.25/6.8。&lt;/p>
&lt;h2 id="跨模組路由">跨模組路由&lt;/h2>
&lt;ol>
&lt;li>與 8.19 的交接：欄位語言與 &lt;a href="https://tarrragon.github.io/blog/backend/08-incident-response/incident-decision-log/" data-link-title="8.19 Incident Decision Log" data-link-desc="把事中假設、決策、證據、回退條件與責任人留下可復盤紀錄">Incident Decision Log&lt;/a> 對齊。&lt;/li>
&lt;li>與 8.22 的交接：回寫欄位與 &lt;a href="https://tarrragon.github.io/blog/backend/08-incident-response/incident-evidence-write-back/" data-link-title="8.22 Incident Evidence Write-back" data-link-desc="把事故證據、決策與復盤結論回寫到 observability、reliability 與 runbook">Incident Evidence Write-back&lt;/a> 對齊。&lt;/li>
&lt;li>與 6.24 的交接：控制面事故停損條件回到 &lt;a href="https://tarrragon.github.io/blog/backend/06-reliability/rule-rollout-safety-gate/" data-link-title="6.24 規則推送安全閘門" data-link-desc="把規則、策略與控制面配置推送從部署步驟升級為可靠性 gate，避免小變更在秒級擴散成全網事故。">Rule Rollout Safety Gate&lt;/a>。&lt;/li>
&lt;li>與 4.20 的交接：證據來源統一到 observability evidence package。&lt;/li>
&lt;/ol>
&lt;h2 id="下一步路由">下一步路由&lt;/h2>
&lt;p>要把控制面事故前移到資安治理，接著讀 &lt;a href="https://tarrragon.github.io/blog/backend/07-security-data-protection/credential-rotation-scoped-evidence/" data-link-title="7.27 Credential Rotation with Scoped Evidence 實作示範" data-link-desc="以 webhook/API credential 輪替示範 scope map、證據欄位與回退窗口如何一起設計。">7.27 Credential Rotation with Scoped Evidence 實作示範&lt;/a>。&lt;/p></description><content:encoded><![CDATA[<p>Control plane decision log and write-back 的核心責任是讓規則或配置事故的事中判斷可回放、事後修正可追蹤。</p>
<h2 id="服務路徑與事件邊界">服務路徑與事件邊界</h2>
<p>示範事件是全域 rule rollout 後 CPU 激增與錯誤率上升。這類事故的難點在決策序列是否清楚、偵測本身反而容易：先限流、先回退、還是先分區隔離。</p>
<p>事中決策欄位固定用 <code>Timestamp</code>、<code>Decision</code>、<code>Context</code>、<code>Evidence</code>、<code>Owner</code>、<code>Expected effect</code>、<code>Rollback condition</code>。write-back 再補 <code>target artifact</code>、<code>closure signal</code>、<code>review date</code>。</p>
<h2 id="實作步驟">實作步驟</h2>
<ol>
<li>建立 incident intake：彙整告警、dashboard、客訴與 deploy event。</li>
<li>啟動 decision log：每個會改變路由的動作都記錄欄位。</li>
<li>每 10-15 分鐘更新一次 expected effect 是否達成。</li>
<li>事故收斂後建立 write-back 條目：對應到 runbook、gate、signal 或 ownership 缺口。</li>
<li>在下一次 readiness review 檢查 closure signal 是否達成。</li>
</ol>
<h2 id="判讀訊號">判讀訊號</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>判讀重點</th>
          <th>對應動作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>事故頻道討論很多但決策記錄很少</td>
          <td>已決事項與討論事項混在一起</td>
          <td>強制 decision log 欄位化</td>
      </tr>
      <tr>
          <td>回退後暫時恢復但再次抖動</td>
          <td>rollback condition 不完整</td>
          <td>補充次級門檻與觀察窗</td>
      </tr>
      <tr>
          <td>通訊內容與內部判斷不一致</td>
          <td>evidence 版本不同步</td>
          <td>以 decision log 為唯一對外事實來源</td>
      </tr>
      <tr>
          <td>write-back 列很多但無人關閉</td>
          <td>owner 與 review date 缺失</td>
          <td>補責任人與 closure signal</td>
      </tr>
      <tr>
          <td>同類事故重複發生</td>
          <td>回寫只寫故事，沒進入上游控制面</td>
          <td>把項目映射到 4.20/6.8/6.23</td>
      </tr>
  </tbody>
</table>
<h2 id="常見誤區">常見誤區</h2>
<p>把 decision log 當成事後整理會失去事故價值。事故當下不記，事後只能用記憶補洞，容易產生 hindsight 偏差。</p>
<p>把 write-back 當成待辦清單也會失效。沒有 <code>closure signal</code> 的改善項目很快會退化成長期債務。</p>
<h2 id="案例回寫">案例回寫</h2>
<p>這條路徑可用 <a href="/blog/backend/08-incident-response/cases/cloudflare/2023-workers-kv-deployment-tool-misconfiguration/" data-link-title="Cloudflare 2023 Workers KV Deployment Tool Misconfiguration" data-link-desc="2023-10-30 Cloudflare 控制面事故：deployment tool 設定錯誤造成 Workers KV 連鎖影響，重點在變更範圍限制與決策回寫。">Cloudflare 2023 Workers KV Deployment Tool Misconfiguration</a> 回寫。先看控制面變更如何擴散，再回到本章檢查決策欄位與回寫欄位是否能完整重放事故節奏。</p>
<p>這個案例主要支撐的是「控制面決策可回放」判讀，不直接支撐 provider dependency gate 門檻；放行策略回到 6.25/6.8。</p>
<h2 id="跨模組路由">跨模組路由</h2>
<ol>
<li>與 8.19 的交接：欄位語言與 <a href="/blog/backend/08-incident-response/incident-decision-log/" data-link-title="8.19 Incident Decision Log" data-link-desc="把事中假設、決策、證據、回退條件與責任人留下可復盤紀錄">Incident Decision Log</a> 對齊。</li>
<li>與 8.22 的交接：回寫欄位與 <a href="/blog/backend/08-incident-response/incident-evidence-write-back/" data-link-title="8.22 Incident Evidence Write-back" data-link-desc="把事故證據、決策與復盤結論回寫到 observability、reliability 與 runbook">Incident Evidence Write-back</a> 對齊。</li>
<li>與 6.24 的交接：控制面事故停損條件回到 <a href="/blog/backend/06-reliability/rule-rollout-safety-gate/" data-link-title="6.24 規則推送安全閘門" data-link-desc="把規則、策略與控制面配置推送從部署步驟升級為可靠性 gate，避免小變更在秒級擴散成全網事故。">Rule Rollout Safety Gate</a>。</li>
<li>與 4.20 的交接：證據來源統一到 observability evidence package。</li>
</ol>
<h2 id="下一步路由">下一步路由</h2>
<p>要把控制面事故前移到資安治理，接著讀 <a href="/blog/backend/07-security-data-protection/credential-rotation-scoped-evidence/" data-link-title="7.27 Credential Rotation with Scoped Evidence 實作示範" data-link-desc="以 webhook/API credential 輪替示範 scope map、證據欄位與回退窗口如何一起設計。">7.27 Credential Rotation with Scoped Evidence 實作示範</a>。</p>
]]></content:encoded></item><item><title>Incident Decision Log</title><link>https://tarrragon.github.io/blog/backend/knowledge-cards/incident-decision-log/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/knowledge-cards/incident-decision-log/</guid><description>&lt;p>Incident decision log 的核心概念是「把事故期間的已決事項與證據鏈保存成可回放紀錄」。它連接 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/incident-command-system/" data-link-title="Incident Command System" data-link-desc="說明事故期間的指揮角色、決策邊界與協作方式">incident command system&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/incident-timeline/" data-link-title="Incident Timeline" data-link-desc="說明事故時間線如何支援判斷、溝通與復盤">incident timeline&lt;/a> 與 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/evidence-package/" data-link-title="Evidence Package" data-link-desc="說明觀測、驗證與事故流程如何把證據包成可交接、可回放的 artifact">evidence package&lt;/a>，讓事中交班與事後復盤使用同一組決策背景。&lt;/p>
&lt;h2 id="概念位置">概念位置&lt;/h2>
&lt;p>Incident decision log 位在 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/on-call/" data-link-title="On-Call" data-link-desc="說明值班制度如何承接告警、事故分級與升級流程">on-call&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/incident-communication-channel/" data-link-title="Incident Communication Channel" data-link-desc="說明事故期間內外部溝通要使用哪些固定通道與節奏">incident communication channel&lt;/a> 與 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review&lt;/a> 之間。它保存的是決策內容、時間、證據、owner、預期效果與回退條件，timeline 則保存事故事件順序。&lt;/p>
&lt;h2 id="可觀察訊號與例子">可觀察訊號與例子&lt;/h2>
&lt;p>系統需要 incident decision log 的訊號是事故結束後很難說清楚某次 rollback、degradation 或 vendor escalation 的決策依據。常見例子是聊天頻道有大量討論，但缺少明確的「何時決定、基於哪些 evidence、誰執行、什麼條件下改路線」。&lt;/p>
&lt;h2 id="設計責任">設計責任&lt;/h2>
&lt;p>Incident decision log 要支援 handoff、multi-incident coordination、stakeholder update 與 post-incident review。它的欄位應足夠輕量，讓事故現場能持續更新，同時足夠完整，能把缺口回寫到 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/runbook/" data-link-title="Runbook" data-link-desc="說明 runbook 如何把事故判斷與操作步驟標準化">runbook&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/steady-state/" data-link-title="Steady State" data-link-desc="說明可靠性實驗與事故恢復如何定義系統應維持的可接受狀態">steady state&lt;/a> 與 &lt;a href="https://tarrragon.github.io/blog/backend/knowledge-cards/action-item-closure/" data-link-title="Action Item Closure" data-link-desc="說明事故行動項如何被驗證完成，而不是只停留在待辦清單">action item closure&lt;/a>。&lt;/p></description><content:encoded><![CDATA[<p>Incident decision log 的核心概念是「把事故期間的已決事項與證據鏈保存成可回放紀錄」。它連接 <a href="/blog/backend/knowledge-cards/incident-command-system/" data-link-title="Incident Command System" data-link-desc="說明事故期間的指揮角色、決策邊界與協作方式">incident command system</a>、<a href="/blog/backend/knowledge-cards/incident-timeline/" data-link-title="Incident Timeline" data-link-desc="說明事故時間線如何支援判斷、溝通與復盤">incident timeline</a> 與 <a href="/blog/backend/knowledge-cards/evidence-package/" data-link-title="Evidence Package" data-link-desc="說明觀測、驗證與事故流程如何把證據包成可交接、可回放的 artifact">evidence package</a>，讓事中交班與事後復盤使用同一組決策背景。</p>
<h2 id="概念位置">概念位置</h2>
<p>Incident decision log 位在 <a href="/blog/backend/knowledge-cards/on-call/" data-link-title="On-Call" data-link-desc="說明值班制度如何承接告警、事故分級與升級流程">on-call</a>、<a href="/blog/backend/knowledge-cards/incident-communication-channel/" data-link-title="Incident Communication Channel" data-link-desc="說明事故期間內外部溝通要使用哪些固定通道與節奏">incident communication channel</a> 與 <a href="/blog/backend/knowledge-cards/post-incident-review/" data-link-title="Post-Incident Review" data-link-desc="說明事故後如何完成復盤、學習與改進閉環">post-incident review</a> 之間。它保存的是決策內容、時間、證據、owner、預期效果與回退條件，timeline 則保存事故事件順序。</p>
<h2 id="可觀察訊號與例子">可觀察訊號與例子</h2>
<p>系統需要 incident decision log 的訊號是事故結束後很難說清楚某次 rollback、degradation 或 vendor escalation 的決策依據。常見例子是聊天頻道有大量討論，但缺少明確的「何時決定、基於哪些 evidence、誰執行、什麼條件下改路線」。</p>
<h2 id="設計責任">設計責任</h2>
<p>Incident decision log 要支援 handoff、multi-incident coordination、stakeholder update 與 post-incident review。它的欄位應足夠輕量，讓事故現場能持續更新，同時足夠完整，能把缺口回寫到 <a href="/blog/backend/knowledge-cards/runbook/" data-link-title="Runbook" data-link-desc="說明 runbook 如何把事故判斷與操作步驟標準化">runbook</a>、<a href="/blog/backend/knowledge-cards/steady-state/" data-link-title="Steady State" data-link-desc="說明可靠性實驗與事故恢復如何定義系統應維持的可接受狀態">steady state</a> 與 <a href="/blog/backend/knowledge-cards/action-item-closure/" data-link-title="Action Item Closure" data-link-desc="說明事故行動項如何被驗證完成，而不是只停留在待辦清單">action item closure</a>。</p>
]]></content:encoded></item></channel></rss>