<?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>驗證 on Tarragon</title><link>https://tarrragon.github.io/blog/tags/%E9%A9%97%E8%AD%89/</link><description>Recent content in 驗證 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 04 Sep 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/%E9%A9%97%E8%AD%89/index.xml" rel="self" type="application/rss+xml"/><item><title>真值住在稿件之外的宣稱，讀多少遍都驗不出來</title><link>https://tarrragon.github.io/blog/report/text-review-cannot-reach-external-truth/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/report/text-review-cannot-reach-external-truth/</guid><description>&lt;h2 id="論述基礎與限制">論述基礎與限制&lt;/h2>
&lt;p>本卡抽自一篇 SQL 教學文章的四輪審查加一次完整事實回歸：約二十個 reviewer 與探針全部放行八項事實錯誤，八項都在實跑那一刻現形。單一批次、對象是帶大量引擎輸出的技術教材；機制的推導比數字強。推翻方式是找一批純文字審查抓到外部真值錯誤的紀錄。&lt;/p>
&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>一份稿件裡有兩種宣稱，而審查的預設動作只對得上其中一種。&lt;/strong> 真值住在稿件裡的（論證通不通、指涉解不解得開、體例對不對、與別篇一不一致）讀得出來，因為要比對的材料都在射程內。真值住在稿件之外的（這個引擎回什麼、這段程式跑出什麼、這個數字量出來多少）讀不出來——驗它的動作是執行，而審查的預設動作是閱讀。&lt;/p>
&lt;p>&lt;strong>兩種宣稱在文字層同形。&lt;/strong> 錯的「SQLite 回 &lt;code>misuse of aggregate&lt;/code>」與對的那一句，讀起來沒有任何差別；句子通順、術語正確、與上下文一致。所以 reviewer 讀完回報沒問題是誠實的：他手上的材料不含判定所需的那一項。&lt;/p>
&lt;h2 id="實例八項全部通過了二十個審查者">實例：八項全部通過了二十個審查者&lt;/h2>
&lt;p>那八項包括：引用的錯誤訊息接錯查詢（該查詢實際回的是另一個錯誤碼）；&lt;code>NOT IN&lt;/code> 展開式寫成三項而該篇的資料只交出兩項（句式是從另一篇搬來的、資料沒跟著換）；一段執行計畫是從別的查詢貼過來的；「加上約束之後那一層變大了」而實跑顯示那一層一點沒變。&lt;/p>
&lt;p>四輪的 frame 涵蓋了規範、案例引用、跨章一致、斷言支撐、冷讀、體例定位、理解探針、術語探針、翻譯探針、steelman、個案實跑、outbound、搜尋落點、cadence、讀者旅程。&lt;strong>十五個 frame 沒有一個碰得到這八項&lt;/strong>，因為它們全部以閱讀為動作。&lt;/p>
&lt;h2 id="修法">修法&lt;/h2>
&lt;p>&lt;strong>先把兩類宣稱分開列，而這一步機械掃得出來。&lt;/strong> 候選是：程式碼區塊裡的輸出註解、引號裡的錯誤訊息、帶單位的數字、「某某引擎會⋯」「多數實作⋯」這類行為敘述、以及任何寫著「實測」「實跑」的句子。&lt;/p>
&lt;p>&lt;strong>外部真值那一類的審查動作是執行。&lt;/strong> 派 reviewer 去讀它是浪費——他能回報的只有「讀起來合理」，而那正是這一類錯誤的常態。&lt;/p>
&lt;p>&lt;strong>抄外部輸出時連同產生它的完整條件一起記。&lt;/strong> 版本、資料量、索引狀態、以及產生它的那一句查詢。少了任何一項，下次複驗得到不同結果時分不出是環境變了還是原本就抄錯。實例裡有一處只寫了版本與列數，複驗時多出一個關鍵字，追下去是 &lt;code>SELECT&lt;/code> 清單不同。&lt;/p>
&lt;p>&lt;strong>「驗不了」這個結論本身要驗一次。&lt;/strong> 本次有一輪把跨引擎的宣稱記成「本機只有 SQLite、驗不了」，而本機一直有 docker——那個沒查證的前提讓一整輪把那一類標成不可驗。這一條的完整推導在&lt;a href="https://tarrragon.github.io/blog/report/capability-limits-suppress-their-own-refutation/" data-link-title="限制類宣稱的錯誤會自我保存，因為它勸阻的正是唯一能推翻它的那個動作" data-link-desc="準備把一次失敗記成「這個工具不能用」「這個站擋抓」「這條路走不通」時，或稽核既有的環境限制清單時">能力限制會壓制自己的反證&lt;/a>。&lt;/p>
&lt;h2 id="反模式">反模式&lt;/h2>
&lt;p>&lt;strong>把「reviewer 沒說有問題」當成驗過。&lt;/strong> 零 finding 在這一類上等於沒有資訊。&lt;/p>
&lt;p>&lt;strong>用增加輪數或人數來補。&lt;/strong> 同一種動作做更多次，射程不變。這與同源盲區不同——那個問題加異源視角有救，這個問題加多少人都沒救，因為缺的是動作不是視角。&lt;/p>
&lt;h2 id="跟其他原則的關係">跟其他原則的關係&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/comprehension-sampled-not-judged/" data-link-title="理解檢查用低階 model 取樣讀者的實際理解，不靠單一 reviewer 的判斷" data-link-desc="要驗文章的脈絡與表達是否會被誤解時，用來決定派什麼樣的 reviewer、問什麼問題、以及判斷標準放在哪裡">理解要取樣、不要靠判斷&lt;/a> — 探針也是讀，受同一條射程限制。探針補的是「讀者實際帶走什麼」，補不了「這句話是不是真的」。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/capability-limits-suppress-their-own-refutation/" data-link-title="限制類宣稱的錯誤會自我保存，因為它勸阻的正是唯一能推翻它的那個動作" data-link-desc="準備把一次失敗記成「這個工具不能用」「這個站擋抓」「這條路走不通」時，或稽核既有的環境限制清單時">能力限制會壓制自己的反證&lt;/a> — 本卡的修法有一條依賴它：判定「這一類驗不了」之前先驗那個判定，否則整批外部真值宣稱會被合法地略過。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/verify-load-bearing-facts-against-primary-source/" data-link-title="承重事實要對到 primary source：自己的舊分析是 secondary、不是 ground truth" data-link-desc="分析建立在某個事實上、而那個事實來自二手來源（新聞、彙整站、甚至自己先前寫的內容）時，判斷該不該回到 primary source（原始申報書 / 紀錄）核對，以及更正一個錯誤事實時該驗到哪一層才停">承重事實回到 primary source 查證&lt;/a> — 那一張管&lt;strong>來源&lt;/strong>（拿自己的舊分析當一手事實），本卡管&lt;strong>動作&lt;/strong>（拿閱讀當驗證）。兩者可以同時發生：引用了正確的來源，而抄過來的那一段沒跑過。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/ask-for-the-object-not-the-verdict/" data-link-title="要交出物件，不要交出關於物件的判斷" data-link-desc="一份回報宣稱某件事不可能、超標或不成立時，用來決定該追問什麼才讓那個宣稱可以被驗證">要交出物件，不要交出關於物件的判斷&lt;/a> — 相鄰而處置相反。本卡的真值住在稿件之外、只能靠執行取得，所以修法是換工具；那一張的物件可以從手上已有的材料構造出來，缺的只是有人要求構造，所以修法是換問句。分辨兩者問一句：這個物件造得出來嗎。&lt;/li>
&lt;/ul>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;ul>
&lt;li>一批內容裡的程式碼區塊多數帶著輸出註解，而審查報告裡沒有任何一份提到自己跑過。&lt;/li>
&lt;li>審查報告用「這一段的機制正確」描述一個含具體輸出的段落——機制與輸出是兩件事，機制對而輸出抄錯是這一類的典型形態。&lt;/li>
&lt;li>某一類宣稱在某一輪被標成「無法驗證」，而標註沒有寫出試過哪些方法。&lt;/li>
&lt;li>同一段輸出在兩處出現而條件的描述不同，或條件只寫了一部分（有版本沒資料、有資料沒查詢）。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<h2 id="論述基礎與限制">論述基礎與限制</h2>
<p>本卡抽自一篇 SQL 教學文章的四輪審查加一次完整事實回歸：約二十個 reviewer 與探針全部放行八項事實錯誤，八項都在實跑那一刻現形。單一批次、對象是帶大量引擎輸出的技術教材；機制的推導比數字強。推翻方式是找一批純文字審查抓到外部真值錯誤的紀錄。</p>
<h2 id="核心原則">核心原則</h2>
<p><strong>一份稿件裡有兩種宣稱，而審查的預設動作只對得上其中一種。</strong> 真值住在稿件裡的（論證通不通、指涉解不解得開、體例對不對、與別篇一不一致）讀得出來，因為要比對的材料都在射程內。真值住在稿件之外的（這個引擎回什麼、這段程式跑出什麼、這個數字量出來多少）讀不出來——驗它的動作是執行，而審查的預設動作是閱讀。</p>
<p><strong>兩種宣稱在文字層同形。</strong> 錯的「SQLite 回 <code>misuse of aggregate</code>」與對的那一句，讀起來沒有任何差別；句子通順、術語正確、與上下文一致。所以 reviewer 讀完回報沒問題是誠實的：他手上的材料不含判定所需的那一項。</p>
<h2 id="實例八項全部通過了二十個審查者">實例：八項全部通過了二十個審查者</h2>
<p>那八項包括：引用的錯誤訊息接錯查詢（該查詢實際回的是另一個錯誤碼）；<code>NOT IN</code> 展開式寫成三項而該篇的資料只交出兩項（句式是從另一篇搬來的、資料沒跟著換）；一段執行計畫是從別的查詢貼過來的；「加上約束之後那一層變大了」而實跑顯示那一層一點沒變。</p>
<p>四輪的 frame 涵蓋了規範、案例引用、跨章一致、斷言支撐、冷讀、體例定位、理解探針、術語探針、翻譯探針、steelman、個案實跑、outbound、搜尋落點、cadence、讀者旅程。<strong>十五個 frame 沒有一個碰得到這八項</strong>，因為它們全部以閱讀為動作。</p>
<h2 id="修法">修法</h2>
<p><strong>先把兩類宣稱分開列，而這一步機械掃得出來。</strong> 候選是：程式碼區塊裡的輸出註解、引號裡的錯誤訊息、帶單位的數字、「某某引擎會⋯」「多數實作⋯」這類行為敘述、以及任何寫著「實測」「實跑」的句子。</p>
<p><strong>外部真值那一類的審查動作是執行。</strong> 派 reviewer 去讀它是浪費——他能回報的只有「讀起來合理」，而那正是這一類錯誤的常態。</p>
<p><strong>抄外部輸出時連同產生它的完整條件一起記。</strong> 版本、資料量、索引狀態、以及產生它的那一句查詢。少了任何一項，下次複驗得到不同結果時分不出是環境變了還是原本就抄錯。實例裡有一處只寫了版本與列數，複驗時多出一個關鍵字，追下去是 <code>SELECT</code> 清單不同。</p>
<p><strong>「驗不了」這個結論本身要驗一次。</strong> 本次有一輪把跨引擎的宣稱記成「本機只有 SQLite、驗不了」，而本機一直有 docker——那個沒查證的前提讓一整輪把那一類標成不可驗。這一條的完整推導在<a href="/blog/report/capability-limits-suppress-their-own-refutation/" data-link-title="限制類宣稱的錯誤會自我保存，因為它勸阻的正是唯一能推翻它的那個動作" data-link-desc="準備把一次失敗記成「這個工具不能用」「這個站擋抓」「這條路走不通」時，或稽核既有的環境限制清單時">能力限制會壓制自己的反證</a>。</p>
<h2 id="反模式">反模式</h2>
<p><strong>把「reviewer 沒說有問題」當成驗過。</strong> 零 finding 在這一類上等於沒有資訊。</p>
<p><strong>用增加輪數或人數來補。</strong> 同一種動作做更多次，射程不變。這與同源盲區不同——那個問題加異源視角有救，這個問題加多少人都沒救，因為缺的是動作不是視角。</p>
<h2 id="跟其他原則的關係">跟其他原則的關係</h2>
<ul>
<li><a href="/blog/report/comprehension-sampled-not-judged/" data-link-title="理解檢查用低階 model 取樣讀者的實際理解，不靠單一 reviewer 的判斷" data-link-desc="要驗文章的脈絡與表達是否會被誤解時，用來決定派什麼樣的 reviewer、問什麼問題、以及判斷標準放在哪裡">理解要取樣、不要靠判斷</a> — 探針也是讀，受同一條射程限制。探針補的是「讀者實際帶走什麼」，補不了「這句話是不是真的」。</li>
<li><a href="/blog/report/capability-limits-suppress-their-own-refutation/" data-link-title="限制類宣稱的錯誤會自我保存，因為它勸阻的正是唯一能推翻它的那個動作" data-link-desc="準備把一次失敗記成「這個工具不能用」「這個站擋抓」「這條路走不通」時，或稽核既有的環境限制清單時">能力限制會壓制自己的反證</a> — 本卡的修法有一條依賴它：判定「這一類驗不了」之前先驗那個判定，否則整批外部真值宣稱會被合法地略過。</li>
<li><a href="/blog/report/verify-load-bearing-facts-against-primary-source/" data-link-title="承重事實要對到 primary source：自己的舊分析是 secondary、不是 ground truth" data-link-desc="分析建立在某個事實上、而那個事實來自二手來源（新聞、彙整站、甚至自己先前寫的內容）時，判斷該不該回到 primary source（原始申報書 / 紀錄）核對，以及更正一個錯誤事實時該驗到哪一層才停">承重事實回到 primary source 查證</a> — 那一張管<strong>來源</strong>（拿自己的舊分析當一手事實），本卡管<strong>動作</strong>（拿閱讀當驗證）。兩者可以同時發生：引用了正確的來源，而抄過來的那一段沒跑過。</li>
<li><a href="/blog/report/ask-for-the-object-not-the-verdict/" data-link-title="要交出物件，不要交出關於物件的判斷" data-link-desc="一份回報宣稱某件事不可能、超標或不成立時，用來決定該追問什麼才讓那個宣稱可以被驗證">要交出物件，不要交出關於物件的判斷</a> — 相鄰而處置相反。本卡的真值住在稿件之外、只能靠執行取得，所以修法是換工具；那一張的物件可以從手上已有的材料構造出來，缺的只是有人要求構造，所以修法是換問句。分辨兩者問一句：這個物件造得出來嗎。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<ul>
<li>一批內容裡的程式碼區塊多數帶著輸出註解，而審查報告裡沒有任何一份提到自己跑過。</li>
<li>審查報告用「這一段的機制正確」描述一個含具體輸出的段落——機制與輸出是兩件事，機制對而輸出抄錯是這一類的典型形態。</li>
<li>某一類宣稱在某一輪被標成「無法驗證」，而標註沒有寫出試過哪些方法。</li>
<li>同一段輸出在兩處出現而條件的描述不同，或條件只寫了一部分（有版本沒資料、有資料沒查詢）。</li>
</ul>
]]></content:encoded></item><item><title>收斂度要等預定份數全部到齊才讀，N-1 份看起來一定比實際收斂</title><link>https://tarrragon.github.io/blog/report/convergence-is-unreadable-until-the-last-sample/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/report/convergence-is-unreadable-until-the-last-sample/</guid><description>&lt;h2 id="論述基礎與限制">論述基礎與限制&lt;/h2>
&lt;p>本卡抽自一次審查裡的兩次判斷失誤，同一個 session、同一批探針、間隔不到十分鐘。單一批次；機制是統計上的必然（少一個樣本的變異數下界較小），但「實務上多常發生」沒有量測。&lt;/p>
&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>收斂度只在第 N 份到齊之後可讀。&lt;/strong> 派了 N 份就要等 N 份，中途只記錄不推論。理由是決定收斂度的往往正是最後一份——前面那些若不收斂，早就不會有人想下結論；會讓人想下結論的正是「目前為止都一致」，而那個狀態在最後一份到齊之前一直成立。&lt;/p>
&lt;p>&lt;strong>這一條擋的不是「一份就下判斷」。&lt;/strong> 那一條已經有規則（單份不自證），而它擋不住 2/3——兩份一致讀起來已經像證據，尤其當它們是控制組的時候。&lt;/p>
&lt;h2 id="實例同一批探針上錯兩次">實例：同一批探針上錯兩次&lt;/h2>
&lt;p>一次三份的類型探針，兩份控制文件加一份受測件。&lt;/p>
&lt;p>&lt;strong>第一次&lt;/strong>：前兩份的教材控制是 75/25 與 70/30，我據此宣稱「控制組收斂，所以這一批的分歧可歸因到受測件」。第三份是 60/40——控制組自己散了 15 點，而那正是這個 frame 的前提條件。&lt;/p>
&lt;p>&lt;strong>第二次&lt;/strong>：同一批有一題三份都答「是」，我拿它當受測件偏向操作手冊的證據。第三份對&lt;strong>已知的好教材&lt;/strong>也答了「是」——那一題在這一批不具鑑別力，而我在只有兩份的時候看不出來，因為前兩份對教材控制答的是「不完全」。&lt;/p>
&lt;p>兩次的形態相同：&lt;strong>手上的 N-1 份給了一個乾淨的結論，而最後一份把它推翻。&lt;/strong> 第二次尤其值得記——它推翻的是那個量測工具在這一批上能不能用，而不只是一個數值。&lt;/p>
&lt;h2 id="為什麼中途特別想下結論">為什麼中途特別想下結論&lt;/h2>
&lt;p>報告是陸續回來的，而每一份到齊都是一個自然的停頓點。前面若已經一致，第 N-1 份帶來的是「又一次確認」的感覺，而不是「還差一份」的提醒。等待的成本是可見的（多花幾分鐘），錯誤的成本不可見（結論看起來成立）。&lt;/p>
&lt;h2 id="修法">修法&lt;/h2>
&lt;p>&lt;strong>中途只記錄不推論。&lt;/strong> 每一份回來就寫進表，不寫任何以收斂度為前提的句子。&lt;/p>
&lt;p>&lt;strong>回報時寫全距不寫平均。&lt;/strong> 「三份 60-75」看得出這一批穩不穩，「大致一致」或平均值看不出來。控制組的全距尤其要寫——它決定整批採不採用。&lt;/p>
&lt;p>&lt;strong>控制組散開就整批作廢，而散開的那一份可能是最後一份。&lt;/strong> 所以「控制組收斂」這個判定也要等 N 份，不能在中途宣告。&lt;/p>
&lt;h2 id="反模式">反模式&lt;/h2>
&lt;p>&lt;strong>把「目前為止都一致」寫進報告當成中間結論。&lt;/strong> 它會被後續的動作當成前提，而推翻它的成本高於當初等那幾分鐘。&lt;/p>
&lt;h2 id="跟其他原則的關係">跟其他原則的關係&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/comprehension-sampled-not-judged/" data-link-title="理解檢查用低階 model 取樣讀者的實際理解，不靠單一 reviewer 的判斷" data-link-desc="要驗文章的脈絡與表達是否會被誤解時，用來決定派什麼樣的 reviewer、問什麼問題、以及判斷標準放在哪裡">理解要取樣、不要靠判斷&lt;/a> — 那一張定「一份讀錯就是判決、收斂度只決定證據強度」，本卡補它缺的那個維度：&lt;strong>什麼時候可以開始讀收斂度&lt;/strong>。兩者的處置方向相反而不衝突——一份讀錯就要修，而讀「有多容易讀錯」要等齊。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/text-review-cannot-reach-external-truth/" data-link-title="真值住在稿件之外的宣稱，讀多少遍都驗不出來" data-link-desc="審查一批含引擎輸出、錯誤訊息或量測數字的內容時，判斷哪些宣稱該用讀的、哪些只能用跑的">真值住在稿件之外的宣稱，讀多少遍都驗不出來&lt;/a> — 同一批審查裡的另一個失誤，形態相反：那一張是動作不對（用讀的驗執行），本卡是時機不對（樣本沒到齊就讀）。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/auditor-answer-is-under-test-too/" data-link-title="稽核推導完整度時，稽核者自己的答案也是待測物" data-link-desc="拿一道具體題目驗教學集合推不推得出結論、而集合的判斷標準指向另一個落點時，決定該信哪一邊">稽核者自己的答案也是待測物&lt;/a> — 同一族的自我校正：那一張說稽核者的答案要進待測物，本卡說稽核者的中間結論要等證據到齊。&lt;/li>
&lt;/ul>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;ul>
&lt;li>報告裡出現「目前兩份都⋯」「前幾份一致」這種帶份數的中間結論。&lt;/li>
&lt;li>派了 N 份而在第 N-1 份之後就開始動手修。&lt;/li>
&lt;li>回報寫「控制組收斂」而沒有列出控制組各份的實際數值。&lt;/li>
&lt;li>事後回頭看，某個結論的關鍵證據來自最先回來的那幾份。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<h2 id="論述基礎與限制">論述基礎與限制</h2>
<p>本卡抽自一次審查裡的兩次判斷失誤，同一個 session、同一批探針、間隔不到十分鐘。單一批次；機制是統計上的必然（少一個樣本的變異數下界較小），但「實務上多常發生」沒有量測。</p>
<h2 id="核心原則">核心原則</h2>
<p><strong>收斂度只在第 N 份到齊之後可讀。</strong> 派了 N 份就要等 N 份，中途只記錄不推論。理由是決定收斂度的往往正是最後一份——前面那些若不收斂，早就不會有人想下結論；會讓人想下結論的正是「目前為止都一致」，而那個狀態在最後一份到齊之前一直成立。</p>
<p><strong>這一條擋的不是「一份就下判斷」。</strong> 那一條已經有規則（單份不自證），而它擋不住 2/3——兩份一致讀起來已經像證據，尤其當它們是控制組的時候。</p>
<h2 id="實例同一批探針上錯兩次">實例：同一批探針上錯兩次</h2>
<p>一次三份的類型探針，兩份控制文件加一份受測件。</p>
<p><strong>第一次</strong>：前兩份的教材控制是 75/25 與 70/30，我據此宣稱「控制組收斂，所以這一批的分歧可歸因到受測件」。第三份是 60/40——控制組自己散了 15 點，而那正是這個 frame 的前提條件。</p>
<p><strong>第二次</strong>：同一批有一題三份都答「是」，我拿它當受測件偏向操作手冊的證據。第三份對<strong>已知的好教材</strong>也答了「是」——那一題在這一批不具鑑別力，而我在只有兩份的時候看不出來，因為前兩份對教材控制答的是「不完全」。</p>
<p>兩次的形態相同：<strong>手上的 N-1 份給了一個乾淨的結論，而最後一份把它推翻。</strong> 第二次尤其值得記——它推翻的是那個量測工具在這一批上能不能用，而不只是一個數值。</p>
<h2 id="為什麼中途特別想下結論">為什麼中途特別想下結論</h2>
<p>報告是陸續回來的，而每一份到齊都是一個自然的停頓點。前面若已經一致，第 N-1 份帶來的是「又一次確認」的感覺，而不是「還差一份」的提醒。等待的成本是可見的（多花幾分鐘），錯誤的成本不可見（結論看起來成立）。</p>
<h2 id="修法">修法</h2>
<p><strong>中途只記錄不推論。</strong> 每一份回來就寫進表，不寫任何以收斂度為前提的句子。</p>
<p><strong>回報時寫全距不寫平均。</strong> 「三份 60-75」看得出這一批穩不穩，「大致一致」或平均值看不出來。控制組的全距尤其要寫——它決定整批採不採用。</p>
<p><strong>控制組散開就整批作廢，而散開的那一份可能是最後一份。</strong> 所以「控制組收斂」這個判定也要等 N 份，不能在中途宣告。</p>
<h2 id="反模式">反模式</h2>
<p><strong>把「目前為止都一致」寫進報告當成中間結論。</strong> 它會被後續的動作當成前提，而推翻它的成本高於當初等那幾分鐘。</p>
<h2 id="跟其他原則的關係">跟其他原則的關係</h2>
<ul>
<li><a href="/blog/report/comprehension-sampled-not-judged/" data-link-title="理解檢查用低階 model 取樣讀者的實際理解，不靠單一 reviewer 的判斷" data-link-desc="要驗文章的脈絡與表達是否會被誤解時，用來決定派什麼樣的 reviewer、問什麼問題、以及判斷標準放在哪裡">理解要取樣、不要靠判斷</a> — 那一張定「一份讀錯就是判決、收斂度只決定證據強度」，本卡補它缺的那個維度：<strong>什麼時候可以開始讀收斂度</strong>。兩者的處置方向相反而不衝突——一份讀錯就要修，而讀「有多容易讀錯」要等齊。</li>
<li><a href="/blog/report/text-review-cannot-reach-external-truth/" data-link-title="真值住在稿件之外的宣稱，讀多少遍都驗不出來" data-link-desc="審查一批含引擎輸出、錯誤訊息或量測數字的內容時，判斷哪些宣稱該用讀的、哪些只能用跑的">真值住在稿件之外的宣稱，讀多少遍都驗不出來</a> — 同一批審查裡的另一個失誤，形態相反：那一張是動作不對（用讀的驗執行），本卡是時機不對（樣本沒到齊就讀）。</li>
<li><a href="/blog/report/auditor-answer-is-under-test-too/" data-link-title="稽核推導完整度時，稽核者自己的答案也是待測物" data-link-desc="拿一道具體題目驗教學集合推不推得出結論、而集合的判斷標準指向另一個落點時，決定該信哪一邊">稽核者自己的答案也是待測物</a> — 同一族的自我校正：那一張說稽核者的答案要進待測物，本卡說稽核者的中間結論要等證據到齊。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<ul>
<li>報告裡出現「目前兩份都⋯」「前幾份一致」這種帶份數的中間結論。</li>
<li>派了 N 份而在第 N-1 份之後就開始動手修。</li>
<li>回報寫「控制組收斂」而沒有列出控制組各份的實際數值。</li>
<li>事後回頭看，某個結論的關鍵證據來自最先回來的那幾份。</li>
</ul>
]]></content:encoded></item><item><title>掃描的作用域會默默對齊「我這次動過什麼」，而該問的是「這個成品是什麼」</title><link>https://tarrragon.github.io/blog/report/scan-scope-defaults-to-the-diff-not-the-artifact/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/report/scan-scope-defaults-to-the-diff-not-the-artifact/</guid><description>&lt;h2 id="論述基礎與限制">論述基礎與限制&lt;/h2>
&lt;p>本卡從一次批次清理的收尾抽出，由併行的另一個工作階段回報。單一個案；「這個預設有多常發生」沒有量測，而預設的來源（手邊就有一份改動清單）是結構性的。&lt;/p>
&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>修法收尾的掃描，指令可以完全正確而作用域錯。&lt;/strong> 正規式對、管道通、逐條列出也做了，而餵給它的路徑集合窄了一圈。&lt;/p>
&lt;p>&lt;strong>錯誤的作用域不是隨便挑的，它是一個在別處正確的東西被搬到這裡。&lt;/strong> 修法的人手上有一份現成的改動清單——版本控制的 diff、這次的 commit 範圍、剛拆出來的那幾個檔——它就在手邊，而且它在另一個用途上正是對的作用域：判斷「這次變更有沒有引入新問題」用的就是改動集合。搬到收尾這一步就錯了，因為收尾問的是存量而不是增量。&lt;/p>
&lt;p>&lt;strong>它不會露餡。&lt;/strong> 在改過的檔裡命中歸零，報告讀起來就是乾淨的。零命中有兩個來源——真的清完了、與沒掃到——而兩者的輸出相同。&lt;/p>
&lt;p>&lt;strong>判別問句是二選一的，所以便宜：我剛才掃的路徑，是我改過的那些，還是這個成品的全部。&lt;/strong> 答案當下就知道，不需要任何額外的查證。&lt;/p>
&lt;h2 id="兩種作用域各有正確的場合">兩種作用域各有正確的場合&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>作用域&lt;/th>
 &lt;th>回答的問題&lt;/th>
 &lt;th>用在哪裡&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>改動集合&lt;/td>
 &lt;td>這次變更有沒有引入新問題&lt;/td>
 &lt;td>提交前的品質判斷、增量檢查&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>成品全集&lt;/td>
 &lt;td>這一類在成品裡還有沒有殘留&lt;/td>
 &lt;td>批次清理的收尾、存量稽核&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩者都對，錯的是把前者用在後者的位置上。而它們在指令上的差別只有路徑參數那一段，所以替換的成本接近零、被寫錯的機率卻很高。&lt;/p>
