--- name: sdd-check description: | 動手前把這件事的來歷讀齊——要寫 code、開新功能、 或不確定「這件事當初為什麼長這樣」時自動載入。 🔴 Active SDD 已於 2026-08-16 取消(inkstone/InkStoneCo#40): **任務本體在 Gitea 票,不在 SDD**;SDD 只記「起初的樣子」, 沒有 status、沒有唯一活性、也不再養任務 checkbox。 ⇒ 找不到 SDD 不是停下來的理由,找不到票才是;也不要為了動手而現編一份 SDD。 規格層變更改開 Gitea 票(Human+指派 Leo)後停止等 confirm——pending-changes.md 已於 2026-08-19 廢除,禁止寫入。 --- # /sdd-check — 動手前把這件事的來歷讀齊 ## 先講清楚它現在是什麼 leo 2026-08-16(`inkstone/InkStoneCo#40` → comment 2942): > 「**取消 Active SDD**⋯⋯所有文件中都不帶有任務 checkbox,因為移動到 Gitea 來管理, > SDD 會脫節,它所做的是記錄起初的樣子⋯⋯實際情況靠 issues, PR, release 等機制來管理。」 所以三件事分家(`docs/governance/sdd-gitea-governance.md` §0 公理 1): ``` 意圖真相 → SDD(docs/3-specs/) 未來式:當初打算怎麼做 狀態真相 → Gitea 票/PR/release 現在式:現在做到哪、誰在做 知識真相 → wiki 過去式:撞過什麼、學到什麼 ``` 🔴 **這支命令已經不是一道閘了。** 舊版靠 `sdd-guard.sh` 在動 code 前強制要有 「恰好一份 status: active 的 SDD」,那支閘於 `inkstone/ISEP#91` 退役—— 它是 fail-closed 的,裁決一執行(active SDD 歸零)就會鎖死所有 code 寫入。 --- ## 執行流程 ### 第一步:這件事的**票**是哪一張 **這一步不能跳,也是唯一會讓你停下來的一步。** - 有票號 → 讀它(含整串留言:裁決、假設、前手交回的下一步都在那裡) - 沒票號 → **先問清楚是哪一張,或先把票開出來**,不要憑一句話開工 (`commands/issue-handle.md`:Issue 是唯一任務介面) ### 第二步:這件事的**來歷**在哪份 SDD 在 `system-dev/docs/3-specs/` 下找對應子系統的 `design.md`。 - 找到 → 讀它,弄清楚「當初為什麼這樣設計、有哪些邊界不能動」 - **找不到 → 照樣可以動手**。票才是任務本體; 沒有 SDD 只代表這塊當初沒有寫下設計,不代表這件事沒被批准 🔴 **不要為了動手而現編一份 SDD**,也不要去改任何 `status:` frontmatter—— 那是已經取消的制度的殘留物。 🔴 **不要把任務 checkbox 寫進 SDD**。要追蹤進度就開票/改票的狀態標籤; 寫進文件裡的 checkbox 沒有人會回來關掉它(`inkstone/InkStoneCo#49` 清的就是這一批:378 條沒人維護的 checkbox)。 ### 第三步:把讀到的東西講出來再動手 回覆開頭一行交代即可: ``` 📌 票: —— <一句話它要解什麼> 📋 來歷: 🚧 邊界:<這次不准動的東西> ``` --- ## 什麼時候該停下來問 只有這幾種,**都跟 SDD 在不在無關**: - 找不到對應的票,也問不出是哪一張 - 票上的要求跟現行規範互相衝突(貼出兩邊出處,給出你的推測,再問) - 命中四題公式:花錢/不可逆/跨專案結構/品味方向 其餘情況做出最合理的假設、把假設寫進 commit message 或票的留言,繼續走。