釋出:委派清單記下唯讀盤點的實際指令,並新增腳本路徑檢核 #76

Merged
admin merged 11 commits from develop into master 2026-09-04 03:37:40 +00:00
Member

摘要

  • 需求描述:把 develop 累積的變更釋出到 master。deploy.sh clone 的是預設分支,所以沒進 master 的東西這台機器上一輪都用不到。這一批的主軸是「委派清單記得下唯讀盤點的實際指令」,外加一支新的機械檢核。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

這一批的內容

變更 為什麼
委派清單新增第十二欄 probe 記某一支技能的唯讀盤點實際跑哪一行指令。三種寫法:一行帶代入點的指令、pending:{理由}、減號
十九項逐項回存放庫核對 不照技能文件的措辭抄。核出四支真的接得上、七支寫 pending、其餘填減號
worklog 那一格再修一次 實測跑過才發現填的子命令那支腳本根本沒有,改成 pending。最後是指令型三筆、pending 八筆
新增 tools/check-skill-paths.sh 判文件裡寫的腳本路徑解不解得出來,三種判定
skill-check 第一組接上那支檢核 檢核腳本沒人叫等於不存在

版號 0.3.4 到 0.3.7。

逐項核對攔下來的兩件事

一、抄來的子命令會讓巡檢無限卡死。 技能文件點名的那個子命令,實測在標準輸入是無盡流時會一直等(逾時碼 124),換成同一支腳本的另一個子命令才回 0。那支腳本自己的註解就記著這個坑。照文件措辭填的話,種出來的內建項會在無人值守的巡檢裡永遠卡住,沒有錯誤也沒有輸出。

二、抄來的子命令根本不存在。 跑起來是用法錯誤、結束碼 2。種入那一支只驗腳本檔案在不在,不驗子命令,所以那一筆會當成真指令種進待辦簿,每輪失敗一次,而那一輪沒有人在看。

清單檔頭因此補了一句:這一欄填之前一定要真的跑一次。兩種都不會在種入那一刻報錯。

新檢核補的那道縫

lint-scripts.sh 掃的是目錄裡的檔案,它證明得了「這個存取庫裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。

例行稽核本來就有一項要人確認本文點名的腳本,但那一項的前提寫著「腳本存在已經證明過了」,於是人去看目錄底下有沒有那個檔名——有,就過了。覆核的問題本身問錯了,所以錯幾次都不會被發現。

三種判定裡只有「指到不存在的檔案」算缺失。不帶 domain 名的寫法全套技能組有三百多處,判成缺失會讓每個存取庫同時亮紅,而一份全紅的報告跟沒有報告一樣。

測試結果

  • 六支檢核對這個存取庫全回結束碼 0:lint-scripts、lint-frontmatter、check-behaviors、ste100-lint、check-link-format、check-delegate。
  • check-skill-paths.sh 自己:七種判定情境逐一驗過,結束碼 0、1、2、3 四條路各驗一次,對十二個存取庫全掃一輪零缺失。
  • 上線第一次跑就抓到另一個存取庫真的漏改一半,已在那一邊補上。
  • 合併 develop 時的衝突是拿 merge-base 逐行比對解的:兩邊改了行為清單同一行的不同地方,取任一邊都會弄丟另一邊,所以合起來留。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 develop 累積的變更釋出到 master。`deploy.sh` clone 的是預設分支,所以沒進 master 的東西這台機器上一輪都用不到。這一批的主軸是「委派清單記得下唯讀盤點的實際指令」,外加一支新的機械檢核。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 這一批的內容 | 變更 | 為什麼 | | --- | --- | | 委派清單新增第十二欄 `probe` | 記某一支技能的唯讀盤點實際跑哪一行指令。三種寫法:一行帶代入點的指令、`pending:{理由}`、減號 | | 十九項逐項回存放庫核對 | 不照技能文件的措辭抄。核出四支真的接得上、七支寫 `pending`、其餘填減號 | | `worklog` 那一格再修一次 | 實測跑過才發現填的子命令那支腳本根本沒有,改成 `pending`。最後是指令型三筆、`pending` 八筆 | | 新增 `tools/check-skill-paths.sh` | 判文件裡寫的腳本路徑解不解得出來,三種判定 | | `skill-check` 第一組接上那支檢核 | 檢核腳本沒人叫等於不存在 | 版號 0.3.4 到 0.3.7。 ## 逐項核對攔下來的兩件事 **一、抄來的子命令會讓巡檢無限卡死。** 技能文件點名的那個子命令,實測在標準輸入是無盡流時會一直等(逾時碼 124),換成同一支腳本的另一個子命令才回 0。那支腳本自己的註解就記著這個坑。照文件措辭填的話,種出來的內建項會在無人值守的巡檢裡永遠卡住,沒有錯誤也沒有輸出。 **二、抄來的子命令根本不存在。** 跑起來是用法錯誤、結束碼 2。種入那一支只驗腳本檔案在不在,不驗子命令,所以那一筆會當成真指令種進待辦簿,每輪失敗一次,而那一輪沒有人在看。 清單檔頭因此補了一句:這一欄填之前一定要真的跑一次。**兩種都不會在種入那一刻報錯。** ## 新檢核補的那道縫 `lint-scripts.sh` 掃的是目錄裡的檔案,它證明得了「這個存取庫裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。 例行稽核本來就有一項要人確認本文點名的腳本,但那一項的前提寫著「腳本存在已經證明過了」,於是人去看目錄底下有沒有那個檔名——有,就過了。**覆核的問題本身問錯了,所以錯幾次都不會被發現。** 三種判定裡只有「指到不存在的檔案」算缺失。不帶 domain 名的寫法全套技能組有三百多處,判成缺失會讓每個存取庫同時亮紅,而一份全紅的報告跟沒有報告一樣。 ## 測試結果 - 六支檢核對這個存取庫全回結束碼 0:`lint-scripts`、`lint-frontmatter`、`check-behaviors`、`ste100-lint`、`check-link-format`、`check-delegate`。 - `check-skill-paths.sh` 自己:七種判定情境逐一驗過,結束碼 0、1、2、3 四條路各驗一次,對十二個存取庫全掃一輪零缺失。 - 上線第一次跑就抓到另一個存取庫真的漏改一半,已在那一邊補上。 - 合併 develop 時的衝突是拿 merge-base 逐行比對解的:兩邊改了行為清單同一行的不同地方,取任一邊都會弄丟另一邊,所以合起來留。 ## 前置 Push Request - 無
jiantw83 added 11 commits 2026-09-04 03:34:55 +00:00
切片交的那幾支,助理現在只會提醒不會動手,因為沒有東西記得下「那一段唯讀盤點到底要跑什麼」。清單加第十二欄記具體指令,種入那一支有值就拿它當動作、沒值才退回只提醒。

只認三種寫法。一行指令,路徑一律寫成代入點開頭,由種入那一支代進字面絕對根目錄;指令裡不可以出現金錢符號或波浪號,那兩種在無人值守那一輪解不出來也進不了允許清單,會被靜靜擋掉。要標未接線就寫理由,留白的話下一輪分不出是刻意還是漏填。沒有唯讀入口的寫減號。

觸發型與不交的列一律填減號。觸發的意思是呼叫整支技能,這一欄填了指令會讓種入那一支改拿指令當動作,於是整支交出降級成只跑一支腳本,該寫的頁一頁都不會寫,而且看起來完全正常。這條由檢核腳本擋。

逐項回各存放庫核對,不照抄既有盤點的措辭,因而抓到五處對不上實際腳本的地方。

最要緊的一處:既有盤點點名的那支工具腳本要三個參數,其中兩個無人值守那一輪根本拿不到,而且它是唯一會去問遠端的一方。改用同一件事的本機那一半,而那個子命令剛好在閘門腳本「免讀標準輸入」的清單裡。這一點非確認不可:同一支腳本的另一個子命令不在那份清單上,標準輸入是管線又沒人關閉時會一直等,實測會無限卡住。腳本自己的註解就記著這個坑,說工具腳本轉呼叫時曾經整支卡死——那正是先前心跳斷掉的同一種死法。

另一處:既有盤點點名的同步子命令會寫檔,不是唯讀。那一列剛好是觸發型所以填減號、衝突沒落地,但措辭本身是錯的。

七項標成未接線,理由都是要連網要金鑰。連網那一種一過期就讓那一項每輪失敗,或每輪靜靜回報沒事——後者更難查;而純本機讀取本來一輪都不會失敗。先填會連網的,等於用一批每輪報錯的項目把真的發現蓋掉。

還記下一件接線那天要注意的事:查遠端版本那一支永遠回成功,查不到就安靜放行,所以金鑰失效時它會靜靜回報沒有新版。接線要用另一個子命令,那個有「查不出來」這第三種結論。

檢核腳本從四項檢查改成五項。填錯欄位、指到不存在的腳本、用了認不得的代入點都算缺失;標未接線只印提示,那是判過知道還沒接,不是漏填;指到的 domain 本機沒裝也只提示,那是機器少裝一套不是清單填錯,算缺失會讓半套機器每輪亮紅。