&lt;h2 id="實例三十二處覆蓋的全部是拆分產生的檔">實例：三十二處覆蓋的全部是拆分產生的檔&lt;/h2>
&lt;p>一次單檔拆成多份的重構之後，做了一輪章節編號的整批移除，處理了三十二處。掃描跑了、逐項對照也做了。&lt;/p>
&lt;p>隨後對整份成品重掃，那些沒有被這一輪動過的既有檔案裡還留著三個序號——標示的是三種並列的測試類型，是道地的內嵌計數，加第四種就漂。&lt;/p>
&lt;p>失效的位置不在掃描的深度：那次的掃描做到了逐項對照這一層。失效在&lt;strong>作用域的預設值來自工作流程的痕跡&lt;/strong>，而拆分這個動作讓「我改過的檔」看起來就是全部，因為新檔確實是這一輪產生的。&lt;/p>
&lt;h2 id="修法">修法&lt;/h2>
&lt;p>&lt;strong>掃描指令的路徑參數寫成受檢對象的定義，不寫成改動清單。&lt;/strong> 整個目錄、整個模組、整個分類——寫得出那個定義，就寫得出路徑。&lt;/p>
&lt;p>&lt;strong>報告要附掃描指令本身，含路徑參數。&lt;/strong> 「掃了哪些」因此變成可核對的東西，而不是一段回憶。少了這一項，作用域不留任何痕跡：它由執行者當下打的那幾個路徑決定，事後沒有人查得到。&lt;/p>
&lt;p>&lt;strong>正對照要放在沒有被這一輪改動過的檔裡。&lt;/strong> 這一條是對「把正對照放進掃描的輸出」那個做法的補強——正對照放在改過的檔裡會命中，於是它證明了管道是通的，而作用域的缺口原樣留著。&lt;/p>
&lt;h2 id="反模式">反模式&lt;/h2>
&lt;p>&lt;strong>用「處理了 N 處」描述一輪清理，而 N 的分母沒有寫出來。&lt;/strong> 分子看起來越大，分母越不會被問。&lt;/p>
&lt;p>&lt;strong>把拆分或新建當成「我改過的就是全部」的理由。&lt;/strong> 新產生的檔確實全部經手過，而成品裡的舊檔一個都沒動到，兩者合起來才是受檢對象。&lt;/p>
&lt;h2 id="跟其他原則的關係">跟其他原則的關係&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/broken-scan-reports-a-plausible-number/" data-link-title="掃描指令壞掉時不會報錯，它報一個數字——而那個數字經常是自洽的" data-link-desc="要用一條指令的輸出決定接下來怎麼改一批內容時，用來先確認那條指令量到的是不是你以為的東西">掃描指令壞掉時不會報錯，它報一個數字&lt;/a> — 失效樣態相同而成因相反。那一張的指令壞了，本卡的指令完全正確。&lt;strong>所以那一張的修法擋不到本卡&lt;/strong>：正對照那一列若放在改過的檔裡就會命中，管道通過驗證而作用域仍然是窄的。本卡因此給正對照加一個位置要求。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/lint-scope-must-be-explicit-fact/" data-link-title="檢查規則的作用域要顯式列舉：零 error 可能是沒被檢查" data-link-desc="新增與既有受檢目錄同類的內容目錄時、或工具鏈長期零 error 卻累積出違規時使用。規則的作用域由路徑常數決定、該常數常同時被多個檢查共用，擴作用域會連帶擴語意；作用域是獨立於規則內容的 fact，驗收方式是先確認新規則對已知違規報錯。">檢查規則的作用域要顯式列舉&lt;/a> — 同一件事在兩種載體上。那裡的作用域寫在設定檔的路徑常數裡，查得到、錯了會長期存在；本卡的作用域是執行者當下的一次選擇，不留痕跡、每一次都要重新做對。共用的處置是把涵蓋範圍變成可以逐條核對的東西。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/fix-the-class-not-the-cited-instances/" data-link-title="finding 清單列的是抽樣位置，照著逐處修會留下同一類在沒被點名的地方" data-link-desc="拿到 reviewer 的 finding 清單準備動手修時，用來決定掃描的單位是被列出的那幾處還是那一整類">finding 清單列的是抽樣位置&lt;/a> — 同一個動作的另一個維度。那一張要求掃描的單位從「清單上的行」升成「類別」，本卡問類別對了之後餵給指令的路徑集合夠不夠寬。兩者可以同時發生且互不遮蔽：類別對、範圍窄，報告一樣乾淨。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/recorded-failures-recur-when-the-record-is-off-path/" data-link-title="已經記錄過的失效仍然重演，因為記錄住在要人先起疑才會打開的地方" data-link-desc="同一類錯誤第二次發生、而它已經寫進卡或 memory 時，用來判斷該補的是記錄還是動作的前置步驟">已經記錄過的失效仍然重演&lt;/a> — 那一張補的「執行本身有深淺」講的是動作做得多深（不掃、只掃同形、逐項對照），本卡講的是動作作用在多大範圍上。深度與廣度獨立失效，所以收尾清單要分開列。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/one-fix-writes-two-forms-of-the-same-thing/" data-link-title="一次修法會對同一件事寫出兩種形式，而兩種都不命中舊 pattern" data-link-desc="一批修法完成、準備收尾時，用來抓出這一批自己引入而類別掃描走不到的形式不一致">一次修法會對同一件事寫出兩種形式&lt;/a>：&lt;strong>正確作用域相反，而兩者不衝突。&lt;/strong> 本卡說批次清理的收尾要掃成品的全部，因為它問的是存量；那一張的正確作用域恰好就是改動集合，因為它問的是增量的內部一致性。本卡那張兩種作用域對照表裡「改動集合答增量」那一格，它就是具體內容。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜&lt;/a> — 本卡的改動集合是成品全集的代理，而本卡指出的成因（手邊那份清單在另一個用途上正是對的作用域）是那一張「差價很小」的一個實例：換掉它只要改一個路徑參數。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/report/measurement-preprocessing-decides-the-denominator/" data-link-title="量測的前置步驟決定了分母，而所有檢查都落在分母之後" data-link-desc="一具檢查工具報出的每個數字都正確、而據以得到的結論仍然錯時，用來查它實際量了哪個子集">#349 量測的前置步驟決定了分母&lt;/a> — 本卡是那張卡四種前置步驟裡「納入條件」的一個高頻實例：以本次改動的新增字面作為差集基準時，來源從未改過的那些命中在差集下恆為零。那張卡給的是同一機制的其餘三種形態（丟棄規則、抽取單位、步驟順序）與共同的驗證形式（守恆式對帳，而抽樣比對對這一類結構上無效）。&lt;/p>
&lt;/li>
&lt;/ul>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;ul>
&lt;li>掃描指令的路徑參數來自版本控制的改動清單，或是手打的那幾個剛動過的檔。&lt;/li>
&lt;li>收尾報告寫「命中歸零」而沒有寫掃了哪些路徑。&lt;/li>
&lt;li>修法的敘述寫成「整批處理了 N 處」，而 N 的分母說不出來。&lt;/li>
&lt;li>這一輪的改動是拆分、搬移或新建檔，所以「改過的檔」這個集合看起來就是全部。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<h2 id="論述基礎與限制">論述基礎與限制</h2>
<p>本卡從一次批次清理的收尾抽出，由併行的另一個工作階段回報。單一個案；「這個預設有多常發生」沒有量測，而預設的來源（手邊就有一份改動清單）是結構性的。</p>
<h2 id="核心原則">核心原則</h2>
<p><strong>修法收尾的掃描，指令可以完全正確而作用域錯。</strong> 正規式對、管道通、逐條列出也做了，而餵給它的路徑集合窄了一圈。</p>
<p><strong>錯誤的作用域不是隨便挑的，它是一個在別處正確的東西被搬到這裡。</strong> 修法的人手上有一份現成的改動清單——版本控制的 diff、這次的 commit 範圍、剛拆出來的那幾個檔——它就在手邊，而且它在另一個用途上正是對的作用域：判斷「這次變更有沒有引入新問題」用的就是改動集合。搬到收尾這一步就錯了，因為收尾問的是存量而不是增量。</p>
<p><strong>它不會露餡。</strong> 在改過的檔裡命中歸零，報告讀起來就是乾淨的。零命中有兩個來源——真的清完了、與沒掃到——而兩者的輸出相同。</p>
<p><strong>判別問句是二選一的，所以便宜：我剛才掃的路徑，是我改過的那些，還是這個成品的全部。</strong> 答案當下就知道，不需要任何額外的查證。</p>
<h2 id="兩種作用域各有正確的場合">兩種作用域各有正確的場合</h2>
<table>
  <thead>
      <tr>
          <th>作用域</th>
          <th>回答的問題</th>
          <th>用在哪裡</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>改動集合</td>
          <td>這次變更有沒有引入新問題</td>
          <td>提交前的品質判斷、增量檢查</td>
      </tr>
      <tr>
          <td>成品全集</td>
          <td>這一類在成品裡還有沒有殘留</td>
          <td>批次清理的收尾、存量稽核</td>
      </tr>
  </tbody>
