Skip to content

process-attachments.sh 不支援 --cwd,cross-repo invocation 下對錯的 repo 查 issue(附件檢查靜默失效) #325

Description

@kiki830621

Problem

scripts/process-attachments.sh 不吃 --cwd,所以在 cross-repo invocation 下會從 session cwd 推導 target repo,對錯的 repo 查 issue。

實際觀測(2026-08-18,/idd-all #383 --cwd <path-to-local-clone>,session cwd 在另一個不相關的 repo):

$ IDD_CALLER=idd-diagnose bash scripts/process-attachments.sh download 383
GraphQL: Could not resolve to an issue or pull request with the number of 383. (repository.issue)

$ IDD_CALLER=idd-close bash scripts/process-attachments.sh verify 383
✗ Cannot resolve target repo. Pass --repo owner/repo or run from inside an idd-config'd repo.

兩次都不是 #383 真的不存在,而是 helper 找錯了 repo。

Type

bug

Root cause(初判,待 diagnose 確認)

idd-diagnose / idd-implement / idd-close 三個 skill 都已支援 --cwd,且各自的文件明寫 substitution rule(見 references/cross-repo-cwd.md):

  • git Xgit -C "$CWD" X
  • gh issue/pr/repo Xgh ... X -R "$GITHUB_REPO"

但那條規則作用於 skill 內的 bash 範例,管不到被呼叫的 helper script。三個 skill 呼叫 helper 的方式都是:

IDD_CALLER=idd-diagnose bash $CLAUDE_PLUGIN_ROOT/scripts/process-attachments.sh download $NUMBER

——$CWD 沒有被傳進去。helper 於是自己走 walk-up config / git remote 偵測,落在 session cwd 上。

Expected

helper 接受 --cwd <path>(或 --repo owner/repo),三個呼叫端把已解析的 $CWD / $GITHUB_REPO 傳下去,cross-repo invocation 下能對正確的 repo 查 issue 與抓附件。

Actual

helper 對錯的 repo 查詢。三種 exit path 都受影響:

呼叫端 Step 觀測到的後果
idd-diagnose 1.5 download 回 GraphQL not-found,寫不出正確 manifest
idd-implement 1.2 check 同源,manifest 對不上
idd-close 1.4 verify Cannot resolve target repo,gate 無法判讀

Impact — 為什麼這比它看起來嚴重

單獨看是小事#383 本來就沒有附件,所以無實害)。但這個缺口踩到了 IDD 自己的一條鐵律:

idd-diagnose Step 1.5 明文寫著——

忽略附件 = 忽略來源,違反鐵律。

idd-close Step 1.4 的 verify 是用來擋「closing comment 引用了已失效的 attachment path」。在 cross-repo 情境下,這兩道都變成結構上跑不到,且失敗方式是看起來像沒附件,而不是明顯報錯。

換言之:一個附件的 issue,用 --cwd/idd-all,會安靜地走完整條 pipeline 而完全不處理附件——沒有任何一步會說「我沒讀到你的附件」。這正是這類 helper 缺口最貴的地方。

順帶一提,#189 已經處理過 manifest 損毀時 verify 會 false-PASS exit 0 的問題;本 issue 是同一條線上的另一個 false-negative 入口。

建議修法(供 diagnose 參考)

  1. helper 加 --cwd / --repo 參數,優先序高於自動偵測
  2. 三個呼叫端把已解析值傳下去
  3. 順帶考慮:偵測不到 repo 時,helper 目前 download 回 exit 0(配 GraphQL 錯誤訊息),verify 回非零。兩者對「無法判定」的處理不一致——照 #189 的教訓,無法判定不該當成 PASS

Source: residue from PsychQuant/che-apple-mail-mcp#383 at /idd-close time (Step 3.6)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions