Problem
Original text:
「兩張 issue 都開」
— Source: 使用者,2026-09-24(+08:00)對話——同意開「idd-issue 的 GraphQL mutation 名稱錯誤」這張 issue
idd-issue 的 --blocked-by 三層 fallback 中,Layer 1(GitHub 原生 dependency)用的 mutation 在 GitHub GraphQL schema 裡不存在:
mutation($i:ID!,$b:ID!){addBlockedByDependency(input:{issueId:$i,blockedByIssueId:$b}){issue{id}}}
實際名稱(2026-09-24 introspection 查證):
$ gh api graphql -f query='{__schema{mutationType{fields{name}}}}' --jq '...name' | grep -i block
addBlockedBy
removeBlockedBy
$ gh api graphql -f query='{__type(name:"AddBlockedByInput"){inputFields{name}}}'
clientMutationId / issueId / blockingIssueId
正確寫法:
mutation($i:ID!,$b:ID!){addBlockedBy(input:{issueId:$i,blockingIssueId:$b}){issue{number}}}
照文件原樣執行的回應是 Variable $b is declared by anonymous mutation but not used;改用 addBlockedBy 後在 PsychQuant/Akashic-Library#620、#621 實測成功(原生 blocked-by 已建立)。
Type
bug
為什麼一直沒被發現(安靜的失敗)
SKILL.md 的呼叫是 if ! gh api graphql … 2>/dev/null; then echo "⚠ … failed (repo not enabled / API error / permission); body blockquote already in place":
2>/dev/null 吞掉了 GraphQL 的錯誤訊息;
- 失敗訊息把原因歸給「repo 沒啟用/API 錯誤/權限」——三個都不是真因,讀的人會以為是環境問題;
- Layer 2(body blockquote)照樣成功,所以結果看起來「大致可用」。
依 CHANGELOG,這條 fallback 自 v2.52.0(#21)起就在;原生 dependency 很可能從未成功建立過。
受影響檔案(v3.1.0 原始碼)
plugins/issue-driven-dev/skills/idd-issue/SKILL.md(第 110、772、774 行附近:TaskCreate 描述、mutation、失敗訊息)
plugins/issue-driven-dev/references/bundle-flags.md(Fallback Chain 段)
README.md、CHANGELOG.md 的相關敘述
Expected
- mutation 改為
addBlockedBy(input:{issueId, blockingIssueId})
- 失敗時印出 GraphQL 回傳的錯誤,不要吞掉、不要猜原因
- 加一個會打到真 schema 的檢查(或至少 introspection 斷言 mutation 名稱存在),讓 schema 改名時會被發現,而不是安靜地退回 Layer 2
Actual
Layer 1 永遠失敗,訊息誤導;只有 Layer 2 的 body blockquote 生效。
Impact
--blocked-by 與 --bundle-mode ordered 建的依賴在 GitHub UI 上沒有原生的 blocked 標示與側欄關聯,只剩內文一行註記。
Current Status
Phase: verified
Last updated: 2026-10-02 by idd-verify(經 /idd-all,PR unattended)
Dashboard: #353 (comment)
Verify: #353 (comment)
Key Decisions
Scope Changes
Blocking
Commits
Problem
idd-issue的--blocked-by三層 fallback 中,Layer 1(GitHub 原生 dependency)用的 mutation 在 GitHub GraphQL schema 裡不存在:實際名稱(2026-09-24 introspection 查證):
正確寫法:
照文件原樣執行的回應是
Variable $b is declared by anonymous mutation but not used;改用addBlockedBy後在 PsychQuant/Akashic-Library#620、#621 實測成功(原生 blocked-by 已建立)。Type
bug
為什麼一直沒被發現(安靜的失敗)
SKILL.md 的呼叫是
if ! gh api graphql … 2>/dev/null; then echo "⚠ … failed (repo not enabled / API error / permission); body blockquote already in place":2>/dev/null吞掉了 GraphQL 的錯誤訊息;依 CHANGELOG,這條 fallback 自 v2.52.0(#21)起就在;原生 dependency 很可能從未成功建立過。
受影響檔案(v3.1.0 原始碼)
plugins/issue-driven-dev/skills/idd-issue/SKILL.md(第 110、772、774 行附近:TaskCreate 描述、mutation、失敗訊息)plugins/issue-driven-dev/references/bundle-flags.md(Fallback Chain 段)README.md、CHANGELOG.md的相關敘述Expected
addBlockedBy(input:{issueId, blockingIssueId})Actual
Layer 1 永遠失敗,訊息誤導;只有 Layer 2 的 body blockquote 生效。
Impact
--blocked-by與--bundle-mode ordered建的依賴在 GitHub UI 上沒有原生的 blocked 標示與側欄關聯,只剩內文一行註記。Current Status
Phase: verified
Last updated: 2026-10-02 by idd-verify(經 /idd-all,PR unattended)
Dashboard: #353 (comment)
Verify: #353 (comment)
Key Decisions
idd-353-verified=68779ccTarget issue has already been taken,並印出該句作依據;其他has already been taken照常警告(取代下方第 6 條的寬鬆寫法)CHILD_NUM=$(…)擷取 stdout);node ID 用-f傳live-schema.yml執行(週一 09:00 臺北時間+手動;merge 後才會跑)Layer 1 改用(比對已收窄,見上)addBlockedBy(issueId, blockingIssueId),GitHub 錯誤原樣印出;already been taken視為已存在(實測)openspec/specs/idd-issue-bundle/spec.md(先例a4f0723、e6cd7da),不動 archiveScope Changes
.github/workflows/live-schema.yml(驗證第 1 輪:live 檢查原本只能手動 opt-in)--blocked-byhandler 的其餘缺陷(Layer 2、--parent、目標驗證)不在本 issue 範圍,移到 [bug] idd-issue --blocked-by handler:Layer 2 字面 \n、不去重、stdout 被佔用、目標編號與 node ID 未檢查 (follow-up from #353 verify) #359Blocking
gh workflow run live-schema.yml確認綠燈 →/idd-close #353Commits
44c9691fix: idd-issue --blocked-by uses addBlockedBy and shows GitHub's error (idd-issue --blocked-by:GraphQL mutation 名稱錯誤(addBlockedByDependency 不存在,應為 addBlockedBy / blockingIssueId),且失敗訊息誤指原因、原生 dependency 從未建立 #353)b433021chore: release 3.0.1 — native dependency for --blocked-by (idd-issue --blocked-by:GraphQL mutation 名稱錯誤(addBlockedByDependency 不存在,應為 addBlockedBy / blockingIssueId),且失敗訊息誤指原因、原生 dependency 從未建立 #353)7d71b15fix: harden --blocked-by Layer 1 after verify round 168779ccfix: apply verify round 2 in-scope items for --blocked-by