</table>
<p>兩者都對，錯的是把前者用在後者的位置上。而它們在指令上的差別只有路徑參數那一段，所以替換的成本接近零、被寫錯的機率卻很高。</p>
<h2 id="實例三十二處覆蓋的全部是拆分產生的檔">實例：三十二處覆蓋的全部是拆分產生的檔</h2>
<p>一次單檔拆成多份的重構之後，做了一輪章節編號的整批移除，處理了三十二處。掃描跑了、逐項對照也做了。</p>
<p>隨後對整份成品重掃，那些沒有被這一輪動過的既有檔案裡還留著三個序號——標示的是三種並列的測試類型，是道地的內嵌計數，加第四種就漂。</p>
<p>失效的位置不在掃描的深度：那次的掃描做到了逐項對照這一層。失效在<strong>作用域的預設值來自工作流程的痕跡</strong>，而拆分這個動作讓「我改過的檔」看起來就是全部，因為新檔確實是這一輪產生的。</p>
<h2 id="修法">修法</h2>
<p><strong>掃描指令的路徑參數寫成受檢對象的定義，不寫成改動清單。</strong> 整個目錄、整個模組、整個分類——寫得出那個定義，就寫得出路徑。</p>
<p><strong>報告要附掃描指令本身，含路徑參數。</strong> 「掃了哪些」因此變成可核對的東西，而不是一段回憶。少了這一項，作用域不留任何痕跡：它由執行者當下打的那幾個路徑決定，事後沒有人查得到。</p>
<p><strong>正對照要放在沒有被這一輪改動過的檔裡。</strong> 這一條是對「把正對照放進掃描的輸出」那個做法的補強——正對照放在改過的檔裡會命中，於是它證明了管道是通的，而作用域的缺口原樣留著。</p>
<h2 id="反模式">反模式</h2>
<p><strong>用「處理了 N 處」描述一輪清理，而 N 的分母沒有寫出來。</strong> 分子看起來越大，分母越不會被問。</p>
<p><strong>把拆分或新建當成「我改過的就是全部」的理由。</strong> 新產生的檔確實全部經手過，而成品裡的舊檔一個都沒動到，兩者合起來才是受檢對象。</p>
<h2 id="跟其他原則的關係">跟其他原則的關係</h2>
<ul>
<li>
<p><a href="/blog/report/broken-scan-reports-a-plausible-number/" data-link-title="掃描指令壞掉時不會報錯，它報一個數字——而那個數字經常是自洽的" data-link-desc="要用一條指令的輸出決定接下來怎麼改一批內容時，用來先確認那條指令量到的是不是你以為的東西">掃描指令壞掉時不會報錯，它報一個數字</a> — 失效樣態相同而成因相反。那一張的指令壞了，本卡的指令完全正確。<strong>所以那一張的修法擋不到本卡</strong>：正對照那一列若放在改過的檔裡就會命中，管道通過驗證而作用域仍然是窄的。本卡因此給正對照加一個位置要求。</p>
</li>
<li>
<p><a href="/blog/report/lint-scope-must-be-explicit-fact/" data-link-title="檢查規則的作用域要顯式列舉：零 error 可能是沒被檢查" data-link-desc="新增與既有受檢目錄同類的內容目錄時、或工具鏈長期零 error 卻累積出違規時使用。規則的作用域由路徑常數決定、該常數常同時被多個檢查共用，擴作用域會連帶擴語意；作用域是獨立於規則內容的 fact，驗收方式是先確認新規則對已知違規報錯。">檢查規則的作用域要顯式列舉</a> — 同一件事在兩種載體上。那裡的作用域寫在設定檔的路徑常數裡，查得到、錯了會長期存在；本卡的作用域是執行者當下的一次選擇，不留痕跡、每一次都要重新做對。共用的處置是把涵蓋範圍變成可以逐條核對的東西。</p>
</li>
<li>
<p><a href="/blog/report/fix-the-class-not-the-cited-instances/" data-link-title="finding 清單列的是抽樣位置，照著逐處修會留下同一類在沒被點名的地方" data-link-desc="拿到 reviewer 的 finding 清單準備動手修時，用來決定掃描的單位是被列出的那幾處還是那一整類">finding 清單列的是抽樣位置</a> — 同一個動作的另一個維度。那一張要求掃描的單位從「清單上的行」升成「類別」，本卡問類別對了之後餵給指令的路徑集合夠不夠寬。兩者可以同時發生且互不遮蔽：類別對、範圍窄，報告一樣乾淨。</p>
</li>
<li>
<p><a href="/blog/report/recorded-failures-recur-when-the-record-is-off-path/" data-link-title="已經記錄過的失效仍然重演，因為記錄住在要人先起疑才會打開的地方" data-link-desc="同一類錯誤第二次發生、而它已經寫進卡或 memory 時，用來判斷該補的是記錄還是動作的前置步驟">已經記錄過的失效仍然重演</a> — 那一張補的「執行本身有深淺」講的是動作做得多深（不掃、只掃同形、逐項對照），本卡講的是動作作用在多大範圍上。深度與廣度獨立失效，所以收尾清單要分開列。</p>
</li>
<li>
<p><a href="/blog/report/one-fix-writes-two-forms-of-the-same-thing/" data-link-title="一次修法會對同一件事寫出兩種形式，而兩種都不命中舊 pattern" data-link-desc="一批修法完成、準備收尾時，用來抓出這一批自己引入而類別掃描走不到的形式不一致">一次修法會對同一件事寫出兩種形式</a>：<strong>正確作用域相反，而兩者不衝突。</strong> 本卡說批次清理的收尾要掃成品的全部，因為它問的是存量；那一張的正確作用域恰好就是改動集合，因為它問的是增量的內部一致性。本卡那張兩種作用域對照表裡「改動集合答增量」那一格，它就是具體內容。</p>
</li>
<li>
<p><a href="/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜</a> — 本卡的改動集合是成品全集的代理，而本卡指出的成因（手邊那份清單在另一個用途上正是對的作用域）是那一張「差價很小」的一個實例：換掉它只要改一個路徑參數。</p>
</li>
<li>
<p><a href="/blog/report/measurement-preprocessing-decides-the-denominator/" data-link-title="量測的前置步驟決定了分母，而所有檢查都落在分母之後" data-link-desc="一具檢查工具報出的每個數字都正確、而據以得到的結論仍然錯時，用來查它實際量了哪個子集">#349 量測的前置步驟決定了分母</a> — 本卡是那張卡四種前置步驟裡「納入條件」的一個高頻實例：以本次改動的新增字面作為差集基準時，來源從未改過的那些命中在差集下恆為零。那張卡給的是同一機制的其餘三種形態（丟棄規則、抽取單位、步驟順序）與共同的驗證形式（守恆式對帳，而抽樣比對對這一類結構上無效）。</p>
</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<ul>
<li>掃描指令的路徑參數來自版本控制的改動清單，或是手打的那幾個剛動過的檔。</li>
<li>收尾報告寫「命中歸零」而沒有寫掃了哪些路徑。</li>
<li>修法的敘述寫成「整批處理了 N 處」，而 N 的分母說不出來。</li>
<li>這一輪的改動是拆分、搬移或新建檔，所以「改過的檔」這個集合看起來就是全部。</li>
</ul>
]]></content:encoded></item><item><title>要交出物件，不要交出關於物件的判斷</title><link>https://tarrragon.github.io/blog/report/ask-for-the-object-not-the-verdict/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/report/ask-for-the-object-not-the-verdict/</guid><description>&lt;h2 id="論述基礎與限制">論述基礎與限制&lt;/h2>
&lt;p>本卡從同一批審查裡的兩次撤回抽出，由併行的另一個工作階段提供。&lt;strong>兩例同一批、同一個要求者、同一個回報者&lt;/strong>，所以「換一個回報者是否同樣有效」在證據範圍之外；「不追問時這一類宣稱有多少會倒」也沒有量測。&lt;/p>
&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>一個關於物件的斷言可以在抽象層完全合理，而它的證偽要靠構造出那個物件。&lt;/strong> 「這兩條判斷標準不可同時滿足」是一個判斷；那個同時滿足兩條判斷標準的東西存不存在，要寫出來才知道。&lt;/p>
&lt;p>&lt;strong>沒有人要求構造時，回報者沒有理由去做。&lt;/strong> 他的主張在他自己的推理裡是自洽的，而推翻它要離開抽象層——在抽象層再讀一次只會再確認一次，因為它在那一層本來就自洽。&lt;/p>
&lt;p>&lt;strong>所以追問的形態決定了那個宣稱會不會被驗證。&lt;/strong> 「請確認 X」得到的是同一個判斷再說一次；「請把 X 寫出來、算出來，我要能自己驗證」得到的是物件，而物件會自己說話。&lt;/p>
&lt;p>&lt;strong>追問的成本落在追問者這一側&lt;/strong>——他要先知道那個宣稱需要什麼物件才成立。所以這一條寫不成回報者的自律規則，它住在追問的那一側。&lt;/p>
&lt;h2 id="兩個實例">兩個實例&lt;/h2>
&lt;p>&lt;strong>構造一個宣稱不存在的東西。&lt;/strong> 回報主張兩條判斷標準不可同時滿足，理由是一串會累加的要求（觸發詞要窮盡列舉、負面觸發也要寫、還要第三人稱，聽起來確實塞不下）。追問寫的是「請把那個 description 寫出來給我看，我要能自己驗證它確實兩邊都達不到」。它去構造，構造出來兩百零六字元，低於門檻的兩百五十，主張當場不成立。&lt;/p>
&lt;p>&lt;strong>把已經在手上的數字代進判斷標準。&lt;/strong> 另一個回報說某個檔案超標。追問要求算出那份內容的 ASCII 佔比——七成七，據此內插出的門檻是一萬六千九百零八，該檔通過。而&lt;strong>同一個回報者在更早一輪自己量過那個佔比&lt;/strong>（八成二），卻仍拿另一組係數判它超標。&lt;/p>
&lt;p>兩例的形態一致：&lt;strong>資訊一直在場，缺的是把它代進判斷標準的那一步。&lt;/strong> 第二例尤其清楚——那個數字一直在它手上，缺的只是有人要求它把數字放進判斷標準裡走一遍。&lt;/p>
&lt;h2 id="修法">修法&lt;/h2>
&lt;p>&lt;strong>追問的動詞用「寫出來」「算出來」「構造一個」，不用「確認」「說明」「檢查」。&lt;/strong> 前一組要求一個新產物，後一組容許把原本的判斷換句話說。&lt;/p>
&lt;p>&lt;strong>加上「我要能自己驗證」。&lt;/strong> 這一句把產物的接收者從回報者換成追問者，於是交出來的東西必須獨立於它的推理而可檢驗。&lt;/p>
&lt;p>&lt;strong>回報者已經量過的數字，要明確要求代入並印出過程。&lt;/strong> 「把你量到的那個值代進這條判斷標準、寫出計算」比「請確認判定正確」多一步，而那一步正是失效的位置。&lt;/p>
&lt;p>&lt;strong>判別問句：這個宣稱要成立，需要一個什麼樣的物件。&lt;/strong> 一個字串、一個數字、一組走得完的步驟——說得出來就去要它；說不出來，那個宣稱可能還沒有可驗證的形式。&lt;/p>
&lt;h2 id="跟其他原則的關係">跟其他原則的關係&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略，要分層得改成要求分類&lt;/a> — 最近的姊妹卡，兩者都是&lt;strong>問句的形態決定回報的內容&lt;/strong>，受詞不同：那裡問同一批東西怎麼分堆，本卡問交的是判斷還是物件。共用的推論是回報者不會做問句沒要求的工作，而那不是隱瞞。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/text-review-cannot-reach-external-truth/" data-link-title="真值住在稿件之外的宣稱，讀多少遍都驗不出來" data-link-desc="審查一批含引擎輸出、錯誤訊息或量測數字的內容時，判斷哪些宣稱該用讀的、哪些只能用跑的">真值住在稿件之外的宣稱，讀多少遍都驗不出來&lt;/a> — 相鄰而處置相反。那裡的真值在稿件之外，只能靠執行取得，所以修法是換工具；本卡的物件可以從手上已有的材料構造出來，缺的只是有人要求構造，所以修法是換問句。分辨兩者的問句是：這個物件造得出來嗎。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/judgment-rules-must-specify-their-trace/" data-link-title="要求執行者做判定的規則，要一併規定判定留下什麼痕跡" data-link-desc="寫下一條「先判斷 X、再依判斷做 Y」的規則時，判斷它可不可證偽——判定過與沒判定過的產物相同時，規則會沿著零後續的那個結論塌陷">要求執行者做判定的規則，要一併規定判定留下什麼痕跡&lt;/a> — 本卡是它在追問端的形態。那一張規定產物要存在，本卡指定產物的形態：交物件，不交關於物件的判斷。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/auditor-answer-is-under-test-too/" data-link-title="稽核推導完整度時，稽核者自己的答案也是待測物" data-link-desc="拿一道具體題目驗教學集合推不推得出結論、而集合的判斷標準指向另一個落點時，決定該信哪一邊">稽核推導完整度時，稽核者自己的答案也是待測物&lt;/a> — 同族的自我校正，方向相反。那一張把稽核者的答案放進待測物，本卡把回報者的判斷換成可被第三方檢驗的物件；兩者都在削弱「判斷者說了算」這件事。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/fabricated-observation-hides-among-cited-facts/" data-link-title="「我以為觀測到的」躲在「引用的」那一欄裡，因為它看起來有來源" data-link-desc="要為一份報告的宣稱分配查核責任時，用來檢查分類法有沒有把虛構的觀測歸進可查的那一欄">「我以為觀測到的」躲在「引用的」那一欄裡&lt;/a> — 同源而施力點不同。本卡直接要求交出物件；那一張問一個只有握著物件才答得出來的後續問題，於是回頭取物件的動作由回報者自己發起。時機也不同：本卡用在已經起疑的時候，那一張用在還沒起疑、只是想把一件事問清楚的時候——而虛構的觀測通常不觸發起疑。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜&lt;/a> — 那一張給本卡的成因。本卡的「物件」與「關於物件的判斷」就是本體與代理，而那一張解釋了為什麼追問者與回報者都會落在代理那一側：差價小到不像一個決定，且兩條路徑的產物在報告上同形。&lt;/li>
&lt;/ul>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;ul>
&lt;li>回報的關鍵宣稱是一個否定式的可能性判斷（不可能同時、塞不下、達不到、無法兼顧）。&lt;/li>
&lt;li>宣稱附的理由是一串會累加的要求，而沒有實際把它們加起來。&lt;/li>
&lt;li>回報者在更早的輪次量過相關的數字，而本輪的判斷沒有用到它。&lt;/li>
&lt;li>追問用的動詞是「確認」「說明」「檢查」。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<h2 id="論述基礎與限制">論述基礎與限制</h2>
<p>本卡從同一批審查裡的兩次撤回抽出，由併行的另一個工作階段提供。<strong>兩例同一批、同一個要求者、同一個回報者</strong>，所以「換一個回報者是否同樣有效」在證據範圍之外；「不追問時這一類宣稱有多少會倒」也沒有量測。</p>
<h2 id="核心原則">核心原則</h2>
<p><strong>一個關於物件的斷言可以在抽象層完全合理，而它的證偽要靠構造出那個物件。</strong> 「這兩條判斷標準不可同時滿足」是一個判斷；那個同時滿足兩條判斷標準的東西存不存在，要寫出來才知道。</p>
<p><strong>沒有人要求構造時，回報者沒有理由去做。</strong> 他的主張在他自己的推理裡是自洽的，而推翻它要離開抽象層——在抽象層再讀一次只會再確認一次，因為它在那一層本來就自洽。</p>
<p><strong>所以追問的形態決定了那個宣稱會不會被驗證。</strong> 「請確認 X」得到的是同一個判斷再說一次；「請把 X 寫出來、算出來，我要能自己驗證」得到的是物件，而物件會自己說話。</p>
<p><strong>追問的成本落在追問者這一側</strong>——他要先知道那個宣稱需要什麼物件才成立。所以這一條寫不成回報者的自律規則，它住在追問的那一側。</p>
<h2 id="兩個實例">兩個實例</h2>
<p><strong>構造一個宣稱不存在的東西。</strong> 回報主張兩條判斷標準不可同時滿足，理由是一串會累加的要求（觸發詞要窮盡列舉、負面觸發也要寫、還要第三人稱，聽起來確實塞不下）。追問寫的是「請把那個 description 寫出來給我看，我要能自己驗證它確實兩邊都達不到」。它去構造，構造出來兩百零六字元，低於門檻的兩百五十，主張當場不成立。</p>
<p><strong>把已經在手上的數字代進判斷標準。</strong> 另一個回報說某個檔案超標。追問要求算出那份內容的 ASCII 佔比——七成七，據此內插出的門檻是一萬六千九百零八，該檔通過。而<strong>同一個回報者在更早一輪自己量過那個佔比</strong>（八成二），卻仍拿另一組係數判它超標。</p>
<p>兩例的形態一致：<strong>資訊一直在場，缺的是把它代進判斷標準的那一步。</strong> 第二例尤其清楚——那個數字一直在它手上，缺的只是有人要求它把數字放進判斷標準裡走一遍。</p>
<h2 id="修法">修法</h2>
<p><strong>追問的動詞用「寫出來」「算出來」「構造一個」，不用「確認」「說明」「檢查」。</strong> 前一組要求一個新產物，後一組容許把原本的判斷換句話說。</p>
<p><strong>加上「我要能自己驗證」。</strong> 這一句把產物的接收者從回報者換成追問者，於是交出來的東西必須獨立於它的推理而可檢驗。</p>
<p><strong>回報者已經量過的數字，要明確要求代入並印出過程。</strong> 「把你量到的那個值代進這條判斷標準、寫出計算」比「請確認判定正確」多一步，而那一步正是失效的位置。</p>
<p><strong>判別問句：這個宣稱要成立，需要一個什麼樣的物件。</strong> 一個字串、一個數字、一組走得完的步驟——說得出來就去要它；說不出來，那個宣稱可能還沒有可驗證的形式。</p>
<h2 id="跟其他原則的關係">跟其他原則的關係</h2>
<ul>
<li><a href="/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略，要分層得改成要求分類</a> — 最近的姊妹卡，兩者都是<strong>問句的形態決定回報的內容</strong>，受詞不同：那裡問同一批東西怎麼分堆，本卡問交的是判斷還是物件。共用的推論是回報者不會做問句沒要求的工作，而那不是隱瞞。</li>
<li><a href="/blog/report/text-review-cannot-reach-external-truth/" data-link-title="真值住在稿件之外的宣稱，讀多少遍都驗不出來" data-link-desc="審查一批含引擎輸出、錯誤訊息或量測數字的內容時，判斷哪些宣稱該用讀的、哪些只能用跑的">真值住在稿件之外的宣稱，讀多少遍都驗不出來</a> — 相鄰而處置相反。那裡的真值在稿件之外，只能靠執行取得，所以修法是換工具；本卡的物件可以從手上已有的材料構造出來，缺的只是有人要求構造，所以修法是換問句。分辨兩者的問句是：這個物件造得出來嗎。</li>
<li><a href="/blog/report/judgment-rules-must-specify-their-trace/" data-link-title="要求執行者做判定的規則，要一併規定判定留下什麼痕跡" data-link-desc="寫下一條「先判斷 X、再依判斷做 Y」的規則時，判斷它可不可證偽——判定過與沒判定過的產物相同時，規則會沿著零後續的那個結論塌陷">要求執行者做判定的規則，要一併規定判定留下什麼痕跡</a> — 本卡是它在追問端的形態。那一張規定產物要存在，本卡指定產物的形態：交物件，不交關於物件的判斷。</li>
<li><a href="/blog/report/auditor-answer-is-under-test-too/" data-link-title="稽核推導完整度時，稽核者自己的答案也是待測物" data-link-desc="拿一道具體題目驗教學集合推不推得出結論、而集合的判斷標準指向另一個落點時，決定該信哪一邊">稽核推導完整度時，稽核者自己的答案也是待測物</a> — 同族的自我校正，方向相反。那一張把稽核者的答案放進待測物，本卡把回報者的判斷換成可被第三方檢驗的物件；兩者都在削弱「判斷者說了算」這件事。</li>
<li><a href="/blog/report/fabricated-observation-hides-among-cited-facts/" data-link-title="「我以為觀測到的」躲在「引用的」那一欄裡，因為它看起來有來源" data-link-desc="要為一份報告的宣稱分配查核責任時，用來檢查分類法有沒有把虛構的觀測歸進可查的那一欄">「我以為觀測到的」躲在「引用的」那一欄裡</a> — 同源而施力點不同。本卡直接要求交出物件；那一張問一個只有握著物件才答得出來的後續問題，於是回頭取物件的動作由回報者自己發起。時機也不同：本卡用在已經起疑的時候，那一張用在還沒起疑、只是想把一件事問清楚的時候——而虛構的觀測通常不觸發起疑。</li>
<li><a href="/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜</a> — 那一張給本卡的成因。本卡的「物件」與「關於物件的判斷」就是本體與代理，而那一張解釋了為什麼追問者與回報者都會落在代理那一側：差價小到不像一個決定，且兩條路徑的產物在報告上同形。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<ul>
<li>回報的關鍵宣稱是一個否定式的可能性判斷（不可能同時、塞不下、達不到、無法兼顧）。</li>
<li>宣稱附的理由是一串會累加的要求，而沒有實際把它們加起來。</li>
<li>回報者在更早的輪次量過相關的數字，而本輪的判斷沒有用到它。</li>
<li>追問用的動詞是「確認」「說明」「檢查」。</li>
</ul>
]]></content:encoded></item><item><title>「我以為觀測到的」躲在「引用的」那一欄裡，因為它看起來有來源</title><link>https://tarrragon.github.io/blog/report/fabricated-observation-hides-among-cited-facts/</link><pubDate>Fri, 04 Sep 2026 00:00:00 +0800</pubDate><guid>https://tarrragon.github.io/blog/report/fabricated-observation-hides-among-cited-facts/</guid><description>&lt;h2 id="論述基礎與限制">論述基礎與限制&lt;/h2>
&lt;p>本卡從一次撤回抽出，由併行的另一個工作階段提供。單一個案：一個回報者在三則獨立訊息裡引用同一組數據，被問一個方法學問題之後回去查，發現那份輸出從來沒有進過它的脈絡，四項數據全部撤回。&lt;/p>
&lt;p>四欄那一部分的論證&lt;strong>不依賴頻率&lt;/strong>——兩欄的分類法會把虛構的觀測歸進「引用的」，這是分類法的性質而不是統計。偵測方法只跑過一次。&lt;/p>
&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>查核責任的分類法只有「引用的」與「推導的」兩欄時，虛構的觀測會被歸進「引用的」，因為它看起來有來源。&lt;/strong> 而那正是它躲過查核的方式：查核者看到來源就轉去查來源，而那個來源並不存在。&lt;/p>
&lt;p>四欄才窮盡：&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>回原始來源比對&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>我量測的&lt;/td>
 &lt;td>工具輸出在&lt;strong>我自己的&lt;/strong>對話紀錄裡，可原地重跑&lt;/td>
 &lt;td>重跑那條指令&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>我推導的&lt;/td>
 &lt;td>沒有來源，引用前要重算（再分已複核／未複核）&lt;/td>
 &lt;td>重算&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>我以為觀測到的&lt;/td>
 &lt;td>那次呼叫從未發生&lt;/td>
 &lt;td>撤回&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>別人量的，我引用&lt;/td>
 &lt;td>來源真實，而在&lt;strong>別人的&lt;/strong>對話紀錄裡&lt;/td>
 &lt;td>自己跑一次，或標明&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>第二欄的定義就是分界線，而它有兩層&lt;/strong>：在不在對話紀錄裡可以驗（「我記得看過」不能），以及&lt;strong>在誰的&lt;/strong>對話紀錄裡。 這兩者在報告的文字上完全同形——「清單顯示」「輸出顯示」「我量到」讀起來沒有差別。&lt;/p>
