fix(gate): 閘門說明與實際行為對齊
兩份參考文件跟實際判定互相矛盾。照著做會漏掉收尾,或是擋錯階段。 - 模型閘門非零退出時,該回合仍要跑階段回報。提前停下來也要留紀錄,不然使用者看不到停在哪裡。 - 工作包閘門只擋分析與維護:規劃只印提醒就放行,實作一律放行。實作是結清那支 PR 的唯一路徑,擋了閘門就自己鎖死。 - 順帶把指向實作技能的步驟引用改成新的順序。
This commit is contained in:
@@ -137,7 +137,7 @@ SDLC 各階段引用的參考分支與來源分支,**一律指遠端的 `origi
|
||||
| 層 | 誰執行 | 做什麼 |
|
||||
| --- | --- | --- |
|
||||
| 工具閘門 | `tools/wp-gate.sh` | 唯一去問 Gitea 的一方,也是唯一有權解鎖的一方。`check` 查合併狀態、印出全部留言、印 `latest=` 時間戳,只管那一支 PR 自己;`check-deps` 查某個候選工作包能不能挑,活抓分析頁的相依欄逐一核對;`claim` 在領包當下登錄歸屬;`lock` 在 PR 開好後記下未結清並把 PR 掛到工作包名下;`owns` 比對某支 PR 是不是自己這一包的。狀態檔的寫入一律轉呼叫 `sdlc-gate.sh`。結束碼 0 放行、1 擋住、2 用法錯誤、3 查不到(查不到就擋,不放行) |
|
||||
| hook 提醒 | `jsc-hooks` 的 `sdlc-gate.sh wp-check` | 只讀 `$JSC_HOME/wp/` 的狀態檔,不打網路。`prompt` 模式注入提醒但**不擋提示**;`skill` 模式擋掉 `plan`、`analyze`、`maintain`,放行 `implement`——擋住的是「跳去做別的階段」,不是「回來把這一包做完」。這一層是整個存取庫共用的粗粒度提醒,不是逐工作包判斷,細粒度的相依判斷交給 `check-deps`,歸屬比對交給 `owns` |
|
||||
| hook 提醒 | `jsc-hooks` 的 `sdlc-gate.sh wp-check` | 只讀 `$JSC_HOME/wp/` 的狀態檔,不打網路。`prompt` 模式注入提醒但**不擋提示**;`skill` 模式擋掉 `analyze` 與 `maintain`,對 `plan` 只印提醒就放行,對 `implement` 一律放行——擋住的是「跳去做別的階段」,不是「回來把這一包做完」。`implement` 放行是閘門不自鎖的關鍵:結清那支 PR 的唯一路徑就是它,擋了就沒有人解得開。`plan` 降成提醒之後,放棄的是「手上工作包沒結清就別開新計畫」這道在製品上限,`analyze` 那道仍在,上限只是晚一個階段才生效。這一層是整個存取庫共用的粗粒度提醒,不是逐工作包判斷,細粒度的相依判斷交給 `check-deps`,歸屬比對交給 `owns` |
|
||||
|
||||
狀態檔不綁 session:PR 沒合併就是沒合併,開新對話照樣擋。
|
||||
|
||||
@@ -154,7 +154,7 @@ SDLC 各階段引用的參考分支與來源分支,**一律指遠端的 `origi
|
||||
| 查無歸屬 | **放行只提醒**:沒有分析頁、查不到工作包代號、領取檔不存在、工作包還沒掛上 PR,一律 `status=unowned` 並 exit 0。這跟「查不到就擋」不衝突——那條講的是查得到卻查失敗,這條講的是根本還沒有歸屬可查,拿不存在的歸屬擋人會讓沒登錄過的工作包全部動不了 |
|
||||
| 逃生門 | `JSC_WP_GATE=off`,由 hook 那一層認 |
|
||||
|
||||
查驗程序的細節(何時帶 `--since`、怎麼等 PR 合併、留言逐筆的處理結果、修不動的留言怎麼辦、時間戳寫回哪裡)由 `skills/implement/SKILL.md` 步驟 4 與步驟 11 擁有,本檔不重複。
|
||||
查驗程序的細節(何時帶 `--since`、怎麼等 PR 合併、留言逐筆的處理結果、修不動的留言怎麼辦、時間戳寫回哪裡)由 `skills/implement/SKILL.md` 步驟 2 與步驟 11 擁有,本檔不重複。
|
||||
|
||||
## 不破壞既有工作
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ SDLC 每個階段動工前先過模型閘門。判定全在程式層,由 `jsc-
|
||||
| 項目 | 規則 |
|
||||
| --- | --- |
|
||||
| 標籤來源 | 只認腳本的判定。不得宣稱自己沒驗證過的標籤,也不得用自己的判斷取代腳本結論 |
|
||||
| 非零退出 | 一律視為阻擋:原文轉述腳本訊息、停止該技能、該回合不做別的事 |
|
||||
| 非零退出 | 一律視為阻擋:原文轉述腳本訊息、停止該技能,該回合除了跑 `tools/stage-report.sh` 收尾回報以外不做別的事(提前停下來也要回報,見 `references/stage-report.md`) |
|
||||
| `unlock` | 不得用來繞過閘門。要不要解鎖是使用者的決定 |
|
||||
| 回報 | **每次都要回報**:階段、必要標籤、腳本從 transcript 讀到的實際模型 id、判定結果。通過與阻擋都要講——安靜通過看起來跟跳過檢查一樣,而判定搬進程式層的理由就是「宣稱有檢查」不可信 |
|
||||
| 退出 0 | 該階段已上鎖。到下一階段的閘門重新上鎖之前,同一階段內把模型換成不合格的,下一輪提示會被 sdlc-gate hook 以 exit 2 擋下 |
|
||||
|
||||
Reference in New Issue
Block a user