Skip to content

v0.5.3 — 第二輪二審:修法自己也會長出問題 Fixes create defects

Choose a tag to compare

@tingyulu tingyulu released this 20 Aug 06:24
· 29 commits to main since this release

再送一次二審,抓到的是「上一輪修法帶出來的風險」🔁

同一份工具(SKILL.md + 腳本)再送 GPT 與 Gemini 各一次。最值得記的一條:

上一輪的修法自己長出了新缺陷。 為了處理「token 過期卻仍回 exit 0」,登入偵測加了裸的 expiredsign in 比對 —— 但「已登入」的訊息本身就可能寫著 sign-in methodsession expires,於是正常登入會被誤判成沒登入、二審白白被略過。現在只收 token expiredplease 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