&lt;h2 id="兩個子形態來源不存在與來源說的是別的事">兩個子形態：來源不存在，與來源說的是別的事&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>比較項&lt;/th>
 &lt;th>第一個實例&lt;/th>
 &lt;th>第二個實例&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>來源&lt;/td>
 &lt;td>不存在&lt;/td>
 &lt;td>存在，而它說的是別的事&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>為什麼躲得過&lt;/td>
 &lt;td>沒有東西可以查&lt;/td>
 &lt;td>查了會查到東西，而查到就是放行&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>第二個實例的形狀：一份報告舉某兩個項目當某類設定的實例，而被引用的來源是一份清單裡的兩行文字。實查之後那兩個項目屬於另一種檔案類型，那個設定欄位對它們並不適用——&lt;strong>來源真實存在，只是它說的不是這件事&lt;/strong>。&lt;/p>
&lt;p>一句話說完這個缺口：&lt;strong>「有來源可查」這一欄查的是有沒有來源，不查來源說的是不是這件事。&lt;/strong> 第二個子形態因此更難防，因為查證的動作會成功，而成功本身就是放行訊號。&lt;/p>
&lt;h2 id="估算寫成結果下一個人拿到的是錯的收益率">估算寫成結果，下一個人拿到的是錯的收益率&lt;/h2>
&lt;p>第三欄（我推導的）有一個在回報時才發生的失效：一個動作做之前有估算、做完有實測，兩個數字不同時，把估算寫成結果的代價不落在這一次——這一次的數字錯了幾十個 token 無關緊要——而落在下一個人身上，他以為那一類動作的收益是估算值。一次實例：壓縮一段推導估省兩百多 tokens，實測 4,999 → 4,933，省 66。如實寫「估兩百、做出六十六」給下一個人的是一次估算的誤差率；寫「省兩百」給他的是一個會讓他選錯手段的數字。所以第三欄的紀錄要同時留估算與實測，兩者相差越大越要留，因為那個差本身是關於這類動作的資訊。&lt;/p>
&lt;h2 id="一個為真的動作推不出一個為真的現在">一個為真的動作，推不出一個為真的現在&lt;/h2>
&lt;p>第四欄的定義是「那次呼叫從未發生」，而它旁邊有一個更難察覺的形態：&lt;strong>那次呼叫確實發生了，而報告寫的是由它推出的現在的狀態，不是那次呼叫本身。&lt;/strong>&lt;/p>
&lt;p>一次自陳的實例：一個回報者說某個共用庫的發佈端是某個版本，依據是「我推過這支」。推送確實發生過，而推的當下本地是舊版；那之後另外兩張票把本地推進了兩個 minor，沒有人再推一次。「我推過」為真，「發佈端有我最新的」為假，而後者是一句以既成事實的語氣寫出來的版本號。&lt;/p>
&lt;p>它落在第三欄而穿著第二欄的衣服：記憶裡有一個真實的工具輸出，於是整句話讀起來像量測過的。&lt;strong>推導的那一半有一個隱含前提，而前提講的是沒有發生的事&lt;/strong>——這中間沒有別人動過、沒有別的票落地、狀態沒有從別的路徑改變。前提是一個否定命題，所以回顧時想不起來要驗它：想得起來的是做過的事。&lt;/p>
&lt;p>掃描問句與判別問句分開用。掃描的那一句掃全篇：&lt;strong>這句話裡的每一個數字與每一個完成式，是同一個時點的嗎&lt;/strong>——完成式（推過了、改完了、刪掉了）與它旁邊的狀態值分屬兩個時點時，這一段就要進判別。判別問句是一句話：&lt;strong>這句話說的是我做過的一個動作，還是那個動作現在留下的狀態。&lt;/strong> 狀態那一半要查的是狀態所在的那一端（發佈端、遠端、資料庫），自己的紀錄能證明的只有動作發生過。這一項與&lt;a href="https://tarrragon.github.io/blog/report/review-scope-never-includes-the-instrument/" data-link-title="審查的射程只涵蓋被審查的對象，工具與共用產物在射程外" data-link-desc="一輪多 frame 的審查全部通過之後，用來找出從頭到尾沒有任何一個 frame 會碰到的那幾類對象">審查的射程只涵蓋被審查的對象&lt;/a>是同一個缺口的兩面：那裡是沒有人想到要查工具的版本，這裡是查了自己的紀錄而沒有查狀態所在的那一端。&lt;/p>
&lt;h2 id="分類欄位本身就是偵測程序">分類欄位本身就是偵測程序&lt;/h2>
&lt;p>第二個實例是&lt;strong>被這張分類表自己抓出來的&lt;/strong>：回報者在填四欄時逐項問「這一項的來源在不在對話紀錄裡」，走到那一項就發現自己引的是清單裡的兩行文字而不是實際的設定。它的自述是「兩欄分類法下我會把它放進『引用的』，因為清單裡確實有那兩行」。&lt;/p>
&lt;p>所以這張表的用途有兩層，而第二層原本沒被看出來：&lt;strong>它讓下游知道哪些數字該重跑，也讓填表的人在填的當下發現自己引錯了。&lt;/strong> 後者不需要任何人起疑——填欄位這個動作本身就是逐項的追問。&lt;/p>
&lt;p>這與&lt;a href="https://tarrragon.github.io/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">分類是被問句逼出來的&lt;/a>是同一個機制往前推一步：那裡是問句讓報告者分出原本沒有的類，這裡是欄位讓他在分類的過程中撞見一個錯誤的歸類。&lt;/p>
&lt;h2 id="為什麼這個變體比標準形態難察覺">為什麼這個變體比標準形態難察覺&lt;/h2>
&lt;p>虛構結果的標準形態發生在工具呼叫發出之後、真實結果返回之前，用預期的分布把結果填起來。這一次填的是&lt;strong>一份從未被呼叫的工具的結果&lt;/strong>，所以沒有「呼叫與結果之間」那個可疑的時間窗——沒有那次呼叫。&lt;/p>
&lt;p>兩個反向的信用來源讓它更穩固：&lt;/p>
&lt;p>&lt;strong>三次一致。&lt;/strong> 同一組數據在三則獨立訊息裡一致出現，而一致讀起來像穩定。&lt;/p>
&lt;p>&lt;strong>真數據替假數據背書。&lt;/strong> 同一份報告裡的字元數、行數、佔比全部經查為真，於是那一項顯示觀測不會被單獨挑出來懷疑。&lt;/p>
&lt;h2 id="第五類的失效模式與第四類相反">第五類的失效模式與第四類相反&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>比較項&lt;/th>
 &lt;th>我以為觀測到的&lt;/th>
 &lt;th>別人量的，我引用&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>來源&lt;/td>
 &lt;td>不存在&lt;/td>
 &lt;td>真實存在，而且通常是對的&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>被查出的機率&lt;/td>
 &lt;td>一問就穿&lt;/td>
 &lt;td>查了也對，所以沒有人會再查&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>危害&lt;/td>
 &lt;td>數據是假的&lt;/td>
 &lt;td>數據是真的，而&lt;strong>責任鏈斷了&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>第五類的問題落在查核次數上：&lt;strong>它把「別人驗過」記成「我驗過」，於是那個數字在下游被當成過了兩道查核，實際只過了一道。&lt;/strong> 數字本身可以完全正確——一次自陳的實例裡四項數據事後補跑全部相符，而相符是運氣，不是查核。&lt;/p>
