Skip to content

fix: idd-list 靜默截斷、idd-verify /tmp 碰撞、idd-clarify 改問句 - #306

Merged
kiki830621 merged 3 commits into
mainfrom
idd/small-bugs-288-294-299
Aug 13, 2026
Merged

fix: idd-list 靜默截斷、idd-verify /tmp 碰撞、idd-clarify 改問句#306
kiki830621 merged 3 commits into
mainfrom
idd/small-bugs-288-294-299

Conversation

@kiki830621

Copy link
Copy Markdown
Member

Refs #299
Refs #288
Refs #294

三個獨立的小缺陷,共同點是失敗都是靜默的

# 缺陷 為什麼靜默
#299 idd-list --limit 在 server 端先於排序生效 輸出看起來排序正確,被截掉的是誰完全看不出來
#288 idd-verify 的 /tmp 檔名只帶 issue number 不同 repo 的同號 issue 共用檔名,殘留檔被當成本輪 findings —— 別的 repo 的結論會併進這個 PR 的報告
#294 Clarity Surface 第三欄寫描述式分析 不是 bug 而是可用性:讀者得自己把分析還原成問題才知道要決定什麼

#294 一併改了 idd-issue 發的同一張表與 terminology-canonical 的 emit 規則 —— 只改一處會讓兩個 producer 分岔,那正是 #295 花了六輪在修的同一類問題。

43/43 suites 綠。

…294)

#299 --limit 是 server 端套用、先於任何排序,所以「抓 N 筆再本地排序」拿到的是
「隨便 N 筆,排好序」。輸出看起來排序正確,被截掉的是誰完全看不出來 —— 而 skill
自己的鐵律寫著「按 updatedAt 排序,最近被動的最該注意」。改為 server 端排序,
並記下 --search 與 --label 衝突時的退路(多抓再裁切,且在 footer 說明)。

#288 verify 的 findings / prompt / codex 路徑只帶 issue number,不帶 repo 身分,
所以兩個 session 驗**不同 repo 的同號 issue** 會共用檔名,殘留檔被當成本輪產出。
失敗是靜默的,方向是最壞的一種:把別的 repo 的結論併進這個 PR 的報告。改為所有
路徑掛在單一 mktemp -d 底下(加 repo slug 不夠 —— 同 repo 並發仍會撞)。

#294 Clarity Surface 第三欄從描述式分析改成對使用者的問句(使用者原話:「iddclarify
我覺得你可以直接放對使用者的問題」),並要求問句可用一句話回答。四張表全部改名,
連同 idd-issue 發的同一張表與 terminology-canonical 的 emit 規則 —— 只改一處會讓
兩個 producer 分岔,那正是 #295 花了六輪在修的同一類問題。
@kiki830621
kiki830621 merged commit c270925 into main Aug 13, 2026
1 check passed
@kiki830621
kiki830621 deleted the idd/small-bugs-288-294-299 branch August 13, 2026 21:27
This was referenced Aug 13, 2026
kiki830621 added a commit that referenced this pull request Aug 15, 2026
8d0ec33..737dbe0 跑 ensemble 稽核(#295 的 R7 從未被審過,#306#314 的 21 張
issue 完全沒有 ensemble)。4 CRITICAL + 17 HIGH。未被審的那半有一個一致的模式:
**我把文件當成了實作**,而三個「已修好」的東西根本不會執行 —— 它們都通過了我的測試,
因為那些測試驗的是我寫的那塊,從沒驗它與 gh/檔案系統/讀者相接的那道縫。

CRITICAL
- migrate-idd-config.sh 會搬走掃描範圍外的檔案並回報 ✓ migrated(find -print 配
  read -r,含換行的路徑被拆成兩筆,第二筆是相對路徑、對呼叫端 CWD 解析)。改 -print0
  + 拒絕掃描根外的路徑 + prune archive/worktrees + breadcrumb 不覆蓋既有檔。
- 取得層的修法從來沒有運作:gh api --paginate --jq 每頁各吐一個 array,--argjson
  收到非法 JSON → 整個稽核在任何含長 issue 的 repo 上靜默停擺。改 jq -s add,另加
  「補回來變少就拒絕」與 .number 的整數驗型。
- 同一個修法從未落到 /idd-list --audit-closes —— 那才是實際印出 --retroactive 邀請的
  介面。已補上。
- bare_re 的尾錨把帶尾綴的強調標題送進 missing;新增 emph_re,錨點保留(它是散文
  提及不會誤救的原因)。

修法無效者
- #286:gh release upload FILE#TEXT 的 # 是 display label 不是檔名,且更早之前
  upload_name 就是 dead code —— 命名慣例從未被套用。改為 stage 成目標 basename 再上傳,
  並還原 --clobber(拿掉它會讓合法重傳失敗)。
- #293/#305:七個呼叫點的 .[0] 一行沒改,只加了散文警告。精篩與時序檢查已進 code。
- #302:global 層沒有任何 reader,而我寫的理由(「已在 walk-up 路線上,只需多認一個
  檔名」)描述的是一個沒做的改動。reader 已補,其餘 consumer 誠實記為 residue。

不會失敗的測試
- prose-drift 掃描大小寫敏感,而 marker 是大寫;且 positive control 種小寫 —— 控制項
  通過而檢查是瞎的。已改為大小寫不敏感 + canary 用 canonical 大寫。
- 新增 acquisition-truncation suite:用 PATH 上的 gh stub 讓 live-gh 分支真的被執行
  (既有 suite 全被 --json-file 短路,所以整段 19 行刪掉仍 46/46 綠)。acid 5/5 各自
  轉紅;達到這個狀態改了三次斷言,三次都記在檔案裡。

其餘:idd-repo-map 補 sanitiser(它從零重造了隔壁腳本花七輪關掉的 row-forging)、
兩處 callout 被插進 bash fence 內部、marketplace.json 落後五個版本。

47/47 suites 綠(新增 acquisition-truncation 12 條)。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant