Skip to content

[bug] idd-issue --blocked-by handler:Layer 2 字面 \n、不去重、stdout 被佔用、目標編號與 node ID 未檢查 (follow-up from #353 verify) #359

Description

@kiki830621

Problem

idd-issue/SKILL.md 的 --blocked-by handler(Step 3.B,三層 fallback)在 #353 修好 Layer 1 的 mutation 之後,同一個 handler 還有以下缺陷。都是既有問題,#353 的兩輪驗證時發現。

  1. Layer 2 的換行是字面上的 \n。 BLOCKED_BLOCKQUOTE="${BLOCKED_BLOCKQUOTE}> Blocked by #${M}\n" 與 NEW_CHILD_BODY="${BLOCKED_BLOCKQUOTE}\n${ORIGINAL_BODY}" 在 bash 雙引號裡不會轉成換行。--blocked-by 50,51 加上內文 ## Problem,用 bash 執行後 od -c 得到的是單一行:
    > Blocked by #50\n> Blocked by #51\n\n## Problem
    
    GitHub 會把它整段渲染成一行 blockquote,內文第一個標題被吞進去。這違反 spec「Multiple blocked-by targets」的「child body contains three blockquote lines」。目前實際建立的 issue 第一行是乾淨的,代表執行的 agent 自行修正了,但照字面執行就會壞。
  2. Layer 2 不去重。 references/bundle-flags.md 的 Idempotency Contract 寫「演算法掃 > Blocked by #M 字串先 dedup」,SKILL.md 的 Layer 2 沒有這段。--blocked-by 50,50 會寫兩行,Layer 3 的 parent entry 也會重複列出。
  3. stdout 通道仍被佔用。 bundle 的 orchestration 用 CHILD_NUM=$(create_child_with_parent …) 擷取 child 編號,再把它當下一個 child 的 --blocked-by。idd-issue --blocked-by:GraphQL mutation 名稱錯誤(addBlockedByDependency 不存在,應為 addBlockedBy / blockingIssueId),且失敗訊息誤指原因、原生 dependency 從未建立 #353 已讓 Layer 1 的訊息全走 stderr,但同一條路徑上還有:
    • Layer 2 的 gh-egress.sh edit:wrapper 最後 exec gh issue edit,會把 issue URL 印到 stdout;
    • --parent handler 的 echo "→ #… already in parent … skip (idempotent)",以及它對 parent 的 gh-egress.sh edit。
  4. 目標編號沒有驗證。 spec 規定每個值是正整數,但 BLOCKED_BY_LIST 與 CHILD_NUM 都沒檢查。for M in $(echo "$BLOCKED_BY_LIST" | tr ',' '\n') 未加引號,會做 word splitting 與 pathname expansion;以 - 開頭的值會被 gh issue view 當成選項(引號內,所以不是 shell injection,是 argument injection)。
  5. node ID 查詢沒有檢查。 Layer 1 先用 gh issue view … --json id 查 child 與每個目標的 node ID,結果沒驗證。目標編號打錯或 gh 暫時失敗時 ID 是空字串,mutation 照送,警告裡印的是 GitHub 對空 ID 的錯誤,而不是「找不到 #M」。

Type

bug

Expected

Impact

--blocked-by 多個目標時 child body 的開頭會壞掉;--bundle-mode ordered 照文件執行時,下一個 child 的 --blocked-by 可能拿到 URL 或訊息而不是編號。


Follow-up from #353 verify

Source: /idd-verify #353 第 1、2 輪(PR #358)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions