fix/work-package-dependency-gate-parallel #24

Merged
admin merged 1 commits from fix/work-package-dependency-gate-parallel into develop 2026-08-26 10:07:36 +00:00
Member

PR 描述

摘要

  • 需求描述:SDLC 實作可能有好幾個互不相依的工作包平行進行,原本的 PR 閘門卻只要存取庫裡有任何一包沒合併就擋下所有新工作包,跟平行處理互相矛盾,調整成只檢查候選工作包自己的相依
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/wp-gate.sh 新增 check-deps {owner}/{repo} {wp-number} 子指令:活抓分析頁 WBS 表的相依欄,逐一核對每個相依工作包的狀態與 PR 合併狀態,只認同一頁上的 WP-NN 編號;check/lock 的訊息文字一併改成「擋的是相依於它的包」而非「不得挑下一個工作包」
skills/implement/SKILL.md 步驟 4 改成只負責結清已開 PR 的留言,不再兼職擋新包;步驟 6 新增挑包前呼叫 check-deps 的強制檢查,只有候選包自己的相依都結清才能挑
references/branch.md worktree 路徑從 .worktree/{HASH}/{repo} 改成 .worktree/{HASH}/{wp-number}/{repo}——原路徑少了工作包這一層,兩個平行進行的工作包會搶同一個目錄,第二個到的直接被擋下;同段文字也一併改掉舊的「PR 未合併就不開下一包」敘述
templates/analyze-page.md 補上相依欄的格式規定(WP-NN,頓號分隔),check-deps 靠這個格式解析;順手修掉同一段裡的舊敘述
README.md 手寫的 STE100 說明段落(Skills 目錄、tools/wp-gate.sh、references/branch.md)同步更新用詞,這段不是自動同步工具會覆寫的區塊

設計重點

  • 舊設計把「這一包的 PR 沒合併」跟「整份分析都不能挑新包」綁在一起,來源是還沒考慮平行處理時寫的規則
  • 新設計把判斷收斂到候選包自己:check-deps 活查 Gitea,不吃技能自己讀到的任何快取或判斷,跟既有 check/lock 的程式層強制是同一種做法
  • 相依欄若指到別份計畫或別頁分析的文字敘述(例如「節點建置」),check-deps 查不出來,會列成「需人工確認」而不是直接擋住——結構上查不到的東西當成擋人理由,會讓那個工作包永遠挑不到
  • 鎖檔顆粒度另一半的修正(一個工作包一支鎖檔,避免互相覆蓋)在 plugins/hooks 那份 PR,兩份要一起看

測試結果

  • sh -n tools/wp-gate.sh:語法檢查通過
  • 用假的 gitea.sh(回傳固定的 wiki 內容與 PR 狀態)跑過 check-deps:無相依、全部相依已合併、部分相依未合併、相依包在頁面上查不到、相依欄混雜本頁編號與跨頁文字敘述,五種情境輸出與結束碼都對
  • 未跑 CI(此存取庫沒有自動化測試流程),以上為人工驗證

前置 Push Request

  • 無
# PR 描述 ## 摘要 - 需求描述:SDLC 實作可能有好幾個互不相依的工作包平行進行,原本的 PR 閘門卻只要存取庫裡有任何一包沒合併就擋下所有新工作包,跟平行處理互相矛盾,調整成只檢查候選工作包自己的相依 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | tools/wp-gate.sh | 新增 `check-deps {owner}/{repo} {wp-number}` 子指令:活抓分析頁 WBS 表的相依欄,逐一核對每個相依工作包的狀態與 PR 合併狀態,只認同一頁上的 `WP-NN` 編號;`check`/`lock` 的訊息文字一併改成「擋的是相依於它的包」而非「不得挑下一個工作包」 | | skills/implement/SKILL.md | 步驟 4 改成只負責結清已開 PR 的留言,不再兼職擋新包;步驟 6 新增挑包前呼叫 `check-deps` 的強制檢查,只有候選包自己的相依都結清才能挑 | | references/branch.md | worktree 路徑從 `.worktree/{HASH}/{repo}` 改成 `.worktree/{HASH}/{wp-number}/{repo}`——原路徑少了工作包這一層,兩個平行進行的工作包會搶同一個目錄,第二個到的直接被擋下;同段文字也一併改掉舊的「PR 未合併就不開下一包」敘述 | | templates/analyze-page.md | 補上相依欄的格式規定(`WP-NN`,頓號分隔),`check-deps` 靠這個格式解析;順手修掉同一段裡的舊敘述 | | README.md | 手寫的 STE100 說明段落(`Skills 目錄`、`tools/wp-gate.sh`、`references/branch.md`)同步更新用詞,這段不是自動同步工具會覆寫的區塊 | ## 設計重點 - 舊設計把「這一包的 PR 沒合併」跟「整份分析都不能挑新包」綁在一起,來源是還沒考慮平行處理時寫的規則 - 新設計把判斷收斂到候選包自己:`check-deps` 活查 Gitea,不吃技能自己讀到的任何快取或判斷,跟既有 `check`/`lock` 的程式層強制是同一種做法 - 相依欄若指到別份計畫或別頁分析的文字敘述(例如「節點建置」),`check-deps` 查不出來,會列成「需人工確認」而不是直接擋住——結構上查不到的東西當成擋人理由,會讓那個工作包永遠挑不到 - 鎖檔顆粒度另一半的修正(一個工作包一支鎖檔,避免互相覆蓋)在 `plugins/hooks` 那份 PR,兩份要一起看 ## 測試結果 - `sh -n tools/wp-gate.sh`:語法檢查通過 - 用假的 `gitea.sh`(回傳固定的 wiki 內容與 PR 狀態)跑過 `check-deps`:無相依、全部相依已合併、部分相依未合併、相依包在頁面上查不到、相依欄混雜本頁編號與跨頁文字敘述,五種情境輸出與結束碼都對 - 未跑 CI(此存取庫沒有自動化測試流程),以上為人工驗證 ## 前置 Push Request - 無
jiantw83 added 1 commit 2026-08-26 10:00:59 +00:00
admin merged commit a2d6f73f39 into develop 2026-08-26 10:07:36 +00:00
admin deleted branch fix/work-package-dependency-gate-parallel 2026-08-26 10:07:36 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/sdlc#24