• v0.7.0 a4eb17df48

    claude-code released this 2026-08-27 12:32:19 +00:00 | 62 commits to main since this release

    這一版補上一道以前抓不到的破口:總管整個回合都在查東西、卻沒推進任何主線

    你會看到什麼不一樣

    • 以前兩支閘一支判「有沒有動作」、一支判「有沒有說出下一步」——只要不說那句話又一直查東西,兩支都放行。現在多一支判「主線動了沒」
    • 它判的是結果不是工具名:工作區指紋變了就算推進,所以 heredoc、sed 改檔也認得
    • 不會懲罰誠實對話:門檻拿 1965 個真實回合重放量出來,誤攔 1 次;≤2 個動作的回合完全不計;擋過一次就門檻加倍,不可能鎖死
    Downloads
  • v0.6.1 736a601589

    claude-code released this 2026-08-27 10:40:01 +00:00 | 64 commits to main since this release

    這一版讓「有哪些閘在管我」這件事,不用點開任何 .sh 就看得到。

    你會看到什麼不一樣

    • 盤點表補回漏掉的兩支:milestone-due-guard.sh(建里程碑沒填期限就擋,填 9999-01-01 一樣擋)與 isep-presence-beacon.sh(對話開頭那行「🟢 ISEP 已載入」——它是唯一能證明這個 session 真的有閘的東西)
    • 跑測試不會再偽造出「有一筆推 main 在等你裁決」——之前那兩支測試會把待裁檔真的寫進工作區,真的請求會淹在假件裡

    總管自己驗過的:跑測試前後 git status 都是空的(13/13、19/0 通過);盤點表的標頭 48 對上實際 48 支 .sh。

    Downloads
  • v0.6.0 7795cd705a

    claude-code released this 2026-08-27 10:13:42 +00:00 | 69 commits to main since this release

    這一版把「棒子交出去之後會不會掉」從靠人記得,改成 Gitea 原生欄位記得。

    你會看到什麼不一樣

    • 子任務交回時會用相依、標籤、指派三格接手,不再靠一份會重生的本機清單
    • 移除了自造的待驗單機制:它今天在同一個 session 裡重生三次——同一批東西驗過了還會回來擋,因為那個機制沒有「已處理」這個狀態
    • 派工單寫成規範裡的合格格式(帶全形括號的 (→ comment M)不會再被閘自己擋下來
    • 想繞過 scripts/ticket 在 Gitea 上新增東西的側門封上了——舊閘只認大寫 POST,打不中 urllib 的隱式 POST

    已知還紅的(不是這版造成的)main-and-prod-push-guardprod-write-guardstage-before-prod-guard 三支測試在 main 上本來就紅,另案處理。

    Downloads
  • v0.5.0 8e28041ba4

    claude-code released this 2026-08-27 03:55:24 +00:00 | 81 commits to main since this release

    派工單只剩票號——閘從驗「有沒有票號」改成驗「是不是只有票號」。

    leo 2026-08-27:「這些話票上都沒有,你根本沒照規則做事,你的 hook 讓你這樣搞?

    任務只活在派工單裡,那條線被停掉或換人接手就消失。所以票號以外的東西一律要先寫上票。

    • dispatch-format-guard.sh — 派工單多寫任何一行都擋,並印出多餘的內容方便直接貼上票 19/19
    • reply-identity.sh — subagent 交件回覆要表明身份 11/11
    • 兩支都涵蓋「該擋」與「不該擋」兩側;訊息點得出違反哪一條規則,不是籠統的「格式不對」

    🔴 有一格是 report 不是 deliver:「新 session 真的會叫它」要併版後開新 session 才驗得了。

    📌 inkstone/ISEP#30|版本 0.3.9 → 0.5.0


    ⚠️ 這兩個 release 是 2026-08-27 下午補建的。 tag 早就推上來了,
    沒有人建 release ⇒ releases 頁停在 v0.3.9 ⇒ 對 leo 等於這兩版不存在
    總管當天甚至查過 claude plugin list 顯示 0.3.8看到落差卻沒去追為什麼
    leo:「你看到版本不對不會發現你沒推版本嗎?
    ⇒ 記在這裡:tag 不是 release。打了 tag 只是 commit 有了名字,不是交貨。

    Downloads
  • v0.4.0 8e7e265589

    claude-code released this 2026-08-26 14:43:34 +00:00 | 83 commits to main since this release

    leo 被打擾的那一刻,閘要在場。

    以前那些警察都掛在「收工」那一刻(Stop hook)——可是 leo 是在被問到的當下被打擾的,
    等收工才提醒,人早就被叫住了。這一版把攔截點搬到那一刻本身。

    • 掛點:PreToolUse / matcher AskUserQuestion
    • 封動作不封文字:整支 261 行零個判擋用的正則,決定擋不擋的只有判官的 verdict;
      判官掛掉/回空/不在 PATH 一律 fail-open(不會因為它自己壞掉而卡住工作)
    • 測試 14/14,含「樹要不要捲」那種真人閘必須放行的案例

    🔴 有一格是 report 不是 deliver:「新 session 真的會叫它」驗不到——
    AskUserQuestion 官方明載 subagent 不可用,它撞不到自己這道閘。那一格要開新 session 才驗得了。

    📌 inkstone/InkStoneCo#55|版本 0.3.9 → 0.4.0(產物按版本號分資料夾,不升版新閘不會被載入

    Downloads
  • v0.3.9 d4547bfec3

    ISEP v0.3.9 Stable

    claude-code released this 2026-08-23 13:03:38 +00:00 | 85 commits to main since this release

    修了什麼

    開場信標現在會自己講「這一份是誰」。

    同一台機器上 ISEP 可能有兩份——marketplace 裝的 plugin 快取,與 repo 裡 vendor 進去的複製本。兩份都會印信標,版本號一樣時分不出誰在說話。而「閘從哪一份走」正是決定「另一份能不能拆」的唯一判準。

    🟢 ISEP v0.3.9 已載入(42 支閘|來源:plugin(marketplace 裝的)|/root/.claude/plugins/cache/...)
    🟢 ISEP v0.3.9 已載入(42 支閘|來源:vendor(repo 裡的複製本)|/home/user/inkstoneco/.claude/isep)
    

    順帶更正一個壞掉的判準

    上一版建議用 env | grep CLAUDE_PLUGIN_ROOT 分辨——那個探針從一開始就答不了這題:那個變數是 hook 呼叫當下才注入的,在 Bash 工具的 env 裡本來就看不到 ⇒ 空輸出不代表沒載入

    實測三向

    /root/.claude/plugins/cache/inkstone/isep/0.3.9  → 來源:plugin(marketplace 裝的)
    /home/user/inkstoneco/.claude/isep               → 來源:vendor(repo 裡的複製本)
    其他路徑                                          → 來源不明(不假裝知道)
    
    Downloads
  • v0.3.8 1b95388a0f

    ISEP v0.3.8 Stable

    claude-code released this 2026-08-23 09:58:54 +00:00 | 87 commits to main since this release

    修了什麼

    factory-idle-guard 改成擋「宣告」而不是「提到宣告」。

    舊版對「下一步」三個字無條件命中——三個群組全 optional、\s* 吃換行、negative lookahead 只擋字面「不是宣告」四個字。結果它連續咬了三種本來就不該咬的東西:

    • 「那句是等你,不是我的下一步」──在否認自己有下一步
    • 「這不是『下一步我要做 X』」──引用閘自己的訊息來說明沒在做
    • 貼出閘自己的正則原始碼來舉報這個 bug

    而它訊息裡教人走的「選項③:改寫那句話說明它在等什麼」,程式碼裡根本沒有對應分支——訊息與行為不一致。

    這一版的改法

    • 主詞檢查:「下一步…」是在交代 leo 該做什麼,不是我的宣告 ⇒ 放行
    • 出路③ 真的存在了:用 ⏸ 等: 標記說明在等什麼即放行;拿掉標記就照樣擋(不准靠刪掉那句話矇混)
    • 票號放行改回 locality:等長哨兵替換,位移能對回原文 ⇒ 不再「整篇任何地方有票號就放行」
    • 出路④:這個回合收尾在動作上(最後一個工具呼叫之後沒有文字)

    實測(總管從遠端 clone 出 PR head 自己跑,不是收工方的工作目錄)

    新版 v0.3.8   通過 33 / 失敗 0
    舊版 v0.3.6   通過 24 / 失敗 9    ← 反向對照組,證明測試有能力變紅
    
    Downloads
  • v0.3.6 5789f0a917

    ISEP v0.3.6 Stable

    claude-code released this 2026-08-23 09:30:25 +00:00 | 90 commits to main since this release

    修了什麼

    開場信標改數「真的被註冊的閘」。舊版用 ls hooks/*.sh | wc -l,把 pre-write-guard.template.sh(樣板,不是閘)與兩支沒掛註冊的輔助檔算進去 ⇒ 報 45,hooks.json 實際註冊 42。

    🔴 那一行是判斷「這個 session 到底有沒有閘」的唯一介面——多報就是假綠

    實測兩向:正向 42(與註冊數一致)/反向(假根目錄含一個 .template.sh)報 2 不是 3。

    Downloads
  • v0.3.5 a446ad6d1d

    ISEP v0.3.5 Stable

    claude-code released this 2026-08-23 09:30:25 +00:00 | 92 commits to main since this release

    修了什麼

    推 main 的戳記改綁「push 真正的目標 repo」,不再綁 hook 自己的 cwd——站在 A repo 要推 B repo 的 main 時,舊版無論如何都過不了。

    順手補掉一個真的洞(git push origin HEAD:main) 只要包一層括號,舊版就整段放行。實測(含反向對照組):

    ══ 0.3.4 ══                    ══ 0.3.5 ══
    git push … HEAD:main    擋住     擋住
    (git push … HEAD:main)  放行←洞  擋住
    git push … feat/x       放行     放行  ← 沒變嚴
    
    Downloads
  • v0.3.2 1920d4cb06

    claude-code released this 2026-08-20 17:12:07 +00:00 | 100 commits to main since this release

    雲端環境這條線通了。 leo 在雲端 session 實測看到 🟢 ISEP v0.3.2 已載入(44 支閘)——那個 session 不是零閘狀態。

    這一版換掉了整條路線

    不再走 marketplace,改成把 ISEP 整份複製進薄殼 repo(leo 2026-08-21 拍板:「你應該把 Plugin 直接裝進 Github repo,從本地直接複製就好了」)。

    為什麼換:查官方文件查出兩件事,兩件都是前一版蓋在錯誤假設上——

    假設 官方原文 後果
    setup script 讀得到 Environment variables 「Each session copies the environment's values once, at startup」,而 setup script 是「before Claude Code launches」跑的 永遠讀不到 token,token 放錯地方
    失敗就 exit 1 大聲喊 Exit zero: if the script exits non-zero, the session fails to start 直接把 leo 鎖在門外

    ⇒ 走 marketplace 要同時處理憑證、repo 可見性、環境快取三件事,這三件當天各失敗過一次。
    複製進 repo 之後,clone 下來就有,零前置條件。

    內容

    • 新增 scripts/vendor-to-shell.py:複製 hooks/skills/commands/scripts 到 .claude/isep/,54 條 hook 註冊改寫成絕對路徑
    • docs/cloud-setup-script.sh 一律 exit 0ls-remotetimeout 45
    • TESTING.md B4 的探針換掉——舊的用 /tmp/x.md,而 credential-only-guard 刻意豁免 .md ⇒ 實撞 exit 0,閘完全沒反應
    • wiki-first-search.shpython3 -c 用雙引號,註解裡的反引號被 shell 當指令替換 ⇒ 這支閘每次觸發都在偷跑 bge-m3head changelog.md

    驗過什麼

    薄殼 clone 裡 54 條註冊全跑    → 0 條路徑壞掉
    違規 workflow.yaml 帶佔位符    → exit 2  🔒 credential 鐵律攔截
    信標                          → 🟢 ISEP v0.3.2 已載入
    雲端真 session(leo 實測)      → 有信標、44 支閘、非零閘
    sdd-guard 三向(另一條線)      → 兩份 active exit 2/一份 exit 0/零份 exit 2
    

    一則自省

    當天同一個病發作五次:在保證會成功的條件下驗證。三個假綠探針/在自己 HOME 測安裝/「隔離 HOME」沒隔離系統層 keychain/B4 用被豁免的副檔名/用非 git 目錄測 sdd-guard。

    最後一次在下結論前抓到了,靠的是同一招:先讓測試失敗一次,證明它有能力變紅,再看它變綠才算數。

    Downloads