<?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>Case-Driven on Tarragon</title><link>https://tarrragon.github.io/blog/tags/case-driven/</link><description>Recent content in Case-Driven on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Wed, 27 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/case-driven/index.xml" rel="self" type="application/rss+xml"/><item><title>案例引用深度跟著 case 類型走</title><link>https://tarrragon.github.io/blog/report/case-type-graded-citation-depth/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-type-graded-citation-depth/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>案例引用深度是寫作層的紀律工具：把 case 分成 skeleton / medium / rich 三類、各類對應不同承接句型、讓引用斷言能反向 trace 回 case 原文。誤判類型會引發 over-extrapolation（編造 case 沒寫的細節）或 under-citation（漏掉 case 揭露的 mechanism）、reviewer 抓出後修正成本高。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Case 類型&lt;/th>
 &lt;th>行數&lt;/th>
 &lt;th>內容密度&lt;/th>
 &lt;th>承接句型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Skeleton case&lt;/td>
 &lt;td>10-30 行&lt;/td>
 &lt;td>只給方向、無具體數字 / taxonomy&lt;/td>
 &lt;td>「揭露 X 方向、以下基於通用工程知識補充」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Medium case&lt;/td>
 &lt;td>30-50 行&lt;/td>
 &lt;td>結構化 mechanism + 訊號名稱、無具體數字&lt;/td>
 &lt;td>「揭露 N 個機制 — A、B、C、D」用 mechanism 名稱精準引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Rich case&lt;/td>
 &lt;td>50-200 行&lt;/td>
 &lt;td>含具體數字（RPS / 延遲 / TPS）、設計細節&lt;/td>
 &lt;td>「揭露 X 觀察 + 作者判讀 Y（明示分層）」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>跨類型混合引用要分層處理 — 同段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向、不混合成單一斷言。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 從 case 反推內容時、訓練資料的「通用知識」會自動補進章節。當 case 沒寫的 mechanism / 數字 / taxonomy 被寫成「對應 [case]：揭露 X」斷言、讀者回查 case 時會發現章節說的「揭露」實際是 LLM 編造。&lt;/p>
&lt;p>backend/01-07 七模組驗證（&lt;a href="../../posts/case-first-agent-team-review-workflow/">case-first workflow&lt;/a> 的 case fidelity reviewer 抓的數據）：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>模組&lt;/th>
 &lt;th>主要 case 類型&lt;/th>
 &lt;th>Case fidelity&lt;/th>
 &lt;th>主要失分類型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>backend/02 cache&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>78%&lt;/td>
 &lt;td>三層 cache latency 編造、ops/sec 編造&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/03 msgq&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>70%（最低）&lt;/td>
 &lt;td>三方向擴寫成「4 個誤配場景」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/04 obs&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>92.9%（最高）&lt;/td>
 &lt;td>嚴守「揭露方向、通用補充」紀律&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/05 deploy&lt;/td>
 &lt;td>Skeleton + Rich&lt;/td>
 &lt;td>80%&lt;/td>
 &lt;td>Rich case 判讀層被當 fact 引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/06 reliability&lt;/td>
 &lt;td>Medium 全套&lt;/td>
 &lt;td>88%&lt;/td>
 &lt;td>Medium case 實作層擴寫過頭&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/07 batch 1&lt;/td>
 &lt;td>Medium + Skeleton&lt;/td>
 &lt;td>81%&lt;/td>
 &lt;td>跨 case 合成 frame 升級成 case 揭露&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>最高的 92.9% 跟最低的 70% 差 23 個百分點 — 關鍵變數是引用紀律、案例品質本身只佔次要因素。Skeleton case 嚴守「揭露方向」、不擴寫成 rich case 樣式、就能達到 90%+。&lt;/p>
&lt;hr>
&lt;h2 id="三類-case-的判讀條件">三類 case 的判讀條件&lt;/h2>
&lt;h3 id="skeleton-case揭露-x-方向通用補充">Skeleton case：「揭露 X 方向、通用補充」&lt;/h3>
&lt;p>典型：模組內部 N.Cx 案例庫中只有 frame、無具體數字的短篇 case。內容深度 10-30 行、給「議題」「視角」、不給「實作細節」。&lt;/p>
&lt;p>承接紀律：&lt;/p>
&lt;ul>
&lt;li>引用為「揭露 X 方向」、不引用為「揭露 N 個具體場景數量」&lt;/li>
&lt;li>後面補「以下展開基於通用工程知識補充」明示分層&lt;/li>
&lt;li>不為了「整齊的 4 個攻擊面」「3 個攻擊向量」這種數字感、把 case 沒寫的 taxonomy 寫成 case 揭露&lt;/li>
&lt;/ul>
&lt;p>例：Meta Cache Consistency case 只給「promotion、shard move、故障恢復」三個方向 → 引用為「揭露三個方向」、不引用為「揭露具體 inconsistency window 數字」。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>案例引用深度是寫作層的紀律工具：把 case 分成 skeleton / medium / rich 三類、各類對應不同承接句型、讓引用斷言能反向 trace 回 case 原文。誤判類型會引發 over-extrapolation（編造 case 沒寫的細節）或 under-citation（漏掉 case 揭露的 mechanism）、reviewer 抓出後修正成本高。</p>
<table>
  <thead>
      <tr>
          <th>Case 類型</th>
          <th>行數</th>
          <th>內容密度</th>
          <th>承接句型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton case</td>
          <td>10-30 行</td>
          <td>只給方向、無具體數字 / taxonomy</td>
          <td>「揭露 X 方向、以下基於通用工程知識補充」</td>
      </tr>
      <tr>
          <td>Medium case</td>
          <td>30-50 行</td>
          <td>結構化 mechanism + 訊號名稱、無具體數字</td>
          <td>「揭露 N 個機制 — A、B、C、D」用 mechanism 名稱精準引用</td>
      </tr>
      <tr>
          <td>Rich case</td>
          <td>50-200 行</td>
          <td>含具體數字（RPS / 延遲 / TPS）、設計細節</td>
          <td>「揭露 X 觀察 + 作者判讀 Y（明示分層）」</td>
      </tr>
  </tbody>
</table>
<p>跨類型混合引用要分層處理 — 同段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向、不混合成單一斷言。</p>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 從 case 反推內容時、訓練資料的「通用知識」會自動補進章節。當 case 沒寫的 mechanism / 數字 / taxonomy 被寫成「對應 [case]：揭露 X」斷言、讀者回查 case 時會發現章節說的「揭露」實際是 LLM 編造。</p>
<p>backend/01-07 七模組驗證（<a href="../../posts/case-first-agent-team-review-workflow/">case-first workflow</a> 的 case fidelity reviewer 抓的數據）：</p>
<table>
  <thead>
      <tr>
          <th>模組</th>
          <th>主要 case 類型</th>
          <th>Case fidelity</th>
          <th>主要失分類型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>backend/02 cache</td>
          <td>Skeleton</td>
          <td>78%</td>
          <td>三層 cache latency 編造、ops/sec 編造</td>
      </tr>
      <tr>
          <td>backend/03 msgq</td>
          <td>Skeleton</td>
          <td>70%（最低）</td>
          <td>三方向擴寫成「4 個誤配場景」</td>
      </tr>
      <tr>
          <td>backend/04 obs</td>
          <td>Skeleton</td>
          <td>92.9%（最高）</td>
          <td>嚴守「揭露方向、通用補充」紀律</td>
      </tr>
      <tr>
          <td>backend/05 deploy</td>
          <td>Skeleton + Rich</td>
          <td>80%</td>
          <td>Rich case 判讀層被當 fact 引用</td>
      </tr>
      <tr>
          <td>backend/06 reliability</td>
          <td>Medium 全套</td>
          <td>88%</td>
          <td>Medium case 實作層擴寫過頭</td>
      </tr>
      <tr>
          <td>backend/07 batch 1</td>
          <td>Medium + Skeleton</td>
          <td>81%</td>
          <td>跨 case 合成 frame 升級成 case 揭露</td>
      </tr>
  </tbody>
</table>
<p>最高的 92.9% 跟最低的 70% 差 23 個百分點 — 關鍵變數是引用紀律、案例品質本身只佔次要因素。Skeleton case 嚴守「揭露方向」、不擴寫成 rich case 樣式、就能達到 90%+。</p>
<hr>
<h2 id="三類-case-的判讀條件">三類 case 的判讀條件</h2>
<h3 id="skeleton-case揭露-x-方向通用補充">Skeleton case：「揭露 X 方向、通用補充」</h3>
<p>典型：模組內部 N.Cx 案例庫中只有 frame、無具體數字的短篇 case。內容深度 10-30 行、給「議題」「視角」、不給「實作細節」。</p>
<p>承接紀律：</p>
<ul>
<li>引用為「揭露 X 方向」、不引用為「揭露 N 個具體場景數量」</li>
<li>後面補「以下展開基於通用工程知識補充」明示分層</li>
<li>不為了「整齊的 4 個攻擊面」「3 個攻擊向量」這種數字感、把 case 沒寫的 taxonomy 寫成 case 揭露</li>
</ul>
<p>例：Meta Cache Consistency case 只給「promotion、shard move、故障恢復」三個方向 → 引用為「揭露三個方向」、不引用為「揭露具體 inconsistency window 數字」。</p>
<h3 id="medium-case揭露-n-個機制--abc">Medium case：「揭露 N 個機制 — A、B、C」</h3>
<p>典型：模組內部 case 庫中、含結構化「決策機制」+「可觀測訊號」表、但無具體數字的中篇 case。內容深度 30-50 行、含 mechanism 名稱 + 訊號名稱、但不給 RPS / 延遲數字。</p>
<p>承接紀律：</p>
<ul>
<li>用 case 直接列出的 <em>mechanism 名稱</em> 精準引用、比 skeleton 精準、比 rich 保守</li>
<li>不擴寫到 case 沒提的具體實作層（會踩「實作層擴寫過頭」失分）</li>
<li>「決策機制」段通常是 fact 層、「常見陷阱」段可能含作者判讀層、引用時也要分層</li>
</ul>
<p>例：Amazon Shuffle Sharding case 揭露 cell boundary / shuffle sharding / static stability / constant work 四機制 → 引用四機制名稱、但不擴寫到「具體 shard 數量」「具體 cell 大小」等 case 沒提的細節。</p>
<h3 id="rich-case揭露具體-x-數字--設計">Rich case：「揭露具體 X 數字 / 設計」</h3>
<p>典型：跨模組 case 庫中含具體數字、設計細節、遷移路徑的長篇 case。內容深度 50-200 行、含具體 fact + 引用源。</p>
<p>承接紀律：</p>
<ul>
<li>可直接引用為事實、case 揭露的具體數字（RPS、延遲、TPS、stale window）可放進章節</li>
<li>但 rich case 內常含「觀察層」（具體 fact）跟「判讀層」（作者推論）、引用時要分層（見 <a href="../fact-vs-derive-citation-layering/">#116 fact-vs-derive 分層引用</a>）</li>
<li>引用判讀層時用「揭露 X 觀察 + 作者判讀 Y」明示分層、避免把推論寫成 fact</li>
</ul>
<p>例：Amazon Ads case「90M RPS + 5M writes/sec + 99.999%」 → 可直接寫進 KV 章節作為 reference。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton case 引用寫成「揭露 4 個具體場景」</td>
          <td>編造 case 沒寫的 taxonomy、reviewer B 抓 critical</td>
      </tr>
      <tr>
          <td>Skeleton case 引用補具體數字（從通用知識補進去）</td>
          <td>「Tubi 三層 cache L1 &lt; 1ms / L2 &lt; 10ms / L3 10-100ms」這類編造數字</td>
      </tr>
      <tr>
          <td>Medium case 引用擴寫到 case 沒提的實作細節</td>
          <td>「具體 shard 數量」「具體 partition key 數量」這類 over-extrapolation</td>
      </tr>
      <tr>
          <td>Rich case 引用合併觀察 + 判讀層</td>
          <td>「揭露 35ms latency 反推 region 部署」（35ms 是觀察、reasoning 是判讀）</td>
      </tr>
      <tr>
          <td>引用時不標 case 類型、寫稿時憑感覺承接深度</td>
          <td>跨章累積失分、reviewer 抓出後修正成本高</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-1-抽-findings-時的判讀步驟">Stage 1 抽 findings 時的判讀步驟</h2>
<p>寫教學內容前、stage 1 audit case 庫時要 <em>標明 case 類型</em>：</p>
<ol>
<li>看 case 行數 + 內容密度、初判類型</li>
<li>看是否有具體數字 / 設計細節、確認 Rich case</li>
<li>看是否只給方向 / 議題、確認 Skeleton case</li>
<li>介於中間時、傾向保守判讀為 Skeleton（避免過度承接）</li>
<li>把類型寫進 findings 列表、stage 2 寫作時依類型決定承接深度</li>
</ol>
<p>跨類型混合引用：</p>
<ul>
<li>同一段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向</li>
<li>不要把 skeleton case 的方向跟 rich case 的數字混合成單一斷言</li>
<li>跨類型引用時 disclaimer 要明示哪段屬通用、哪段屬 case fact</li>
</ul>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>case 內部 fact / derive 分層 — 本卡看 case 整體類型、#116 看 case 內部結構</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>第三類失分 — 章節抽象 frame 不能升級成 case 揭露</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡跟 #116/#117 是 case citation surface、三者並列為 citation 紀律的不同 surface</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>case fidelity 是輪 5（反例 / 邊界）+ stakes 軸（輪 E.5 citation）的具體實作</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern 在 case 引用 surface 的展現 — 便利的引用句型（補通用知識、不分層）跟 case fidelity 反向</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>同骨 pattern 在不同 surface 的展現 — #44 處理 engineering value 的住址、本卡處理 narrative attribution 的住址</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫到「揭露 N 個」時不確定 N 是不是 case 真的列了</td>
          <td>回 case 原文 grep、不確定就降級為「揭露 X 方向」</td>
      </tr>
      <tr>
          <td>Skeleton case 引用突然出現具體數字（從 LLM 記憶湧現）</td>
          <td>數字幾乎一定是編造、立即刪掉或標 disclaimer</td>
      </tr>
      <tr>
          <td>Rich case 引用句含「才是 / 必須 / 一定 / 關鍵是」</td>
          <td>通常是把作者判讀升級成 fact、退回 case 原文找條件性表述</td>
      </tr>
      <tr>
          <td>同段引用兩類 case 但語氣一致</td>
          <td>分層遺失、重寫成「rich case 補 fact + skeleton case 補方向」</td>
      </tr>
      <tr>
          <td>Findings 列表沒標 case 類型</td>
          <td>Stage 1 紀律失效、回 case 補類型再寫</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：誤判 case 類型 = 引用深度錯位 = case fidelity 失分。Stage 1 抽 findings 時花 30 秒判類型、能省 stage 4 修正 5-10 分鐘 / 案例。</p>
]]></content:encoded></item><item><title>引用案例要分觀察層 / 判讀層、強化詞是錯位訊號</title><link>https://tarrragon.github.io/blog/report/fact-vs-derive-citation-layering/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/fact-vs-derive-citation-layering/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Fact vs Derive 分層是 rich case 引用的內部紀律：case 內容分成觀察層（具體事實）跟判讀層（作者推論）兩層、章節引用時要各自標明來源、避免把作者判讀升級為 case fact。具體分層：&lt;/p>
&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>觀察層（Fact）&lt;/td>
 &lt;td>case 直接寫的具體事實、數字、設計細節&lt;/td>
 &lt;td>直接引用為事實、可放章節作為支撐&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>判讀層（Derive）&lt;/td>
 &lt;td>case 作者的推論段、「我們判讀」「這意味著」「關鍵是」「核心是」「才是」等詞引出&lt;/td>
 &lt;td>用「作者判讀」「（case 中 X 屬作者推論層、本章引用此推論）」明示分層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩層在章節引用時要分層標明 — 一旦把判讀升級為 fact、章節就失去 case 支撐、讀者回查 case 時會發現章節說的「揭露」實際是作者推論。&lt;/p>
&lt;hr>
&lt;h2 id="跟case-類型決定引用深度的差別">跟「Case 類型決定引用深度」的差別&lt;/h2>
&lt;p>&lt;a href="../case-type-graded-citation-depth/">#115 case 類型決定引用深度&lt;/a> 看 case 整體類型（skeleton / medium / rich）、決定承接深度。本卡看 case 內部結構（觀察 vs 判讀）、決定引用時要不要分層。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>#115 case 類型決定引用深度&lt;/th>
 &lt;th>#116 fact vs derive 分層（本卡）&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>看什麼&lt;/td>
 &lt;td>case 整體（行數 + 內容密度）&lt;/td>
 &lt;td>case 內部結構（觀察段 vs 判讀段）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>主要風險&lt;/td>
 &lt;td>Skeleton 擴寫成 rich case（編造數字）&lt;/td>
 &lt;td>Rich case 內判讀層被當 fact 引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>應用範圍&lt;/td>
 &lt;td>所有 case 引用都要先判類型&lt;/td>
 &lt;td>主要適用 rich case + medium case 的判讀段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>對應的失分類型&lt;/td>
 &lt;td>over-extrapolation（編造）&lt;/td>
 &lt;td>fact-derive 錯位（強化詞 / 漏條件）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩者互補：&lt;/p>
&lt;ul>
&lt;li>Skeleton case：主要是前者風險（擴寫成 fact）&lt;/li>
&lt;li>Rich case：兩個風險都要防（先判類型、再分層引用）&lt;/li>
&lt;li>Medium case：前者風險低（mechanism 名稱明確）、後者風險中（「常見陷阱」段可能含判讀）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 寫作引用 rich case 時、容易把兩層壓縮成「揭露 X」、把作者判讀升級為 case fact。讀者回查 case 時會發現章節說的「fact」實際是作者判讀、章節的論述失去 case 支撐。&lt;/p>
&lt;p>backend/05 deployment 模組驗證、case fidelity reviewer 抓出 4 個 high issue 都屬此類：&lt;/p>
&lt;h3 id="實證-1riot-games-35ms-延遲">實證 1：Riot Games 35ms 延遲&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「35ms 是競技遊戲（VALORANT、League）的可接受上限」&lt;/li>
&lt;li>&lt;strong>Case 判讀段&lt;/strong>：「從這個門檻反推：玩家所在 region 不能跨洲、需要區域 cluster」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 35ms latency 反推 region 部署」← 合併兩層、把判讀寫成揭露&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露 35ms 延遲門檻 + Local Zones / Outposts 區域部署、可推得『延遲門檻反推 region 部署數量』」← 分層標明&lt;/li>
&lt;/ul>
&lt;h3 id="實證-2gcp-k8s-130k-scale">實證 2：GCP K8s 130K scale&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「control plane 極限取決於 storage backend」+「GCP 用 Spanner 替換 etcd」（兩個分開的點）&lt;/li>
&lt;li>&lt;strong>Case 判讀段&lt;/strong>：「把 storage 從瓶頸變成『showed no signs of not being able to support higher scales』」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」← 把判讀升級成硬性結論、強化詞「才是」是訊號&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露 control plane vs data plane 容量規劃要分開、storage backend（GCP 用 Spanner 替代 etcd）是 K8s 規模極限的核心瓶頸層」← 保留條件性表述&lt;/li>
&lt;/ul>
&lt;h3 id="實證-3riot-games-漏歷史轉折">實證 3：Riot Games 漏歷史轉折&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「關鍵架構決策：從 multi-tenant cluster 模型改成 single-tenant per game」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 single-tenant per game 的多 cluster 策略」← 漏掉轉折、只保留終態&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露架構決策從 multi-tenant cluster 改成 single-tenant per game」← 保留 case 揭露的關鍵歷史&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="引用句型對照">引用句型對照&lt;/h2>
&lt;h3 id="skeleton-case-引用">Skeleton case 引用&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X / Y / Z 三個方向（case 直接列出）；
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">以下展開基於通用工程知識補充。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用單層純觀察">Rich case 引用（單層、純觀察）&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X 具體數字 / 設計（case 觀察層）。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用含作者判讀">Rich case 引用（含作者判讀）&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X 觀察 + 作者判讀 Y（case 中 Y 屬判讀層、
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">本章引用此推論）。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用避免硬性結論">Rich case 引用（避免硬性結論）&lt;/h3>
&lt;p>避免使用「才是 / 必須 / 一定 / 關鍵是」這類強化詞、保留 case 原文的條件性表述（「取決於」「核心瓶頸」「主要驅動」）。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Fact vs Derive 分層是 rich case 引用的內部紀律：case 內容分成觀察層（具體事實）跟判讀層（作者推論）兩層、章節引用時要各自標明來源、避免把作者判讀升級為 case fact。具體分層：</p>
<table>
  <thead>
      <tr>
          <th>層別</th>
          <th>來源</th>
          <th>引用紀律</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>觀察層（Fact）</td>
          <td>case 直接寫的具體事實、數字、設計細節</td>
          <td>直接引用為事實、可放章節作為支撐</td>
      </tr>
      <tr>
          <td>判讀層（Derive）</td>
          <td>case 作者的推論段、「我們判讀」「這意味著」「關鍵是」「核心是」「才是」等詞引出</td>
          <td>用「作者判讀」「（case 中 X 屬作者推論層、本章引用此推論）」明示分層</td>
      </tr>
  </tbody>
