docs(meta): 準則的重啟閘門狀態檔規則改為一支 CLI 一份 #28

Merged
admin merged 2 commits from fix/restart-gate-per-cli-state into develop 2026-08-27 10:51:30 +00:00
Member

摘要

  • 需求描述:jsc-hooks 這一輪把部署後重啟閘門的狀態檔從全機器單一檔案改為一支 CLI 一份的 $JSC_HOME/restart-required.d/{CLI 代號},修掉並行部署互相覆寫、以及任一支 CLI 重啟就解除全部五支閘門這兩個實測缺陷。準則是這條規則的正本,規則表要跟著改,並把缺陷與它的通則寫進去,才擋得住下一次「簡化成一個檔案」的改動。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
references/guidelines.md 「部署後重啟閘門」的規則表四列改為 per-CLI(狀態檔路徑、清除時機、該 CLI 那份存在時、該 CLI 那份不存在時),另新增一段「狀態檔為什麼一支 CLI 一份」,記下 2026-08-27 實測到的兩個缺陷並收成通則
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 版本 0.1.4 → 0.1.5,三份同步;準則改了要讓機器上的 jsc-meta 換到新版,四支異動技能與 skill-check 讀的才是這一版的規則

設計重點

  • 規則表只改該改的四列。 判定位置(程式層,由 jsc-hooks 執行,不靠技能內文自我約束)與逃生門 JSC_RESTART_GATE=off 兩列不動,這一輪沒有改變閘門由誰執行。
  • 缺陷寫成事實,不寫成推測。 並行部署只留最後一支的 cli= 與 domains=,以及任一支重啟就解除全部五支的閘門——兩件都是部署現場實測到的,日期一併留著。
  • 收成通則:跨 CLI 或跨工作階段的狀態檔,設計時先問清楚那個事實屬於誰。 同一類錯誤在工作包歸屬狀態檔上也踩過,那一段一併指出來,準則才不只是記一次個案。
  • 豁免範圍不動。 九支豁免技能與「清單認技能名不認呼叫鏈」照舊,實作那一側也沒改豁免清單,兩邊仍然對得上。

測試結果

  • ste100-lint.sh:本存取庫全綠。三份 manifest 版本一致為 0.1.5。
  • 規則表改後的四列與 jsc-hooks/hooks/restart-gate.sh 的實作逐項比對一致:狀態檔路徑、清除範圍、該 CLI 那份存在與不存在時的行為。豁免清單九支與實作、與 jsc-hooks:hooks-install 技能文件三邊一致。
  • 閘門本身的行為(一支一份、只擋自己那一支、清除只清自己那份、舊檔相容、髒值防護)在 jsc-hooks 那份 PR 實測,這一側只驗規則與實作對得上。
  • 無法測試的部分:codex、copilot、antigravity、kiro 四支沒有 pre-tool hook,這道閘門在那四支上一次技能呼叫都擋不下來。那是覆蓋範圍的先天限制,不是還沒測。
  • 這批修正尚未部署到任何 CLI。

前置 Push Request

## 摘要 - 需求描述:`jsc-hooks` 這一輪把部署後重啟閘門的狀態檔從全機器單一檔案改為一支 CLI 一份的 `$JSC_HOME/restart-required.d/{CLI 代號}`,修掉並行部署互相覆寫、以及任一支 CLI 重啟就解除全部五支閘門這兩個實測缺陷。準則是這條規則的正本,規則表要跟著改,並把缺陷與它的通則寫進去,才擋得住下一次「簡化成一個檔案」的改動。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `references/guidelines.md` | 「部署後重啟閘門」的規則表四列改為 per-CLI(狀態檔路徑、清除時機、該 CLI 那份存在時、該 CLI 那份不存在時),另新增一段「狀態檔為什麼一支 CLI 一份」,記下 2026-08-27 實測到的兩個缺陷並收成通則 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 版本 0.1.4 → 0.1.5,三份同步;準則改了要讓機器上的 `jsc-meta` 換到新版,四支異動技能與 skill-check 讀的才是這一版的規則 | ## 設計重點 - **規則表只改該改的四列。** 判定位置(程式層,由 `jsc-hooks` 執行,不靠技能內文自我約束)與逃生門 `JSC_RESTART_GATE=off` 兩列不動,這一輪沒有改變閘門由誰執行。 - **缺陷寫成事實,不寫成推測。** 並行部署只留最後一支的 `cli=` 與 `domains=`,以及任一支重啟就解除全部五支的閘門——兩件都是部署現場實測到的,日期一併留著。 - **收成通則:跨 CLI 或跨工作階段的狀態檔,設計時先問清楚那個事實屬於誰。** 同一類錯誤在工作包歸屬狀態檔上也踩過,那一段一併指出來,準則才不只是記一次個案。 - **豁免範圍不動。** 九支豁免技能與「清單認技能名不認呼叫鏈」照舊,實作那一側也沒改豁免清單,兩邊仍然對得上。 ## 測試結果 - `ste100-lint.sh`:本存取庫全綠。三份 manifest 版本一致為 0.1.5。 - 規則表改後的四列與 `jsc-hooks/hooks/restart-gate.sh` 的實作逐項比對一致:狀態檔路徑、清除範圍、該 CLI 那份存在與不存在時的行為。豁免清單九支與實作、與 `jsc-hooks:hooks-install` 技能文件三邊一致。 - 閘門本身的行為(一支一份、只擋自己那一支、清除只清自己那份、舊檔相容、髒值防護)在 `jsc-hooks` 那份 PR 實測,這一側只驗規則與實作對得上。 - **無法測試的部分**:codex、copilot、antigravity、kiro 四支沒有 pre-tool hook,這道閘門在那四支上一次技能呼叫都擋不下來。那是覆蓋範圍的先天限制,不是還沒測。 - 這批修正尚未部署到任何 CLI。 ## 前置 Push Request - plugins/hooks#37 https://gitea.jsc.idv.tw/plugins/hooks/pulls/37(狀態檔路徑與格式的唯一來源在 restart-gate.sh)
jiantw83 added 2 commits 2026-08-27 10:50:22 +00:00
What:`references/guidelines.md`「部署後重啟閘門」的規則表改四列——狀態檔路徑改成 `$JSC_HOME/restart-required.d/{cli}` 並標明一支 CLI 一份、清除時機標明只清自己那一份、原本的「狀態檔存在時」與「狀態檔不存在時」兩列改寫成「該 CLI 那份存在時」與「該 CLI 那份不存在時」,並寫明別支 CLI 的狀態檔不影響這一支。另外新增一段「狀態檔為什麼一支 CLI 一份」,記下 2026-08-27 部署時實測出的兩個缺陷,並把它寫成通則。

Why:準則是技能組的規則正本,`jsc-hooks` 的實作與 `jsc-cli` 的說明都對著它看。實作改成一支 CLI 一份而準則還停在單一檔案,下一次 skill-check 會判成實作違規,也可能有人照準則把實作改回去。這兩個缺陷是實測抓到的、不是推測,理由留在準則裡才擋得住下一次的簡化。

How:規則表只改該改的四列,判定位置與逃生門兩列不動。新增那段把缺陷寫清楚——並行部署互相覆蓋只留最後一支,以及任一支重啟就解除全部五支的閘門——再收成通則:跨 CLI 或跨工作階段的狀態檔,設計時先問清楚那個事實屬於誰,並指出工作包歸屬狀態檔踩過同一類錯誤。豁免清單那九支與「清單認技能名不認呼叫鏈」不動,這一輪沒有動到豁免範圍。

Who:`jsc-meta` 的技能準則,部署後重啟閘門這條規則的正本。
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 從 0.1.4 升到 0.1.5,三份同步,description 不動。

Why:準則改了就要讓機器上的 `jsc-meta` 換到新版,四支異動技能與 skill-check 讀的才是這一版的規則。版本不升,`version-guard.sh` 的版本前置檢查與 `jsc-cli:deploy` 的落後判定都看不出本機還是舊版,機器上就不會被提示更新。

How:只改版號一個欄位。三份必須一致:`plugin.json` 給 marketplace、`.claude-plugin` 給 claude、`.codex-plugin` 給 codex,任一份落後都會讓那一路的版本比對抓錯。這一輪只改準則正文、沒有新增或移除技能,所以走修訂號。

Who:`jsc-meta` 的三份 plugin manifest,配合這一輪準則修正發佈。
admin merged commit ccae8bfd7a into develop 2026-08-27 10:51:30 +00:00
admin deleted branch fix/restart-gate-per-cli-state 2026-08-27 10:51:30 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/meta#28