票上回碼解的保險寫回專案根,出貨線讀得到(inkstone/ISEP#156) #157

Merged
claude-code merged 1 commits from fix/156-armed-lands-in-project into main 2026-09-18 05:16:21 +00:00
Member

Closes inkstone/ISEP#156

改了什麼

scripts/gitea-arm-to-github-armed.sh.github-armed 原本寫在「腳本所在的上一層」。plugin 發佈後,這個位置變成 ~/.claude/plugins/cache/inkstone/isep/<ver>/,出貨線讀不到(09-17 在 inkstone/arcrun-rag#202 c7598 實際撞到)。
現在改寫到 gitea_arm_proj_dir,也就是 ${CLAUDE_PROJECT_DIR:-$(pwd)}

  • 三支讀它的閘(main-and-prod-push-guard、github-contact-guard、stage-before-prod-guard)讀的是這個位置
  • ship.mjs 讀的 InkStoneCo/.github-armed 也在這裡
  • gitea-arm-check.sh 讀 token 和待核請求的位置同樣在這裡。專案根猜錯時,check 會先 fail-closed,不會寫到錯的地方

另外,擋下時印出的 gitea-arm-request.sh 改成絕對路徑,並多印一行保險實際寫到哪裡。

驗收(實跑)

bash hooks/tests/gitea-arm-to-github-armed.test.sh .通過 18 條,失敗 0 條;用修之前的腳本跑有 11 條紅

  • ① 從假的 plugin 快取路徑執行:專案根有保險,快取和 cwd 都沒有
  • d20-guard.mjscheckArmed(專案根) 讀得到,並回傳 mission=測試出貨 ISEP#156;讀 plugin 快取則失敗(對照組)。兩支閘在有保險時放行、沒有保險時擋下(對照組)
  • ③ 終端機沒設 CLAUDE_PROJECT_DIR 時,退回 cwd,和閘的規則一致
  • ④ 沒有核准時,哪裡都不會寫;印出的 request 路徑確實存在

鄰近測試 hooks/tests/gitea-arm-check.test.sh . 跑了 16 條,全部通過,沒有退步。

沒驗的

  • 沒有拿 leo 真的回碼端到端跑一次,因為那需要真人閘。核准本身由 gitea-arm-check.test.sh 和 InkStoneCo#34 的人工實測負責
  • ship.mjs --target prod 不帶 --confirm 的預演「不查保險」(ship.mjs:745),所以預演輸出無法證明它認得保險。我改成直接呼叫 preflight 實際用的 checkArmed

版本

待總管定版(改到 plugin 會載入的 scripts/)。

🤖 Generated with Claude Code

Closes inkstone/ISEP#156 ## 改了什麼 `scripts/gitea-arm-to-github-armed.sh` 的 `.github-armed` 原本寫在「腳本所在的上一層」。plugin 發佈後,這個位置變成 `~/.claude/plugins/cache/inkstone/isep/<ver>/`,出貨線讀不到(09-17 在 inkstone/arcrun-rag#202 c7598 實際撞到)。 現在改寫到 `gitea_arm_proj_dir`,也就是 `${CLAUDE_PROJECT_DIR:-$(pwd)}`: - 三支讀它的閘(main-and-prod-push-guard、github-contact-guard、stage-before-prod-guard)讀的是這個位置 - ship.mjs 讀的 `InkStoneCo/.github-armed` 也在這裡 - `gitea-arm-check.sh` 讀 token 和待核請求的位置同樣在這裡。專案根猜錯時,check 會先 fail-closed,不會寫到錯的地方 另外,擋下時印出的 `gitea-arm-request.sh` 改成絕對路徑,並多印一行保險實際寫到哪裡。 ## 驗收(實跑) `bash hooks/tests/gitea-arm-to-github-armed.test.sh .` → **通過 18 條,失敗 0 條**;用修之前的腳本跑有 **11 條紅** - ① 從假的 plugin 快取路徑執行:專案根有保險,快取和 cwd 都沒有 - ② `d20-guard.mjs` 的 `checkArmed(專案根)` 讀得到,並回傳 `mission=測試出貨 ISEP#156`;讀 plugin 快取則失敗(對照組)。兩支閘在有保險時放行、沒有保險時擋下(對照組) - ③ 終端機沒設 `CLAUDE_PROJECT_DIR` 時,退回 cwd,和閘的規則一致 - ④ 沒有核准時,哪裡都不會寫;印出的 request 路徑確實存在 鄰近測試 `hooks/tests/gitea-arm-check.test.sh .` 跑了 16 條,全部通過,沒有退步。 ## 沒驗的 - 沒有拿 leo 真的回碼端到端跑一次,因為那需要真人閘。核准本身由 gitea-arm-check.test.sh 和 InkStoneCo#34 的人工實測負責 - `ship.mjs --target prod` 不帶 `--confirm` 的預演「不查保險」(ship.mjs:745),所以預演輸出無法證明它認得保險。我改成直接呼叫 preflight 實際用的 `checkArmed` ## 版本 待總管定版(改到 plugin 會載入的 scripts/)。 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-09-17 11:59:52 +00:00
gitea-arm-to-github-armed.sh 原本用腳本自己的上一層決定 .github-armed 寫在哪;
plugin 發佈後那是 ~/.claude/plugins/cache/inkstone/isep/<ver>/,
於是保險寫進快取、印「已解」、ship.mjs 與各閘讀不到(arcrun-rag#202 c7598)。

改寫到 gitea_arm_proj_dir(${CLAUDE_PROJECT_DIR:-$(pwd)}),與
main-and-prod-push-guard/github-contact-guard/stage-before-prod-guard 讀的位置、
以及 check 自己讀 token/待核請求的位置一致。擋下時印的 request 路徑改絕對路徑。

測試:hooks/tests/gitea-arm-to-github-armed.test.sh 18/18;修之前 11 條紅。
TESTING.md 補 A42。版本待總管定。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
claude-code merged commit 221d3788c5 into main 2026-09-18 05:16:21 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: inkstone/ISEP#157