&lt;p>&lt;strong>產生它的機制是語氣一鍋端。&lt;/strong> 同一份回報裡有些數字經過獨立重跑、有些沒有，而兩者在對外的文字上語氣完全相同。這與&lt;a href="https://tarrragon.github.io/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略&lt;/a>是同一個機制在另一個受詞上——那裡是零命中的來源被壓成一句，這裡是「驗過」與「讀到」被壓成同一種語氣。&lt;/p>
&lt;p>&lt;strong>放大器：來源方越可靠，第五類越不會被發現。&lt;/strong> 上游的數字幾乎都對時，下游轉述後的「相符」是常態，而常態不產生訊號；上游偶爾出錯，第五類反而會早早被抓到。所以這個缺陷的隱蔽程度與上游的品質&lt;strong>同向&lt;/strong>——協作對象越可信，責任鏈斷得越徹底，而「我們的 reviewer 很可靠」正好是最不該用來放行的理由。&lt;/p>
&lt;p>&lt;strong>推論：外部查核偵測不到第五類。&lt;/strong> 查核者去驗那個數字，數字是對的，於是它通過——而通過本身沒有回答「這是誰驗的」。所以這一類只有兩個入口：&lt;strong>回報者自己標記&lt;/strong>，或&lt;strong>流程強制要求附上自己那一次跑的輸出&lt;/strong>。前者依賴自律，後者是可執行的，所以契約要把它寫成欄位而不是提醒。&lt;/p>
&lt;p>判斷標準因此落在一個問句上：&lt;strong>這個數字我親手跑過嗎&lt;/strong>。它取代的是「來源在哪」——來源可以在，而不在我這裡。&lt;/p>
&lt;h2 id="偵測問一個必須回到原始輸出才答得出來的後續問題">偵測：問一個必須回到原始輸出才答得出來的後續問題&lt;/h2>
&lt;p>有效的動作是問一個&lt;strong>只有握著原始輸出才答得出來的後續問題&lt;/strong>。那一次問的是「這兩個機制你分不分得開」——回報者為了回答就得回去看原始輸出，而一回去看就發現它不存在。&lt;/p>
&lt;p>直接質疑走不到那裡：「你確定嗎」得到的是同一個斷言再說一次，而斷言的第二次與第一次在文字上無法區分。&lt;/p>
&lt;p>這個問法有一個附帶性質：&lt;strong>對方不知道自己正在被驗&lt;/strong>，所以它不會產生防衛式的補強。&lt;/p>
&lt;h2 id="反方向的同一件事現行判斷標準可以改歷史記載不可以">反方向的同一件事：現行判斷標準可以改，歷史記載不可以&lt;/h2>
&lt;p>&lt;strong>看到不一致就想「修正」它，而在歷史記載上那正是偽造。&lt;/strong> 本卡前面處理的是把推論寫成觀測；這一格處理的是把當時的觀測改寫成現在的認知，兩者產出同一種東西——一份宣稱自己是紀錄而內容不是的文件。&lt;/p>
&lt;p>一次收官盤點裡有四項獨立的套用，&lt;strong>每一次都是執行者自己判斷出來的，沒有任何規則提醒&lt;/strong>：不改寫版本歷史條目（改寫會讓歷史條目宣稱它做了它沒做的事）、答案鍵的歷史段保留原句並加時態註記、失效的長引文以特殊標記原樣保留並另立新引文、降級記載一律新增條目且逐字標註「不取代上方任何一項歷輪記載」。&lt;/p>
&lt;p>同一批另有一則邊界清楚的案例：一份作答全篇為簡體，記錄時&lt;strong>保留不轉寫&lt;/strong>——該輪偏離語系設定本身就是一項讀數特徵，轉寫會把證據改掉。&lt;/p>
&lt;p>判別問句是：&lt;strong>這一次編輯，改的是我現在怎麼判斷，還是當時發生了什麼。&lt;/strong> 後者一律用新增，不用覆蓋。這一條與本卡的欄位分類接在一起才完整：欄位讓來源可見，不覆蓋讓來源保持為真。&lt;/p>
&lt;h2 id="跟其他原則的關係">跟其他原則的關係&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/ask-for-the-object-not-the-verdict/" data-link-title="要交出物件，不要交出關於物件的判斷" data-link-desc="一份回報宣稱某件事不可能、超標或不成立時，用來決定該追問什麼才讓那個宣稱可以被驗證">要交出物件，不要交出關於物件的判斷&lt;/a> — 同源而施力點不同。那一張直接要求交出物件；本卡問一個只有握著物件才答得出來的問題，於是回頭取物件的動作由回報者自己發起。用時機也不同：那一張用在已經起疑的時候，本卡用在還沒起疑、只是想把一件事問清楚的時候——而虛構的觀測通常不觸發起疑。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略，要分層得改成要求分類&lt;/a> — &lt;strong>分類法的性質相同，而受詞不同。&lt;/strong> 那一張的第三格「沒查」與本卡的第四欄是同一個設計：類別要窮盡，少一格時落在那一格的東西會被歸進最接近的一格，而最接近的那一格通常是「已經驗過」的那一格。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/broken-scan-reports-a-plausible-number/" data-link-title="掃描指令壞掉時不會報錯，它報一個數字——而那個數字經常是自洽的" data-link-desc="要用一條指令的輸出決定接下來怎麼改一批內容時，用來先確認那條指令量到的是不是你以為的東西">掃描指令壞掉時不會報錯，它報一個數字&lt;/a> — 同族的「回報一個看起來合理的數字」，成因分別是工具失效與工具從未被呼叫。那一張的修法在這裡仍然有效——正對照放進輸出，要求那次呼叫真的發生並留下痕跡。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/verification-reports-claims-but-failures-are-framed/" data-link-title="查證回報的單位是宣稱，而失效的單位可能是整個框架" data-link-desc="事實查核回報某個宣稱查不到來源或與來源牴觸時，用來判斷該改的是那一句話、還是建立在它上面的那一層結構">查證回報的單位是宣稱&lt;/a> — 那一張處理查證回報之後的處置範圍，本卡處理更前面一步：這個宣稱該由誰去查、以及有沒有一整類宣稱從來沒有被分派。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜&lt;/a> — 本卡的第五欄（別人量的、我引用）是那一張在數字來源上的具體化，而本卡的五欄分類是它第二條修法（讓本體與代理的產物長得不一樣）的實作。&lt;/li>
&lt;li>&lt;a href="https://tarrragon.github.io/blog/report/fix-never-landed-and-the-round-signed-off-for-it/" data-link-title="修法沒有寫進檔案，而同一輪的無關改善替它簽了名" data-link-desc="一項處置判定生效結案、兩輪之後同一個位置復發時，用來查那次修法有沒有真的寫進檔案">#345 修法沒有寫進檔案，而同一輪的無關改善替它簽了名&lt;/a>：本卡的機制在修法紀錄上的形態。「我修了」為真而「那個檔案改了」為假，而變更紀錄照修改計畫寫、不照 diff 寫時，這兩者中間沒有任何一處會被查。&lt;/li>
&lt;/ul>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;ul>
&lt;li>報告裡的觀測用「清單顯示」「輸出顯示」這類動詞，而那份輸出沒有出現在對話紀錄裡。&lt;/li>
&lt;li>同一組數據在多則訊息裡一致出現，而它只有一個來源。&lt;/li>
&lt;li>同一份報告裡其他數字經查為真，於是整份報告獲得了信用。&lt;/li>
&lt;li>追問用的是「你確定嗎」。&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<h2 id="論述基礎與限制">論述基礎與限制</h2>
<p>本卡從一次撤回抽出，由併行的另一個工作階段提供。單一個案：一個回報者在三則獨立訊息裡引用同一組數據，被問一個方法學問題之後回去查，發現那份輸出從來沒有進過它的脈絡，四項數據全部撤回。</p>
<p>四欄那一部分的論證<strong>不依賴頻率</strong>——兩欄的分類法會把虛構的觀測歸進「引用的」，這是分類法的性質而不是統計。偵測方法只跑過一次。</p>
<h2 id="核心原則">核心原則</h2>
<p><strong>查核責任的分類法只有「引用的」與「推導的」兩欄時，虛構的觀測會被歸進「引用的」，因為它看起來有來源。</strong> 而那正是它躲過查核的方式：查核者看到來源就轉去查來源，而那個來源並不存在。</p>
<p>四欄才窮盡：</p>
<table>
  <thead>
      <tr>
          <th>欄</th>
          <th>定義</th>
          <th>查核動作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用的</td>
          <td>有外部來源可查</td>
          <td>回原始來源比對</td>
      </tr>
      <tr>
          <td>我量測的</td>
          <td>工具輸出在<strong>我自己的</strong>對話紀錄裡，可原地重跑</td>
          <td>重跑那條指令</td>
      </tr>
      <tr>
          <td>我推導的</td>
          <td>沒有來源，引用前要重算（再分已複核／未複核）</td>
          <td>重算</td>
      </tr>
      <tr>
          <td>我以為觀測到的</td>
          <td>那次呼叫從未發生</td>
          <td>撤回</td>
      </tr>
      <tr>
          <td>別人量的，我引用</td>
          <td>來源真實，而在<strong>別人的</strong>對話紀錄裡</td>
          <td>自己跑一次，或標明</td>
      </tr>
  </tbody>
