Compare commits

..

4 Commits

Author SHA1 Message Date
Leo 410771e883 E5 對齊 M4.3:到期只通知,不移票 2026-08-20 17:50:15 +08:00
Leo 64dae34efa v0.8.0 修訂:刪 M4.7、M4.3 改寫(里程碑內容不增不減)、§15 精簡成方向性規劃
leo 2026-08-20 兩則指正:
① 「milestone 確定後怎麼可以再把東西移除?定下工作自己刪掉是什麼意思?根本就沒有什麼降」
  ⇒ M4.7(降 scope 留痕)整段刪除——它把一個不該存在的操作合法化了。
  M4.3 改成:到期只通知 leo;內容增減都是 leo 的裁決,不是總管的操作。
② 「規劃書要大的規劃,方向性,不是寫廢話」
  ⇒ §15 從逐領域十行大表精簡成:四句方向+六里程碑順序表+三矛盾定案+三件待裁。
2026-08-20 17:42:51 +08:00
Leo 6d61c10cb8 治理規範 v0.8.0:三源整合定案(§15,leo 核准)
leo:「把 claude.ai 的規劃、舊有票的需求、現在已經有的機制全部整合,
修正出最終版規劃,核准再動工。」

- §15.1 逐領域十欄對照(A–J),每格標定案
- §15.2 三處矛盾的解法:#40 只減不增 vs E 清單要新閘(→伺服器端優先);
  warn-first vs 全 block(→四層定位,#48 是前提);E5 自動打 tag(維持否決)
- §15.3 已成立清單;§15.4 動工順序;§15.5 三件待裁(不擋群 0)
- 最大發現:claude.ai 兩份規劃都沒有「觀測」這一章,而舊票最痛的就是它
2026-08-20 17:40:52 +08:00
claude-code e7bea04862 Merge pull request '治理規範 v0.7.0:全局遍歷與 mapping 併入本檔' (#28) from docs/plan into main
治理規範 v0.7.0
2026-08-20 09:32:50 +00:00
+49 -15
View File
@@ -1,7 +1,7 @@
# SDD × Gitea 治理規範 # SDD × Gitea 治理規範
``` ```
version: 0.7.0 version: 0.8.0
status: 現行(本檔的修改依 §9 走 issue) status: 現行(本檔的修改依 §9 走 issue)
scope: 所有安裝 ISEP 的環境(本機 CC 與雲端 CC) scope: 所有安裝 ISEP 的環境(本機 CC 與雲端 CC)
distribution: 隨 ISEP 發佈,ISEP repo 是唯一編輯點(§11 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.6.0 由總管對照現場實況修訂,逐條分歧見 DIVERGENCE-v0.5.0-to-v0.6.0.md
→ v0.7.0 併入全局遍歷(14 repo156 open/45 張管理票分六群,§13)與新舊票 mapping(§14); → v0.7.0 併入全局遍歷(14 repo156 open/45 張管理票分六群,§13)與新舊票 mapping(§14);
依 leo 指正:規劃不另立文件,修正本檔就是新版 依 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.1** 命名 `vX.Y`,必設 due date。
- **M4.2** Deliverable **一個可測的新版本號**。所有掛入 leaf 關閉後,可從預設分支打出通過驗收的版本。 - **M4.2** Deliverable **一個可測的新版本號**。所有掛入 leaf 關閉後,可從預設分支打出通過驗收的版本。
- **M4.3** **Timebox 到期不自動關、不自動打 tag。** 到期強制做一次降 scope 對帳(未完成 leaf 搬下一 milestone)並通知 leo。 - **M4.3** **Timebox 到期不自動關、不自動打 tag、也不把票移出** 到期只做一件事:通知 leo。
🔴 自動打 tag 會製造假交付——tag 永遠只在「驗過了」之後發生。 🔴 **里程碑的內容一經確定就不增不減**leo 2026-08-20:「milestone 確定後怎麼可以再把東西移除?
定下工作自己刪掉是什麼意思?根本就沒有什麼降」)。增減都是 leo 的裁決,不是總管的操作。
自動打 tag 會製造假交付——tag 永遠只在「驗過了」之後發生。
- **M4.4** Milestone 關閉 release tag,一對一。「已交付」唯一合法形式是 **tag 存在且裝得起來**;打 tag 前置 open issues 0(§8 E12)。 - **M4.4** Milestone 關閉 release tag,一對一。「已交付」唯一合法形式是 **tag 存在且裝得起來**;打 tag 前置 open issues 0(§8 E12)。
- **M4.5** Description 只寫版本目標一句 tracking 連結。討論回 tracking issue。 - **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 裡」) - **M4.6** 🔴 **release note 寫在 Gitea Releases 裡,不寫在 README。**leo 2026-08-20:「release 不是寫在 readme,要放在 release 裡」)
README 不得自行宣稱版本號——那會產生第二份會漂移的版本真相。 README 不得自行宣稱版本號——那會產生第二份會漂移的版本真相。
@@ -248,7 +241,7 @@ s/triage ──驗傷通過──▶ s/backlog ──排進 milestone──▶ s
| E2 | PR 不關聯 issue | PR 模板必含 `closes #`,缺漏即 fail | ❌ 待建 | | E2 | PR 不關聯 issue | PR 模板必含 `closes #`,缺漏即 fail | ❌ 待建 |
| E3 | 手動關 leaf | hook 攔截;只放行 `close/*` 與 §6.2 人執路徑 | ❌ 待建 | | E3 | 手動關 leaf | hook 攔截;只放行 `close/*` 與 §6.2 人執路徑 | ❌ 待建 |
| E4 | 被 block 的票先關 | Gitea issue dependency | ✅ 平台原生,已驗證可用 | | 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` 覆蓋一部分 | | E6 | 代理越過人閘 | PreToolUse hook | ◐ 現有 `irreversible-dispatch-guard.sh``prod-write-guard.sh` 覆蓋一部分 |
| E7 | SDD 內出現 leaf 連結 | pre-commit lint | ❌ 待建 | | E7 | SDD 內出現 leaf 連結 | pre-commit lint | ❌ 待建 |
| E8 | Tracking issue 掛 milestone | job 摘除並告警 | ❌ 待建 | | E8 | Tracking issue 掛 milestone | job 摘除並告警 | ❌ 待建 |
@@ -582,6 +575,47 @@ leo 08-17 診斷見公理 308-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);
hookifyadditionalContext 只提醒(永遠 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` ## 附:Label 全集(快照;唯一真相為 `labels.yaml`
``` ```