釋出 hook 接線的路徑修正與本機事件流至 master,版本 0.3.8 升到 0.4.2 #81

Merged
admin merged 13 commits from develop into master 2026-09-03 03:17:13 +00:00
Member

摘要

  • 需求描述:把 develop 累積的變更釋出到 master。部署工具的 git clone 沒有指定分支,抓的是預設分支 master,所以變更沒進 master 就等於沒有到任何一台機器。版本 0.3.8 升到 0.4.2。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

hooks-install 的腳本呼叫改用執行期解出的字面絕對路徑、repair 的可驗證跡象補上收尾事件;另含先前累積的 report-status.sh 本機事件流、status 列舉每一個接線點、連結格式統一。

設計重點

  • 這是釋出用的 PR,內容全部來自已經審過並合併進 develop 的變更,這裡不新增任何程式碼。
  • 釋出的動機是路徑修正那一批要生效。無人看管的排程輪次在第一支腳本就被權限層擋下,技能端的修正已經進 develop,但部署抓 master,不釋出就到不了機器。

測試結果

  • 各存放庫的檢查在合併進 develop 前都跑過並回結束碼 0:check-behaviors.sh、ste100-lint.sh、lint-frontmatter.sh、lint-scripts.sh。
  • 端到端的無人看管巡檢回歸尚未實測。要等這批釋出並部署到機器之後才驗得出來,因為目前機器上還缺 link-check.sh 與 report-status.sh 兩支腳本。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 `develop` 累積的變更釋出到 `master`。部署工具的 `git clone` 沒有指定分支,抓的是預設分支 `master`,所以變更沒進 `master` 就等於沒有到任何一台機器。版本 0.3.8 升到 0.4.2。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 hooks-install 的腳本呼叫改用執行期解出的字面絕對路徑、repair 的可驗證跡象補上收尾事件;另含先前累積的 `report-status.sh` 本機事件流、`status` 列舉每一個接線點、連結格式統一。 ## 設計重點 - 這是釋出用的 PR,內容全部來自已經審過並合併進 `develop` 的變更,這裡不新增任何程式碼。 - 釋出的動機是路徑修正那一批要生效。無人看管的排程輪次在第一支腳本就被權限層擋下,技能端的修正已經進 `develop`,但部署抓 `master`,不釋出就到不了機器。 ## 測試結果 - 各存放庫的檢查在合併進 `develop` 前都跑過並回結束碼 0:`check-behaviors.sh`、`ste100-lint.sh`、`lint-frontmatter.sh`、`lint-scripts.sh`。 - 端到端的無人看管巡檢回歸尚未實測。要等這批釋出並部署到機器之後才驗得出來,因為目前機器上還缺 `link-check.sh` 與 `report-status.sh` 兩支腳本。 ## 前置 Push Request - 無
jiantw83 added 13 commits 2026-09-03 03:01:48 +00:00
取消 [[頁名]] 與 [[顯示文字|頁名]] 兩種同 wiki 寫法,不再分「同存取庫」與
「跨存取庫」兩條規則。那種寫法只在自己那個 wiki 內解析,寫錯不報錯,畫面上
看起來像普通文字或死連結,巡不到也修不了。

連結寫進頁面前先過 jsc-gitea 的 link-check.sh,結束碼 0 才寫。驗證一律走 API,
不看網頁狀態碼:私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把
好連結判成壞的。認證失敗回 7,與死連結的 1 分開,免得金鑰一過期就把還在的頁
整批判死。
Reviewed-on: #75
README 早就寫明「每個接線點印一行 item」,程式卻只列 comment-scope、
lang-guard、restart-gate 與 write-guard 三種模式,共六項。sdlc-gate 的三個
接線點、session-timer 的兩個、skill-usage 與 version-guard 都沒列出來。

漏列的後果不是少幾行字。reason 那行寫的是「全部九支 hook」,拿這份輸出
驗收接線的人會把沒列到的當成沒接——模型能力鎖就是這樣被誤判成沒接線的。
體檢技能也讀這支的輸出,同樣看不到那四支。

一支腳本接在多個接線點時,每個點各自列一項。只驗腳本名的話,「腳本在、
某個接線點沒接」會被算成完整接線,那正是最難查的一種。
Reviewed-on: #76
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
現行紀錄只記「被叫用」,欄位是 ts、cli、session、skill,沒有成敗也沒有
結束碼。跑完整輪的技能與開場就中止的技能,在紀錄裡長得一模一樣。hook
成功時更是完全不留紀錄,只有錯誤路徑會寫 wiki,而那條路徑刻意不自動觸發。