</table>
<p>兩層在章節引用時要分層標明 — 一旦把判讀升級為 fact、章節就失去 case 支撐、讀者回查 case 時會發現章節說的「揭露」實際是作者推論。</p>
<hr>
<h2 id="跟case-類型決定引用深度的差別">跟「Case 類型決定引用深度」的差別</h2>
<p><a href="../case-type-graded-citation-depth/">#115 case 類型決定引用深度</a> 看 case 整體類型（skeleton / medium / rich）、決定承接深度。本卡看 case 內部結構（觀察 vs 判讀）、決定引用時要不要分層。</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>#115 case 類型決定引用深度</th>
          <th>#116 fact vs derive 分層（本卡）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>看什麼</td>
          <td>case 整體（行數 + 內容密度）</td>
          <td>case 內部結構（觀察段 vs 判讀段）</td>
      </tr>
      <tr>
          <td>主要風險</td>
          <td>Skeleton 擴寫成 rich case（編造數字）</td>
          <td>Rich case 內判讀層被當 fact 引用</td>
      </tr>
      <tr>
          <td>應用範圍</td>
          <td>所有 case 引用都要先判類型</td>
          <td>主要適用 rich case + medium case 的判讀段</td>
      </tr>
      <tr>
          <td>對應的失分類型</td>
          <td>over-extrapolation（編造）</td>
          <td>fact-derive 錯位（強化詞 / 漏條件）</td>
      </tr>
  </tbody>
</table>
<p>兩者互補：</p>
<ul>
<li>Skeleton case：主要是前者風險（擴寫成 fact）</li>
<li>Rich case：兩個風險都要防（先判類型、再分層引用）</li>
<li>Medium case：前者風險低（mechanism 名稱明確）、後者風險中（「常見陷阱」段可能含判讀）</li>
</ul>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 寫作引用 rich case 時、容易把兩層壓縮成「揭露 X」、把作者判讀升級為 case fact。讀者回查 case 時會發現章節說的「fact」實際是作者判讀、章節的論述失去 case 支撐。</p>
<p>backend/05 deployment 模組驗證、case fidelity reviewer 抓出 4 個 high issue 都屬此類：</p>
<h3 id="實證-1riot-games-35ms-延遲">實證 1：Riot Games 35ms 延遲</h3>
<ul>
<li><strong>Case 觀察段</strong>：「35ms 是競技遊戲（VALORANT、League）的可接受上限」</li>
<li><strong>Case 判讀段</strong>：「從這個門檻反推：玩家所在 region 不能跨洲、需要區域 cluster」</li>
<li><strong>章節（錯）</strong>：「揭露 35ms latency 反推 region 部署」← 合併兩層、把判讀寫成揭露</li>
<li><strong>章節（對）</strong>：「揭露 35ms 延遲門檻 + Local Zones / Outposts 區域部署、可推得『延遲門檻反推 region 部署數量』」← 分層標明</li>
</ul>
<h3 id="實證-2gcp-k8s-130k-scale">實證 2：GCP K8s 130K scale</h3>
<ul>
<li><strong>Case 觀察段</strong>：「control plane 極限取決於 storage backend」+「GCP 用 Spanner 替換 etcd」（兩個分開的點）</li>
<li><strong>Case 判讀段</strong>：「把 storage 從瓶頸變成『showed no signs of not being able to support higher scales』」</li>
<li><strong>章節（錯）</strong>：「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」← 把判讀升級成硬性結論、強化詞「才是」是訊號</li>
<li><strong>章節（對）</strong>：「揭露 control plane vs data plane 容量規劃要分開、storage backend（GCP 用 Spanner 替代 etcd）是 K8s 規模極限的核心瓶頸層」← 保留條件性表述</li>
</ul>
<h3 id="實證-3riot-games-漏歷史轉折">實證 3：Riot Games 漏歷史轉折</h3>
<ul>
<li><strong>Case 觀察段</strong>：「關鍵架構決策：從 multi-tenant cluster 模型改成 single-tenant per game」</li>
<li><strong>章節（錯）</strong>：「揭露 single-tenant per game 的多 cluster 策略」← 漏掉轉折、只保留終態</li>
<li><strong>章節（對）</strong>：「揭露架構決策從 multi-tenant cluster 改成 single-tenant per game」← 保留 case 揭露的關鍵歷史</li>
</ul>
<hr>
<h2 id="引用句型對照">引用句型對照</h2>
<h3 id="skeleton-case-引用">Skeleton case 引用</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">對應 [X.CN case-title]：揭露 X / Y / Z 三個方向（case 直接列出）；
</span></span><span class="line"><span class="ln">2</span><span class="cl">以下展開基於通用工程知識補充。</span></span></code></pre></div><h3 id="rich-case-引用單層純觀察">Rich case 引用（單層、純觀察）</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">對應 [X.CN case-title]：揭露 X 具體數字 / 設計（case 觀察層）。</span></span></code></pre></div><h3 id="rich-case-引用含作者判讀">Rich case 引用（含作者判讀）</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">對應 [X.CN case-title]：揭露 X 觀察 + 作者判讀 Y（case 中 Y 屬判讀層、
</span></span><span class="line"><span class="ln">2</span><span class="cl">本章引用此推論）。</span></span></code></pre></div><h3 id="rich-case-引用避免硬性結論">Rich case 引用（避免硬性結論）</h3>
<p>避免使用「才是 / 必須 / 一定 / 關鍵是」這類強化詞、保留 case 原文的條件性表述（「取決於」「核心瓶頸」「主要驅動」）。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句含「才是 / 必須 / 一定 / 關鍵是 / 唯一」這類絕對詞</td>
          <td>通常是把作者判讀升級成 fact</td>
      </tr>
      <tr>
          <td>跨越兩段 case 內容（觀察 + 判讀）寫成單一斷言</td>
          <td>應分層、否則 reviewer B 抓 high issue</td>
      </tr>
      <tr>
          <td>引用後直接展開細節、沒給「以下基於通用工程知識補充」承接</td>
          <td>容易把通用知識掛到 case 名下</td>
      </tr>
      <tr>
          <td>漏掉 case 揭露的歷史轉折、只保留終態</td>
          <td>把 case 的「決策轉折」教訓抹平、讀者失去歷史 context</td>
      </tr>
      <tr>
          <td>Stage 1 抽 findings 不標來源層（觀察 / 判讀）</td>
          <td>Stage 2 寫作時無 mark、必踩 fact-derive 錯位</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-1-抽-findings-的標明格式">Stage 1 抽 findings 的標明格式</h2>
<p>抽 findings 時、rich case 的 finding 要標明來源層：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">Finding: 線性擴展是 OLTP 設計最高目標、coordinator 是傳統 OLTP 的擴展瓶頸
</span></span><span class="line"><span class="ln">2</span><span class="cl">來源: 9.C10 Spanner 案例
</span></span><span class="line"><span class="ln">3</span><span class="cl">- 觀察層：「2 nodes → 45K reads/sec, 4 nodes → 90K reads/sec」段（case fact）
</span></span><span class="line"><span class="ln">4</span><span class="cl">- 判讀層：作者「線性擴展是最高目標」是推論（case 中標為判讀）
</span></span><span class="line"><span class="ln">5</span><span class="cl">章節: 1.11 全球分散式 OLTP
</span></span><span class="line"><span class="ln">6</span><span class="cl">引用方式: 觀察層直接引用、判讀層用「作者判讀」明示</span></span></code></pre></div><p>Stage 2 寫作時依照 finding 列表的層別標記決定引用句型。</p>
<hr>
<h2 id="自掃描提示">自掃描提示</h2>
<p>寫作完後、檢查每處 rich case 引用是否：</p>
<ol>
<li>用了「才是 / 必須 / 一定 / 關鍵是 / 唯一」等強化詞 → 通常是把判讀升級成 fact</li>
<li>跨越兩段 case 內容（觀察 + 判讀）卻寫成單一斷言 → 應分層</li>
<li>引用後直接展開細節、沒給「以下基於通用工程知識補充」承接 → 容易把通用知識掛到 case 名下</li>
<li>漏掉 case 揭露的歷史轉折 / 條件 / 邊界 → 重讀 case「決策段」補回</li>
</ol>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>互補 — #115 看 case 整體類型、本卡看 case 內部結構</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>第三類失分 — 章節 derive 升級成 case 揭露（07 新發現）</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡是 case citation surface、兩者並列為 citation 紀律的不同 surface（standard / internal-link / case）</td>
      </tr>
      <tr>
          <td><a href="../colloquial-rhetoric-erodes-technical-precision/">#111 口語化修辭稀釋技術精度</a></td>
          <td>強化詞屬「結局描述代替契約描述」、跟本卡的判讀層升級為 fact 同類</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>高 stakes 內容輪 E.5 citation 精確度檢查包含本卡紀律</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 便利的引用句型（壓縮兩層成「揭露 X」、補強化詞）跟 case fidelity 紀律反向</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句含強化詞（才是 / 必須 / 一定）</td>
          <td>回 case 原文確認是 fact 還是 derive、derive 要降級或標明</td>
      </tr>
      <tr>
          <td>找不到 case 原文的對應段</td>
          <td>引用是 LLM 推論、不是 case 揭露、退回「揭露 X 方向」</td>
      </tr>
      <tr>
          <td>Rich case 引用沒分層、整段平鋪</td>
          <td>用「揭露 X 觀察 + 作者判讀 Y」重寫</td>
      </tr>
      <tr>
          <td>章節 + 通用工程知識段沒明確分隔</td>
          <td>補「以下基於通用工程知識補充」承接</td>
      </tr>
      <tr>
          <td>Reviewer B 抓 high issue 集中在 rich case</td>
          <td>紀律失效、整章節重審所有 rich case 引用</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：Fact 跟 derive 的差別在「來源是 case 還是作者」、跟內容對錯無關。讀者回查 case 時、要能反向 trace 章節的每個斷言到 case 原文的對應段、找不到的就是錯位。</p>
]]></content:encoded></item><item><title>跨多個 case 合成的 frame 必須標為章節合成、非 case 原文</title><link>https://tarrragon.github.io/blog/report/cross-case-synthesized-frame-must-be-labeled/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/cross-case-synthesized-frame-must-be-labeled/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>跨 case 合成 frame 必須標為章節合成、非 case 原文揭露。這層紀律規範「章節把多個 case 的失效訊號抽象為更高層概念」時的引用語氣 — 抽象 frame 在 case 原文 grep 不到時、要 explicit 標「本章合成」、避免讀者把章節 derive 當 case fact。兩種寫法的差別：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>情境&lt;/th>
 &lt;th>引用紀律&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Case 原文段直接寫此 frame&lt;/td>
 &lt;td>「兩 case 共同標明 X」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>章節從多個 case 失效訊號抽象&lt;/td>
 &lt;td>「本章把兩者抽象為 X 是 YYY 視角的合成 frame、非 case 原文框架」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩種寫法的差別在 case fidelity 紀律 — 不只是修辭層的選擇 — reviewer B 對照原文時、會抓「揭露 X」斷言是否有 case 原文支撐。&lt;/p>
&lt;hr>
&lt;h2 id="跟既有-fact-vs-derive-分層的差別">跟既有 fact-vs-derive 分層的差別&lt;/h2>
&lt;p>&lt;a href="../fact-vs-derive-citation-layering/">#116 fact vs derive 分層&lt;/a> 處理 &lt;em>單一 case 內部&lt;/em> 的觀察層 vs 判讀層分層。本卡處理 &lt;em>跨多個 case&lt;/em> 抽象出更高層 frame 的失分類型 — 屬於 fact-derive 紀律的第三類風險：&lt;/p>
&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>Skeleton 擴寫&lt;/td>
 &lt;td>case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露&lt;/td>
 &lt;td>case 說「異常查詢偵測維度」、章節寫「query 體積 1MB → 10GB / 天」（編造）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Rich case fact-derive 混淆&lt;/td>
 &lt;td>case 有提、但屬作者判讀層的內容被寫成 case fact&lt;/td>
 &lt;td>case 把「35ms」放觀察、「反推 region 部署」放判讀；章節合併（升級判讀）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>跨 case 合成 frame&lt;/strong>（本卡）&lt;/td>
 &lt;td>case &lt;em>單獨&lt;/em> 寫的訊號被章節 &lt;em>跨 case 合成&lt;/em> 抽象為更高層 frame、frame 本身不在任一 case 原文&lt;/td>
 &lt;td>Uber 寫「告警串接不足」、Slack 寫「訊號未匯流」、章節合成「跨工具回查壓力」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 寫教學內容時容易把多個 case 的相似訊號抽象成 frame、讓段落結構更清楚。但 &lt;em>標明 frame 來源&lt;/em> 直接決定 case fidelity：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Case 真的揭露 frame&lt;/strong>：case 原文段直接寫此 frame、可寫「兩 case 共同標明 X」（屬合法 fact 引用）&lt;/li>
&lt;li>&lt;strong>章節從 case 失效訊號抽象&lt;/strong>：case 寫的是 &lt;em>單獨&lt;/em> 訊號、章節把多個訊號抽象成更高層 frame、要明示「本章合成、非 case 原文」&lt;/li>
&lt;/ul>
&lt;p>漏掉這層 disclaimer、讀者把章節 derive 當成 case fact、回查 case 時會找不到 frame、章節失去 case 支撐。&lt;/p>
&lt;hr>
&lt;h2 id="實證案例">實證案例&lt;/h2>
&lt;p>backend/07 batch 1 模組驗證、case fidelity reviewer 抓的 2 個 high issue 都屬此類：&lt;/p>
&lt;h3 id="實證-177-跨工具回查壓力">實證 1：7.7 跨工具回查壓力&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「對應 [Uber 2022] 跟 [Slack 2022]：兩個案例都揭露『身分事件後的跨工具回查壓力』」&lt;/li>
&lt;li>&lt;strong>Case 原文&lt;/strong>：Uber 失效控制面寫「身分異常事件與值班告警串接不足」、Slack 寫「程式碼資產存取異常訊號未快速匯流」— 都是 &lt;em>單工具內&lt;/em> 的訊號失效、「跨工具」這個 axis 是章節合成&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「兩個案例分別在身分監控層揭露同類失效訊號 — Uber 標明 X、Slack 標明 Y。本章把兩者抽象為『跨工具回查壓力』是稽核視角的合成 frame、非 case 原文框架。」&lt;/li>
&lt;/ul>
&lt;h3 id="實證-277-平台責任切分">實證 2：7.7 平台責任切分&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「對應 [SolarWinds 2020]：揭露的『供應鏈事件中的平台責任切分』是稽核層的代表壓力場景」&lt;/li>
&lt;li>&lt;strong>Case 原文&lt;/strong>：失效控制面寫「更新來源信任過於單點」「行為監測難以區分合法元件」「供應鏈異常缺隔離流程」— 都是供應鏈信任議題、不是「平台 vs 產品的 audit 責任分離」&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「案例的失效控制面標明 X / Y / Z。本章把這幾條失效面從供應鏈信任視角延伸到稽核視角、抽象為『平台 vs 產品的責任邊界判讀壓力』— 此 frame 為本章合成、非 case 原文。」&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="反例case-真的揭露-frame不需-disclaimer">反例：case 真的揭露 frame（不需 disclaimer）&lt;/h2>
&lt;p>跨 case 引用是否要標「本章合成」、取決於 frame 在 case 原文是否能 grep 找到。當 case 原文段直接寫此 frame、可直接引用：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>跨 case 合成 frame 必須標為章節合成、非 case 原文揭露。這層紀律規範「章節把多個 case 的失效訊號抽象為更高層概念」時的引用語氣 — 抽象 frame 在 case 原文 grep 不到時、要 explicit 標「本章合成」、避免讀者把章節 derive 當 case fact。兩種寫法的差別：</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>引用紀律</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Case 原文段直接寫此 frame</td>
          <td>「兩 case 共同標明 X」</td>
      </tr>
      <tr>
          <td>章節從多個 case 失效訊號抽象</td>
          <td>「本章把兩者抽象為 X 是 YYY 視角的合成 frame、非 case 原文框架」</td>
      </tr>
  </tbody>
</table>
<p>兩種寫法的差別在 case fidelity 紀律 — 不只是修辭層的選擇 — reviewer B 對照原文時、會抓「揭露 X」斷言是否有 case 原文支撐。</p>
<hr>
<h2 id="跟既有-fact-vs-derive-分層的差別">跟既有 fact-vs-derive 分層的差別</h2>
<p><a href="../fact-vs-derive-citation-layering/">#116 fact vs derive 分層</a> 處理 <em>單一 case 內部</em> 的觀察層 vs 判讀層分層。本卡處理 <em>跨多個 case</em> 抽象出更高層 frame 的失分類型 — 屬於 fact-derive 紀律的第三類風險：</p>
<table>
  <thead>
      <tr>
          <th>類型</th>
          <th>風險</th>
          <th>範例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton 擴寫</td>
          <td>case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露</td>
          <td>case 說「異常查詢偵測維度」、章節寫「query 體積 1MB → 10GB / 天」（編造）</td>
      </tr>
      <tr>
          <td>Rich case fact-derive 混淆</td>
          <td>case 有提、但屬作者判讀層的內容被寫成 case fact</td>
          <td>case 把「35ms」放觀察、「反推 region 部署」放判讀；章節合併（升級判讀）</td>
      </tr>
      <tr>
          <td><strong>跨 case 合成 frame</strong>（本卡）</td>
          <td>case <em>單獨</em> 寫的訊號被章節 <em>跨 case 合成</em> 抽象為更高層 frame、frame 本身不在任一 case 原文</td>
          <td>Uber 寫「告警串接不足」、Slack 寫「訊號未匯流」、章節合成「跨工具回查壓力」</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 寫教學內容時容易把多個 case 的相似訊號抽象成 frame、讓段落結構更清楚。但 <em>標明 frame 來源</em> 直接決定 case fidelity：</p>
<ul>
<li><strong>Case 真的揭露 frame</strong>：case 原文段直接寫此 frame、可寫「兩 case 共同標明 X」（屬合法 fact 引用）</li>
<li><strong>章節從 case 失效訊號抽象</strong>：case 寫的是 <em>單獨</em> 訊號、章節把多個訊號抽象成更高層 frame、要明示「本章合成、非 case 原文」</li>
</ul>
<p>漏掉這層 disclaimer、讀者把章節 derive 當成 case fact、回查 case 時會找不到 frame、章節失去 case 支撐。</p>
<hr>
<h2 id="實證案例">實證案例</h2>
<p>backend/07 batch 1 模組驗證、case fidelity reviewer 抓的 2 個 high issue 都屬此類：</p>
<h3 id="實證-177-跨工具回查壓力">實證 1：7.7 跨工具回查壓力</h3>
<ul>
<li><strong>章節（錯）</strong>：「對應 [Uber 2022] 跟 [Slack 2022]：兩個案例都揭露『身分事件後的跨工具回查壓力』」</li>
<li><strong>Case 原文</strong>：Uber 失效控制面寫「身分異常事件與值班告警串接不足」、Slack 寫「程式碼資產存取異常訊號未快速匯流」— 都是 <em>單工具內</em> 的訊號失效、「跨工具」這個 axis 是章節合成</li>
<li><strong>章節（對）</strong>：「兩個案例分別在身分監控層揭露同類失效訊號 — Uber 標明 X、Slack 標明 Y。本章把兩者抽象為『跨工具回查壓力』是稽核視角的合成 frame、非 case 原文框架。」</li>
</ul>
<h3 id="實證-277-平台責任切分">實證 2：7.7 平台責任切分</h3>
<ul>
<li><strong>章節（錯）</strong>：「對應 [SolarWinds 2020]：揭露的『供應鏈事件中的平台責任切分』是稽核層的代表壓力場景」</li>
<li><strong>Case 原文</strong>：失效控制面寫「更新來源信任過於單點」「行為監測難以區分合法元件」「供應鏈異常缺隔離流程」— 都是供應鏈信任議題、不是「平台 vs 產品的 audit 責任分離」</li>
<li><strong>章節（對）</strong>：「案例的失效控制面標明 X / Y / Z。本章把這幾條失效面從供應鏈信任視角延伸到稽核視角、抽象為『平台 vs 產品的責任邊界判讀壓力』— 此 frame 為本章合成、非 case 原文。」</li>
</ul>
<hr>
<h2 id="反例case-真的揭露-frame不需-disclaimer">反例：case 真的揭露 frame（不需 disclaimer）</h2>
<p>跨 case 引用是否要標「本章合成」、取決於 frame 在 case 原文是否能 grep 找到。當 case 原文段直接寫此 frame、可直接引用：</p>
<h3 id="反例-1邊界設備三同步-mechanism">反例 1：邊界設備三同步 mechanism</h3>
<ul>
<li><strong>章節</strong>：「對應 [Citrix Bleed 2023] 跟 [PAN-OS 2024]：兩個案例的『mechanism 總綱』段共同標明這個三同步原則」</li>
<li><strong>Case 原文</strong>：兩個 case 文末「mechanism 總綱」段確實寫「邊界事件的核心是讓『漏洞修補』『會話 / 憑證失效』『異常痕跡清查』三件事同步發生」</li>
<li><strong>判讀</strong>：frame 在 case 原文、可引用「兩 case 共同標明」、不需 disclaimer</li>
</ul>
<p>差別判斷：</p>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該怎麼寫</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Frame 文字在 case 原文 grep 找得到</td>
          <td>「兩 case 共同標明 X」</td>
      </tr>
      <tr>
          <td>Frame 是章節從 case 失效訊號抽象出</td>
          <td>「本章把 X 抽象為 Y 是 Z 視角的合成 frame」</td>
      </tr>
      <tr>
          <td>部分 case 揭露 frame、部分章節抽象</td>
          <td>兩段拆開、各自標明</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="為什麼-llm-容易踩">為什麼 LLM 容易踩</h2>
<p>從 LLM 寫教學內容的視角看、跨 case 合成 frame 是「自然湧現」的模式：</p>
<ol>
<li>LLM 讀完多個 case 後、會自動抽象出共通 pattern（這是 LLM 的訓練優勢）</li>
<li>寫章節時、章節結構需要 frame 把多個 case 組織起來（教學結構需求）</li>
<li>合成 frame 寫成「兩 case 都揭露 X」最順、不寫 disclaimer 最省字數</li>
<li>結果是 <em>frame 本身不在 case 原文</em>、但章節寫得像 case 揭露</li>
</ol>
<p>LLM 沒辦法 self-detect 這個盲點 — 因為從 LLM 視角、「合成」跟「揭露」在語意上很接近、需要對照 case 原文才能分辨。</p>
<hr>
<h2 id="防範路徑">防範路徑</h2>
<h3 id="stage-2-寫作時主動防範">Stage 2 寫作時主動防範</h3>
<p>每寫一個跨 case 合成 frame、跑「frame 在 case 原文 grep 得到嗎」檢查：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">rg <span class="s2">&#34;&lt;frame 文字&gt;&#34;</span> &lt;<span class="k">case</span> file&gt;</span></span></code></pre></div><p>抓不到 → 用「本章合成、非 case 原文」disclaimer
抓得到 → 直接引用「兩 case 共同標明」</p>
<h3 id="stage-3-reviewer-b-prompt-補強">Stage 3 reviewer B prompt 補強</h3>
<p>設計 reviewer B prompt 時、要明示「跨 case 合成 frame 必須標為本章合成、非 case 原文」是 high 級 issue 抓取項。沒明示時、reviewer B 容易把這類問題降級為 medium、累積失分。</p>
<p>prompt 應包含：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">特別檢查：當引用句說「兩個 case 都揭露 X」時、確認 X 是 case 原文寫的、
</span></span><span class="line"><span class="ln">2</span><span class="cl">還是章節跨 case 合成的。後者要在引用句明示「本章合成 / 非 case 原文框架」。</span></span></code></pre></div><hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「兩個案例都揭露 X」但 X 在原文 grep 不到</td>
          <td>章節 derive 升級成 case fact、reviewer B 抓 high issue</td>
      </tr>
      <tr>
          <td>跨 case 引用沒 disclaimer、直接寫「揭露」</td>
          <td>讀者回查 case 找不到對應、章節失去支撐</td>
      </tr>
      <tr>
          <td>Case 失效訊號是單獨 mechanism、章節抽象成上位 frame 但寫得像 case 揭露</td>
          <td>把「合成」包裝成「揭露」、案例驅動寫作的紀律失效</td>
      </tr>
      <tr>
          <td>Stage 3 reviewer B prompt 沒明示此類為 high</td>
          <td>reviewer 容易降級為 medium、累積失分不被優先處理</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>上游卡 — 先判 case 類型、再判跨 case 合成 frame 是否成立</td>
      </tr>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>同類紀律 — case 內部 fact-derive 分層的延伸、應用到跨 case 情境</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>輪 5（反例 / 邊界）跟輪 E.2（claim → evidence 推論鏈完整）的具體實作</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass frame 顆粒度盲點</a></td>
          <td>同類盲點 — 一個是同 reviewer 多輪 catch 同類錯、本卡是跨 case 合成的章節盲點</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 合成 frame 寫成「兩 case 都揭露 X」最順、不寫 disclaimer 最省字數、便利跟 fidelity 反向</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡跟 #116 是 case citation surface、三者並列為 citation 紀律的不同 surface</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句說「兩個 case 都揭露 X」</td>
          <td>grep case 原文、X 沒寫的話補「本章合成」disclaimer</td>
      </tr>
      <tr>
          <td>Frame 寫得很順但 case 原文沒這個詞</td>
          <td>章節 derive、改成「本章把 X 抽象為 Y」</td>
      </tr>
      <tr>
          <td>Reviewer B 抓 high issue 集中在「跨 case 引用」</td>
          <td>紀律失效、整章節重審跨 case 引用</td>
      </tr>
      <tr>
          <td>寫多 case 比較時想用「兩個都揭露 X」結構</td>
          <td>先 grep 確認、抓不到的話改用「兩個分別揭露 X1 / X2、本章合成 Y」</td>
      </tr>
      <tr>
          <td>Case 是 medium / rich 類型但「揭露 frame」是抽象詞</td>
          <td>通常是合成、不是 case 原文 frame</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：跨 case 合成 frame 本身是合法的寫作技巧、問題在 <em>不標明</em>。一句 disclaimer（「本章合成、非 case 原文」）就能把 fact-derive 紀律補回來、修法成本極低。</p>
]]></content:encoded></item><item><title>案例引用三段式段落結構：概念定義 → case 引用 → 通用展開</title><link>https://tarrragon.github.io/blog/report/case-citation-three-part-structure/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-citation-three-part-structure/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Case 引用段落要走三段式結構紀律 — 段首是概念定義句、case 引用退到第二位置、最後通用工程知識展開。讓段落結構反映「概念 → 案例 → 操作」的論證流、不是「案例 → 概念 → 操作」的反向流。&lt;/p>
&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>「對應 [case] 揭露 X」段首取代核心概念&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>第二位置&lt;/td>
 &lt;td>Case 引用：「對應 [case]：揭露 N 個機制 — &amp;hellip;」&lt;/td>
 &lt;td>跨章 13+ 段同句構、case 引用變儀式&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>通用展開&lt;/td>
 &lt;td>「以下基於通用工程知識補充」+ 具體操作&lt;/td>
 &lt;td>通用知識直接掛在 case 名下、沒明示分層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>違反三段式最常見的形式是「概念定義句缺位、case 引用直接當段首」— 讀者尚未理解概念就被丟入案例細節。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他-case-引用紀律的差別">跟其他 case 引用紀律的差別&lt;/h2>
&lt;p>本卡跟 #115 / #116 / #117 是 case 引用紀律的不同 axis、互相正交：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>卡&lt;/th>
 &lt;th>Axis&lt;/th>
 &lt;th>看什麼&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>#115 案例引用深度跟著 case 類型走&lt;/td>
 &lt;td>引用「深度」&lt;/td>
 &lt;td>Case 整體類型（skeleton / medium / rich）決定承接深度&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>#116 Fact vs Derive 分層引用&lt;/td>
 &lt;td>引用「分層」&lt;/td>
 &lt;td>Case 內部結構（觀察層 / 判讀層）決定要不要分層標明&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>#117 跨 case 合成 frame 必須標明&lt;/td>
 &lt;td>引用「合成」&lt;/td>
 &lt;td>跨多 case 抽象 frame 時要 explicit 標「本章合成」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>#120 案例引用三段式（本卡）&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>引用「結構」&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>段落順序：概念 → case → 通用&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>四 axis 組合起來覆蓋 case 引用的完整紀律。寫每段 case 引用時、四個 axis 都要過一遍。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>backend/06 模組 reviewer 抓出 11/12 新段都犯「case 引用取代概念定義」的問題、屬最大宗 systemic 違規。原因：&lt;/p>
&lt;ol>
&lt;li>LLM 從 case 反推內容時、容易把 case 揭露當概念出發點&lt;/li>
&lt;li>Case 引用句構單一（「對應 [X]：揭露 N 個機制」）、跨章讀感同質&lt;/li>
&lt;li>概念定義被推到第二段、商業邏輯先於 case 的原則被推翻&lt;/li>
&lt;/ol>
&lt;p>三段式紀律的價值是把「概念」「案例」「展開」三層分離、讓讀者依層級理解。&lt;/p>
&lt;hr>
&lt;h2 id="三段式範例">三段式範例&lt;/h2>
&lt;h3 id="正確結構">正確結構&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">&lt;span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl">失效局部化是把單一依賴退化限制在最小可影響範圍的能力。把「依賴 budget」
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl">從統一全域帳本拆成 per-cell 可用度結構、是這層治理的核心責任。失效局部
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl">化要解四個子問題：擴散邊界、熱點重疊、控制面解耦、失敗模式工作量恆定。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl">對應 [&lt;span class="nt">A1 Amazon Shuffle Sharding 與 Cell 邊界&lt;/span>](&lt;span class="na">.../shuffle-sharding-and-cell-boundary/&lt;/span>)：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl">揭露四個機制對應上述四個子問題 — cell 邊界（擴散邊界）、shuffle sharding
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl">（熱點重疊）、static stability（控制面解耦）、constant work（失敗模式工作
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">量恆定）。這四個機制把恢復策略從「全域搶救」轉為「分批收斂」。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl">以下基於通用工程知識補充的具體操作 ...&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="錯誤結構">錯誤結構&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">依賴 budget 的另一個面向是把失效影響限制在局部、不擴散到全域。多租戶
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">服務跟共享資源服務若沒有明確邊界，單一依賴退化會觸發整體退化。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">對應 [A1 Amazon Shuffle Sharding 與 Cell 邊界]：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">揭露四個機制 — cell 邊界、shuffle sharding、static stability、constant work。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>差異：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Case 引用段落要走三段式結構紀律 — 段首是概念定義句、case 引用退到第二位置、最後通用工程知識展開。讓段落結構反映「概念 → 案例 → 操作」的論證流、不是「案例 → 概念 → 操作」的反向流。</p>
<table>
  <thead>
      <tr>
          <th>段位</th>
          <th>內容</th>
          <th>反模式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首</td>
          <td>概念定義句：該概念是什麼、承擔什麼責任</td>
          <td>「對應 [case] 揭露 X」段首取代核心概念</td>
      </tr>
      <tr>
          <td>第二位置</td>
          <td>Case 引用：「對應 [case]：揭露 N 個機制 — &hellip;」</td>
          <td>跨章 13+ 段同句構、case 引用變儀式</td>
      </tr>
      <tr>
          <td>通用展開</td>
          <td>「以下基於通用工程知識補充」+ 具體操作</td>
          <td>通用知識直接掛在 case 名下、沒明示分層</td>
      </tr>
  </tbody>
</table>
<p>違反三段式最常見的形式是「概念定義句缺位、case 引用直接當段首」— 讀者尚未理解概念就被丟入案例細節。</p>
<hr>
<h2 id="跟其他-case-引用紀律的差別">跟其他 case 引用紀律的差別</h2>
<p>本卡跟 #115 / #116 / #117 是 case 引用紀律的不同 axis、互相正交：</p>
<table>
  <thead>
      <tr>
          <th>卡</th>
          <th>Axis</th>
          <th>看什麼</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>#115 案例引用深度跟著 case 類型走</td>
          <td>引用「深度」</td>
          <td>Case 整體類型（skeleton / medium / rich）決定承接深度</td>
      </tr>
      <tr>
          <td>#116 Fact vs Derive 分層引用</td>
          <td>引用「分層」</td>
          <td>Case 內部結構（觀察層 / 判讀層）決定要不要分層標明</td>
      </tr>
      <tr>
          <td>#117 跨 case 合成 frame 必須標明</td>
          <td>引用「合成」</td>
          <td>跨多 case 抽象 frame 時要 explicit 標「本章合成」</td>
      </tr>
      <tr>
          <td><strong>#120 案例引用三段式（本卡）</strong></td>
          <td><strong>引用「結構」</strong></td>
          <td><strong>段落順序：概念 → case → 通用</strong></td>
      </tr>
  </tbody>
</table>
<p>四 axis 組合起來覆蓋 case 引用的完整紀律。寫每段 case 引用時、四個 axis 都要過一遍。</p>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>backend/06 模組 reviewer 抓出 11/12 新段都犯「case 引用取代概念定義」的問題、屬最大宗 systemic 違規。原因：</p>
<ol>
<li>LLM 從 case 反推內容時、容易把 case 揭露當概念出發點</li>
<li>Case 引用句構單一（「對應 [X]：揭露 N 個機制」）、跨章讀感同質</li>
<li>概念定義被推到第二段、商業邏輯先於 case 的原則被推翻</li>
</ol>
<p>三段式紀律的價值是把「概念」「案例」「展開」三層分離、讓讀者依層級理解。</p>
<hr>
<h2 id="三段式範例">三段式範例</h2>
<h3 id="正確結構">正確結構</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">失效局部化是把單一依賴退化限制在最小可影響範圍的能力。把「依賴 budget」
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">從統一全域帳本拆成 per-cell 可用度結構、是這層治理的核心責任。失效局部
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">化要解四個子問題：擴散邊界、熱點重疊、控制面解耦、失敗模式工作量恆定。
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">對應 [<span class="nt">A1 Amazon Shuffle Sharding 與 Cell 邊界</span>](<span class="na">.../shuffle-sharding-and-cell-boundary/</span>)：
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">揭露四個機制對應上述四個子問題 — cell 邊界（擴散邊界）、shuffle sharding
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">（熱點重疊）、static stability（控制面解耦）、constant work（失敗模式工作
</span></span><span class="line"><span class="ln">10</span><span class="cl">量恆定）。這四個機制把恢復策略從「全域搶救」轉為「分批收斂」。
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl">以下基於通用工程知識補充的具體操作 ...</span></span></code></pre></div><h3 id="錯誤結構">錯誤結構</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">依賴 budget 的另一個面向是把失效影響限制在局部、不擴散到全域。多租戶
</span></span><span class="line"><span class="ln">4</span><span class="cl">服務跟共享資源服務若沒有明確邊界，單一依賴退化會觸發整體退化。
</span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl">對應 [A1 Amazon Shuffle Sharding 與 Cell 邊界]：
</span></span><span class="line"><span class="ln">7</span><span class="cl">揭露四個機制 — cell 邊界、shuffle sharding、static stability、constant work。</span></span></code></pre></div><p>差異：</p>
<ul>
<li><strong>正確</strong>：段首「失效局部化是&hellip;的能力」直接給概念定義、case 揭露的四機制對應到「四個子問題」、讀者懂概念才看到案例</li>
<li><strong>錯誤</strong>：段首用「另一個面向」鋪墊、case 直接列四機制、讀者尚未理解就被丟入案例細節</li>
</ul>
<hr>
<h2 id="案例引用句構分流07-模組強化">案例引用句構分流（07 模組強化）</h2>
<p>即使遵守三段式紀律、跨章 case 引用句構仍會同質化。07 batch 1 驗證 13 處 case 引用 11 處用同一句構「揭露 N 層失效控制面 — A、B、C」、讀者跨章連讀時把 case 引用當儀式而非論證。</p>
<p>分流原則：句構跟著 case 類型走、用 case 自身結構決定引用方式：</p>
<table>
  <thead>
      <tr>
          <th>Case 結構</th>
          <th>適用句構</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Case 直接列 N 個 mechanism</td>
          <td>「揭露 N 層失效控制面 — A、B、C」</td>
      </tr>
      <tr>
          <td>Case 主寫單一壓力場景</td>
          <td>「補的失效訊號是 X、mechanism 是 Y」</td>
      </tr>
      <tr>
          <td>Case 揭露歷史轉折</td>
          <td>「從 X 改成 Y 的關鍵架構決策」</td>
      </tr>
      <tr>
          <td>Case 揭露對比結構</td>
          <td>「揭露兩個層次的對照：A vs B」</td>
      </tr>
      <tr>
          <td>多 case 並列補不同層</td>
          <td>「A case 補 X、B case 補 Y」</td>
      </tr>
      <tr>
          <td>Case 揭露 mechanism 可引用範圍</td>
          <td>「案例『可落地檢查點』直接列出 mechanism 屬可引用範圍」</td>
      </tr>
  </tbody>
</table>
<p>寫多章時刻意變化句構、避免讀者連讀數章感「每段開頭都長一樣」。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首直接是「對應 [case]」、沒概念定義句</td>
          <td>商業邏輯先於 case 原則被推翻、讀者尚未理解就被丟入案例細節</td>
      </tr>
      <tr>
          <td>段首用「另一個面向」「不只是 X、是 Y」鋪墊取代概念定義</td>
          <td>推進論證骨架取代概念先行</td>
      </tr>
      <tr>
          <td>三段式中段（case 引用）擴寫成具體實作細節</td>
          <td>把通用工程知識掛在 case 名下、case fidelity 失分</td>
      </tr>
      <tr>
          <td>通用展開段沒明示「以下基於通用工程知識補充」</td>
          <td>讀者誤以為展開內容也來自 case</td>
      </tr>
      <tr>
          <td>跨章 5+ 段用同一句構「揭露 N 層失效控制面」</td>
          <td>Case 引用變儀式、讀者連讀感同質</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-2-自查清單">Stage 2 自查清單</h2>
<p>寫完每章 case 引用後、檢查：</p>
<ol>
<li><strong>段首是否是概念定義句</strong>？（不是 case 引用、不是「另一個面向」鋪墊）</li>
<li><strong>Case 引用是否在第二位置</strong>？（不是段首）</li>
<li><strong>通用展開是否有「以下基於通用工程知識補充」承接</strong>？</li>
<li><strong>句構是否跟前面章節相同</strong>？（同模組超過 3 章用同句構就該變化）</li>
</ol>
<p>掃描指令：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 找段首是 case 引用的段（最嚴格）</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">rg -n <span class="s2">&#34;^對應 \[&#34;</span> &lt;module-paths&gt;
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"># 找 ## 標題後緊接 case 引用的段（要手動 review）</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">rg -B0 -A3 -n <span class="s2">&#34;^## &#34;</span> &lt;file&gt; <span class="p">|</span> rg <span class="s2">&#34;對應 \[&#34;</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="c1"># 找句構同質化（跨檔抓「揭露 N 層失效控制面」出現次數）</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">rg -c <span class="s2">&#34;揭露[^。]*失效控制面&#34;</span> &lt;module-paths&gt;</span></span></code></pre></div><p><strong>False positive 警示</strong>：<code>^對應 \[</code> 在三段分離結構（概念定義段 → 空行 → case 引用獨立段）下會 false positive、要用 awk 看 prev line 是否為實質概念段：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">awk <span class="s1">&#39;/^對應 \[/{prev_blank=(prev==&#34;&#34;); print FILENAME &#34;:&#34; NR &#34;: prev_blank=&#34; prev_blank} {prev=$0}&#39;</span> &lt;file&gt;</span></span></code></pre></div><p>prev_blank=1 + 前段有實質概念定義 → 屬規範允許（三段分離）。</p>
<hr>
<h2 id="polish-pass-修法">Polish pass 修法</h2>
<p>如果 stage 3 reviewer 抓出大量「case 引用段首」issue、polish pass 的修法：</p>
<ol>
<li>每個有 issue 的段、在 case 引用前補一句「概念定義 + 核心責任」</li>
<li>不重寫整段、只加 lead sentence（保留 case 引用本身）</li>
<li>變化 case 引用句構：把 11/12 段同一句構打散成 3-4 種變化</li>
<li>修完跑自掃描確認段首不再是 case 引用</li>
</ol>
<p>修法成本：每段補 1-2 句概念定義、單章約 5-10 分鐘、整模組 1-2 小時。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>互補 — 不同 axis、#115 看引用深度、本卡看引用結構</td>
      </tr>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>互補 — 不同 axis、#116 看 case 內部分層、本卡看段落順序</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>互補 — 不同 axis、#117 看跨 case 合成、本卡看單段結構</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>互補 — #83 是 review 流程跨輪 frame、本卡是寫作當下段落順序</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 「對應 [case]」當段首最順、不寫概念定義最省字、便利跟意圖對齊反向</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass review 的 frame 顆粒度盲點</a></td>
          <td>句構同質化是 #114 在 case 引用 surface 的具體展現</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首是「對應 [case] 揭露 X」</td>
          <td>補概念定義句、case 引用退到第二位置</td>
      </tr>
      <tr>
          <td>段首用「另一個面向」「不只是 X、是 Y」鋪墊</td>
          <td>改成概念定義先行、不用對比骨架推進</td>
      </tr>
      <tr>
          <td>跨章 5+ 段用同句構「揭露 N 層失效控制面」</td>
          <td>Stage 5 polish pass 句構分流</td>
      </tr>
      <tr>
          <td>Reviewer A 抓出「case 引用段首」issue 多</td>
          <td>三段式紀律失效、整模組重審</td>
      </tr>
      <tr>
          <td>通用展開段沒明示「以下基於通用工程知識補充」</td>
          <td>補承接句、讓讀者知道展開內容是通用知識</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：三段式紀律的價值是把「概念 → 案例 → 操作」三層分離、讓讀者依層級理解。段首被 case 引用取代會推翻商業邏輯先於 case 的原則、是 LLM 寫教學內容的系統性傾向。</p>
]]></content:encoded></item><item><title>貫穿式案例是服務教材的教學骨架</title><link>https://tarrragon.github.io/blog/report/throughline-case-as-teaching-spine/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/throughline-case-as-teaching-spine/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>服務型教材需要貫穿式案例作為教學骨架。資料庫、快取、queue、觀測、部署、可靠性、資安、事故與容量都可以獨立成章，但讀者真正需要學會的是這些能力如何在同一個服務裡交接、互相約束並共同演進。&lt;/p>
&lt;p>貫穿式案例是一條可重播的服務演進路徑，而非單一大型專案手冊。它用同一個中性服務情境反覆穿過多個模組，讓讀者看到每個模組處理的是同一個系統在不同壓力下的責任切面。&lt;/p>
&lt;h2 id="warp-分析摘要">WARP 分析摘要&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>面向&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Anchor&lt;/td>
 &lt;td>Backend 教材要教的是後端服務如何共同支撐 production system，單章正確不足以證明整體教學成立。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Step 0&lt;/td>
 &lt;td>現有 Backend 已有多個服務路徑示範與 artifact backbone，但還缺系列入口層明示的貫穿式案例。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Widen&lt;/td>
 &lt;td>可選方式有能力分類、讀者旅程、貫穿式案例。三者可疊加：能力分類是目錄，讀者旅程是路線，貫穿式案例是演練骨架。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Reality Test&lt;/td>
 &lt;td>Go 用簡化通知服務承接語法到實戰，LLM 用本地 LLM 工作流承接心智模型到工具；Backend 也需要同類骨架。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Prepare&lt;/td>
 &lt;td>若後續章節各自引用不同情境，讀者仍難以看出 DB / cache / queue / observability / incident 如何在同一服務內交接。&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>反向驗證：貫穿式案例要維持中性、簡化、可替換，並明示它是教學載體；讀者理解案例所需的背景要由文章提供，而非內部專案知識。&lt;/p>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>Backend 已有多篇服務路徑示範，例如 schema migration evidence、cache migration rollback、queue retry replay、checkout API evidence package、release gate、credential rotation 與 incident decision log。這些文章各自能說明一段能力，但它們在入口層還沒有被明確收斂成一條「讀者可以跟著走」的服務演進路線。&lt;/p>
&lt;p>對照 Go 與 LLM：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>教材&lt;/th>
 &lt;th>貫穿骨架&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Go&lt;/td>
 &lt;td>從小程式走到簡化即時通知服務&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Go advanced&lt;/td>
 &lt;td>用長時間運行服務、WebSocket、event-driven service 當重複情境&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>LLM&lt;/td>
 &lt;td>用本地 LLM 寫 code 工作流，把硬體、推論伺服器、模型、IDE、安全串起來&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Backend&lt;/td>
 &lt;td>目前多個 artifact 示範分散存在，尚未在入口層組成一條主案例&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Backend 的內容特性更需要貫穿式案例，因為它處理的是多個外部服務的協作教材，範圍大於單一語言或單一工具。&lt;/p>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步選一個中性服務作為載體">第一步：選一個中性服務作為載體&lt;/h3>
&lt;p>貫穿式案例應該選讀者容易理解、又能自然觸發多個 Backend 模組的服務。較穩定的候選是 &lt;code>checkout / order / payment / notification&lt;/code> 類流程。&lt;/p>
&lt;p>這條服務路徑可承接：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>模組&lt;/th>
 &lt;th>在案例中的責任&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>01 Database&lt;/td>
 &lt;td>order / payment 狀態、schema migration、reconciliation&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>02 Cache&lt;/td>
 &lt;td>商品、價格或 entitlement 的 freshness 與 origin protection&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>03 Queue&lt;/td>
 &lt;td>order_created / payment_confirmed 的 retry、DLQ、replay&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>04 Observability&lt;/td>
 &lt;td>checkout evidence package、trace、dashboard、query link&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>05 Deployment&lt;/td>
 &lt;td>checkout service rollout、drain、rollback&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>06 Reliability&lt;/td>
 &lt;td>provider dependency release gate、load / chaos / regression&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>07 Security&lt;/td>
 &lt;td>webhook secret rotation、PII masking、audit evidence&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>08 Incident&lt;/td>
 &lt;td>payment incident decision log、write-back、action item&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>09 Performance&lt;/td>
 &lt;td>peak checkout capacity、saturation、cost per request&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="第二步把案例拆成多個可重播-episode">第二步：把案例拆成多個可重播 episode&lt;/h3>
&lt;p>貫穿式案例要避免寫成一篇巨文。較穩定的做法是拆成 episode，每個 episode 對應一個模組責任。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Episode&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>主要模組&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>E1&lt;/td>
 &lt;td>新增付款狀態欄位&lt;/td>
 &lt;td>01 + 04 + 08&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E2&lt;/td>
 &lt;td>商品價格快取失效與回源保護&lt;/td>
 &lt;td>02 + 04 + 06&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E3&lt;/td>
 &lt;td>訂單事件 consumer 失敗與 replay&lt;/td>
 &lt;td>03 + 06 + 08&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E4&lt;/td>
 &lt;td>Checkout service rollout&lt;/td>
 &lt;td>05 + 04 + 08&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E5&lt;/td>
 &lt;td>Payment provider timeout 變更&lt;/td>
 &lt;td>06 + 04 + 09&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E6&lt;/td>
 &lt;td>Webhook secret rotation&lt;/td>
 &lt;td>07 + 04 + 08&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>E7&lt;/td>
 &lt;td>Flash-sale peak readiness&lt;/td>
 &lt;td>09 + 02 + 03 + 06&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Episode 讓讀者看到「同一服務在不同壓力下需要不同模組」，同時保留單篇文章的原子性。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>服務型教材需要貫穿式案例作為教學骨架。資料庫、快取、queue、觀測、部署、可靠性、資安、事故與容量都可以獨立成章，但讀者真正需要學會的是這些能力如何在同一個服務裡交接、互相約束並共同演進。</p>
<p>貫穿式案例是一條可重播的服務演進路徑，而非單一大型專案手冊。它用同一個中性服務情境反覆穿過多個模組，讓讀者看到每個模組處理的是同一個系統在不同壓力下的責任切面。</p>
<h2 id="warp-分析摘要">WARP 分析摘要</h2>
<table>
  <thead>
      <tr>
          <th>面向</th>
          <th>內容</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Anchor</td>
          <td>Backend 教材要教的是後端服務如何共同支撐 production system，單章正確不足以證明整體教學成立。</td>
      </tr>
      <tr>
          <td>Step 0</td>
          <td>現有 Backend 已有多個服務路徑示範與 artifact backbone，但還缺系列入口層明示的貫穿式案例。</td>
      </tr>
      <tr>
          <td>Widen</td>
          <td>可選方式有能力分類、讀者旅程、貫穿式案例。三者可疊加：能力分類是目錄，讀者旅程是路線，貫穿式案例是演練骨架。</td>
      </tr>
      <tr>
          <td>Reality Test</td>
          <td>Go 用簡化通知服務承接語法到實戰，LLM 用本地 LLM 工作流承接心智模型到工具；Backend 也需要同類骨架。</td>
      </tr>
      <tr>
          <td>Prepare</td>
          <td>若後續章節各自引用不同情境，讀者仍難以看出 DB / cache / queue / observability / incident 如何在同一服務內交接。</td>
      </tr>
  </tbody>
</table>
<p>反向驗證：貫穿式案例要維持中性、簡化、可替換，並明示它是教學載體；讀者理解案例所需的背景要由文章提供，而非內部專案知識。</p>
<h2 id="情境">情境</h2>
<p>Backend 已有多篇服務路徑示範，例如 schema migration evidence、cache migration rollback、queue retry replay、checkout API evidence package、release gate、credential rotation 與 incident decision log。這些文章各自能說明一段能力，但它們在入口層還沒有被明確收斂成一條「讀者可以跟著走」的服務演進路線。</p>
<p>對照 Go 與 LLM：</p>
<table>
  <thead>
      <tr>
          <th>教材</th>
          <th>貫穿骨架</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Go</td>
          <td>從小程式走到簡化即時通知服務</td>
      </tr>
      <tr>
          <td>Go advanced</td>
          <td>用長時間運行服務、WebSocket、event-driven service 當重複情境</td>
      </tr>
      <tr>
          <td>LLM</td>
          <td>用本地 LLM 寫 code 工作流，把硬體、推論伺服器、模型、IDE、安全串起來</td>
      </tr>
      <tr>
          <td>Backend</td>
          <td>目前多個 artifact 示範分散存在，尚未在入口層組成一條主案例</td>
      </tr>
  </tbody>
</table>
<p>Backend 的內容特性更需要貫穿式案例，因為它處理的是多個外部服務的協作教材，範圍大於單一語言或單一工具。</p>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步選一個中性服務作為載體">第一步：選一個中性服務作為載體</h3>
<p>貫穿式案例應該選讀者容易理解、又能自然觸發多個 Backend 模組的服務。較穩定的候選是 <code>checkout / order / payment / notification</code> 類流程。</p>
<p>這條服務路徑可承接：</p>
<table>
  <thead>
      <tr>
          <th>模組</th>
          <th>在案例中的責任</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>01 Database</td>
          <td>order / payment 狀態、schema migration、reconciliation</td>
      </tr>
      <tr>
          <td>02 Cache</td>
          <td>商品、價格或 entitlement 的 freshness 與 origin protection</td>
      </tr>
      <tr>
          <td>03 Queue</td>
          <td>order_created / payment_confirmed 的 retry、DLQ、replay</td>
      </tr>
      <tr>
          <td>04 Observability</td>
          <td>checkout evidence package、trace、dashboard、query link</td>
      </tr>
      <tr>
          <td>05 Deployment</td>
          <td>checkout service rollout、drain、rollback</td>
      </tr>
      <tr>
          <td>06 Reliability</td>
          <td>provider dependency release gate、load / chaos / regression</td>
      </tr>
      <tr>
          <td>07 Security</td>
          <td>webhook secret rotation、PII masking、audit evidence</td>
      </tr>
      <tr>
          <td>08 Incident</td>
          <td>payment incident decision log、write-back、action item</td>
      </tr>
      <tr>
          <td>09 Performance</td>
          <td>peak checkout capacity、saturation、cost per request</td>
      </tr>
  </tbody>
</table>
<h3 id="第二步把案例拆成多個可重播-episode">第二步：把案例拆成多個可重播 episode</h3>
<p>貫穿式案例要避免寫成一篇巨文。較穩定的做法是拆成 episode，每個 episode 對應一個模組責任。</p>
<table>
  <thead>
      <tr>
          <th>Episode</th>
          <th>問題</th>
          <th>主要模組</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>E1</td>
          <td>新增付款狀態欄位</td>
          <td>01 + 04 + 08</td>
      </tr>
      <tr>
          <td>E2</td>
          <td>商品價格快取失效與回源保護</td>
          <td>02 + 04 + 06</td>
      </tr>
      <tr>
          <td>E3</td>
          <td>訂單事件 consumer 失敗與 replay</td>
          <td>03 + 06 + 08</td>
      </tr>
      <tr>
          <td>E4</td>
          <td>Checkout service rollout</td>
          <td>05 + 04 + 08</td>
      </tr>
      <tr>
          <td>E5</td>
          <td>Payment provider timeout 變更</td>
          <td>06 + 04 + 09</td>
      </tr>
      <tr>
          <td>E6</td>
          <td>Webhook secret rotation</td>
          <td>07 + 04 + 08</td>
      </tr>
      <tr>
          <td>E7</td>
          <td>Flash-sale peak readiness</td>
          <td>09 + 02 + 03 + 06</td>
      </tr>
  </tbody>
</table>
<p>Episode 讓讀者看到「同一服務在不同壓力下需要不同模組」，同時保留單篇文章的原子性。</p>
<h3 id="第三步讓每章都回到同一條服務路徑">第三步：讓每章都回到同一條服務路徑</h3>
<p>每篇主章不需要都重述整個案例，但要能指出它在貫穿案例中的位置。這樣讀者可從任一章回到主線，也可按主線依序讀。</p>
<p>最小寫法：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">本章在貫穿式 checkout 案例中處理 E3：訂單事件 consumer 失敗後，如何判斷投遞、處理與恢復語意。</span></span></code></pre></div><p>這句話把章節放回教學骨架，避免單章漂成孤立知識點。</p>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="章節各自正確但整體難學">章節各自正確，但整體難學</h3>
<p>資料庫、快取、queue、觀測與事故章節都可以各自寫得正確。讀者看過它們如何在同一條服務路徑交接後，平行知識才會組成 production system 的整體模型。</p>
<h3 id="案例庫會停在素材層">案例庫會停在素材層</h3>
<p>大量 case 能支撐反向驗證，但 case 本身不會自動形成學習路線。貫穿式案例的責任是把素材庫轉成讀者可重播的主情境。</p>
<h3 id="vendor--migration-內容會太早成為主角">Vendor / migration 內容會太早成為主角</h3>
<p>讀者在還沒理解服務交接前讀 vendor 或 migration，容易把具體工具當成主線。貫穿式案例能先建立「問題如何跨模組流動」，再讓 vendor / migration 成為進階專題。</p>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../source-library-ratio-supports-scenario-validation/">#98 素材庫比例要支撐主情境的反向驗證</a></td>
          <td>#98 說素材庫要支撐主情境；本卡定義服務教材的主情境應有一條貫穿式案例。</td>
      </tr>
      <tr>
          <td><a href="../case-citation-three-part-structure/">#120 案例引用三段式段落結構</a></td>
          <td>貫穿式案例在單段引用時仍要遵守概念定義 → case 引用 → 通用展開，不讓 case 取代概念。</td>
      </tr>
      <tr>
          <td><a href="../routing-layer-chapter-recognition/">#119 章節已有 routing skeleton 走補強段</a></td>
          <td>貫穿式案例是系列級 routing skeleton。後續擴章要補 episode 與路由，保留既有主線。</td>
      </tr>
      <tr>
          <td><a href="../teaching-goal-before-decision-frame/">#130 教材目標先於決策框架</a></td>
          <td>#130 定義教材目標，本卡提供讓目標落地的案例骨架。</td>
      </tr>
      <tr>
          <td><a href="../teaching-completeness-by-learner-journey/">#131 教材完整性要用讀者旅程驗證</a></td>
          <td>讀者旅程回答「怎麼讀」，貫穿式案例回答「沿著什麼服務情境練」。</td>
      </tr>
  </tbody>
</table>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>模組章節很多，但讀者不知道它們怎麼串成一個服務</td>
          <td>補貫穿式案例</td>
      </tr>
      <tr>
          <td>每篇文章都用不同業務情境，跨章記憶成本高</td>
          <td>收斂到 1 條主案例 + 少量變體</td>
      </tr>
      <tr>
          <td>案例庫豐富但主文章仍像概念清單</td>
          <td>把案例轉成可重播 episode</td>
      </tr>
      <tr>
          <td>Vendor / migration 內容比服務主線更顯眼</td>
          <td>用貫穿案例重新定義進階專題入口</td>
      </tr>
      <tr>
          <td>跨模組 link 多，但沒有共同 user journey</td>
          <td>補 episode map 與主線導讀</td>
      </tr>
  </tbody>
</table>
<p><strong>核心原則</strong>：服務型教材要有貫穿式案例。能力分類讓作者整理內容，讀者旅程讓讀者知道怎麼讀，貫穿式案例讓讀者看到多個能力如何在同一個 production service 中交接與演進。</p>
]]></content:encoded></item><item><title>案例庫不對齊章節主題時用反向追問取代強掛</title><link>https://tarrragon.github.io/blog/report/case-misalignment-reverse-inquiry/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-misalignment-reverse-inquiry/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>案例庫主軸跟章節主題不在同一維度時、引用框架要從「正向掛入」切換到「反向追問」。正向掛入適用於「案例直接示範章節主題」、反向追問適用於「案例庫主軸是 A、章節主題是 B、A 與 B 雖正交但 A 可作為 B 重要性的反證」。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>引用框架&lt;/th>
 &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>「[case]：看 X 如何展示 Y、對照本章 Z 段」&lt;/td>
 &lt;td>對齊時無風險&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>反向追問&lt;/td>
 &lt;td>案例主軸不對應、有反向對照價值&lt;/td>
 &lt;td>「[case] 主軸是 A、不直接示範 B；反問『這條撞牆是否被 B 放大』」&lt;/td>
 &lt;td>仍可能像強掛、要明示分層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>強掛&lt;/td>
 &lt;td>不對齊時硬用正向句型（誤用）&lt;/td>
 &lt;td>「[case]：看 X 如何決定 Y」、X、Y 在 case 中無具體段落支撐&lt;/td>
 &lt;td>reviewer fact-check 一查就抓出&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>不對齊情境下若硬用正向句型、就會落到強掛。Reviewer 第一輪 audit 抓出後、修正成本是「全段重寫 + 重做案例對照」。先判讀對不對齊、再決定框架、比事後重寫便宜。&lt;/p>