</table>
<p><strong>第二欄的定義就是分界線，而它有兩層</strong>：在不在對話紀錄裡可以驗（「我記得看過」不能），以及<strong>在誰的</strong>對話紀錄裡。 這兩者在報告的文字上完全同形——「清單顯示」「輸出顯示」「我量到」讀起來沒有差別。</p>
<h2 id="兩個子形態來源不存在與來源說的是別的事">兩個子形態：來源不存在，與來源說的是別的事</h2>
<table>
  <thead>
      <tr>
          <th>比較項</th>
          <th>第一個實例</th>
          <th>第二個實例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>來源</td>
          <td>不存在</td>
          <td>存在，而它說的是別的事</td>
      </tr>
      <tr>
          <td>為什麼躲得過</td>
          <td>沒有東西可以查</td>
          <td>查了會查到東西，而查到就是放行</td>
      </tr>
  </tbody>
</table>
<p>第二個實例的形狀：一份報告舉某兩個項目當某類設定的實例，而被引用的來源是一份清單裡的兩行文字。實查之後那兩個項目屬於另一種檔案類型，那個設定欄位對它們並不適用——<strong>來源真實存在，只是它說的不是這件事</strong>。</p>
<p>一句話說完這個缺口：<strong>「有來源可查」這一欄查的是有沒有來源，不查來源說的是不是這件事。</strong> 第二個子形態因此更難防，因為查證的動作會成功，而成功本身就是放行訊號。</p>
<h2 id="估算寫成結果下一個人拿到的是錯的收益率">估算寫成結果，下一個人拿到的是錯的收益率</h2>
<p>第三欄（我推導的）有一個在回報時才發生的失效：一個動作做之前有估算、做完有實測，兩個數字不同時，把估算寫成結果的代價不落在這一次——這一次的數字錯了幾十個 token 無關緊要——而落在下一個人身上，他以為那一類動作的收益是估算值。一次實例：壓縮一段推導估省兩百多 tokens，實測 4,999 → 4,933，省 66。如實寫「估兩百、做出六十六」給下一個人的是一次估算的誤差率；寫「省兩百」給他的是一個會讓他選錯手段的數字。所以第三欄的紀錄要同時留估算與實測，兩者相差越大越要留，因為那個差本身是關於這類動作的資訊。</p>
<h2 id="一個為真的動作推不出一個為真的現在">一個為真的動作，推不出一個為真的現在</h2>
<p>第四欄的定義是「那次呼叫從未發生」，而它旁邊有一個更難察覺的形態：<strong>那次呼叫確實發生了，而報告寫的是由它推出的現在的狀態，不是那次呼叫本身。</strong></p>
<p>一次自陳的實例：一個回報者說某個共用庫的發佈端是某個版本，依據是「我推過這支」。推送確實發生過，而推的當下本地是舊版；那之後另外兩張票把本地推進了兩個 minor，沒有人再推一次。「我推過」為真，「發佈端有我最新的」為假，而後者是一句以既成事實的語氣寫出來的版本號。</p>
<p>它落在第三欄而穿著第二欄的衣服：記憶裡有一個真實的工具輸出，於是整句話讀起來像量測過的。<strong>推導的那一半有一個隱含前提，而前提講的是沒有發生的事</strong>——這中間沒有別人動過、沒有別的票落地、狀態沒有從別的路徑改變。前提是一個否定命題，所以回顧時想不起來要驗它：想得起來的是做過的事。</p>
<p>掃描問句與判別問句分開用。掃描的那一句掃全篇：<strong>這句話裡的每一個數字與每一個完成式，是同一個時點的嗎</strong>——完成式（推過了、改完了、刪掉了）與它旁邊的狀態值分屬兩個時點時，這一段就要進判別。判別問句是一句話：<strong>這句話說的是我做過的一個動作，還是那個動作現在留下的狀態。</strong> 狀態那一半要查的是狀態所在的那一端（發佈端、遠端、資料庫），自己的紀錄能證明的只有動作發生過。這一項與<a href="/blog/report/review-scope-never-includes-the-instrument/" data-link-title="審查的射程只涵蓋被審查的對象，工具與共用產物在射程外" data-link-desc="一輪多 frame 的審查全部通過之後，用來找出從頭到尾沒有任何一個 frame 會碰到的那幾類對象">審查的射程只涵蓋被審查的對象</a>是同一個缺口的兩面：那裡是沒有人想到要查工具的版本，這裡是查了自己的紀錄而沒有查狀態所在的那一端。</p>
<h2 id="分類欄位本身就是偵測程序">分類欄位本身就是偵測程序</h2>
<p>第二個實例是<strong>被這張分類表自己抓出來的</strong>：回報者在填四欄時逐項問「這一項的來源在不在對話紀錄裡」，走到那一項就發現自己引的是清單裡的兩行文字而不是實際的設定。它的自述是「兩欄分類法下我會把它放進『引用的』，因為清單裡確實有那兩行」。</p>
<p>所以這張表的用途有兩層，而第二層原本沒被看出來：<strong>它讓下游知道哪些數字該重跑，也讓填表的人在填的當下發現自己引錯了。</strong> 後者不需要任何人起疑——填欄位這個動作本身就是逐項的追問。</p>
<p>這與<a href="/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">分類是被問句逼出來的</a>是同一個機制往前推一步：那裡是問句讓報告者分出原本沒有的類，這裡是欄位讓他在分類的過程中撞見一個錯誤的歸類。</p>
<h2 id="為什麼這個變體比標準形態難察覺">為什麼這個變體比標準形態難察覺</h2>
<p>虛構結果的標準形態發生在工具呼叫發出之後、真實結果返回之前，用預期的分布把結果填起來。這一次填的是<strong>一份從未被呼叫的工具的結果</strong>，所以沒有「呼叫與結果之間」那個可疑的時間窗——沒有那次呼叫。</p>
<p>兩個反向的信用來源讓它更穩固：</p>
<p><strong>三次一致。</strong> 同一組數據在三則獨立訊息裡一致出現，而一致讀起來像穩定。</p>
<p><strong>真數據替假數據背書。</strong> 同一份報告裡的字元數、行數、佔比全部經查為真，於是那一項顯示觀測不會被單獨挑出來懷疑。</p>
<h2 id="第五類的失效模式與第四類相反">第五類的失效模式與第四類相反</h2>
<table>
  <thead>
      <tr>
          <th>比較項</th>
          <th>我以為觀測到的</th>
          <th>別人量的，我引用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>來源</td>
          <td>不存在</td>
          <td>真實存在，而且通常是對的</td>
      </tr>
      <tr>
          <td>被查出的機率</td>
          <td>一問就穿</td>
          <td>查了也對，所以沒有人會再查</td>
      </tr>
      <tr>
          <td>危害</td>
          <td>數據是假的</td>
          <td>數據是真的，而<strong>責任鏈斷了</strong></td>
      </tr>
  </tbody>