事件流走本機檔案,不直接寫 wiki。hook 每次提示都跑,網路寫入會拖垮宿主
CLI;失敗的 hook 自我回報還會疊出迴圈,既有的錯誤回報因此不接在失敗的
hook 上,這裡沿用同一條線。助理巡檢時排空、彙整、寫頁。

hook 端用 EXIT trap 接,一支只加一行。這幾支的 exit 點很多,階段閘門一支
就有五十幾個;逐點改要動到每一條判定路徑,而那些路徑正是閘門的判準,為了
加一行紀錄去動閘門,風險遠大於收益。trap 涵蓋每一條離開路徑,含中途失敗。

狀態預設由結束碼推,推不出來的由 hook 自己覆寫。相依版本檢查與兩道閘門有
這種情形:antigravity 走 deny JSON、kiro 只印警告,兩者擋下時結束碼都是 0,
單看結束碼會把擋下記成放行。

技能的 start 由既有的技能用量 hook 順手發,不必改任何技能文件。end 只能由
技能自己在收尾步驟寫——hook 觸發時技能的實際工作還在後面的模型輪次,看不到
成敗。有 start 沒有配對的 end,就是那一輪中止了。
Reviewed-on: #77
無人看管的輪次會在第一支腳本就被擋下,整輪還沒開始就結束。2026-09-02 到 09-03 以非互動模式比照排程環境實測七種寫法,結論很乾淨:權限層比對的是還沒展開的字面字串,帶變數或帶波浪號的路徑一律解不出來,一律要人核准;路徑中段的萬用字元也不匹配,所以帶版本號的快取路徑放不進允許清單。連 readlink、ls 這種只讀指令都要有自己的規則。放寬允許清單救不了這件事,只有把路徑寫成字面絕對值才跑得動。

技能因此多兩節。路徑守則寫明每一次腳本呼叫都要是字面絕對路徑,並說清楚為什麼不能為了可攜性換回變數寫法——變數寫法買不到可攜性,只買到一輪還沒跑到第一階段就死掉。前置步驟把可攜性挪到執行期:兩個根目錄各以 readlink 解一次,只在這裡解,之後不重解,也不為此新增腳本。主代理人解完把兩條字面路徑交給每一個 sub agent,sub agent 自己不解。技能內九處腳本呼叫都改成由這兩個根目錄開頭。

兩條 readlink 各自在同一步用 [ -d ] 查過印出來的目錄真的存在。JSC_HOME 沒設時第一條會印出 /current、結束碼 0,非空又是絕對路徑,只查前三項擋不下來。

解兩個根目錄不是重複。連結農場根目錄給跨 domain 呼叫用;jsc-hooks 的實體根目錄只給接線腳本用,而這一條的理由與權限無關:那支腳本從自身位置推出自己的根目錄,又會改寫自己正踩著的那條連結。走連結跑下去,連結會被指向自己,全機器的 hook 一起失效——這件事實際發生過。

存放庫自帶的 hook 設定檔刻意保留變數寫法,技能文件也把這個例外寫明。那是檔案內容,由 hook 自己的 shell 在執行當下展開,不經過權限層,也不是誰在提示裡打出來的路徑;改成實體路徑等於把某一台機器的路徑寫死進要發佈的檔案。

行為清單的 hooks-install 四列跟著校準。

受影響的是每一個跑 hooks-install 的人,最直接的是排程觸發、沒有人在旁邊核准的那些輪次。
行為清單檢查拿 HEAD 的內容跑就過不了,它點名 repair 那一列的可驗證跡象沒寫到收尾的 skill-end 事件。這是既有欠帳,跟這一批的路徑處理沒有關係,所以單獨一筆,之後要回退哪一邊都不會牽連另一邊。

補上的內容照準則寫:收尾在本機事件流留下這一輪的 skill-end,status 從 ok、blocked、failed、degraded、aborted 五個裡取一個,中途停下的那幾輪也照寫——只有 start 沒有配對的 end,會被讀成中斷。

受影響的是驗收 repair 有沒有跑完的人,還有把行為清單檢查掛在流程裡的每一個存放庫。
hooks-install 的路徑處理與行為清單都變了,版號要帶得出這批變更,版本前置檢查才會要求機器端更新。

三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位,內容一致。

受影響的是靠版號判斷要不要更新的每一台機器。
Reviewed-on: #80
admin approved these changes 2026-09-03 03:17:11 +00:00
admin merged commit 7b17c5e4f8 into master 2026-09-03 03:17:13 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/hooks#81