&lt;h2 id="為什麼強掛會發生">為什麼強掛會發生&lt;/h2>
&lt;p>寫作者面對「案例回寫」段時、預設「每章都該有 3-5 個 case 引用」、案例庫實際只有 1-2 個直接相關時、剩下會用 stretch 句型硬掛。stretch 的徵兆通常有三個：&lt;/p>
&lt;ul>
&lt;li>用案例提到的 vendor / 服務名稱掛、不用案例揭露的機制掛&lt;/li>
&lt;li>描述句型抽象、避免具體斷言：「看 X 如何決定 Y」、回查 case 找不到「怎麼決定」&lt;/li>
&lt;li>把案例次要訊息當主軸：case 主軸是 A、引用句只提 B、B 在 case 是一筆帶過&lt;/li>
&lt;/ul>
&lt;p>背後動機是「想讓段落看起來完整」、而非「想讓讀者看到證據」。3-5 個 bullet 變成內在配額、引用變成填空、不是工具。這條動機跟 &lt;a href="https://tarrragon.github.io/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度&lt;/a> 的成因同源 — 模板從「輔助結構」滑落為「強制配額」。&lt;/p>
&lt;h2 id="反向追問步驟">反向追問步驟&lt;/h2>
&lt;p>不對齊時、反向追問的標準操作分三步：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>誠實標示案例庫主軸差異&lt;/strong>：開段直接寫明「本案例庫主軸是 A、直接以 B 為主題的案例較少」、把案例庫的限制當 first-class 訊息傳給讀者。讀者知道後續引用會用反向讀法、而非把它當成直接示範。&lt;/li>
&lt;li>&lt;strong>把案例當「沒做 B 的後果」&lt;/strong>：每個 case 改寫成「在沒有先用 B 收回壓力的前提下、團隊走了哪條路（遷移 / scale-out / vendor 升級）」、case 因此變成 B 重要性的反證。寫作意圖從「示範 B」轉成「示範沒做 B 的代價」。&lt;/li>
&lt;li>&lt;strong>明示分層追問&lt;/strong>：在引用描述句裡寫明追問 — 讀者讀完 case 應主動問「這條撞牆是否被 B 放大」。把追問句寫進引用、讓讀者知道這是反向讀法、而非把 case 當對齊。&lt;/li>
&lt;/ol>
&lt;p>三步驟做完、案例段仍保留同樣多的引用、但語意誠實、reviewer fact-check 不會抓出不符。&lt;/p>
&lt;h2 id="case">Case&lt;/h2>
&lt;p>backend/01.13 &lt;a href="https://tarrragon.github.io/blog/backend/01-database/query-anti-patterns/" data-link-title="1.13 應用層查詢反模式與 Query 預算" data-link-desc="整理 N&amp;#43;1、select *、缺索引、ORM lazy load、long transaction 等查詢反模式與每請求的 query 預算判讀">查詢反模式章節&lt;/a> 在 reviewer audit 階段的具體經驗：&lt;/p>
&lt;p>原寫法：3 個 09 模組 case（DoorDash / Zomato / Standard Chartered）被強掛在「Long-Running Transaction」「Query 預算」這類 application-layer query 反模式主題上。&lt;/p>
&lt;p>Reviewer fact-check 結果：&lt;/p>
&lt;ul>
&lt;li>DoorDash case 主軸是 single-primary 寫入吞吐瓶頸、跟 long transaction 無關&lt;/li>
&lt;li>Zomato case 主軸是 TiDB → DynamoDB 遷移、case 完全沒有 query budget 討論&lt;/li>
&lt;li>Standard Chartered case 主軸是合規驅動容量規劃、跟 N+1 / query 預算 stretch&lt;/li>
&lt;/ul>
&lt;p>2.5 / 3 case 的引用描述跟 case 原文不符。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>案例庫主軸跟章節主題不在同一維度時、引用框架要從「正向掛入」切換到「反向追問」。正向掛入適用於「案例直接示範章節主題」、反向追問適用於「案例庫主軸是 A、章節主題是 B、A 與 B 雖正交但 A 可作為 B 重要性的反證」。</p>
<table>
  <thead>
      <tr>
          <th>引用框架</th>
          <th>適用情境</th>
          <th>句型骨架</th>
          <th>典型風險</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>正向掛入</td>
          <td>案例直接示範章節主題</td>
          <td>「[case]：看 X 如何展示 Y、對照本章 Z 段」</td>
          <td>對齊時無風險</td>
      </tr>
      <tr>
          <td>反向追問</td>
          <td>案例主軸不對應、有反向對照價值</td>
          <td>「[case] 主軸是 A、不直接示範 B；反問『這條撞牆是否被 B 放大』」</td>
          <td>仍可能像強掛、要明示分層</td>
      </tr>
      <tr>
          <td>強掛</td>
          <td>不對齊時硬用正向句型（誤用）</td>
          <td>「[case]：看 X 如何決定 Y」、X、Y 在 case 中無具體段落支撐</td>
          <td>reviewer fact-check 一查就抓出</td>
      </tr>
  </tbody>
