diff --git a/docs/governance/sdd-gitea-governance.md b/docs/governance/sdd-gitea-governance.md index 3491f22..12ad0f6 100644 --- a/docs/governance/sdd-gitea-governance.md +++ b/docs/governance/sdd-gitea-governance.md @@ -1,7 +1,7 @@ # SDD × Gitea 治理規範 ``` -version: 0.7.0 +version: 0.8.0 status: 現行(本檔的修改依 §9 走 issue) scope: 所有安裝 ISEP 的環境(本機 CC 與雲端 CC) distribution: 隨 ISEP 發佈,ISEP repo 是唯一編輯點(§11) @@ -9,6 +9,8 @@ lineage: v0.5.0 draft by claude.ai(存檔 _draft-claude-ai-v0.5.0.md) → v0.6.0 由總管對照現場實況修訂,逐條分歧見 DIVERGENCE-v0.5.0-to-v0.6.0.md → v0.7.0 併入全局遍歷(14 repo/156 open/45 張管理票分六群,§13)與新舊票 mapping(§14); 依 leo 指正:規劃不另立文件,修正本檔就是新版 + → v0.8.0 三源整合定案(§15):claude.ai 兩份規劃 × 舊票需求 × 既有機制, + 逐領域對照、三處矛盾解法、動工順序——leo 2026-08-20 核准 ``` --- @@ -123,21 +125,12 @@ s/triage ──驗傷通過──▶ s/backlog ──排進 milestone──▶ s - **M4.1** 命名 `vX.Y`,必設 due date。 - **M4.2** Deliverable = **一個可測的新版本號**。所有掛入 leaf 關閉後,可從預設分支打出通過驗收的版本。 -- **M4.3** **Timebox 到期不自動關、不自動打 tag。** 到期強制做一次降 scope 對帳(未完成 leaf 搬下一 milestone)並通知 leo。 - 🔴 自動打 tag 會製造假交付——tag 永遠只在「驗過了」之後發生。 +- **M4.3** **Timebox 到期:不自動關、不自動打 tag、也不把票移出。** 到期只做一件事:通知 leo。 + 🔴 **里程碑的內容一經確定就不增不減**(leo 2026-08-20:「milestone 確定後怎麼可以再把東西移除? + 定下工作自己刪掉是什麼意思?根本就沒有什麼降」)。增減都是 leo 的裁決,不是總管的操作。 + 自動打 tag 會製造假交付——tag 永遠只在「驗過了」之後發生。 - **M4.4** Milestone 關閉 = release tag,一對一。「已交付」唯一合法形式是 **tag 存在且裝得起來**;打 tag 前置 open issues = 0(§8 E12)。 - **M4.5** Description 只寫版本目標一句 + tracking 連結。討論回 tracking issue。 -- **M4.7(降 scope 必須留痕)** 🔴 **把票移出里程碑,必須同時寫進該里程碑的 description。** - 格式:原本幾張、移走哪幾張、為什麼、移去哪裡。 - - **禁的不是降 scope**——卡人閘時降 scope 就是 M4.3 要的。禁的是**降得無聲無息**。 - - 為什麼寫在 description 不是寫在票裡:**leo 看的是百分比那個畫面**, - 他不會為了確認 100% 是不是真的而去逐張點票。**痕跡要留在他會經過的地方。** - - 來由(2026-08-20 實犯):`v0.2.0` 本來 6 張,`#5` 卡人閘被移出 ⇒ 分母 6 變 5 ⇒ 顯示 100%。 - leo 當場問「為什麼還有很多 issues 開放中」。 - 🔴 這與 §3.4(審核完沒關票 ⇒ 數字偏低)是**同一個病的兩面**: - 畫面上的數字不等於實際狀態,而 leo 只看得到畫面。 - - 機械閘:`inkstone/ISEP#24`。 - - **M4.6** 🔴 **release note 寫在 Gitea Releases 裡,不寫在 README。**(leo 2026-08-20:「release 不是寫在 readme,要放在 release 裡」) README 不得自行宣稱版本號——那會產生第二份會漂移的版本真相。 @@ -248,7 +241,7 @@ s/triage ──驗傷通過──▶ s/backlog ──排進 milestone──▶ s | E2 | PR 不關聯 issue | PR 模板必含 `closes #`,缺漏即 fail | ❌ 待建 | | E3 | 手動關 leaf | hook 攔截;只放行 `close/*` 與 §6.2 人執路徑 | ❌ 待建 | | E4 | 被 block 的票先關 | Gitea issue dependency | ✅ 平台原生,已驗證可用 | -| E5 | Milestone 悄悄過期 | job:到期做降 scope 對帳 + 通知(**不自動關、不自動打 tag**) | ❌ 待建(先做成手動腳本,見 §8.2) | +| E5 | Milestone 悄悄過期 | job:到期只通知 leo(**不自動關、不打 tag、不移票**,M4.3) | ❌ 待建(先做成手動腳本,見 §8.2) | | E6 | 代理越過人閘 | PreToolUse hook | ◐ 現有 `irreversible-dispatch-guard.sh`/`prod-write-guard.sh` 覆蓋一部分 | | E7 | SDD 內出現 leaf 連結 | pre-commit lint | ❌ 待建 | | E8 | Tracking issue 掛 milestone | job 摘除並告警 | ❌ 待建 | @@ -582,6 +575,47 @@ leo 08-17 診斷見公理 3;08-17 實測:文字層的閘 **8 次誤攔、0 --- +## 15. 三源整合定案(leo 2026-08-20 核准) + +三源=claude.ai 兩份規劃(v0.5.0 draft+`InkStoneCo#40` forge-discipline)× 45 張舊票 × 既有機制。 + +### 15.1 方向(四句,其餘全是它們的展開) + +1. **機制只有一份。** 環境、標籤、規範、版本號都是單一真相源;本機與雲端裝同一個 plugin,沒有子集。 +2. **閘封動作,不封措辭。** 伺服器端擋不可逆;手寫 hook 擋高代價動作(block); + hookify+additionalContext 只提醒(永遠 warn);skill 管 regex 表達不了的判斷。 +3. **一切要留痕、可量測。** 閘的動作、開場全局、里程碑百分比——leo 看到的畫面就是實況。 +4. **進度=舊票關掉幾張。** 版本只是讓閘生效的載具,release note 寫明關了哪張票。 + +### 15.2 工作順序(六個里程碑,各 repo 同名,內容一經確定不增不減) + +| 順 | 里程碑 | 來源票 | +|---|---|---| +| 0 | 讓閘擋對東西 | `InkStoneCo#56 #23 #22 #36 #55 #1` | +| 1 | 讓規則的效果看得見 | `InkStoneCo#48 #17 #20 #18`、`Arcrun#86 #142 #81` | +| 2 | 同一件事只留一份 | `InkStoneCo#14 #57 #37 #11`、`arcrun-rag#116 #123 #122 #88`、`Arcrun#109`、`system-dev-template#2 #3` | +| 3 | 不要卡在 leo 身上 | `InkStoneCo#15 #38 #34 #31 #52` | +| 4 | 派工與交付紀律 | `InkStoneCo#12 #28`、`arcrun-rag#47 #124`、`Arcrun#93 #143 #131`、`system-dev-template#7` | +| 5 | 票與文件歸位 | `InkStoneCo#9 #49 #10 #8 #5`、`system-dev-template#1 #4` | + +排序判準=「什麼擋住什麼」:閘不修好,其他群的成果會被誤攔咬到;沒有留痕,修了也量不出變好。 +`#40` 是憲法,貫穿全部;`#48` 是 `#40` warn 校準的資料前提,所以排群 1 之首。 + +### 15.3 三處矛盾的定案 + +1. `#40`「hook 只減不增」vs E 清單要 ~11 支新閘 ⇒ 新封路優先做在**伺服器端**或 **warn 層**; + 要新增 `.sh` 必須在 PR 說明為何前兩層做不到。 +2. warn-first vs hookify 的 warn 不進 AI ⇒ warn 一律用 `additionalContext`; + 新規則從 warn 出生,憑 `#48` 的留痕數據才升 block。 +3. milestone 到期自動關+打 tag ⇒ 否決(M4.3)。 + +### 15.4 待 leo 裁(不擋群 0 開工) + +`#37` 兩份 repo 哪份為準(建議 `inkstone/*`)/`#5` `#8` 轉 hub 或作廢/ +08-20 兩支未經 warn 期的 block 閘,隨盤點表(`docs/hooks-inventory.md`)一起審。 + +--- + ## 附:Label 全集(快照;唯一真相為 `labels.yaml`) ```