sdlc 0.1.5 發佈:工作包 PR 硬閘門與稽核修正 #20

Merged
admin merged 8 commits from develop into master 2026-08-25 11:09:38 +00:00
Member

sdlc 0.1.5 發佈:工作包 PR 硬閘門與稽核修正

摘要

  • 需求描述:把 develop 累積的 jsc-sdlc 0.1.5 發佈到預設分支 master。marketplace 從預設分支取,所以這一步之前,五個 CLI 抓到的還是 0.1.2 的舊版。本 PR 帶兩批內容:①今天的工作包 PR 硬閘門(PR #19)——tools/wp-gate.sh 新增、implement 步驟 4/6/11 改寫、references/branch.md 改成兩層閘門分工;②2026-08-25 例行稽核的修正(PR #18)——四支技能的合規修正、references/model-gate.md 補齊、marketplace 正本同步、templates/error-*.md 移除(那兩份範本歸 jsc-hooks)。第二批早該上 master,一併發佈。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/wp-gate.sh 新檔。工作包 PR 閘門:check 未合併就印出全部留言並 exit 1 擋住,已合併就解鎖 exit 0;lock 讓閘門跨工作階段有效。
skills/implement/SKILL.md 步驟 4 改成呼叫閘門且不再問「要修還是等」,留言修正一律以 sub agent 在原 worktree 進行;步驟 6 明講閘門擋著就不得挑工作包;步驟 11 補上上鎖。另含稽核階段的合規修正。
references/branch.md 「PR 未合併就不開下一個工作包」改為工具閘門與 hook 閘門的兩層分工表,程序細節仍歸 SKILL.md。
skills/plan、skills/analyze、skills/maintain 的 SKILL.md 稽核修正:改呼叫共用工具、階段閘門敘述對齊實作。
references/model-gate.md、references/deliver-formats.md 稽核修正:補齊模型閘門規則、交付格式敘述。
templates/error-contents.md、templates/error-page.md 移除。異常頁範本歸 jsc-hooks,留在這裡會有兩份真實來源。
templates/ 其餘檔案、README.md 稽核修正與文件同步。
兩份 marketplace.json 同步 plugins/meta 正本。
三份 plugin.json 0.1.2 → 0.1.5(稽核批與本次各升,共三次)。

設計重點

  • 閘門查不到就不放行:gitea.sh pr-status 對不存在的 PR 印 ? none none 並 exit 0,打錯編號會被當成 open。已加欄位白名單,查不到回 status=missing-dep exit 3。
  • closed 但未合併單獨回報,它不算完成。
  • latest= 取全部留言的最大時間戳,安靜的一輪不會讓時間戳倒退,舊留言不會被重複處理。
  • 修不動或純討論、讚美的留言忽略:不在 PR 回覆、不停下流程,但最終回報要逐筆列出。
  • 已處理留言的時間戳寫回分析頁既有的 PR 欄位,不新增欄位——欄位定義歸 analyze 技能。
  • 呼叫 sdlc-gate.sh 一律關掉 stdin:hook 模式會讀標準輸入,管線沒人關閉時整支卡死。

測試結果

  • sh -n tools/wp-gate.sh 通過;用法護欄(無參數、缺 index、錯誤子命令、錯誤存取庫格式、--since 缺值)都 exit 2。
  • 真實 Gitea 實測:已合併的 plugins/hooks#18 → status=merged exit 0;未合併的 plugins/hooks#19 → status=open exit 1 並印出留言區塊;不存在的 #99999 → status=missing-dep exit 3。
  • --since 過濾以注入的假 gitea.sh 驗過三筆留言:不給旗標 3 筆、--since 2026-08-24 2 筆、--since 2099-01-01 0 筆但 latest= 仍為最新那筆。
  • 相依工具缺失:隔離環境下 exit 3,不會靜靜放行。
  • lock 產生狀態檔,解鎖只清掉對應那一筆,其他鎖不受影響;兩者都不再需要外部導向 stdin。
  • meta/tools/ste100-lint.sh sdlc 通過;SKILL.md 整份英文,僅保留要原樣輸出的繁中字面。
  • 上游 PR #18、#19 都已合併進 develop(合併 commit 9579489、4a309a5)。

前置 Push Request

  • plugins/hooks#19 — wp-gate.sh 執行期要呼叫 jsc-hooks 的 sdlc-gate.sh wp-lock 與 wp-unlock,那兩個子命令要先隨 hooks 0.1.7 上 master,否則已安裝的 CLI 會拿到查不到相依工具的閘門。已用 gitea.sh pr-depend 掛上依賴。
# sdlc 0.1.5 發佈:工作包 PR 硬閘門與稽核修正 ## 摘要 - 需求描述:把 `develop` 累積的 `jsc-sdlc` 0.1.5 發佈到預設分支 `master`。marketplace 從預設分支取,所以這一步之前,五個 CLI 抓到的還是 0.1.2 的舊版。本 PR 帶兩批內容:①今天的工作包 PR 硬閘門(PR #19)——`tools/wp-gate.sh` 新增、`implement` 步驟 4/6/11 改寫、`references/branch.md` 改成兩層閘門分工;②2026-08-25 例行稽核的修正(PR #18)——四支技能的合規修正、`references/model-gate.md` 補齊、marketplace 正本同步、`templates/error-*.md` 移除(那兩份範本歸 `jsc-hooks`)。第二批早該上 `master`,一併發佈。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/wp-gate.sh` | 新檔。工作包 PR 閘門:`check` 未合併就印出全部留言並 exit 1 擋住,已合併就解鎖 exit 0;`lock` 讓閘門跨工作階段有效。 | | `skills/implement/SKILL.md` | 步驟 4 改成呼叫閘門且不再問「要修還是等」,留言修正一律以 sub agent 在原 worktree 進行;步驟 6 明講閘門擋著就不得挑工作包;步驟 11 補上上鎖。另含稽核階段的合規修正。 | | `references/branch.md` | 「PR 未合併就不開下一個工作包」改為工具閘門與 hook 閘門的兩層分工表,程序細節仍歸 SKILL.md。 | | `skills/plan`、`skills/analyze`、`skills/maintain` 的 SKILL.md | 稽核修正:改呼叫共用工具、階段閘門敘述對齊實作。 | | `references/model-gate.md`、`references/deliver-formats.md` | 稽核修正:補齊模型閘門規則、交付格式敘述。 | | `templates/error-contents.md`、`templates/error-page.md` | 移除。異常頁範本歸 `jsc-hooks`,留在這裡會有兩份真實來源。 | | `templates/` 其餘檔案、`README.md` | 稽核修正與文件同步。 | | 兩份 marketplace.json | 同步 `plugins/meta` 正本。 | | 三份 plugin.json | 0.1.2 → 0.1.5(稽核批與本次各升,共三次)。 | ## 設計重點 - 閘門查不到就不放行:`gitea.sh pr-status` 對不存在的 PR 印 `? none none` 並 exit 0,打錯編號會被當成 open。已加欄位白名單,查不到回 `status=missing-dep` exit 3。 - `closed` 但未合併單獨回報,它不算完成。 - `latest=` 取全部留言的最大時間戳,安靜的一輪不會讓時間戳倒退,舊留言不會被重複處理。 - 修不動或純討論、讚美的留言忽略:不在 PR 回覆、不停下流程,但最終回報要逐筆列出。 - 已處理留言的時間戳寫回分析頁**既有**的 PR 欄位,不新增欄位——欄位定義歸 `analyze` 技能。 - 呼叫 `sdlc-gate.sh` 一律關掉 stdin:hook 模式會讀標準輸入,管線沒人關閉時整支卡死。 ## 測試結果 - `sh -n tools/wp-gate.sh` 通過;用法護欄(無參數、缺 index、錯誤子命令、錯誤存取庫格式、`--since` 缺值)都 exit 2。 - 真實 Gitea 實測:已合併的 `plugins/hooks#18` → `status=merged` exit 0;未合併的 `plugins/hooks#19` → `status=open` exit 1 並印出留言區塊;不存在的 `#99999` → `status=missing-dep` exit 3。 - `--since` 過濾以注入的假 `gitea.sh` 驗過三筆留言:不給旗標 3 筆、`--since 2026-08-24` 2 筆、`--since 2099-01-01` 0 筆但 `latest=` 仍為最新那筆。 - 相依工具缺失:隔離環境下 exit 3,不會靜靜放行。 - `lock` 產生狀態檔,解鎖只清掉對應那一筆,其他鎖不受影響;兩者都不再需要外部導向 stdin。 - `meta/tools/ste100-lint.sh sdlc` 通過;SKILL.md 整份英文,僅保留要原樣輸出的繁中字面。 - 上游 PR #18、#19 都已合併進 `develop`(合併 commit `9579489`、`4a309a5`)。 ## 前置 Push Request - https://gitea.jsc.idv.tw/plugins/hooks/pulls/19 — `wp-gate.sh` 執行期要呼叫 `jsc-hooks` 的 `sdlc-gate.sh wp-lock` 與 `wp-unlock`,那兩個子命令要先隨 hooks 0.1.7 上 `master`,否則已安裝的 CLI 會拿到查不到相依工具的閘門。已用 `gitea.sh pr-depend` 掛上依賴。
jiantw83 added 8 commits 2026-08-25 11:05:50 +00:00
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、
把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。

Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。
完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。

How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有
documented exit codes,並以真實執行驗證每條路徑。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
What:更新 README、AGENTS.md、templates 與 references,讓文件敘述與實際行為一致。

Why:稽核發現多處文件與程式行為分歧,違反「每個意義只有單一真實來源」。

How:以實際程式行為為準改寫敘述,重複的規則收成單一來源並以一行指引指過去。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
What:三份 plugin manifest 版本同步 bump,兩份 marketplace 檔與 plugins/meta 正本對齊。

Why:準則要求技能異動必須同步升版;marketplace 副本必須與正本完全一致。

How:以 jsc-meta 的 tools/sync-skill-manifest.sh 升版,marketplace 檔由正本複製。

Who:jsc-meta:skill-check 例行稽核(2026-08-25)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #18
Reviewed-on: #19
admin approved these changes 2026-08-25 11:09:35 +00:00
admin merged commit 64ecefb380 into master 2026-08-25 11:09:38 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Reference: plugins/sdlc#20