Skip to content

[bug] process-attachments check/verify silently PASS on corrupt _manifest.json — verify is idd-close's gate (follow-up from #186) #189

@kiki830621

Description

@kiki830621

Problem

process-attachments.shcheckverifycorrupt _manifest.json(無效 JSON)都 silent PASS exit 0

  • checkKNOWN=$(jq -r '.files[].url' "$MANIFEST" 2>/dev/null | sort -u || true) — jq parse 失敗被 2>/dev/null || true 吞掉 → KNOWN 空 → 與 CURRENT 比對照常進行 → 實測輸出 ✓ Manifest up-to-date ( files) exit 0(注意 file count 是空字串)
  • verify:manifest-listed files 的迴圈經 process substitution 讀 jq 輸出 — jq 失敗時 substitution 的 exit 永不傳播 → 迴圈零次執行 → 實測輸出 ✓ All attachments present exit 0

verifyidd-close Step 1.4 的 gate — corrupt manifest 會讓 close gate 拿到 false PASS。

Type

bug

Reachability(非理論)

_manifest.jsongit-tracked(deliberate design,.claude/.idd/attachments/ 不在 gitignore)→ merge conflict markers(<<<<<<<)是真實的 corruption path。實測 NOT VALID JSON 內容 → check/verify 雙雙 exit 0。

Expected

corrupt / unparseable manifest → 非零 exit + 可見錯誤(建議語意:同 #186 後的 exit 2 = 資料層失敗),引導使用者重跑 download 重建 manifest。不得 silent PASS — 這正是 #186 同款「失敗被吞成正常」class,只是位置從 detect_urls 移到 manifest 讀取端。

Refs

#186 verify Devil's Advocate Task 4 發現(實測重現含輸出);同 class 前例 #186(detect_urls)

Source: surfaced during /idd-verify #186 follow-up triage (Step 5b)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions