Unable to create ORIG_HEAD.lock: File exists. Another git process seems to be running
cannot lock ref 'refs/remotes/origin/master': is at d5c4f92 but expected e77c0af
fatal: Need to specify how to reconcile divergent branches
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
這一批修兩件事,同一輪實測踩到、同一個根因
剛才那一輪部署,claude 與 codex 的
result都是fail——而五支 CLI 的外掛全部裝好了。一、五支平行跑,卻搶同一份本機複本
那一份複本一台機器只有一份(
$JSC_LOCAL_PLUGINS,預設$JSC_HOME/plugins),而技能規定五支平行。平行本身是對的:它們寫的是不同的外掛目錄。但複本不是。而且不只 antigravity 與 kiro 會碰它——
check-requires.sh從那裡讀每個 domain 的 manifest,所以五支都會 pull 同一批目錄,一輪 55 次。實測撞出來的三個訊息:
改成 一個 domain 一把
mkdir鎖——那是檔案系統這一層唯一原子的建立動作,兩支同時mkdir只有一支成功。等不到就印warn改用磁碟上的內容:別人正在拉同一份,硬等只是排隊。上一輪中途死掉留下的鎖用年紀判,門檻放寬到等待秒數的四倍。複本已經在磁碟上而
pull拉不動的那一種也改成只印warn、不判整輪失敗。 內容在,只是可能比遠端舊。但一定要印出來——安靜地裝一份舊內容是這一組工具最怕的失效。clone不存在那一種照舊算失敗:磁碟上根本沒東西可裝。二、失敗那條路徑把重啟閘門一起跳過了
原本是這樣寫的:
於是那一輪的
fail(原因是一條與部署無關的git pull)讓 claude 沒有被掛上重啟閘門。五支裡四支有,唯一沒有的,剛好是正在跑那份剛被換掉的程式碼的那一支。一道只在成功時才生效的提醒,在最需要它的那一次不會出現。
部分失敗代表磁碟上的外掛已經換了一部分,這時候更需要重啟,不是更不需要。改成
install與update一律先掛,再判result。順帶
clip1:截訊息長度用的cut -c數的是位元組,多位元組字被切成兩半會留一個替代字元。截完過一次iconv -c。pull,這一版修回來了。實測
-n update claude jsc-assistgit pull印exit -,沒有真的執行;跑完沒有留下任何.lock-*lint-scripts10 支、check-behaviors5 支、ste100-lint全 0邊界
真正的併發整合路徑這一輪沒有再實跑一次——那要再部署五支 CLI。鎖的邏輯是抽出來單獨驗的,乾跑驗過不會動任何東西。下一次真的部署就是它的第一次實測,那一輪的
warn行數是要看的指標。技能本文與行為清單都跟著改了:
warn多一種語意(本機複本這一輪沒有重新拉取),重啟閘門那一段寫明「整輪判定成 fail 也照寫」,並把這一次的實測寫進理由。