判斷標準指對了路,而它給的理由在這個個案上不成立
論述基礎與限制
本卡從一次以具體個案稽核教學分類的推導完整度抽出,事件在 2026-09-01。被稽核的是一個語法分類,當時十一篇文章加十四張卡;稽核方式是拿一道公開題目、把答案拆成十個步驟、逐步回分類裡找落點。其中一步的判斷標準被實測推翻了它自己給的理由。
限制有三項。單一個案:一個分類、一條判斷標準、一次量測,通則性沒有對照組。理由失效的形態只觀察到一種(量詞式的理由缺前提),別的形態存不存在沒有查過。發現它靠的是量測而非閱讀,所以在無法量測的領域裡本卡的修法要換一個驗證手段,而換成什麼沒有試過。
核心原則
一條判斷標準有兩個可以獨立失效的部分:它把讀者送到哪裡(路由),與它說為什麼該去那裡(理由)。路由錯了讀者會撞牆,所以既有的檢查都盯著它;理由錯了讀者照樣抵達,於是沒有任何一步會停下來。
理由失效的代價是延後的。 讀者這一次拿到正確的做法,同時帶走一個沒有附條件的因果句。他把那句話用在下一個個案上——那正是判斷標準存在的目的,讓人在新情境裡自己判斷——而在那裡它是錯的。判斷標準的價值恰恰落在它可遷移的那一半,而失效的也是那一半。
本次觀察到的形態是量詞式的理由:「省一次」「少一輪」「比較快」(別的形態存不存在沒有查過,見上一段的限制)。這種句子讀起來像機制,而它是一個在某些條件下才成立的量測結果,而那個條件通常沒有寫。
實例:省下的量在這個個案上是零
一個語法分類的某篇寫著:只判斷「有沒有另一列符合條件」而不輸出它,用半連接的寫法比自連接省一次配對展開。
拿一道題走這條判斷標準:題目只要輸出符合條件的那一列的編號,不輸出被比較的那一列。路由正確——按判斷標準推薦的寫法走,語意貼合題意,讀起來也比自連接清楚。
而那一題的連接鍵在對面那張表裡唯一,一列只配得到一列。沒有展開可省。 兩種寫法實測回同樣的 2724 列,時間 9 毫秒對 7 毫秒(SQLite 3.51,各跑三次取最小),落在雜訊裡。
判斷標準指的路是對的,它給的理由在這一題上是零。讀者帶走的是「這樣寫省一次展開」,而下一次他要在代價上做取捨時,這句話會讓他以為兩者有量級差。
修法是把缺席的條件寫進理由:省下的量由配對會不會膨脹決定,鍵唯一時兩種寫法的列數相同、省下的是零,那時選擇回到讀起來哪一個貼合意圖。同一段順帶交代唯一性由約束回答而非由現有資料回答。
為什麼既有的檢查全部放行
個案實跑問的是走不走得到判定,而這裡走得到。#297 判斷標準只收表徵 的九個個案裡,停頓點分成走不通、判定錯、輸出錯三類,本卡這一種在那個分類法裡不產生停頓點——它一路走到底並交出正確的結果。
重算測試問的是讀者帶自己的參數能否判斷出自己落在哪個條件與它的後果(#220),而這裡判斷得出。判斷標準本身已經到達條件層:條件明確、各條件的後果明確。
機制審查會通過,因為理由本身正確——半連接確實省一次配對展開,這是關聯代數層面的事實。缺的是它的適用條件,而條件缺席與陳述錯誤在字面上分不出來。
作者看不見它,因為他寫下那句理由時心裡有一個例子。 那個例子裡鍵不唯一、展開確實發生、省下的量確實可觀。他把觀察寫成了通則,而觀察的條件留在他腦子裡。
修法
每一句理由單獨問一次「這句話在什麼條件下成立」。 答得出「無條件」的留著,答出任何條件的把條件寫進去。這一步不需要個案,成本是逐句讀一遍判斷標準的理由部分。
個案實跑走到判定之後多問一步。 既有的收工條件是「讀者得出了判定」,改成「讀者得出了判定,而且判斷標準給的理由在這個個案上成立」。這一步常常需要一次量測——本卡的實例就是靠量測才發現差距落在雜訊裡。
理由的驗證方式是找一個路由相同而理由不成立的個案。 這與路由的驗證方向相反:路由要找走不到的個案,理由要找走得到而理由落空的個案。兩種個案的設計條件不同,同一批個案通常只驗得到其中一種。
量詞式的理由優先驗,而優先序由一次計數決定。 先把判斷標準裡帶量詞或比較的句子掃出來數一遍(「省一次」「少一輪」「快一個量級」這類),數量決定逐句驗划不划算;數出來很多的時候,先驗承重的那幾條——判斷標準的結論直接建在它上面的那些。這一段本身曾經是本卡的反例:初稿寫「這類句子密度不高、成本可控」,那正是一句沒有附條件的量詞式理由。
上面四條的最省力遵循路徑都停在不必改任何東西的地方——「每一句都無條件」「這個個案上理由成立」「找不到路由相同而理由落空的個案」「數出來太多、逐句驗不划算」。認真跑過與完全沒跑,在產物裡因此長得一樣。四條各要留一件看得見的東西:逐句問過的留下附上條件的那些句子,連同判定為無條件的那幾句一起;多問的那一步留下量測的數字,或者「這個領域量不了」的理由;找反例留下找過哪幾個個案與它們各自為什麼不算;判定不划算的留下數出來的那個數。留在哪裡由使用它的流程決定,而寫在對話裡不算——那個位置事後查不到。
跟其他原則的關係
- #297 判斷標準只收表徵,把產生表徵的那個條件從輸入端折疊掉 是最近的鄰居,而兩者失效的位置相反:那裡讀者走不到底,這裡走得到底。後果是 #297 開的那張藥方(拿具體個案走一遍)對本卡全盲——個案跑完全綠,而理由仍然是錯的。兩張卡合起來才是完整的個案實跑:走得通嗎,以及走通的理由對嗎。
- #220 判斷標準要寫到條件層 的三層成熟度量的是路由——口訣、維度清單、條件層,三層都在問「讀者能否判斷出自己落在哪個條件」。本卡是它的正交維度:一條到達第三層的判斷標準,理由仍然可以缺條件。所以重算測試通過不等於判斷標準完整。
- #258 軸是對的而底下有未言明的實作前提 講的是判斷標準底下藏了一個沒被寫成選擇的假設,本卡是同一個家族的另一個位置:那裡假設藏在軸底下,這裡藏在理由底下。藏在軸底下的會讓分類錯,藏在理由底下的不影響這一次的分類,只影響下一次。
- #257 軸名取了次好的代理變數 的形態是「真正做功的那句話留在括號或下一句的理由裡」。本卡處理的是那句理由被寫出來之後的下一個問題——寫出來了,而它缺一個前提。
判讀徵兆
判斷標準的理由句帶一個量詞或比較(「省一次」「少一輪」「比較快」「差一個量級」),而句子裡沒有出現任何條件。
照判斷標準推薦的做法跑一次量測,差距接近零或落在雜訊裡。
問作者「為什麼是這個做法」,他的口頭回答比判斷標準原文多了一個條件。
同一條判斷標準在兩個個案上推薦同一個做法,而兩次的收益差一個量級。
判斷標準寫於某個具體案例之後,而那個案例的參數沒有被寫進判斷標準。
#319 判斷標準少一條獨立的軸時,它不會停下來,它會篤定地指向錯的答案 是同一個軸的另一端:本卡是路由對而理由錯,代價延後到讀者把那句因果帶去下一個個案;那裡是理由對而路由錯,代價落在這個個案上。共同前提是判斷標準的正確性有兩個獨立的部分,而個案實跑一次只驗得到其中一個。