五支技能異動流程一併改:寫清單時要問到並寫下這一欄,重判時要一併重問,刪除時要檢查別列有沒有指到一起刪掉的腳本,一次改多支時要注意跨存放庫搬腳本是這一欄最容易過期的地方。
Reviewed-on: #73
實測跑過那一行才發現 worklog-pending.sh 沒有 orphans 這個子命令,跑起來
是用法錯誤、結束碼 2。那支腳本七個子命令全部要先給工作階段雜湊,沒有不帶
參數的盤點入口,掃不出「該寫沒寫」的那幾筆,所以改填 pending 並寫明理由。

檔頭補一句:這一欄填之前一定要真的跑一次,不能照技能文件的措辭抄。同一份
清單上已經踩過兩次——一次是子命令根本不存在,一次是子命令會在標準輸入沒人
關閉時無限等待。兩種都不會在種入那一刻報錯,要等無人值守那一輪才發作,而
那一輪沒有人在看。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lint-scripts.sh 掃的是 tools/ 與 hooks/ 目錄裡的檔案,它證明得了「這個存取庫
裡有這支腳本」,卻證明不了「文件裡寫的那條路徑解得出那支腳本」。兩件事差
很遠,而中間那道縫剛好放得下一整類缺失。

2026-09-04 實際踩到:一份技能本文把自家腳本寫成不帶前綴的相對路徑,而那支
技能的基底目錄是 skills/{名稱}/,照字面解出來的位置沒有那個檔案,結束碼 127。
人工覆核看的是「tools/ 底下有沒有這支」,有,於是每一輪都過。覆核的問題本身
問錯了,所以錯幾次都不會被發現。

三種判定:指到不存在的檔案算缺失;不帶 domain 名但檔案在這個存取庫底下只算
提示;跨 domain 而那個存取庫不在這台機器上也只算提示。中間那一種為什麼不算
缺失——全套技能組有三百多處那樣寫,判成缺失會讓每個存取庫同時亮紅,而一份
全紅的報告跟沒有報告一樣。先量出來、指得出是哪幾行,改不改由人決定。

跨 domain 的路徑靠 plugins-root.sh 找別的存取庫,推不出來的那幾筆印成提示,
不當缺失:這台機器沒裝,跟路徑寫錯,是兩件事。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
檢核腳本沒人叫等於不存在,所以同一批把它接進第一組、接進步驟六的複跑,也
接進完成條件。

它擺在原本那一項的前面,而原本那一項正是抓不到這類缺失的理由:那一項要人
確認「本文點名的每一支腳本,呼叫端有沒有分流它宣告的每一個結束碼」,前提
寫著「lint-scripts.sh 已經證明腳本存在」。人照著讀,就會去看目錄底下有沒有
那個檔名,而不會去問那條路徑解不解得出來。這一段理由寫進了新那一項的本文,
免得下一輪有人把兩項看成重複的而刪掉一項。

unrooted 與 unknown 兩種提示明寫不得升級成決策樹項目。整套技能組有三百多處
不帶 domain 名的寫法,一次全變成待決議項會把真的缺失蓋掉——比照委派清單檢核
的待複核與版本落後那兩種提示,同樣的處置。

三份 manifest 版號從 0.3.4 升到 0.3.6,跳過中間那一號留給還沒合併的另一張。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
上一輪的清單修正沒趕上合併,這一筆帶著它重新送出。清單是隨外掛一起發佈的
資料檔,助理讀它決定要種哪幾筆內建項,所以內容變了版號就要動——安裝端靠
版號才知道要重新取一次。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
0.3.6 讓給另一張還沒合併的清單修正。那一張要緊——它拿掉一個會讓內建項每輪
失敗的值,該先走;這一張是新增檢核,晚一步沒有代價。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #75
三份 manifest 取分支上的較高版號:develop 那邊到 0.3.6,這條分支本來就是為了
讓開那一號才升到 0.3.7,取低的等於把版號往回退。

行為清單第 10 行兩邊各改了同一行的不同地方,合起來留:develop 加的是委派
清單檢核多判一種填錯的 probe、以及修法要回該技能的存取庫核對過再改寫;這條
分支加的是第一組多跑一項腳本路徑檢查。兩件事互不相干,取任一邊都會弄丟另
一邊。外部呼叫那一行 develop 沒動過,直接取分支上的。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reviewed-on: #74
admin approved these changes 2026-09-04 03:37:37 +00:00
admin merged commit 3514b29d6b into master 2026-09-04 03:37:40 +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/meta#76