</table>
<p>不對齊情境下若硬用正向句型、就會落到強掛。Reviewer 第一輪 audit 抓出後、修正成本是「全段重寫 + 重做案例對照」。先判讀對不對齊、再決定框架、比事後重寫便宜。</p>
<h2 id="為什麼強掛會發生">為什麼強掛會發生</h2>
<p>寫作者面對「案例回寫」段時、預設「每章都該有 3-5 個 case 引用」、案例庫實際只有 1-2 個直接相關時、剩下會用 stretch 句型硬掛。stretch 的徵兆通常有三個：</p>
<ul>
<li>用案例提到的 vendor / 服務名稱掛、不用案例揭露的機制掛</li>
<li>描述句型抽象、避免具體斷言：「看 X 如何決定 Y」、回查 case 找不到「怎麼決定」</li>
<li>把案例次要訊息當主軸：case 主軸是 A、引用句只提 B、B 在 case 是一筆帶過</li>
</ul>
<p>背後動機是「想讓段落看起來完整」、而非「想讓讀者看到證據」。3-5 個 bullet 變成內在配額、引用變成填空、不是工具。這條動機跟 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a> 的成因同源 — 模板從「輔助結構」滑落為「強制配額」。</p>
<h2 id="反向追問步驟">反向追問步驟</h2>
<p>不對齊時、反向追問的標準操作分三步：</p>
<ol>
<li><strong>誠實標示案例庫主軸差異</strong>：開段直接寫明「本案例庫主軸是 A、直接以 B 為主題的案例較少」、把案例庫的限制當 first-class 訊息傳給讀者。讀者知道後續引用會用反向讀法、而非把它當成直接示範。</li>
<li><strong>把案例當「沒做 B 的後果」</strong>：每個 case 改寫成「在沒有先用 B 收回壓力的前提下、團隊走了哪條路（遷移 / scale-out / vendor 升級）」、case 因此變成 B 重要性的反證。寫作意圖從「示範 B」轉成「示範沒做 B 的代價」。</li>
<li><strong>明示分層追問</strong>：在引用描述句裡寫明追問 — 讀者讀完 case 應主動問「這條撞牆是否被 B 放大」。把追問句寫進引用、讓讀者知道這是反向讀法、而非把 case 當對齊。</li>
</ol>
<p>三步驟做完、案例段仍保留同樣多的引用、但語意誠實、reviewer fact-check 不會抓出不符。</p>
<h2 id="case">Case</h2>
<p>backend/01.13 <a href="/blog/backend/01-database/query-anti-patterns/" data-link-title="1.13 應用層查詢反模式與 Query 預算" data-link-desc="整理 N&#43;1、select *、缺索引、ORM lazy load、long transaction 等查詢反模式與每請求的 query 預算判讀">查詢反模式章節</a> 在 reviewer audit 階段的具體經驗：</p>
<p>原寫法：3 個 09 模組 case（DoorDash / Zomato / Standard Chartered）被強掛在「Long-Running Transaction」「Query 預算」這類 application-layer query 反模式主題上。</p>
<p>Reviewer fact-check 結果：</p>
<ul>
<li>DoorDash case 主軸是 single-primary 寫入吞吐瓶頸、跟 long transaction 無關</li>
<li>Zomato case 主軸是 TiDB → DynamoDB 遷移、case 完全沒有 query budget 討論</li>
<li>Standard Chartered case 主軸是合規驅動容量規劃、跟 N+1 / query 預算 stretch</li>
</ul>
<p>2.5 / 3 case 的引用描述跟 case 原文不符。</p>
<p>修正：改用反向追問框架。開段標示「09 案例庫主軸是規模、vendor 與容量壓力、直接以 query 反模式為主題的案例較少」、三個 case 重寫成「遷移 / scale-out / 合規容量規劃前、是否該先用 query 反模式收回單機容量」的反向追問。Reviewer 二輪通過、3 個 case 全保留、語意誠實。</p>
<p>這個 case 揭露的核心：reviewer 抓到的不是「引用太多」、是「引用方向錯」。改框架後同樣 3 個 case、reviewer 滿意。</p>
<h2 id="跟其他卡的關係">跟其他卡的關係</h2>
<p>本卡跟以下三張卡正交、各自處理 case 引用的不同層問題：</p>
<ul>
<li><a href="/blog/report/case-type-graded-citation-depth/" data-link-title="案例引用深度跟著 case 類型走" data-link-desc="skeleton / medium / rich case 各有不同承接深度；誤判類型 → 編造數字 / taxonomy（over-extrapolation）或漏掉 case 揭露的 mechanism（under-citation）；引用前先看 case 行數 &#43; 內容密度判類型、決定該寫『揭露 X 方向』還是『揭露 N 個機制』還是『揭露具體數字 / 設計』">#115 案例引用深度跟著 case 類型走</a> — 處理「case 類型決定引用深度」（skeleton / medium / rich）。本卡處理「case 主軸不對應時的引用框架選擇」、是更上游的問題：先判斷對不對齊、再決定引用深度。</li>
<li><a href="/blog/report/case-citation-three-part-structure/" data-link-title="案例引用三段式段落結構：概念定義 → case 引用 → 通用展開" data-link-desc="Case 引用段落要走三段式結構：(1) 段首概念定義句先寫『該概念是什麼、承擔什麼責任』、(2) 第二位置 case 引用、(3) 通用工程知識展開；段首被 case 引用取代是 06 模組最大宗 systemic 違規（11/12 段都犯）；本卡跟 #115（引用深度）/ #116（內部分層）/ #117（跨 case 合成）正交、處理段落結構順序">#120 案例引用三段式段落結構</a> — 處理「段落結構順序」（概念 → case → 通用展開）。本卡補 #120 的特殊情境：當 case 主軸不對應時、第二段位置的 case 引用該寫什麼。</li>
<li><a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a> — 處理「cadence 模板化」。本卡的「強掛」現象背後就是 cadence 模板化的內在動機之一 — 想讓每段都「看起來合規」、結果犧牲語意誠實度。本卡是 #122 在「案例引用」surface 的具體成因 + 修法。</li>
</ul>
<p>跟 <a href="/blog/report/fact-vs-derive-citation-layering/" data-link-title="引用案例要分觀察層 / 判讀層、強化詞是錯位訊號" data-link-desc="引用案例（特別是 rich case）時、case 內容分兩層：觀察層（具體 fact）跟判讀層（作者推論）；兩層在章節引用時要分層標明、避免把作者判讀升級成 case fact；強化詞（才是 / 必須 / 一定 / 關鍵是）通常是錯位訊號、保留 case 原文的條件性表述（取決於 / 核心瓶頸 / 主要驅動）">#116 引用案例要分觀察層 / 判讀層</a> 也有張力：#116 強調觀察層 / 判讀層分明、本卡的反向追問可以視為一種「明示分層」的特殊型 — 把整個引用標為「反向讀法」、相當於把整段都歸到判讀層。</p>
<p>補兩張上位卡：</p>
<ul>
<li><a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 Multi-pass review 的 frame 顆粒度盲點</a> — #146 的「抽象斷言訊號」（「看 X 如何 Y」）就是 #114「keyword bank」機制的具體 keyword 條目。本卡是 #114 機制 1 的應用實例 — 給作者一份可直接 grep 的關鍵字清單。</li>
<li><a href="/blog/report/cross-case-synthesized-frame-must-be-labeled/" data-link-title="跨多個 case 合成的 frame 必須標為章節合成、非 case 原文" data-link-desc="當段落把多個 case 的失效訊號抽象為更高層 frame（如『跨工具回查壓力』『平台責任切分』）、要 explicit 標為『本章合成、非 case 原文』；否則章節 derive 會被讀者當成 case fact、回查 case 時發現章節說的『揭露』實際是章節抽象、不是 case 原文框架">#117 跨多 case 合成的 frame 必須標為章節合成</a> — #117 處理「合成必須明示標示」、本卡的「反向追問」也是明示標示的一種 — 把「我用反向讀法解釋案例」明確告知讀者、避免讀者誤以為 case 直接示範了主題。兩者都處理引用層的誠實標示、是姊妹卡。</li>
</ul>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<p>強掛 case 在以下節點會引爆：</p>
<ul>
<li><strong>Reviewer 第一輪 audit</strong>：fact-check 案例內容 vs 引用描述、不對齊馬上抓出。修正要全段重寫。</li>
<li><strong>讀者回頭追查</strong>：讀者點進 case 看不到引用句宣稱的內容、會懷疑整章其他斷言的可信度。</li>
<li><strong>長期 SSoT 漂移</strong>：案例 case 內容後續更新時、強掛的引用不會跟著更新、變成 stale reference。</li>
</ul>
<p>更深的代價：強掛 case 違反 AGENTS.md 原則八「情境優先於模板」— 把不同案例塞進同一段落模板、抹平案例的真實主軸。Reviewer 抓到的是表面（描述不符）、根因是寫作者讓模板配額凌駕語意誠實度。</p>
<h2 id="判讀徵兆">判讀徵兆</h2>
<p>寫完案例段時、用以下訊號自檢、出現任一就考慮切換到反向追問：</p>
<ul>
<li><strong>抽象句型訊號</strong>：引用句寫成「看 X 如何決定 Y」這種無具體斷言的句型、回查 case 找不到「怎麼決定」的具體段落。</li>
<li><strong>句型雷同訊號</strong>：多個 case 引用句型雷同（都是「看 X、對照 Y 段」）、跟 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 cadence 同質化</a> 重疊。</li>
<li><strong>維度錯位訊號</strong>：章節主題是 application-layer（query 反模式 / 應用層快取設計）、case 庫主軸是 vendor / 規模 / 容量壓力 — 兩者在不同抽象維度。</li>
<li><strong>配額膨脹訊號</strong>：引用句數 ≥ 3 但每個都「邊際相關」、沒有任一個「直接相關」。</li>
</ul>
<p>四個訊號中出現任一、優先切換到反向追問、別把不對齊強寫成對齊。寫作意圖從「填滿段落」轉成「給讀者誠實證據」、case 段才能撐住 reviewer fact-check。</p>
]]></content:encoded></item><item><title>Case-First + Agent Team Review：教學內容的生產流程</title><link>https://tarrragon.github.io/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/</guid><description>&lt;h2 id="這篇要說什麼">這篇要說什麼&lt;/h2>
&lt;p>寫教學文章時、純靠 LLM 自生內容會踩到兩個系統性盲點：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Scope 盲點&lt;/strong>：內容停在「教科書級」結構、漏掉真實事故才會浮現的失敗模式跟設計取捨。&lt;/li>
&lt;li>&lt;strong>準確性盲點&lt;/strong>：把通用 best practice 包裝成「[case] 揭露」、把案例沒講的細節寫成案例事實。&lt;/li>
&lt;/ol>
&lt;p>本文整理在 backend/01 至 backend/07 batch 1 七個模組撰寫過程中浮現的五階段流程：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>完整閱讀案例庫、抽 findings&lt;/strong> — 用案例驅動「該寫什麼」、不只是 LLM 自生&lt;/li>
&lt;li>&lt;strong>基於 findings 建立內容&lt;/strong> — findings 分布到章節、避免硬塞模板&lt;/li>
&lt;li>&lt;strong>Agent team 平行多輪審查&lt;/strong> — 用 3 個專責 reviewer 補 LLM 自盲點&lt;/li>
&lt;li>&lt;strong>修正循環&lt;/strong> — 按檔案批次修 high + 重要 medium、reviewer 抓出問題各章節對應修&lt;/li>
&lt;li>&lt;strong>Polish pass&lt;/strong> — 跨檔系統性 pattern 集中處理（負向骨架掃描、編號漂移、用語不一、cross-link 補漏）&lt;/li>
&lt;/ol>
&lt;p>實作數據：7 個模組（backend/01-07 batch 1）、~45 章 / 385 個 review issue、case fidelity 落在 70-93% 區間、修正後品質升至 0 critical 編造、cross-link 全綠、規範違反 polish pass 後降到單位數低 issue。06 模組後方法論工具化為可觸發 skill、stage 1-5 流程跟 reviewer prompt template、self-scan regex 都封裝成可重用元件。07 模組驗證下「章節已有 routing layer skeleton」的特殊處理（在現有結構內補 case-driven 深化段、不擴成厚重章節）。&lt;/p>
&lt;h2 id="問題llm-自生內容的兩個盲點">問題：LLM 自生內容的兩個盲點&lt;/h2>
&lt;p>純靠 LLM 寫教學章節、容易產出兩種品質風險：&lt;/p>
&lt;p>&lt;strong>Scope 盲點&lt;/strong>：LLM 從訓練資料抽出的內容偏 &lt;em>普遍性&lt;/em>、是「教科書 + 部落格 + 文件」的綜合。但真實工程議題的判讀條件常常來自 &lt;em>特定事故揭露&lt;/em>、不是普遍知識。例：&lt;/p>
&lt;ul>
&lt;li>「DynamoDB GSI 在 backfill 完成前查不到完整資料」這種具體陷阱&lt;/li>
&lt;li>「Super Bowl +50% no sweat 的工程意義是 headroom 提前預留、不是 vendor 神奇」這種反直覺判讀&lt;/li>
&lt;li>「99.99% → 99.999% 是指數成本、遠超直覺的 10x 線性想像」這種規模對照&lt;/li>
&lt;/ul>
&lt;p>純技術知識推導不出來、要看真實案例才會浮現。&lt;/p>
&lt;p>&lt;strong>準確性盲點&lt;/strong>：LLM 寫到「對應 [case]」時、容易把通用 best practice 包裝成案例事實、或把案例沒提到的細節擴寫成「案例揭露」。例（從本文討論的實作中抓出的真實 issue）：&lt;/p>
&lt;ul>
&lt;li>Snowflake 案例描述「異常查詢偵測維度（query 體積 / IP / 跨 schema scan）」、LLM 自生內容寫成「query 體積從 1MB / 天跳到 10GB / 天、來源 IP 從 office network 變 unknown VPS」— 具體數字是 LLM 加上去的、案例沒寫&lt;/li>
&lt;li>Tixcraft 案例策略段建議「composite key」、LLM 自生內容寫成「Tixcraft 用 user_id 分散、不是 event_id」— 案例沒揭露 Tixcraft 實際 partition key 設計&lt;/li>
&lt;/ul>
&lt;p>這兩類盲點都不容易在 self-review 時抓到、因為 LLM 看不出自己內容是否真的對應案例。&lt;/p>
&lt;h2 id="階段-1完整閱讀案例庫抽-findings">階段 1：完整閱讀案例庫、抽 findings&lt;/h2>
&lt;h3 id="為什麼要完整閱讀不能只看-title--description">為什麼要完整閱讀、不能只看 title + description&lt;/h3>
&lt;p>只看 title + description 能做 &lt;em>承接&lt;/em>（建立 link）、但無法做 &lt;em>scope 擴展&lt;/em>（揭露 LLM 不會自生的議題）。case 的 findings 通常埋在 body 的「判讀」段、不在 description 裡。&lt;/p></description><content:encoded><![CDATA[<h2 id="這篇要說什麼">這篇要說什麼</h2>
<p>寫教學文章時、純靠 LLM 自生內容會踩到兩個系統性盲點：</p>
<ol>
<li><strong>Scope 盲點</strong>：內容停在「教科書級」結構、漏掉真實事故才會浮現的失敗模式跟設計取捨。</li>
<li><strong>準確性盲點</strong>：把通用 best practice 包裝成「[case] 揭露」、把案例沒講的細節寫成案例事實。</li>
</ol>
<p>本文整理在 backend/01 至 backend/07 batch 1 七個模組撰寫過程中浮現的五階段流程：</p>
<ol>
<li><strong>完整閱讀案例庫、抽 findings</strong> — 用案例驅動「該寫什麼」、不只是 LLM 自生</li>
<li><strong>基於 findings 建立內容</strong> — findings 分布到章節、避免硬塞模板</li>
<li><strong>Agent team 平行多輪審查</strong> — 用 3 個專責 reviewer 補 LLM 自盲點</li>
<li><strong>修正循環</strong> — 按檔案批次修 high + 重要 medium、reviewer 抓出問題各章節對應修</li>
<li><strong>Polish pass</strong> — 跨檔系統性 pattern 集中處理（負向骨架掃描、編號漂移、用語不一、cross-link 補漏）</li>
</ol>
<p>實作數據：7 個模組（backend/01-07 batch 1）、~45 章 / 385 個 review issue、case fidelity 落在 70-93% 區間、修正後品質升至 0 critical 編造、cross-link 全綠、規範違反 polish pass 後降到單位數低 issue。06 模組後方法論工具化為可觸發 skill、stage 1-5 流程跟 reviewer prompt template、self-scan regex 都封裝成可重用元件。07 模組驗證下「章節已有 routing layer skeleton」的特殊處理（在現有結構內補 case-driven 深化段、不擴成厚重章節）。</p>
<h2 id="問題llm-自生內容的兩個盲點">問題：LLM 自生內容的兩個盲點</h2>
<p>純靠 LLM 寫教學章節、容易產出兩種品質風險：</p>
<p><strong>Scope 盲點</strong>：LLM 從訓練資料抽出的內容偏 <em>普遍性</em>、是「教科書 + 部落格 + 文件」的綜合。但真實工程議題的判讀條件常常來自 <em>特定事故揭露</em>、不是普遍知識。例：</p>
<ul>
<li>「DynamoDB GSI 在 backfill 完成前查不到完整資料」這種具體陷阱</li>
<li>「Super Bowl +50% no sweat 的工程意義是 headroom 提前預留、不是 vendor 神奇」這種反直覺判讀</li>
<li>「99.99% → 99.999% 是指數成本、遠超直覺的 10x 線性想像」這種規模對照</li>
</ul>
<p>純技術知識推導不出來、要看真實案例才會浮現。</p>
<p><strong>準確性盲點</strong>：LLM 寫到「對應 [case]」時、容易把通用 best practice 包裝成案例事實、或把案例沒提到的細節擴寫成「案例揭露」。例（從本文討論的實作中抓出的真實 issue）：</p>
<ul>
<li>Snowflake 案例描述「異常查詢偵測維度（query 體積 / IP / 跨 schema scan）」、LLM 自生內容寫成「query 體積從 1MB / 天跳到 10GB / 天、來源 IP 從 office network 變 unknown VPS」— 具體數字是 LLM 加上去的、案例沒寫</li>
<li>Tixcraft 案例策略段建議「composite key」、LLM 自生內容寫成「Tixcraft 用 user_id 分散、不是 event_id」— 案例沒揭露 Tixcraft 實際 partition key 設計</li>
</ul>
<p>這兩類盲點都不容易在 self-review 時抓到、因為 LLM 看不出自己內容是否真的對應案例。</p>
<h2 id="階段-1完整閱讀案例庫抽-findings">階段 1：完整閱讀案例庫、抽 findings</h2>
<h3 id="為什麼要完整閱讀不能只看-title--description">為什麼要完整閱讀、不能只看 title + description</h3>
<p>只看 title + description 能做 <em>承接</em>（建立 link）、但無法做 <em>scope 擴展</em>（揭露 LLM 不會自生的議題）。case 的 findings 通常埋在 body 的「判讀」段、不在 description 裡。</p>
<p>實作中的對照：第一輪 audit 6 個 case、每 case 平均揭露 2.3 個 finding；其中約 7 成是 description 跟 title 看不到、要讀完整 body 才能抽出。例如 DraftKings 案例的「讀寫雙峰錯位」（比賽中讀爆量、payout 時寫爆量）— description 只說「financial ledger」、要讀「核心負載形狀」段才看到雙峰結構。</p>
<h3 id="邊際遞減的判斷">邊際遞減的判斷</h3>
<p>不是所有 case 都要讀。實作中觀察到的遞減曲線：</p>
<table>
  <thead>
      <tr>
          <th>輪次</th>
          <th>讀案例數</th>
          <th>揭露 findings</th>
          <th>平均 / case</th>
          <th>純新議題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第一輪</td>
          <td>6</td>
          <td>14</td>
          <td>2.3</td>
          <td>~95%</td>
      </tr>
      <tr>
          <td>第二輪</td>
          <td>5</td>
          <td>15</td>
          <td>3.0</td>
          <td>~85%</td>
      </tr>
      <tr>
          <td>第三輪</td>
          <td>5</td>
          <td>13</td>
          <td>2.6</td>
          <td>~60%</td>
      </tr>
  </tbody>
</table>
<p>第三輪開始 <em>純新議題</em> 比例下降、重複 frame 出現（vendor dogfood 在 3 個 case 都揭露、benchmark 對照基準在 3 個 case 都揭露）。這是停止 audit 的訊號。</p>
<p>判讀條件：</p>
<ul>
<li><strong>繼續 audit</strong>：每 case 至少 1.5 個純新議題、且重複 frame 不超過 30%</li>
<li><strong>停止 audit</strong>：純新議題 &lt; 1 個 / case、重複 frame &gt; 50%、累積 finding 數已涵蓋目標章節主要議題</li>
</ul>
<p>實作中 11/94 cases（~12%）時邊際遞減訊號明顯、16/94 cases（~17%）時停止 audit、抽出 ~42 個 unique findings、足以支撐 6 個章節的 scope 擴展。</p>
<h3 id="findings-抽取方法">Findings 抽取方法</h3>
<p>讀 case 時、把每個段落看成可能的 finding 來源、問三個問題：</p>
<ol>
<li><strong>這段揭露什麼判讀條件</strong>？（是不是純技術推導不易浮現的議題）</li>
<li><strong>這段揭露什麼數字 / 設計細節</strong>？（規模、percentile、partition key 數量、replication lag 量級）</li>
<li><strong>這段揭露什麼失敗模式</strong>？（事故當下會出什麼問題、有什麼反直覺結論）</li>
</ol>
<p>寫進 findings 列表時、要附上 <em>case 來源</em> 跟 <em>該對應到哪個章節</em>。例：</p>
<blockquote>
<p>Finding: 線性擴展是 OLTP 設計最高目標、coordinator 是傳統 OLTP 的擴展瓶頸
來源: 9.C10 Spanner 案例「2 nodes → 45K reads/sec, 4 nodes → 90K reads/sec」段
章節: 1.11 全球分散式 OLTP</p></blockquote>
<p>不寫來源跟章節定位、findings 會變成抽象列表、寫稿時用不上。</p>
<h3 id="case-類型的承接策略">Case 類型的承接策略</h3>
<p>不同 case 類型適合不同承接深度、誤判類型會引發 <em>over-extrapolation</em> 問題。實作中觀察到的兩類 case：</p>
<p><strong>Rich case</strong>（典型：09/07 案例庫中含具體數字、設計細節、遷移路徑的長篇 case）：</p>
<ul>
<li>內容深度：50-200 行、含具體數字、業務情境、引用源</li>
<li>承接方式：可直接引用為事實、case 揭露的具體數字（RPS、延遲、TPS、stale window）可放進章節</li>
<li>例：9.C5 Amazon Ads「90M RPS + 5M writes/sec + 99.999%」可直接寫進 1.10 KV 章節</li>
<li>例：9.C6 Tinder「4700 萬 MAU 配對引擎、cache 是主要服務面」可直接做為 2.1 high-concurrency 的判讀依據</li>
</ul>
<p><strong>Medium case</strong>（06 模組新發現的類別、典型：模組內部 case 庫中含結構化「決策機制」+「可觀測訊號」表、但無具體數字的中篇 case）：</p>
<ul>
<li>內容深度：30-50 行、結構化 5 段（問題場景 / 決策機制 / 可觀測訊號 / 常見陷阱 / 下一步路由）、含 mechanism + 訊號名稱、但不給具體數字</li>
<li>承接方式：用 case 直接列出的 <em>mechanism 名稱</em> 精準引用、比 skeleton 精準、但比 rich 保守</li>
<li>承接句型：「對應 [case]：揭露 N 個機制 — A、B、C、D」</li>
<li>例：6.C1 Amazon Shuffle Sharding 揭露 cell boundary / shuffle sharding / static stability / constant work 四機制、可直接引用機制名稱、但不擴寫到「具體 shard 數量」「具體 cell 大小」等 case 沒提的實作細節</li>
</ul>
<p><strong>Skeleton case</strong>（典型：模組內部 N.Cx 案例庫中只有 frame、無具體數字的短篇 case）：</p>
<ul>
<li>內容深度：10-30 行、只給方向、無具體數字 / taxonomy</li>
<li>承接方式：作為「視角 / 方向」、可引用為「case 揭露 X 議題」、但不引用為「case 揭露 X 具體場景數量」</li>
<li>例：2.C1 Meta Cache Consistency 只有「promotion、shard move、故障恢復」三個方向、不引用為「具體 inconsistency window 數字」</li>
<li>例：3.C9 反例只給「依賴特定 offset / 重試節奏 / idempotency」三個方向、不引用為「4 個具體誤配場景」</li>
</ul>
<p><strong>判讀條件</strong>：</p>
<ul>
<li>看 case 行數 + 內容密度判斷類型</li>
<li>skeleton case 的 finding 寫成「對應 [case] — 揭露 X 方向、以下展開基於通用工程知識補充」</li>
<li>medium case 的 finding 寫成「對應 [case]：揭露 N 個機制 — A、B、C、D」、用 mechanism 名稱精準引用</li>
<li>rich case 的 finding 可寫「對應 [case] — XXX 具體數字 / 設計」</li>
</ul>
<p>實作中（01/02/03 三個模組驗證）、skeleton case 寫成 rich case 對應是 case fidelity reviewer 抓出 over-extrapolation 的主要來源（02 / 03 各 3-4 個 critical 編造都來自此陷阱）。誤判類型 → 編造 case 沒寫的細節 → reviewer 抓出 → 修正成本高。stage 1 抽 findings 時就要 <em>標明 case 類型</em>、stage 2 寫作時依類型決定承接深度。</p>
<p><strong>Rich case 引用的反向風險（04/05 模組新發現）</strong>：rich case 雖然可以引用具體數字、但 case 內常含「觀察層」（具體 fact）跟「判讀層」（作者推論）兩段、引用時要分開處理。05 模組驗證時 case fidelity reviewer 抓出 4 個 high issue 都來自把「判讀層作者推論」寫成「case 揭露的 fact」：</p>
<ul>
<li>9.C12 Riot Games：5.2 寫「揭露 35ms latency 反推 region 部署」、實際 case 的「35ms」是觀察層、「反推 region 部署」是作者判讀層</li>
<li>9.C34 GCP 130K：5.2 寫「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」、實際 case 用更保守的「control plane 極限取決於 storage backend、GCP 用 Spanner 替換 etcd」分兩個點寫</li>
<li>9.C12 Riot：5.2 引用「single-tenant per game 的多 cluster 策略」、漏掉 case 揭露的關鍵歷史轉折「從 multi-tenant cluster 模型改成 single-tenant per game」</li>
</ul>
<p><strong>修法</strong>：rich case 引用時、用「揭露 X 觀察 + 作者判讀 Y」分層標明、避免把推論寫成 fact。或在引用後補一句「（case 中 X 屬作者判讀層、本章引用此推論）」明示分層。</p>
<p>兩類 case 的引用紀律可總結成一個 <em>fact vs derive</em> 分層原則：</p>
<ul>
<li><strong>Skeleton case</strong>：絕大多數內容是 derive（方向 / 議題）、引用時不擴寫成 fact</li>
<li><strong>Rich case</strong>：含 fact（具體數字 / 設計）跟 derive（作者判讀）、引用時分層標明、避免把 derive 升級成 fact</li>
</ul>
<h2 id="階段-2基於-findings-建立內容">階段 2：基於 findings 建立內容</h2>
<h3 id="findings-分布到章節">Findings 分布到章節</h3>
<p>抽完 findings 後、按章節主題分類、看哪個章節缺口最大、哪個 finding 該寫去哪。實作中的分布：</p>
<ul>
<li>1.1 高併發：7 findings</li>
<li>1.5 紅隊：8 findings</li>
<li>1.9 reconciliation：4 findings</li>
<li>1.10 KV：6 findings</li>
<li>1.11 全球分散式：10 findings（最大缺口）</li>
<li>1.6+1.12 migration：5 findings</li>
</ul>
<p>涉及多軸取捨的章節（1.11 一致性 / 可用性 / 成本 / 延遲）暴露最多缺口、純流程章節（1.9）暴露最少。這是 <em>章節結構性質</em> 的差異、不是寫得好壞。</p>
<h3 id="stage-2-寫作前先定-ssot-對應">Stage 2 寫作前先定 SSoT 對應</h3>
<p>當同一 finding 或 frame 在 <em>多個章節</em> 都有用、要在開始寫之前 <em>先定 SSoT 對應</em>、否則 case-driven 擴章必然出現 frame 重複展開。</p>
<p>實作中觀察到的反例（02 / 03 模組都遇到過）：</p>
<ul>
<li><strong>02 cache</strong>：「cache 角色變化」frame 在 2.1 主寫但實際屬模組層級、應在 <code>_index</code>；Tubi 案例在 2.1 / 2.2 / 2.8 三章各自展開 mini-finding；Snap KeyDB 在 2.1 / 2.7 / 2.8 三章重複</li>
<li><strong>03 message-queue</strong>（最嚴重）：「三層語意（delivery / processing / recovery）」在 3.4 / 3.6 / 3.8 三章各自定義；「Slack Kafka+Redis 拓樸」在 3.4 跟 3.8 兩章逐字重複；「規模對照（小 / 中 / 大型）」在 3.4 / 3.6 / 3.8 三章拆用、結論散落讀者拼不出總圖</li>
</ul>
<p><strong>SSoT 對應的判讀順序</strong>：</p>
<ol>
<li>列出所有 cross-chapter findings（出現在多章的 frame）</li>
<li>每個 frame 指定 <em>一個</em> 主寫章節（SSoT）</li>
<li>其他章節 <em>只 link</em>、不展開</li>
<li>SSoT 章節要有完整論述、被引用章節保留簡述跟 cross-link</li>
</ol>
<p><strong>SSoT 選擇標準</strong>：</p>
<ul>
<li>frame 涉及 <em>跨模組層級概念</em> → 寫進 <code>_index.md</code></li>
<li>frame 涉及 <em>單章核心責任</em> → SSoT 為該章</li>
<li>frame 涉及 <em>跨章交接點</em> → 選最相關章節為 SSoT、其他章節 link</li>
</ul>
<p>漏掉這步、reviewer 跨章一致性會抓出 5-10 個 frame 重複 issue、修正成本高（要把已展開內容收斂回 SSoT）。Stage 2 前花 30 分鐘做 SSoT 對應、能省下 Stage 3 數小時的重構工。</p>
<h3 id="避免硬塞模板">避免硬塞模板</h3>
<p>最大的反模式是把多個 findings 硬塞成同一個 table、每 row 一短語、失去情境敘事。</p>
<p>實作中的反例：1.9 章新增「Dual-track IC 5 個角色表」、本來想用表格整齊呈現、但 reviewer 抓出「5 角色平鋪、責任只一行、未展開每角色在真實事故的決策樣態」。修正後拆成：</p>
<ul>
<li>主表格（5 個角色快速對照）</li>
<li>Overall IC 跟 Tech IC 的差異獨立段（300 字）</li>
<li>Data IC 的特殊角色獨立段（300 字、含「為什麼不能讓 Tech IC 兼任」的失誤對照）</li>
<li>事先準備 4 項各自延伸（不只列項目、解釋失效樣態）</li>
</ul>
<p>這樣 <em>每個項目都是情境</em> 而非 <em>硬塞的欄位</em>、符合 AGENTS.md「表格不是終點」原則。</p>
<h3 id="情境敘事的判讀條件">情境敘事的判讀條件</h3>
<p>每段內容寫完後、問三個檢查問題：</p>
<ol>
<li><strong>首句是不是核心原則</strong>？（不是「某 case 揭露 X」、是「X 是什麼、承擔什麼責任」）</li>
<li><strong>是不是用否定句主導</strong>？（「不是 X」「不只 X」開段要回到正向陳述）</li>
<li><strong>這個 finding 在不同情境下是否會變義</strong>？（一個 finding 套到多個情境、要分情境寫、不是套同模板）</li>
</ol>
<h3 id="案例引用的準確性">案例引用的準確性</h3>
<p>寫「對應 [case] — XXX」時、要回 case 原文驗證 XXX 是否真的出現。實作中常見的失分：</p>
<ul>
<li>把 case 沒提到的數字補進去（「30-90 天 baseline」、「1MB→10GB / 天」）</li>
<li>把通用 best practice 寫成案例事實（「Snowflake 之後改為預設強制 MFA」— case 只說「資料平台應預設強制 MFA」、不是描述後續行動）</li>
<li>公開事實但 case 沒寫（「MOVEit 跨上百家客戶」、「LastPass master password 弱可被離線爆破」）</li>
</ul>
<p>寫稿當下不容易抓、要靠階段 3 的 case fidelity reviewer 對照。</p>
<h2 id="階段-3agent-team-平行多輪審查">階段 3：Agent team 平行多輪審查</h2>
<h3 id="為什麼要-agent-team不能交給單一-reviewer">為什麼要 agent team、不能交給單一 reviewer</h3>
<p>單一 reviewer 有兩個限制：</p>
<ol>
<li><strong>維度盲點</strong>：一個 reviewer 同時看寫作規範、案例準確性、跨章一致性、容易 <em>維度互相干擾</em>、最後每個維度都看不深</li>
<li><strong>Context 污染</strong>：reviewer 讀完整 commit + 所有案例 + 所有章節後、自身 context 就被佔滿、給的建議會 <em>對應主 context 也跟著沉重</em></li>
</ol>
<p>解法是用 3 個專責 reviewer、平行 background 跑、各自獨立報告、主 context 只看精煉摘要。</p>
<h3 id="三個維度-reviewer-分工">三個維度 reviewer 分工</h3>
<p>實作中使用的三個 reviewer：</p>
<h4 id="reviewer-a寫作規範審查agentsmd-核心原則">Reviewer A：寫作規範審查（AGENTS.md 核心原則）</h4>
<ul>
<li>對照核心原則先行、正向陳述優先、商業邏輯先於 case、表格不是終點、情境優先於模板、可操作判準等八原則</li>
<li>找首句用否定句切入、表格 / bullet 平鋪沒延伸、表格項硬塞模板等</li>
<li>實作中抓出 25 個 issue</li>
</ul>
<h4 id="reviewer-b案例引用準確性">Reviewer B：案例引用準確性</h4>
<ul>
<li>對照原始 case 內容、驗證「對應 [case] — XXX」斷言是否真的來自案例</li>
<li>識別編造數字、過度推論、把通用 best practice 寫成案例事實</li>
<li>實作中抓出 9 個 issue、包含 3 個 critical 編造</li>
</ul>
<h4 id="reviewer-c跨章一致性">Reviewer C：跨章一致性</h4>
<ul>
<li>跨多章找重複 frame、矛盾說法、失效 cross-link、章節邊界錯位</li>
<li>識別「該在 A 章卻寫在 B 章」、「frame 重複展開沒整併」</li>
<li>實作中抓出 13 個 issue</li>
</ul>
<h3 id="平行-background-跑不佔主-context">平行 background 跑、不佔主 context</h3>
<p>關鍵設計是 3 個 reviewer 並行、各自 background、各自寫 output file、不污染主 context：</p>
<ul>
<li>主 context 只看到「啟動 reviewer」跟「reviewer 完成的彙整報告」</li>
<li>Raw output 跟 reviewer 的 deep dive 留在 output file、需要時 SendMessage 繼續對話</li>
<li>3 個 reviewer 完成時間 ~5-15 分鐘、可以同時跑、不必等</li>
</ul>
<p>實作中 3 個 reviewer 平均 2-3 分鐘完成、主 context 增量 ~3K tokens（彙整 + 47 issue 清單）、相比把所有案例跟章節塞進主 context 做 review 節省 ~80% context。</p>
<h3 id="reviewer-issue-數量的-baseline">Reviewer issue 數量的 baseline</h3>
<p>7 個模組（01 / 02 / 03 / 04 / 05 / 06 / 07 batch 1）驗證後、每模組 reviewer 抓到的 issue 數量在 standards reviewer 抓 pattern 越來越細的趨勢下持續擴大、可作為流程預期：</p>
<table>
  <thead>
      <tr>
          <th>Reviewer 維度</th>
          <th>01</th>
          <th>02</th>
          <th>03</th>
          <th>04</th>
          <th>05</th>
          <th>06</th>
          <th>07 b1</th>
          <th>baseline</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Standards reviewer</td>
          <td>25</td>
          <td>20</td>
          <td>20</td>
          <td>31</td>
          <td>28</td>
          <td>45</td>
          <td>31</td>
          <td>20-45 issue</td>
      </tr>
      <tr>
          <td>Case fidelity reviewer</td>
          <td>9 (88%)</td>
          <td>20 (78%)</td>
          <td>15 (70%)</td>
          <td>6 (92.9%)</td>
          <td>13 (80%)</td>
          <td>11 (88%)</td>
          <td>8 (81%)</td>
          <td>6-20 issue</td>
      </tr>
      <tr>
          <td>Consistency reviewer</td>
          <td>13</td>
          <td>15</td>
          <td>15</td>
          <td>14</td>
          <td>18</td>
          <td>15</td>
          <td>13</td>
          <td>13-18 issue</td>
      </tr>
      <tr>
          <td><strong>總計</strong></td>
          <td><strong>47</strong></td>
          <td><strong>55</strong></td>
          <td><strong>50</strong></td>
          <td><strong>51</strong></td>
          <td><strong>59</strong></td>
          <td><strong>71</strong></td>
          <td><strong>52</strong></td>
          <td><strong>47-71 issue</strong></td>
      </tr>
  </tbody>
</table>
<p><strong>模式觀察</strong>：</p>
<ul>
<li><strong>每模組 issue 數隨 standards reviewer 抓 pattern 越來越細而擴大</strong>：01-03 穩定在 47-55、04/05 推到 51-59、06 推到 71、07 batch 1 回到 52（章節已有 routing skeleton、擴章規模小）。趨勢來自 standards reviewer 抓的 pattern 越來越廣（從負向骨架 → 「核心責任不是」變體 → 「沒有 X 會 Y」鏈式 → 「case 引用段首」框架 → 「case 引用句構同質化」）。</li>
<li><strong>Case fidelity 準確率分布更廣</strong>：04 的 92.9% 來自 skeleton case 嚴守「揭露方向、通用補充」紀律；05 的 80% 因引用 09 rich case 加入「fact vs derive 分層」新失分模式；06 的 88% 屬 medium case 紀律首次套用、揭露「實作層擴寫過頭」失分；07 batch 1 的 81% 揭露「跨 case 合成 frame」新失分類型（reviewer B 2 high 都屬此類）</li>
<li><strong>Consistency reviewer 抓到的 frame 重複跟章節數成正比</strong>：02 / 03 / 04 都有 ~13-18 個一致性 issue、05/06 跨模組 cross-link 密度高仍維持在 baseline 內、07 batch 1 因 7 章規模、issue 13 個落在 baseline 下緣</li>
</ul>
<p><strong>Stage 3 修正成本估算</strong>：</p>
<ul>
<li>Critical（編造、矛盾）：~每個 5-10 分鐘修正、佔 0-5 個（04/05 都 0 critical、紀律已成熟）</li>
<li>High（重複 frame、章節邊界、判讀層 vs fact）：~每個 10-20 分鐘修正、佔 5-14 個</li>
<li>Medium / Low（規範細節、cross-link 補）：~每個 2-5 分鐘修正、佔 35-45 個</li>
<li><strong>總計 ~1.5-2.5 小時 / 模組</strong></li>
</ul>
<p><strong>Stage 4 修正後仍會有 ~30-40% issue 殘留</strong>（low / medium 的 cross-link、編號漂移、用語不一）、屬於系統性 pattern、適合在 Stage 5 polish pass 集中處理（見後段）。</p>
<h3 id="為何要多輪-review不是一次到位">為何要多輪 review、不是一次到位</h3>
<p>第一輪 review 的目的是 <em>找問題</em>、不是 <em>修問題</em>。問題清單列出後、要做兩件事：</p>
<ol>
<li><strong>分類優先序</strong>：critical / high / medium / low、按嚴重度跟修改成本排序</li>
<li><strong>修正循環</strong>：批次修正、避免一個一個改散開、修完再跑驗證</li>
</ol>
<p>修正後可選擇性做第二輪 review、檢查：</p>
<ul>
<li>修正本身有沒有引入新問題</li>
<li>之前 reviewer 漏掉的維度（例：教學性、讀者路徑、實作可行性）</li>
<li>跨 commit 一致性</li>
</ul>
<p>實作中第一輪足夠處理 47 個 issue、第二輪沒進行、留到未來模組（02 cache、03 message queue）累積經驗後再評估是否必要。</p>
<h2 id="修正循環的執行原則">修正循環的執行原則</h2>
<p>47 個 issue 分布到 6 個章節、修正時 <em>按檔案批次</em>、不是按 issue 編號順序。每個檔案一次修完所有相關 issue、減少切換成本：</p>
<ul>
<li>1.5 紅隊章（12 issue）：含 2 個 critical 編造、優先處理</li>
<li>1.10 KV（7 issue）：含 1 個 critical 編造</li>
<li>1.11 全球分散式（5 issue）</li>
<li>1.12 大規模遷移（10 issue）：表格密度最高、最多延伸</li>
<li>1.1 高併發（4 issue）</li>
<li>1.9 reconciliation（5 issue）</li>
</ul>
<p>每個檔案修完後跑一次 <code>mdtools fmt --fix</code> + <code>mdtools cards</code> + <code>mdtools lint</code>、確認該檔內部一致、再進下一檔。最後跑一次跨檔驗證、確認 cross-link 全部對齊。</p>
<h2 id="階段-5polish-pass0405-模組後新增">階段 5：Polish pass（04/05 模組後新增）</h2>
<p>Stage 4 修完 high + 重要 medium 後、仍有 ~30-40% 的 low / medium 殘留、屬於系統性 pattern（負向骨架、編號漂移、cross-link 缺漏、模板化）。這些 issue 不適合按章節批次修、適合用「跨檔系統性掃描」處理 — 這是 polish pass 的核心責任。</p>
<h3 id="polish-pass-的觸發條件">Polish pass 的觸發條件</h3>
<p>Stage 4 後出現以下任一訊號、就該排 polish pass：</p>
<ul>
<li>Standards reviewer 抓出的「不是 X、而是 Y」段首結構超過 5 處（屬寫作習慣、單章修改無效率）</li>
<li>Consistency reviewer 抓出「編號漂移」「失效 link」「用語不一」多處（屬跨檔規範問題）</li>
<li>自掃描漏掉的 pattern 出現在 reviewer report（例：04 自掃描說 pass、reviewer A 抓出 31 個 issue、暴露自掃描 regex 不夠寬）</li>
</ul>
<h3 id="polish-pass-不該做的事">Polish pass 不該做的事</h3>
<ul>
<li><strong>不重寫章節結構</strong>：polish pass 是把現有內容修得更貼合規範、不是重新組織。重寫的觸發條件應該回到 stage 2、不是 polish pass。</li>
<li><strong>不擴大 scope</strong>：原本 4.20 / 5.4 等不在擴充範圍的章節、polish pass 也不動。Polish pass 邊界 = stage 4 修改過的章節集合。</li>
<li><strong>不追求 0 issue</strong>：reviewer 抓的 ~15 個 low 通常可保留為下次擴章節時自然處理。Polish pass 處理「系統性 pattern」、不處理「孤立 issue」。</li>
</ul>
<h3 id="polish-pass-的標準工序">Polish pass 的標準工序</h3>
<p>按系統性 pattern 分批處理、每批跑一次自掃描確認：</p>
<ol>
<li><strong>負向骨架掃描修正</strong>：用更寬泛的 regex <code>不是 |而不是|沒有.*[，、]會</code> 掃描、把「不是 X、而是 Y」「而不是 X」改成正向陳述 + 後置邊界提醒。技術約束敘述（「多人共用 IP 無法區分」）保留。</li>
<li><strong>編號漂移統一</strong>：把 <code>04.X</code> 風格 plain text 改成 <code>[4.X title](url)</code> markdown link、跟 _index 對齊。</li>
<li><strong>表格延伸段補強（關鍵段）</strong>：選 2-3 個最高 impact 表格（判讀訊號表的爭議列、Buffer / Sampling 等選型表）補延伸子段、不全部補（避免擴展超出 scope）。</li>
<li><strong>模板化拆敘事（代表性段）</strong>：選 1-2 個最明顯的「四步驟模板套不同情境」段、拆成情境化敘事、其他保留為下次。</li>
<li><strong>Cross-link 補漏 + ownership 邊界補強</strong>：reviewer C 報告的所有 cross-link 缺漏一次補完、用同一個批次跑 mdtools 驗證。</li>
<li><strong>用語不一統一 + 失效 link 修正</strong>：簡轉繁、<code>/knowledge-cards/</code> vs <code>/section/</code> URL 統一、失效 link 改規劃中或正確路徑。</li>
<li><strong>最終驗證 + commit</strong>：跑 <code>mdtools fmt --fix &amp;&amp; mdtools cards &amp;&amp; mdtools lint</code>、確認全綠、commit。</li>
</ol>
<h3 id="polish-pass-的實作成本">Polish pass 的實作成本</h3>
<p>實作中（04 / 05 polish pass 合併 commit <code>1072087</code>）：</p>
<ul>
<li>處理範圍：11 個檔案、+44 / -29 行</li>
<li>修正項目：~35 個 issue（10 個負向骨架、2 個模板化、3 個編號漂移、3 個表格延伸段、3 個 cross-link、1 個 case 引用結構）</li>
<li>時間：~30-45 分鐘（不重寫、只 pattern match）</li>
<li>剩餘 ~15 個 low 保留下次</li>
</ul>
<p>Polish pass 的 ROI 來自「系統性 pattern 一次處理 vs 散在各章一個個改」的效率差異。每個 pattern 在多章重複出現時、用 grep / rg 跨檔修一輪比每章單獨修快 3-5 倍。</p>
<h3 id="自掃描盲點更新">自掃描盲點更新</h3>
<p>04 流程暴露了一個 self-scan 盲點：原 regex <code>不行|不可以|不要|無法|不能</code> 漏掉「核心責任不是 X、而是 Y」這個變體段首。修正建議：</p>
<ul>
<li>加 <code>^[^|].*責任(不是|並非)</code> 抓「核心責任不是 X」變體</li>
<li>加 <code>^[^|].*[，,]而是</code> 抓「X、而是 Y」結構（已是正常陳述、但段首位置仍是負向骨架）</li>
<li>加 <code>^[^|].*[，,]不是</code> 抓「X、不是 Y」結構</li>
</ul>
<p>把自掃描 regex 視為持續演進的工具、每個 reviewer 抓出新 pattern 就更新一次、避免在下個模組重蹈覆轍。</p>
<h2 id="適用情境跟限制">適用情境跟限制</h2>
<h3 id="適用情境">適用情境</h3>
<ul>
<li><strong>長期累積的教學模組</strong>：6+ 章、跨章引用密集、規範遵循重要</li>
<li><strong>有現成 case 庫</strong>：07/09 累積的 100+ 案例是這套流程的前提、沒案例庫做不到 case-first</li>
<li><strong>品質高於速度</strong>：完整三階段約 3-4 小時 / 模組（stage 2 寫作 ~1.5-2hr + reviewer ~15 分鐘 + stage 3 修正 ~1.5-2hr）、適合長期累積的內容、不適合 one-off 文章</li>
<li><strong>主 context 容量敏感</strong>：reviewer 平行 background 是節省 context 的關鍵設計</li>
</ul>
<h3 id="不適用情境">不適用情境</h3>
<ul>
<li><strong>新主題沒案例庫</strong>：要先建案例庫、不能直接套這流程</li>
<li><strong>單篇短文</strong>：流程的固定成本（讀案例 + 跑 reviewer）對短文 ROI 低</li>
<li><strong>快速迭代原型</strong>：流程偏向 <em>寫一次寫好</em>、不是 <em>快速修改</em></li>
<li><strong>Routing layer / 導讀性質章節</strong>：已含完整 threat scope + 引用標準 + 問題節點表、case 庫不對應或缺位、應跳過本流程、用標準引用 + 通用工程知識補充承接（07 LLM / 治理章節驗證）</li>
<li><strong>Standard framework 比 case 庫成熟的領域</strong>：見下段「Standard-driven 取代 case-driven」</li>
</ul>
<h3 id="standard-driven-取代-case-driven07-llm-章節驗證">Standard-driven 取代 case-driven（07 LLM 章節驗證）</h3>
<p>在標準框架比 case 庫成熟的領域、case-driven 不是預設選擇。LLM 安全章節跑完 5 章驗證後浮現一個 finding：當該領域的 <em>標準框架</em>（如 OWASP LLM Top 10 2025 / NIST AI RMF 1.0 / MITRE ATLAS）已涵蓋 threat 分類、且 case 維護半衰期短於 standard、章節應 <em>用 standard-driven 取代 case-driven</em>。Standard-driven 跟 case-driven 是平行選項、依領域特性選用 — 兩者沒有退化 / 進階關係。</p>
<p><strong>判斷該用哪種策略的四維度</strong>：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>Case-driven 適用</th>
          <th>Standard-driven 適用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>議題穩定度</td>
          <td>高（5+ 年穩定）</td>
          <td>低（&lt; 1 年快速演進）</td>
      </tr>
      <tr>
          <td>Case 公開度</td>
          <td>高（充分的事故公告）</td>
          <td>中或低（vendor disclosure 偏 marketing）</td>
      </tr>
      <tr>
          <td>Standard 成熟度</td>
          <td>中（多用 case 而非 standard）</td>
          <td>高（standard framework 已成型）</td>
      </tr>
      <tr>
          <td>維護半衰期</td>
          <td>長</td>
          <td>短（6 個月過時）</td>
      </tr>
  </tbody>
</table>
<p><strong>典型對照</strong>：</p>
<ul>
<li><em>Case-driven 領域</em>：分散式系統 / 安全控制面 / 可靠性 / 訊息佇列（backend/01-07 batch 1 都屬此類、案例公開充分、半衰期 5+ 年）</li>
<li><em>Standard-driven 領域</em>：LLM 安全（OWASP LLM Top 10 / MITRE ATLAS 已成型、案例 6 個月過時）、新興 compliance（NIST AI RMF）、cloud-native 標準（CNCF baseline）</li>
</ul>
<p><strong>Standard-driven 章節的寫作策略</strong>：</p>
<ol>
<li><strong>章節對齊 standard framework 分類</strong>：用 framework 章節 ID 標明（如 OWASP LLM01 / NIST AI-1.1）取代「對應 [case] —」斷言</li>
<li><strong>加 Last reviewed cadence</strong>：每 quarter 重評估 standard 版本跟章節對應、寫進 frontmatter</li>
<li><strong>「案例觸發參考」段標明「公開案例累積中、值得追蹤的方向」</strong>：不寫「對應 [case] 揭露」斷言、避免引用源不穩定</li>
<li><strong>引用標準時用版本號</strong>：OWASP LLM Top 10 2025 / NIST AI RMF 1.0 / MITRE ATLAS continuous — framework 改版要 trigger 章節重審</li>
</ol>
<p><strong>實證</strong>：07 LLM 章節 5 章已套用 standard-driven 策略：</p>
<ul>
<li>章節 113-137 行、含完整 threat scope + 問題節點表 + 風險邊界</li>
<li>引用 OWASP LLM Top 10 + NIST AI RMF + MITRE ATLAS 取代個別 case 引用</li>
<li>加 <code>Last reviewed: 2026-05-12</code> cadence</li>
<li>「案例觸發參考」段寫「公開案例累積中、值得追蹤的方向」+「事實查核註」</li>
<li>完全不寫「對應 [case] —」斷言、不存在 case fidelity reviewer 該抓的準確性問題</li>
</ul>
<p>對照 backend/01-07 batch 1 的 case-driven 章節、LLM 章節是 <em>用不同方法達到同樣品質</em> — scope 涵蓋真實 production 議題（KV cache 跨租戶、shared prefix optimization、batch 推論順序敏感）、不停在教科書級內容。</p>
<p><strong>何時要從 standard-driven 轉回 case-driven</strong>：</p>
<ul>
<li>該領域累積 5+ 個高可信度 case（vendor disclosure + academic paper + CVE 三來源交叉）</li>
<li>跨章 frame 重複出現、case-driven mechanism 深化能解 SSoT 衝突</li>
<li>出現「等級類似 SolarWinds」的 incident、案例本身夠重、單一 case 即可支撐章節擴章</li>
<li>讀者反饋章節太抽象、需要具體 case 才能理解 mechanism</li>
</ul>
<p>不滿足任一條件時、繼續走 standard-driven、不勉強建 case 庫。</p>
<p><strong>對 case-first-module-workflow skill 的補強</strong>：</p>
<p>skill 之前的「不適用情境」寫「沒 case 庫的新主題（要先建 case 庫）」— 這暗示缺 case 庫一定要先補。07 LLM 章節驗證了第三條路：<em>用 standard-driven 取代</em>、適用 standard framework 比 case 庫成熟的領域。這個 finding 已補進 skill 的「不適用情境」段。</p>
<h3 id="限制">限制</h3>
<ul>
<li><strong>Reviewer 維度有限</strong>：當前 3 個 reviewer 沒覆蓋「教學性」「讀者路徑」「實作可行性」、若主題需要這些維度、要加 reviewer</li>
<li><strong>修正可能引入新 issue</strong>：第一輪 review 後修正、修正本身可能違反規範、若大量修正最好做第二輪</li>
<li><strong>Case 庫品質決定 findings 品質</strong>：case 寫得淺、findings 也淺；case fidelity reviewer 也只能驗證「跟 case 一致」、不能驗證「case 本身對不對」</li>
<li><strong>依賴 LLM agent 平台能力</strong>：流程預設可平行跑 background agent、不是所有 LLM 平台都支援</li>
</ul>
<h2 id="7-個模組驗證後的反覆陷阱">7 個模組驗證後的反覆陷阱</h2>
<p>01 / 02 / 03 / 04 / 05 / 06 / 07 七個模組執行下來、以下陷阱在 <em>多數模組都重複出現</em>、屬於 LLM case-driven 寫作的系統性失分點。本流程下次套用前要 <em>主動防範</em>、不能依賴 stage 3 reviewer 補救（雖然 reviewer 都會抓到、但修正成本高）。</p>
<h3 id="陷阱-1skeleton-case-擴寫成-case-事實">陷阱 1：Skeleton case 擴寫成 case 事實</h3>
<p>當 case 內容簡短（10-30 行、只有 frame 沒有具體數字 / taxonomy）、LLM 寫作時容易把通用知識（具體數字、攻擊向量列表、設計細節）寫成「對應 [case] —」斷言。實際 case 沒寫的。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>01 紅隊：Snowflake「30-90 天 baseline」編造、Tixcraft「partition key 用 user_id」編造</li>
<li>02 cache：Tubi 三層 cache 具體 latency（L1 &lt; 1ms、L2 &lt; 10ms、L3 10-100ms）編造、Redis「100K-200K ops/sec」無來源、KeyDB「5-10x throughput」其實是 case 判讀段非引用源</li>
<li>03 messaging：PayPay「broker 寫入 3K msg/sec」實際 case 寫的是「DynamoDB 寫入 3K msg/sec」（PayPay 用 DynamoDB 不是傳統 broker）、3.C9 case 三個方向被擴寫成「4 個誤配場景」、3.C10 case 「大型服務 DLQ 是診斷入口」完全編造</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>Stage 1 抽 findings 時 <em>標明 case 類型</em>（rich vs skeleton）</li>
<li>Stage 2 寫 skeleton case finding 時、用「對應 [case] — 揭露 X 方向、以下展開基於通用工程知識補充」這種 <em>fact vs derive</em> 標記</li>
<li>不要為了「整齊的 4 個攻擊面」「3 個攻擊向量」「5 個誤配場景」這種數字感、把 case 沒寫的 taxonomy 寫成 case 揭露</li>
</ul>
<h3 id="陷阱-2frame-重複展開ssot-不清">陷阱 2：Frame 重複展開（SSoT 不清）</h3>
<p>同一概念在多章 case-driven 擴章時各自展開、形成 frame 重複。讀者跨章讀會踩到重述、結論散落拼不出總圖。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>01：容量三口徑 frame 在 1.1 跟 1.12 重複展開、storage / compute 分離 frame 在 1.1 跟 1.11 重複</li>
<li>02：cache 角色變化 frame 在 2.1 主寫但屬模組層級、應在 _index；Tubi 案例在 2.1 / 2.2 / 2.8 三章 mini-展開</li>
<li>03（最嚴重）：三層語意（delivery / processing / recovery）在 3.4 / 3.6 / 3.8 三章各自定義；Slack Kafka+Redis 拓樸在 3.4 跟 3.8 兩章逐字重複；規模對照在 3.4 / 3.6 / 3.8 三章拆用</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>Stage 2 寫作前花 30 分鐘做 SSoT 對應（見前面「Stage 2 寫作前先定 SSoT 對應」段）</li>
<li>列出 cross-chapter frames、指定唯一主寫章節、其他章節只 link</li>
<li>寫每章前問「這個 frame 主寫在哪？我現在寫的是主寫還是 link？」</li>
</ul>
<h3 id="陷阱-3負向陳述--模板化規範系統性失分">陷阱 3：負向陳述 + 模板化（規範系統性失分）</h3>
<p>「不是 X、是 Y」推進論證、L1/L2/L3 三層平鋪、三選一表格、四步驟流程。這兩個原則違反在每模組都重複出現、是 LLM 寫作的反覆模式、stage 3 standards reviewer 每模組會抓 10-20 處。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>01 規範 violation：表格不延伸（7 處）、負向陳述（5 處）、首句結構（4 處）</li>
<li>02 規範 violation：原則 8 模板化（6 處）、原則 2 負向陳述（6 處）、原則 4 表格不延伸（4 處）</li>
<li>03 規範 violation：原則 2 負向陳述（12 處最嚴重）、原則 1 首句結構（5 處）、原則 6 用語節制（2 處）</li>
<li>04 規範 violation：原則 2 負向陳述（12 處最嚴重、含「核心責任不是 X、而是 Y」變體段首）、原則 1 首句結構（9 處）、原則 4 表格不延伸（9 處）</li>
<li>05 規範 violation：原則 2「不是 X、而是 Y」+「沒有 X、會 Y」（10 處）、原則 8 四步驟 / 四層並列模板（7 處）、原則 3 case 引用框架取代商業邏輯先行（6 處）</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>Stage 2 寫完後 <em>寫稿端就跑掃描</em>、不等 reviewer：
<ul>
<li><code>rg -n &quot;不行|不可以|不要|無法|不能&quot; &lt;module-path&gt;</code> 找負向骨架（技術約束敘述例外）</li>
<li><code>rg -n &quot;^[^|].*責任(不是|並非)&quot; &lt;module-path&gt;</code> 找「核心責任不是 X」變體段首（04 模組新發現的 pattern）</li>
<li><code>rg -n &quot;^[^|].*[，,]而是|^[^|].*[，,]不是&quot; &lt;module-path&gt;</code> 找對比骨架開段</li>
<li>自查表格：每個 bullet 是否有後文延伸？</li>
<li>自查首句：是否「核心原則先行」而非「對應 [case] 揭露」</li>
</ul>
</li>
<li>模板化（L1/L2/L3、三選一）出現時、先問「這三項是真的對等？還是業務情境不同？」— 不同情境的話拆敘事段、不用表格</li>
</ul>
<h3 id="陷阱-4rich-case-判讀層被當-case-fact-引用0405-模組新發現">陷阱 4：Rich case 判讀層被當 case fact 引用（04/05 模組新發現）</h3>
<p>引用 09 / 07 等 rich case 時、case 內常含「觀察層」（具體 fact）跟「判讀層」（作者推論）兩段。LLM 寫作時容易把兩層壓縮成「揭露 X」、把作者判讀升級為 case fact。</p>
<p>跟陷阱 1（skeleton case 擴寫成 case 事實）的差別：</p>
<ul>
<li><strong>陷阱 1</strong>：case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露</li>
<li><strong>陷阱 4</strong>：case 有提、但屬作者判讀層的內容被寫成 case fact</li>
</ul>
<p><strong>實證</strong>：</p>
<ul>
<li>05 / 9.C12 Riot：5.2 寫「揭露 35ms latency 反推 region 部署」、實際 case 的「35ms」是觀察層、「反推 region 部署」是作者判讀層</li>
<li>05 / 9.C34 GCP：5.2 寫「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」、實際 case 用更保守的「control plane 極限取決於 storage backend、GCP 用 Spanner 替換 etcd」分兩個點寫、章節壓縮 + 強化成硬性結論</li>
<li>05 / 9.C12 Riot：漏掉 case 揭露的關鍵歷史轉折「從 multi-tenant cluster 模型改成 single-tenant per game」</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>引用 rich case 前、先把 case 內的「觀察段」跟「判讀段」分開讀、抽 finding 時各自標明來源層</li>
<li>引用時用「揭露 X 觀察 + 作者判讀 Y」分層寫、或在引用後補一句「（case 中 X 屬作者判讀層、本章引用此推論）」</li>
<li>避免使用「才是 / 必須 / 一定」這類強化詞、保留 case 原文的條件性表述</li>
<li>Stage 3 case fidelity reviewer 的 prompt 要特別點出「判讀層 vs 觀察層」的分界、把這當作 high 級 issue 抓取</li>
</ul>
<h3 id="陷阱-5自掃描盲點累積040506-模組持續顯現">陷阱 5：自掃描盲點累積（04/05/06 模組持續顯現）</h3>
<p>自掃描的 regex 跟 reviewer 抓的 pattern 會逐漸脫節。每個模組 reviewer 會發現新 pattern、self-scan regex 跟著演進、但 reviewer 仍會發現下一個。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>04 自掃描用 <code>不行|不可以|不要|無法|不能</code> 跟「不是 X、是 Y」掃描通過、但 reviewer A 抓出「核心責任不是 X、而是 Y」變體段首（佔 12 處）</li>
<li>05 自掃描通過、但 reviewer A 仍抓出「沒有 X、會 Y」鏈式負向句構 + 「四步驟模板」+ 「case 引用框架取代商業邏輯先行」三類新 pattern</li>
<li>06 self-scan 加了「不是 X、而是 Y」變體 + 「沒有 X 會 Y」、仍漏掉「對應 [case]：揭露 N 個機制」段首取代核心概念句的 pattern（reviewer A 抓 45 issue、其中 11/12 新段都犯這個錯）</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>每個模組 reviewer 抓出新 pattern 後、回頭更新 self-scan regex</li>
<li>把 self-scan 視為持續演進的工具、不是固定 checklist</li>
<li>Stage 5 polish pass 是處理自掃描盲點累積的標準入口（見前段）</li>
<li>06 模組後 self-scan 加 <code>rg -n &quot;^對應 \[&quot; &lt;module-paths&gt;</code> 抓段首 case 引用框架</li>
</ul>
<h3 id="陷阱-6case-引用段首取代核心概念句06-模組新發現">陷阱 6：Case 引用段首取代核心概念句（06 模組新發現）</h3>
<p>LLM 從 case 反推內容時、容易把 case 揭露當概念出發點、寫成「對應 [case]：揭露 N 個機制 — &hellip;」段首結構。讀者尚未理解概念就被丟入案例細節、且跨章讀同句構會感同質。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>06 模組 12 個新段中 11 個用「對應 [case]：揭露 N 個機制」相同句構作為 section 第二段</li>
<li>概念定義句被推到第二段或更後、商業邏輯先於 case 的原則被推翻</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>把 case 引用視為「三段式」結構：概念定義句 → case 引用 → 通用展開</li>
<li>寫每段時、先確認段首是「該概念是什麼、承擔什麼責任」、case 引用退到第二位置</li>
<li>Case 引用句構應變化：寫多章時刻意避免同句構連續超過 3 次</li>
<li>詳見 skill 內部原則卡 <code>principles/case-citation-three-part</code>（對應檔案 <code>.claude/skills/case-first-module-workflow/references/principles/case-citation-three-part.md</code>、屬 skill 內部 reference、不對外暴露）</li>
</ul>
<h3 id="陷阱-7medium-case-實作層擴寫過頭06-模組新發現">陷阱 7：Medium case 實作層擴寫過頭（06 模組新發現）</h3>
<p>Medium case（30-50 行、結構化但無具體數字）首次套用時、容易把 case 沒提的具體實作層擴寫進章節、把通用工程知識掛到 case 名下。</p>
<p><strong>實證</strong>：</p>
<ul>
<li>06 模組 6.12 idempotency-replay 從 S1「key 設計要跟業務邊界一致」一條方向擴寫成「key 來源 / TTL / fallback / 偽造防護 / 5 個 observability 欄位」5 條實作判讀、case 沒提這些細節</li>
<li>06 模組 6.14 dependency-reliability-budget 從 M1 region failover 擴寫成「thundering herd」機制名 + 「先恢復核心 region 最小集合」具體步驟、case 沒提這兩個</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>Medium case 引用用 <em>mechanism 名稱</em> 精準引用、不擴寫到 case 沒提的具體實作細節</li>
<li>引用後若要展開實作層、用「以下實作層判讀屬通用工程知識展開、case 本身只給 X 方向」明示分層</li>
<li>Case fidelity reviewer 的 prompt 要特別點出 medium case 的「實作層擴寫」失分類型</li>
</ul>
<h3 id="陷阱-8跨-case-合成-frame-升級成-case-揭露07-模組新發現">陷阱 8：跨 case 合成 frame 升級成 case 揭露（07 模組新發現）</h3>
<p>當段落把多個 case 的失效訊號抽象為更高層 frame（如「跨工具回查壓力」「平台責任切分」）、LLM 會把章節合成的 frame 包裝成 case 揭露。讀者回查 case 時會發現章節說的「case 揭露 X」實際是章節 derive、不是 case 原文框架。</p>
<p>跟陷阱 1（skeleton case 擴寫成 case 事實）跟陷阱 4（rich case 判讀層當 fact）的差別：</p>
<ul>
<li><strong>陷阱 1</strong>：case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露</li>
<li><strong>陷阱 4</strong>：case 有提、但屬作者判讀層的內容被寫成 case fact</li>
<li><strong>陷阱 8</strong>：case <em>單獨</em> 寫的訊號被章節 <em>跨 case 合成</em> 抽象為更高層 frame、frame 本身不在任一 case 原文</li>
</ul>
<p><strong>實證</strong>（07 batch 1 reviewer B 抓的 2 個 high issue）：</p>
<ul>
<li>7.7 跨工具回查壓力：Uber 失效控制面寫「告警串接不足」、Slack 寫「訊號未匯流」— 都是單工具內訊號、章節合成「跨工具回查」axis</li>
<li>7.7 平台責任切分：SolarWinds 失效控制面寫「更新來源信任過於單點」「行為監測難以區分合法元件」— 都是供應鏈信任議題、章節合成「平台 vs 產品 audit 責任分離」frame</li>
</ul>
<p><strong>防範</strong>：</p>
<ul>
<li>段落把多 case 抽象為更高層 frame 時、要 explicit 標明「frame 是本章合成、case 原文沒有此 frame」</li>
<li>修法範例：「兩個案例分別在 X 層揭露同類失效訊號 — A case 標明 B、C case 標明 D。本章把兩者抽象為『XXX』是 YYY 視角的合成 frame、非 case 原文框架。」</li>
<li>Stage 3 reviewer B prompt 要明示「跨 case 合成 frame 必須標為本章合成」是 high 級 issue 抓取項</li>
</ul>
<h3 id="陷阱-9case-引用句構同質化07-模組新發現">陷阱 9：Case 引用句構同質化（07 模組新發現）</h3>
<p>即使遵守 case 引用三段式紀律、跨章節 case 引用仍會出現句構同質化。13 處 case 引用 11 處用同一句構「揭露 N 層失效控制面 — A、B、C。案例『可落地檢查點』標明 mechanism 為 X、前提是 Y」。讀者跨章連讀時、會把 case 引用當儀式而非論證。</p>
<p><strong>實證</strong>：07 batch 1 reviewer A 抓出 systemic medium issue (Issue 8.1)、13 段 case 引用 11 段用相同句構。Stage 5 polish pass 主動分流 4 處後狀況改善。</p>
<p><strong>防範</strong>：</p>
<ul>
<li>句構選擇要 <em>跟著 case 類型走</em>、不是隨機變化（case 直接列 N mechanism → 「揭露 N 層」；case 揭露單一壓力 → 「補的失效訊號是 X」；case 揭露對比 → 「揭露兩個層次的對照」）</li>
<li>Stage 5 polish pass 加句構分流為標準工序之一（跟負向骨架同層級）</li>
<li>自掃描 regex <code>^對應 \[</code> 抓不到此類問題（這是符合三段式的引用、只是句構單一）、要靠 stage 5 主動 scan：<code>rg -c &quot;揭露[^。]*失效控制面&quot; &lt;module-paths&gt;</code> 看同句構出現次數、超過 5 處要分流</li>
</ul>
<h3 id="章節已有-routing-skeleton的特殊處理07-模組新發現">「章節已有 routing skeleton」的特殊處理（07 模組新發現）</h3>
<p>07 模組跟 06 / 09 不同之處：章節在 stage 2 前已有完整 routing layer 結構（threat scope / 從本章到實作 / 問題節點表 / 風險邊界 / 案例觸發 / 路由）— stage 2 是在現有結構內補 case-driven 深化段，而非空白擴章。</p>
<p>這個情境下：</p>
<ul>
<li><strong>SSoT 衝突更容易發生</strong>：新段落要跟既有章節結構協調、不只是新增內容。07 batch 1 三個 H issue（C-H1/H2/H3）都是 frame 跟既有章節 / 其他章節新增段衝突</li>
<li><strong>章節寫作邊界要先確認</strong>：補強段聚焦在「現有問題節點表的 mechanism 深化」、不擴成厚重 case-driven 章節（避免章節結構失衡）</li>
<li><strong>Cross-link 密度顯著上升</strong>：補強段要明示「本節聚焦 X 視角、canonical 在 Y 章」、否則 reviewer C 會抓 frame 重複展開</li>
</ul>
<p>判讀條件：</p>
<ul>
<li>章節已有 threat scope / 問題節點表 / 案例觸發段 → 走「補強段」策略、不空白擴章</li>
<li>章節是 routing layer / 導讀性質、不適合 case-driven 深化 → 跳過本流程</li>
<li>章節有 case 庫但 case 主要是 skeleton 型（30 行 frame） → 補強段嚴守「揭露 X 方向、通用補充」紀律、不擴寫實作層</li>
</ul>
<h3 id="衍生-insightreviewer-維度沒覆蓋的部分">衍生 insight：reviewer 維度沒覆蓋的部分</h3>
<p>3 個模組跑下來、發現現有 3 reviewer 維度（規範 / 案例準確性 / 跨章一致性）有未覆蓋的問題：</p>
<ul>
<li><strong>教學性 / 讀者路徑</strong>：章節之間的閱讀順序是否合理？讀者讀完 A 章能不能銜接 B 章？目前沒 reviewer 檢查</li>
<li><strong>判讀條件可操作性</strong>：寫了判讀訊號、但實際工程師能不能用這些訊號做決策？沒 reviewer 驗證</li>
<li><strong>實作可行性</strong>：建議的設計是否真的能落地？跨團隊協調是否現實？需要懂業務的 reviewer</li>
</ul>
<p>未來 6 / 7 / 8 模組執行時、可以考慮加第 4 個 reviewer 維度（教學性 + 實作可行性）。</p>
<h2 id="跟其他寫作流程的差異">跟其他寫作流程的差異</h2>
<p>跟「LLM 自生 + 人工 review」比、本流程的差異：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>LLM 自生 + 人工 review</th>
          <th>Case-first + Agent team</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Scope 來源</td>
          <td>訓練資料 + 提示詞</td>
          <td>真實案例 findings</td>
      </tr>
      <tr>
          <td>準確性檢查</td>
          <td>人工讀完對比</td>
          <td>Case fidelity reviewer 自動對照</td>
      </tr>
      <tr>
          <td>規範遵循</td>
          <td>人工 checklist</td>
          <td>Standards reviewer 自動掃描</td>
      </tr>
      <tr>
          <td>跨章一致性</td>
          <td>人工跨檔 grep</td>
          <td>Consistency reviewer 自動檢查</td>
      </tr>
      <tr>
          <td>Context 成本</td>
          <td>低（人工不佔 LLM context）</td>
          <td>中（reviewer 各自佔自己 context、主 context 輕）</td>
      </tr>
      <tr>
          <td>時間成本</td>
          <td>高（人工逐段讀）</td>
          <td>中（reviewer 平行）</td>
      </tr>
      <tr>
          <td>真實事故揭露</td>
          <td>受限於 reviewer 經驗</td>
          <td>受限於案例庫覆蓋</td>
      </tr>
  </tbody>
</table>
<p>跟「LLM 自生 + 自我 review」比：</p>
<ul>
<li>自我 review 抓不到自生內容的盲點（self-blindness）</li>
<li>Agent team 是 <em>不同 instance</em>、不共享 context、能扮演獨立 reviewer</li>
</ul>
<h2 id="下一步">下一步</h2>
<p>本流程在 backend/01 至 backend/07 batch 1 七個模組驗證後（共 ~45 章 / 385 review issue / case fidelity 70-93% 區間）、方法論已工具化為 <code>case-first-module-workflow</code> skill（內部檔 <code>.claude/skills/case-first-module-workflow/</code>、含 stage 1-5 流程、reviewer prompt template、self-scan regex 跟 5 個原則卡）、後續套用到：</p>
<ul>
<li>backend/07 batch 2 LLM 安全：case 庫缺位（OWASP LLM Top 10 + agent injection 公開事件未累積成模組 case）、要先建 LLM case 庫再走 case-first</li>
<li>backend/07 batch 3 治理章節：routing 層 / 導讀性質、case-driven 深化適用度低、做標準 polish pass 即可</li>
<li>backend/08 incident response：跟 04 / 06 / 07 cross-link 密度最高、SSoT 對應規劃壓力最大</li>
<li>其他模組依此類推</li>
</ul>
<p>06 模組是首次套用工具化 skill 的模組、驗證 skill 對 stage 1-2 加速有效、但 reviewer A 仍抓出 45 issue（高於 05 之前 baseline 20-30、推動 v1.2 把 standards reviewer baseline 擴大到 20-45）— 揭露 skill 改進方向（self-scan regex 需要持續演進、case 引用段首結構是 LLM 系統性傾向）。</p>
<p>07 batch 1 驗證下「章節已有 routing skeleton」情境的處理策略：補強段不擴成厚重 case-driven 章節、聚焦 mechanism 深化 + cross-link 對齊。揭露兩個新陷阱（跨 case 合成 frame 升級成 case 揭露、case 引用句構同質化）、補進 skill 跟方法論。</p>
<p>流程本身會在每個模組後 retrospective、看 reviewer 維度是否該調整、findings 抽取方法是否該強化、polish pass 處理 pattern 是否該擴充。目前已知改進方向：</p>
<ul>
<li>加 reviewer：教學性審查（讀者路徑是否清楚、判讀順序是否合理）</li>
<li>強化 findings 抽取：標註 finding 的 <em>泛化程度</em>、避免把 case-specific 細節推為通用結論</li>
<li>Rich / Medium case 引用紀律：把「fact vs derive」分層 + 「mechanism 名稱精準引用」寫進 stage 1 抽 findings 模板、stage 3 case fidelity reviewer prompt 也明示此分界</li>
<li>自掃描 regex 持續演進：每個模組 reviewer 抓出新 pattern 後、回頭加進 self-scan 工具、避免在下個模組重蹈覆轍。06 模組後加 <code>^對應 \[</code> 抓段首 case 引用框架。07 模組後標明 <code>^對應 \[</code> 在三段分離結構下會 false positive、要靠 awk 看 prev line context</li>
<li>Case 引用三段式：把「概念定義 → case 引用 → 通用展開」當段落結構紀律、避免段首被 case 引用取代（06 模組最大宗 systemic 違規）</li>
<li>Case 引用句構分流：07 模組後 stage 5 polish pass 加句構分流為標準工序、避免跨章 13+ 段同句構讀感儀式化</li>
<li>跨 case 合成 frame 紀律：07 模組後 reviewer B prompt 明示「跨 case 合成 frame 必須標為本章合成」是 high 級 issue</li>
<li>加修正後自動 lint：修完不只跑 mdtools、加跑「找首句否定句」「找表格沒延伸」「找模板化並列點」「找段首 case 引用」的自動掃描</li>
</ul>
<p>跟其他寫作協議的整合：本流程跟 <code>compositional-writing</code> skill 互補（後者管 <em>單篇</em> 寫作的原子化跟意圖、本流程管 <em>跨章模組</em> 的 scope 跟一致性）、跟 <code>requirement-protocol</code> skill 互補（後者管 <em>對話協議</em>、本流程管 <em>內容生產</em>）。</p>
]]></content:encoded></item></channel></rss>