fix/attended-root-resolve-carries-its-default
develop
start
~/.jsc
skills/assistant/SKILL.md
references/behaviors.md
技能只有一條路讓人在現場的叫用取得根目錄:
readlink -f "$JSC_HOME/current"
旁邊那句話說它「covers the documented ~/.jsc fallback in the same call」。殼並不知道那個變數的文件預設值是什麼。 變數沒設時這一行展開成 /current,不是退讓到家目錄底下,就只是一條錯的路徑。
/current
這台機器從頭到尾沒設過 JSC_HOME,.bashrc 裡也沒有。所以每一次人在現場叫用都停在第 0 步。
JSC_HOME
.bashrc
第 0 步的第四道檢查抓到了:/current 非空、是絕對路徑、結束碼 0,前三項全過,只有 [ -d ] 攔得住。
[ -d ]
但它接著開的藥方是「回報根目錄不見了、叫人跑 jsc-cli:deploy」。實際上根目錄好好的——連結農場十一條齊全。壞的是解析式自己,而報出來的原因指向不相干的地方。
jsc-cli:deploy
一條不能信的解析式,長得跟一個不存在的根目錄一模一樣。
帶了預設值之後,變數沒設不再解成 /current。但那道檢查不能拿掉——交出一條看起來合理卻不存在的路徑,成因不只一種:
HOME
三種都一樣過得了前三道關。本文把這三種寫進去,免得下一輪有人看到「預設值已經涵蓋了」就把檢查刪掉。
references/behaviors.md 的關鍵步驟早就寫著帶預設值的形狀,是技能本文漂走了。而會被執行的是漂走的那一份。
這一次把兩份對齊,並把行為清單裡的事故記述改成過去式——它原本描述的是修好之前的行為,留著會讓下一輪有人照它重寫回錯的形狀。
第四列量的是 readlink -f "$JSC_HOME/current" 被擋下。那是量到的結果,不改寫。
新寫法一樣帶變數,無人值守一樣被擋,所以結論相同。表下面加了一段講明這件事:預設值改的是解析出哪一條路徑,不是誰可以跑它。 無人值守那一輪的根目錄照舊由裝排程的人寫進條目,這一行永遠只走人在現場那一路。
三種環境各驗一次:
/root/.jsc/current
lint-scripts.sh
check-behaviors.sh
ste100-lint.sh
check-skill-paths.sh
跑真機的第一次 start 踩到的。那一次的內建項對齊有跑完、種入 16 筆,巡檢因為上一輪還持著鎖而讓開——但在那之前,第 0 步就已經先停過一次了。
技能本文寫著那一行「涵蓋了文件記載的 ~/.jsc 退讓」,實際上沒有。JSC_HOME 沒設時 $JSC_HOME/current 展開成 /current,不是退讓到任何地方——殼並不知道 那個變數的文件預設值是什麼。解析式現在自己帶預設,退讓才真的發生。 這台機器從頭到尾沒設過那個變數,所以每一次人在現場叫用都停在第 0 步,而且 守衛開的藥方指向不相干的地方:它說根目錄不見了、叫人跑部署,但根目錄好好 的,壞的是解析式自己。排程那一路不受影響,條目自己帶著變數值。 目錄檢查留著,理由改寫進本文:解析式交出一條看起來合理卻不存在的路徑, 不是只有變數沒設一種成因——變數指到已經刪掉的目錄、精簡環境裡連家目錄都 沒設、連結農場根本還沒部署,三種都一樣過得了前三道關。 行為清單那一份早就寫對了,是技能本文漂走。這一次把兩份對齊,並把事故記述 改成過去式,免得下一輪有人照著它重寫回錯的形狀。 實測表第四列不動:那是量到的結果,而且新寫法一樣帶變數、無人值守一樣被擋, 另外加一段講明預設值改的是解析出哪條路徑,不是誰可以跑它。 三份 manifest 版號 0.2.0 升到 0.2.1。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
摘要
start時,技能第 0 步解不出工具根目錄,操作停在那裡。技能本文寫著那一行「涵蓋了文件記載的~/.jsc退讓」——實際上沒有。這張把預設值寫進解析式,讓那句話成立。變更內容
skills/assistant/SKILL.mdreferences/behaviors.md這一行為什麼是壞的
技能只有一條路讓人在現場的叫用取得根目錄:
旁邊那句話說它「covers the documented
~/.jscfallback in the same call」。殼並不知道那個變數的文件預設值是什麼。 變數沒設時這一行展開成/current,不是退讓到家目錄底下,就只是一條錯的路徑。這台機器從頭到尾沒設過
JSC_HOME,.bashrc裡也沒有。所以每一次人在現場叫用都停在第 0 步。守衛擋對了,但指錯方向
第 0 步的第四道檢查抓到了:
/current非空、是絕對路徑、結束碼 0,前三項全過,只有[ -d ]攔得住。但它接著開的藥方是「回報根目錄不見了、叫人跑
jsc-cli:deploy」。實際上根目錄好好的——連結農場十一條齊全。壞的是解析式自己,而報出來的原因指向不相干的地方。一條不能信的解析式,長得跟一個不存在的根目錄一模一樣。
目錄檢查留著,理由改寫過
帶了預設值之後,變數沒設不再解成
/current。但那道檢查不能拿掉——交出一條看起來合理卻不存在的路徑,成因不只一種:JSC_HOME指到已經刪掉的目錄HOME都沒設三種都一樣過得了前三道關。本文把這三種寫進去,免得下一輪有人看到「預設值已經涵蓋了」就把檢查刪掉。
兩份文件本來就不一致
references/behaviors.md的關鍵步驟早就寫著帶預設值的形狀,是技能本文漂走了。而會被執行的是漂走的那一份。這一次把兩份對齊,並把行為清單裡的事故記述改成過去式——它原本描述的是修好之前的行為,留著會讓下一輪有人照它重寫回錯的形狀。
實測表那一列不動
第四列量的是
readlink -f "$JSC_HOME/current"被擋下。那是量到的結果,不改寫。新寫法一樣帶變數,無人值守一樣被擋,所以結論相同。表下面加了一段講明這件事:預設值改的是解析出哪一條路徑,不是誰可以跑它。 無人值守那一輪的根目錄照舊由裝排程的人寫進條目,這一行永遠只走人在現場那一路。
測試結果
三種環境各驗一次:
[ -d ]JSC_HOME沒設/root/.jsc/currentJSC_HOME設成正確值/root/.jsc/currentJSC_HOME指到不存在的路徑lint-scripts.sh、check-behaviors.sh、ste100-lint.sh三支都回結束碼 0。check-skill-paths.sh零缺失。這件事是怎麼被發現的
跑真機的第一次
start踩到的。那一次的內建項對齊有跑完、種入 16 筆,巡檢因為上一輪還持著鎖而讓開——但在那之前,第 0 步就已經先停過一次了。前置 Push Request