Repository navigation
v9.1.2
一個開發依賴的安全公告、工作規格協定從 ForgeFlow 換成 Warrant,以及三個讓測試與建置
不再依賴執行順序或在磁碟上留下東西的修正。
版本為 9.1.2。沒有任何指令、旗標、engine 或輸出改變。npm 套件唯一的差別是不再
附帶 .agents/skills/story-development/SKILL.md——那是 dbcli 自己開發流程用的
skill,不是給使用者的。
Changed
-
工作規格改用 Warrant,ForgeFlow 的機制整套移除。 Story 從一個裝著
story.md/acceptance.md/task.md的目錄,變成一個只有 Goal、Out of Scope、
Acceptance Criteria 三節的specs/stories/<slug>.md;核准由人 commit 或在當次
session 明確指派,完成由make verify證明。ForgeFlow 留下的每一個決定都是在維護
協定本身而不是 dbcli:adoption marker、範本、上游 contract job、Story:trailer
對帳與 handoff 結構要彼此一致,代價是make verify裡的一道門、CI 的第二次
checkout、三支 checker 加上它們的函式庫與測試。這些都刪掉而不是停用,連同
story-developmentskill——它隨.agents/一起打包,所以已安裝的套件裡會少掉
它。ForgePilot 仍是控制面,DBCLI-*舊目錄原封保留為歷史紀錄。決定記在
ADR-0040,取代 ADR-0025、0027、0029、0031、0032 與 0036。 -
assets/ui-template.html改為建置產物,不再進版控。 每次bun run build都會
重新產生並覆寫它,prepublishOnly也在每次發佈前重建,所以 commit 裡那份從來不是
使用者拿到的那份,只會跟建置結果漂移——每跑一次make verify就把 worktree 弄髒。
現在它和dist/一樣列在.gitignore,由build:determinism檢查兩次建置產出
相同位元組,而每個會渲染 HTML 的測試自己建置所需的東西,不再靠前面的測試檔先建好。
發佈出去的 template 仍由prepublishOnly建置,內容不變。決定記在 ADR-0041。
Fixed
-
Skill Author Integration Kit 的測試不再依賴執行順序。 它以套件名
(@carllee1983/dbcli/core)import,解析到的是未進版控的dist/core.mjs;靜態
import 只在更早的測試檔已建好dist/時才載入得了,CI 先跑它就在載入模組時失敗。
改為在beforeAll建置後動態 import。 -
測試套件不再在 OS 暫存目錄留下東西。 一次完整測試會在
TMPDIR留下約 130 個
目錄與檔案:每個測試都呼叫的 seed helper、beforeAll/beforeEach建了卻沒有對應
刪除的目錄、只還原HOME的finally,以及直接寫進tmpdir()的設定檔。每個會
外洩的檔案現在都以 repo 既有的寫法清掉自己建的東西;從空的TMPDIR開始跑,只剩
第三方的 node-jiti 快取。
Security
brace-expansion的 override 提高到^5.0.12。bun run audit在
brace-expansion@5.0.9回報三個漏洞(兩個 high、一個 moderate):
GHSA-qhr7-859c-m2p7、GHSA-6j4f-fj2g-mc7p、GHSA-q2hr-2g5m-vwhr。它經由 eslint 與
typescript-eslint 的 minimatch 引入,只存在於開發依賴,不在發佈的套件裡;提高既有的
override 就全部清掉。