</table>
<p>第五類的問題落在查核次數上：<strong>它把「別人驗過」記成「我驗過」，於是那個數字在下游被當成過了兩道查核，實際只過了一道。</strong> 數字本身可以完全正確——一次自陳的實例裡四項數據事後補跑全部相符，而相符是運氣，不是查核。</p>
<p><strong>產生它的機制是語氣一鍋端。</strong> 同一份回報裡有些數字經過獨立重跑、有些沒有，而兩者在對外的文字上語氣完全相同。這與<a href="/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略</a>是同一個機制在另一個受詞上——那裡是零命中的來源被壓成一句，這裡是「驗過」與「讀到」被壓成同一種語氣。</p>
<p><strong>放大器：來源方越可靠，第五類越不會被發現。</strong> 上游的數字幾乎都對時，下游轉述後的「相符」是常態，而常態不產生訊號；上游偶爾出錯，第五類反而會早早被抓到。所以這個缺陷的隱蔽程度與上游的品質<strong>同向</strong>——協作對象越可信，責任鏈斷得越徹底，而「我們的 reviewer 很可靠」正好是最不該用來放行的理由。</p>
<p><strong>推論：外部查核偵測不到第五類。</strong> 查核者去驗那個數字，數字是對的，於是它通過——而通過本身沒有回答「這是誰驗的」。所以這一類只有兩個入口：<strong>回報者自己標記</strong>，或<strong>流程強制要求附上自己那一次跑的輸出</strong>。前者依賴自律，後者是可執行的，所以契約要把它寫成欄位而不是提醒。</p>
<p>判斷標準因此落在一個問句上：<strong>這個數字我親手跑過嗎</strong>。它取代的是「來源在哪」——來源可以在，而不在我這裡。</p>
<h2 id="偵測問一個必須回到原始輸出才答得出來的後續問題">偵測：問一個必須回到原始輸出才答得出來的後續問題</h2>
<p>有效的動作是問一個<strong>只有握著原始輸出才答得出來的後續問題</strong>。那一次問的是「這兩個機制你分不分得開」——回報者為了回答就得回去看原始輸出，而一回去看就發現它不存在。</p>
<p>直接質疑走不到那裡：「你確定嗎」得到的是同一個斷言再說一次，而斷言的第二次與第一次在文字上無法區分。</p>
<p>這個問法有一個附帶性質：<strong>對方不知道自己正在被驗</strong>，所以它不會產生防衛式的補強。</p>
<h2 id="反方向的同一件事現行判斷標準可以改歷史記載不可以">反方向的同一件事：現行判斷標準可以改，歷史記載不可以</h2>
<p><strong>看到不一致就想「修正」它，而在歷史記載上那正是偽造。</strong> 本卡前面處理的是把推論寫成觀測；這一格處理的是把當時的觀測改寫成現在的認知，兩者產出同一種東西——一份宣稱自己是紀錄而內容不是的文件。</p>
<p>一次收官盤點裡有四項獨立的套用，<strong>每一次都是執行者自己判斷出來的，沒有任何規則提醒</strong>：不改寫版本歷史條目（改寫會讓歷史條目宣稱它做了它沒做的事）、答案鍵的歷史段保留原句並加時態註記、失效的長引文以特殊標記原樣保留並另立新引文、降級記載一律新增條目且逐字標註「不取代上方任何一項歷輪記載」。</p>
<p>同一批另有一則邊界清楚的案例：一份作答全篇為簡體，記錄時<strong>保留不轉寫</strong>——該輪偏離語系設定本身就是一項讀數特徵，轉寫會把證據改掉。</p>
<p>判別問句是：<strong>這一次編輯，改的是我現在怎麼判斷，還是當時發生了什麼。</strong> 後者一律用新增，不用覆蓋。這一條與本卡的欄位分類接在一起才完整：欄位讓來源可見，不覆蓋讓來源保持為真。</p>
<h2 id="跟其他原則的關係">跟其他原則的關係</h2>
<ul>
<li><a href="/blog/report/ask-for-the-object-not-the-verdict/" data-link-title="要交出物件，不要交出關於物件的判斷" data-link-desc="一份回報宣稱某件事不可能、超標或不成立時，用來決定該追問什麼才讓那個宣稱可以被驗證">要交出物件，不要交出關於物件的判斷</a> — 同源而施力點不同。那一張直接要求交出物件；本卡問一個只有握著物件才答得出來的問題，於是回頭取物件的動作由回報者自己發起。用時機也不同：那一張用在已經起疑的時候，本卡用在還沒起疑、只是想把一件事問清楚的時候——而虛構的觀測通常不觸發起疑。</li>
<li><a href="/blog/report/disclosure-yields-one-bucket-classification-yields-layers/" data-link-title="要求揭露只擋得住省略，要分層得改成要求分類" data-link-desc="一份契約要求執行者揭露某個彙總狀態（零命中、已檢查、無發現）時，用來判斷那份回報會不會把證據力不同的東西寫成同一句">要求揭露只擋得住省略，要分層得改成要求分類</a> — <strong>分類法的性質相同，而受詞不同。</strong> 那一張的第三格「沒查」與本卡的第四欄是同一個設計：類別要窮盡，少一格時落在那一格的東西會被歸進最接近的一格，而最接近的那一格通常是「已經驗過」的那一格。</li>
<li><a href="/blog/report/broken-scan-reports-a-plausible-number/" data-link-title="掃描指令壞掉時不會報錯，它報一個數字——而那個數字經常是自洽的" data-link-desc="要用一條指令的輸出決定接下來怎麼改一批內容時，用來先確認那條指令量到的是不是你以為的東西">掃描指令壞掉時不會報錯，它報一個數字</a> — 同族的「回報一個看起來合理的數字」，成因分別是工具失效與工具從未被呼叫。那一張的修法在這裡仍然有效——正對照放進輸出，要求那次呼叫真的發生並留下痕跡。</li>
<li><a href="/blog/report/verification-reports-claims-but-failures-are-framed/" data-link-title="查證回報的單位是宣稱，而失效的單位可能是整個框架" data-link-desc="事實查核回報某個宣稱查不到來源或與來源牴觸時，用來判斷該改的是那一句話、還是建立在它上面的那一層結構">查證回報的單位是宣稱</a> — 那一張處理查證回報之後的處置範圍，本卡處理更前面一步：這個宣稱該由誰去查、以及有沒有一整類宣稱從來沒有被分派。</li>
<li><a href="/blog/report/proxy-is-cheaper-than-the-thing-it-stands-for/" data-link-title="代理比本體便宜，所以成本壓力最高的階段一定伸手拿代理" data-link-desc="收尾階段反覆出現表面不同的失效、而「下次更仔細」沒有改善時，用來判斷那些失效有沒有共同的成本結構">代理比本體便宜</a> — 本卡的第五欄（別人量的、我引用）是那一張在數字來源上的具體化，而本卡的五欄分類是它第二條修法（讓本體與代理的產物長得不一樣）的實作。</li>
<li><a href="/blog/report/fix-never-landed-and-the-round-signed-off-for-it/" data-link-title="修法沒有寫進檔案，而同一輪的無關改善替它簽了名" data-link-desc="一項處置判定生效結案、兩輪之後同一個位置復發時，用來查那次修法有沒有真的寫進檔案">#345 修法沒有寫進檔案，而同一輪的無關改善替它簽了名</a>：本卡的機制在修法紀錄上的形態。「我修了」為真而「那個檔案改了」為假，而變更紀錄照修改計畫寫、不照 diff 寫時，這兩者中間沒有任何一處會被查。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<ul>
<li>報告裡的觀測用「清單顯示」「輸出顯示」這類動詞，而那份輸出沒有出現在對話紀錄裡。</li>
<li>同一組數據在多則訊息裡一致出現，而它只有一個來源。</li>
<li>同一份報告裡其他數字經查為真，於是整份報告獲得了信用。</li>
<li>追問用的是「你確定嗎」。</li>
</ul>
]]></content:encoded></item></channel></rss>