v0.5.3 — 第二輪二審:修法自己也會長出問題 Fixes create defects
再送一次二審,抓到的是「上一輪修法帶出來的風險」🔁
同一份工具(SKILL.md + 腳本)再送 GPT 與 Gemini 各一次。最值得記的一條:
上一輪的修法自己長出了新缺陷。 為了處理「token 過期卻仍回 exit 0」,登入偵測加了裸的 expired/sign in 比對 —— 但「已登入」的訊息本身就可能寫著 sign-in method 或 session expires,於是正常登入會被誤判成沒登入、二審白白被略過。現在只收 token expired/please sign in 這種明確片語。
其餘六項:
--strict與--soft-fail併用語意衝突(一個把「沒審到」變失敗、一個把失敗變沒事)→ 直接報錯- 自訂 rubric 是路徑時,路徑被塞進落檔檔名(帶著
/與..)→ 內建三份保留原名、其餘記成custom - 後端把錯誤寫到 stdout 後回非零:原本只看 stderr,畫面印「原始錯誤」卻沒東西 → 兩條輸出都納入分類並照印
--沒有真正停止解析選項 → 之後一律當來源檔- 落檔不是原子操作、且會跟隨既有 symlink → 暫存檔改建在目標目錄內再
mv cut -c在非 UTF-8 locale 下切的是 bytes,長中文檔名會被切出殘缺位元組 → 依 locale 分流
驗證:5 種 shell × 35 項行為矩陣全過(新增 7 項回歸,含 LC_ALL=C 下的長中文檔名落檔),真實 Codex 路徑重驗。
Fixes create defects — that's the argument for reviewing the fix 🔁
Round two on the same tool. The most instructive finding: last round's fix created a new risk. To handle "token expired but exit 0", the login check gained bare expired/sign in matching — but a successful login message can contain "sign-in method" or "session expires", so a working login would be misread as signed-out and the review silently skipped.
Six more: conflicting exit-code switches, a custom rubric path leaking / and .. into output filenames, backend errors on stdout being invisible on non-zero exit, -- not stopping option parsing, non-atomic saves that follow symlinks, and byte-truncated multibyte filenames under a non-UTF-8 locale. 35 cases across 5 shells.
更新 Update: npx skills update