Theme / v1.14.0

OpenSpec

規格驅動開發

基礎觀念

v1.13.2:Verify 誠實回報與 Windows Archive 修復

1.13.x 系列的收尾修正:/opsx:verify 回報實際檢查了什麼、removed 與 renamed requirement 的判定修正,以及 archive 在 Windows 上不再遺留 lock 檔或中途 rollback。

概述

OpenSpec v1.13.2(2026-09-23,“Verify and Windows archive fixes”)是 v1.13.x 系列的收尾修正。它沒有新增指令,而是把三個面向補到可信:

  1. 驗證報告的誠實性:/opsx:verify 要回報「實際檢查了什麼」,跳過的檢查不能顯示成通過。
  2. Windows 上的 archive 可靠性:不再遺留鎖檔,遇到系統阻擋目錄改名時不再中途 rollback。
  3. 跨工具 workflow 指引:task 分組、核可提示與訊息措辭在多個 AI 工具間對齊。

前兩課處理的是 archive 對 delta 格式的靜默錯誤(v1.13.0)與供應鏈安全(v1.13.1);這一版收掉剩下會讓「驗證結果看似通過、實際沒檢查」的縫隙,也把 archive 從「在 POSIX 上可行」推進到「在 Windows 上也可靠」。

/opsx:verify:回報實際檢查了什麼

v1.13.2 之前,/opsx:verify 可能把被跳過的檢查(skipped checks)呈現成通過。在自動化流程裡,agent 收到一份滿是 PASS 的報告,就不會去補做那些其實沒被檢查的項目——這是「沉默的偽陽性 (false positive)」,比明確的失敗更危險。

修正後的行為:

  • 報告把真正檢查過的項目列為通過;跳過的檢查不再計入 PASS,而是讓你看出驗證涵蓋的範圍。
  • removed requirement 的判定:verify 不再要求 agent 重新實作 change 已移除的需求;當該行為確實從程式碼中消失,removed requirement 即視為通過。
  • renamed requirement 的判定:改以原始行為為基準檢查,而不是只看改名後的新名稱。

教學上的意義:驗證報告除了 pass / fail,還必須回答「你檢查了什麼、哪些沒檢查」。若報告出現 skipped 項目,請把它當成待補的驗證工作,而不是可忽略的雜訊。

Windows 上的 archive

v1.13.2 修掉兩個 Windows 專屬的 archive 問題:

症狀 原因 修正後
歸檔後遺留 .openspec-archive.lock 鎖檔未在流程結束時清除 archive 不再遺留 lock 檔
目錄改名被系統阻擋時整個 rollback Windows 允許 process 持有檔案 handle,change 目錄被鎖住時重新命名失敗 archive 會完成流程,不再中途 rollback

Windows 的檔案鎖語意與 POSIX 不同:編輯器、同步工具或索引服務只要持有 change 目錄中的檔案,重新命名就可能失敗。舊版把這種情況視為致命錯誤而 rollback,等於整個歸檔白做;現在會把它當成可處理的狀況完成流程。

同版也修正了行尾(line endings):重寫採用 CRLF 換行的 spec 檔、.bashrc、.zshrc 或 CLAUDE.md 時會保留原有行尾。Windows 使用者不再因為工具重寫檔案而拿到整檔 diff,review 時真正的變更不會被行尾噪音淹沒。

多工具 workflow 指引修正

  • Task guidance:每個 task group 自帶測試與文件更新,不再全部延後到最後一組;onboarding 也教同一條規則。每個 task group 完成時都有可驗證的證據,而不是把驗收全部堆到最後。
  • Approval prompts:fast-forward 只在脈絡極度不明時才追問,減少不必要的來回;onboarding 會先請你核可任務拆解,再實際寫入。
  • Scenario-loss 訊息:openspec validate 或 openspec archive 標示 MODIFIED block 丟失 scenario 時,現在也會說明該 block 新增了什麼,讓你判斷是意外丟失還是刻意替換。
  • 工具層級修正:Kilo Code 的 commands 改產生在 .kilo/command/,openspec init 與 legacy cleanup 會依已知檔名清掉 .kilocode/workflows/ 中 OpenSpec 產生的檔案(含你編輯過的副本)並保留其他檔案;Continue 的 commands 不再誤導本地模型呼叫以 workflow 命名的工具;Codex CLI / IDE / desktop 的 setup 提示更清楚。
  • 其他:workflow 不再顯示 openspec list --json 未回傳的 schema 名稱;artifact output pattern 支援 brace expansion 與 extglob;/opsx:update 可補齊 glob artifact 已部分寫入時缺少的檔案;agent 驅動的 archive 改用 schema-aware task progress,自訂 task 檔與 glob 仍會觸發未完成任務警告。

對既有使用者的影響

  • Windows + archive:曾遇過 lock 檔遺留或中途 rollback 的專案,升級後可正常歸檔;CRLF repo 的整檔 diff 問題也一併消失。
  • /opsx:verify 輸出:可能出現過去沒看過的 skipped 狀態——這是誠實化,不是新的失敗。請把它當成待補的檢查項目。
  • 沒有 breaking change:v1.13.2 未宣告新的 breaking command removal 或 schema migration,既有 workflow 與 schema 不需要因升級而調整。

在 1.13.x 系列中的位置

版本 主軸
v1.13.0 delta parser 與 archive 的正確性(修正靜默失敗)
v1.13.1 供應鏈安全、status 的 Next 提示、profile-aware skills
v1.13.2 verify 誠實化、Windows archive 可靠性、跨工具 workflow 指引

學習重點

  1. 「沒檢查」與「檢查通過」必須是兩種不同的輸出:把 skipped 顯示成 pass 是最危險的驗證缺陷,因為自動化流程連補救的機會都沒有。這個原則適用於任何 agent 的驗收與 CI 流程。
  2. 跨平台可靠性是設計出來的:Windows 的檔案鎖 (file lock) 與改名 (rename) 限制不是邊角案例,而是 archive 這類「搬移目錄 + 改寫檔案」工具必須正面處理的基礎條件。

來源:v1.13.2、v1.13.0、v1.13.1