知識卡的缺 / 孤 / 錯住在卡↔文章的關係裡:要從消費側 audit
論述基礎與限制
本卡基於一次多輪審查 Round 3 的三個卡片發現:兩張缺卡(資料重力、動靜分離)與一張分類矛盾(CDP 卡把 CDP 分類成垂直 SaaS、後來的賽道文章證明它是跨行業的單一功能層)。三者都不是建卡當下的術語掃描抓到的、是 outbound 反向連結輪抓到的。根因:缺卡的需求方是別的文章(資料重力被賽道文章用、動靜分離被入口層文章用,都不在最初建卡的財務卡批次視野內)、分類錯的暴露方也是別的文章(CDP 卡寫於前、賽道文章後來做了嚴謹 treatment 才照出矛盾)。限制:case 來自知識卡系統,但原則適用任何「原子節點 + 引用它的內容」的知識結構。
核心原則
知識卡的缺、孤、錯三種問題住在卡↔文章的關係裡,不住在卡本身、也不住在單一篇正在寫的文章裡——所以要靠一輪從使用文章反向驗證的消費側 audit 才看得見。 三種關係缺陷:
- 缺卡:一篇文章用了某概念、卻沒有對應卡(需求方是文章、供給端缺)
- 孤兒:一張卡沒有任何文章消費它(供給在、需求缺——先反過來問「是不是少了一篇該用它的文章」,刪卡是最後手段)
- 矛盾 / 過時:一張卡對某概念的處理跟後來嚴謹 treatment 它的文章不一致(供給端的內容錯了)
三者的共同性質是它們都是圖上邊的缺陷、不是節點的缺陷。單卡的 well-formedness 檢查(四段結構、鄰卡連結、frontmatter)看的是節點,看不到邊;建卡當下對「正在寫的這篇文章」跑術語掃描,只覆蓋這一篇當需求方的那些邊,覆蓋不到別的文章當需求方的邊。
理想做法
在建卡當下的檢查(供給側 well-formedness + 單篇需求側術語掃描)之外,加一輪消費側 audit:對有卡的概念反向查「哪些文章用到它、有沒有文章用了卻沒連、有沒有文章的 treatment 跟卡矛盾」。這一輪的自然觸發點是寫或改一篇會用到既有概念的文章——寫這篇文章就是重新驗證該概念卡的時機:一驗概念有沒有卡(缺),二驗既有卡的內容跟本文的 treatment 一不一致(錯)。多輪審查的 outbound frame(反向引用 / 缺卡)就是這一輪的制度化位置;缺這一輪,缺卡與矛盾要等到很後面、甚至不會被發現。
沒這樣做的麻煩
- 缺卡漏抓:需求方文章裸用概念,讀者落在該文章得離站查詢(背離「常識相對於讀者背景」的建卡判準)。
- 孤兒誤刪:發現孤兒卡直接刪,會刪掉「其實是少了一篇該消費它的文章」這個訊號。
- 矛盾繼承:卡是概念索引、被當權威錨,錯的分類會被引用它的文章繼承——CDP 卡的「垂直 SaaS」若沒被抓,賽道文章連過去就繼承一個跟自己分析牴觸的定義。
跟其他抽象層原則的關係
| 原則 | 關係 |
|---|---|
| #232 自審 sweep 的偵測方法要對齊規則類型 | 同一家族 — #232 是偵測方法(grep)決定看得見哪些規則、本卡是 audit 視角(卡側 vs 文章側)決定看得見哪些缺陷;共同結構是「audit 的立足點限制它的可見範圍」 |
| #221 檢查規則的作用域要顯式列舉 | 卡側檢查全過不代表關係健康——跟「零 error 可能是沒被檢查」同一種假通過,只是這裡漏的是邊、不是節點 |
| #81 卡片系統的迭代浮現 | #81 說卡是活系統會迭代,本卡點明它活在關係圖裡、迭代的觸發來自消費側文章而非卡自己 |
| #198 常識是相對於讀者背景的 | #198 給缺卡的判準(最不熟讀者能不能懂、需求側判準),本卡給這個判準的發現機制:反向查使用文章、才知道哪個概念被誰當需求 |
判讀徵兆
| 訊號 | 該做的事 |
|---|---|
| 建卡當下只掃「正在寫的這篇」的術語、沒有反向查其他文章 | 加一輪消費側 audit——別的文章需求的缺卡、既有卡的矛盾都在那裡 |
| 一張卡的分類 / 定義寫於某篇嚴謹 treatment 它的文章之前 | 寫那篇文章時把這張卡重新 audit 一次、對齊文章的 treatment |
| 發現孤兒卡、第一反應是刪 | 先反向問「是不是少了一篇該消費它的文章」、刪是最後手段 |
| 缺卡在建卡批次的 audit 全過、卻在整合 / outbound 輪冒出 | 缺的是消費側 audit 這一輪、不是建卡當下更用力掃 |