"SSoT"
- URL slug 必須顯式定義為 fact:跨工具 identifier 用單一定義源
URL slug 在 Hugo 預設下從 title 自動推導、在 mdtools lint 下從檔名讀、在跨檔連結時又要寫第三個值 — 一個 identifier 散落在三個推導鏈、典型 SSoT 違反。當多個工具共用一個 identifier、推導不一致 = silent broken link。修法:把 slug 從 derivation(runtime 推導)升級成 fact(frontmatter 顯式定義)、檔名 / 連結都基於這個 fact。本卡是 #44 在 toolchain integration 情境的具體實例、是 #82 字面 vs 行為在 identifier 維度的展現。
- 引用章節用語意標題、不用位置編號:編號是結構排列的 derivation、會隨版本漂移
跨段落、跨檔引用結構單位(章節 / 階段 / 條列項)時、引用語意標題(副標題)、不引用位置編號(Stage 3、第 5 章、第 3 點)。編號是「目前結構排列」的 derivation、不是 fact;結構重排時編號全部位移、引用點不會報錯、而是 silent 指向錯的內容 — 比 broken link 更難偵測。標題的存在意義就是承載可被引用的語意。是 #44 SSoT 在結構引用維度的實例、#93 identifier-as-fact 家族的 sibling、#84 命名承載語意的引用面延伸。
- 集合命名用角色、不內嵌數量:「核心七問」的七是成員數的 derivation、加一問就全面失真
「核心七問」「成長六階段」「四大支柱」這類名稱把成員數量烤進名字裡 — 數量是集合當前成員的 derivation、不是集合的語意身分;成員增減時名稱失真、且名稱是被複製最多次的字串、缺陷隨每次引用繁殖。修法:命名只承載角色與層級(核心問題 / 次要問題 / 撞牆階段)、數量讓清單自己呈現。本卡是 #155 的命名端 sibling(#155 修引用端、本卡讓「語意標題是穩定錨」的前提真正成立)、#44 SSoT 在名稱內容的實例、#84 命名檢驗的數量維度。
- 語意錨用單一字串、同義雙名讓引用修復退回人腦對應
引用錨在語意標題之後、語意名稱本身要是單一字串。同一個結構單位有兩個同義名稱(標題寫「決策記錄 + scaffold 建議」、引用寫「決策收斂階段」)時、語意引用的兩個核心收益同時失效:grep 要掃兩套 pattern 才完整(漏配置一個就漏一半引用點)、重排時的引用修復回到人腦對應。是 #155 引用端、#156 命名端之後的第三塊:命名唯一性。
- 跨 surface 同主題內容要重新語境化、不是搬運:逐字相同句是未語境化的訊號
同一個原則要同時存在於兩個 surface(教材章節與 agent 協議、blog 卡與 skill 卡)時、規範說「各寫一份、語境化在各 surface 內」— 語境化的可操作判準是:句子要跟著該 surface 的讀者與用途改寫、兩邊逐字相同的句子是未語境化的候選訊號、命中後逐處判讀。逐字搬運讓兩份內容形成沒人宣告的隱性同源、改一邊另一邊 silent 漂移、且兩邊都沒有為自己的讀者最佳化。