概述
OpenSpec v1.13.2(2026-09-23,“Verify and Windows archive fixes”)是 v1.13.x 系列的收尾修正。它沒有新增指令,而是把三個面向補到可信:
- 驗證報告的誠實性:
/opsx:verify要回報「實際檢查了什麼」,跳過的檢查不能顯示成通過。 - Windows 上的 archive 可靠性:不再遺留鎖檔,遇到系統阻擋目錄改名時不再中途 rollback。
- 跨工具 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 指引 |
學習重點
- 「沒檢查」與「檢查通過」必須是兩種不同的輸出:把 skipped 顯示成 pass 是最危險的驗證缺陷,因為自動化流程連補救的機會都沒有。這個原則適用於任何 agent 的驗收與 CI 流程。
- 跨平台可靠性是設計出來的:Windows 的檔案鎖 (file lock) 與改名 (rename) 限制不是邊角案例,而是 archive 這類「搬移目錄 + 改寫檔案」工具必須正面處理的基礎條件。