D-20261029-05|builtin 交付 schema 重新編號為 1¶
背景與驅動力¶
D-20261022-01 為了表達「場地已交付、零件延後」,把 public/assets/builtin-delivery.json 從全域單一狀態改成按 tracks/parts 分類型,並把它命名為 schema 2。專案仍在 pre_launch,專案生命週期.md 規定 Open4WD 自有的 schema、manifest 與 asset current baseline 一律維持 1,內部候選改用 candidate_epoch、digest 或 revision,不為未公開的中間版本建立 migration、dual-read 或相容 shim;D-20260814-24 也要求 CI 依機器可讀的 authority 清單守住這條規則。
舊的全域單一狀態形狀從未隨公開 client 或公開 Release 發布,沒有任何相容對象。2026-10-28 複驗退回 issue 001062,指出 D-20261022-01 在 pre_launch 期間把 manifest 升到 2,違反上述規則。這個 manifest 的版本值當時也不在 authority 清單內,所以 CI 沒有擋下來。
考慮過的選項¶
- 維持 schema 2,在 canon 與守門上承認它:把一個從未公開的中間形狀誤寫成公開歷史,與生命週期規則直接衝突(否決)。
- 保留 schema 1 讀取層,同時接受 schema 2:沒有相容對象,只增加無效分支與驗證面(否決)。
- 把現行按類型交付的完整形狀定為 schemaVersion 1,並把此值納入 authority 清單(採納)。
決定¶
- 依
pre_launch規則,public/assets/builtin-delivery.json按tracks/parts分類型的現行形狀就是schemaVersion: 1。D-20261022-01 所稱「schema 2」只是從未公開的候選名稱,現由這個唯一的 schema 1 current shape 取代。 - D-20261022-01 的功能內容全部保留:分類型交付、各自的
PROVENANCE.md、strict/release 要求兩類都delivered、需要整車與只需場地的測試分別要求、E2E required coverage 以任一類延後判定授權 skip,以及 256 KiB root extras 上限、程序化來源與authoring-text.zip等其餘決定。 - 不保留任何相容層。舊的全域單一狀態形狀沿用 exact-key 結構檢查拒收,訊息描述形狀而不稱它是某個版本;未知版本(例如
schemaVersion: 2)同樣拒收,這類 fixture 不屬於 current baseline。 - 守門:
builtin-delivery.json的schemaVersion納入 main 的prelaunch-version-authorities(以單一 JSON pointer 純量值模式檢查),受檢 authority 由 24 項增為 26 項;specs 的 current authority 清單同步宣告 canon 的 schema 1 交付權威,並禁止 current canon 再出現該 manifest 的 schema 2 以上寫法。決策檔與歷史記錄依既有規則排除。 - 現況規格見 程式架構/builtin-assets.md。
後果與影響¶
- main 的 manifest、讀取與驗證腳本、型別宣告與測試 fixture 重新編號為 1,canon 只寫現況;依賴 parser 取值的消費者不寫死版本數字,不需改動。
- 本機沒有舊 schema 2 檔案以外的資料需要遷移;
pre_launch階段直接改,不需 reset 流程以外的處置。 - 與既有決策的關係:
- amends D-20261022-01:其「決定」第 1 項的 schema 2 改以 schema 1 current shape 理解,其餘功能內容不變;該檔 frontmatter 的
deprecates仍保留原文供稽核,不回寫。 - D-20261022-01 的 H1 之後加註一段說明指回本決策,說明 schema 2 僅是候選名稱、現行為 schema 1;格式比照 D-20261029-03 對 D-20261029-04 的加註,原四節不改寫。
- 與 D-20260814-24 一致:本決策是把該決策的 authority 清單原則套用到 builtin 交付 manifest,不另立例外。
- 當日歷史記錄已補條目並回引本決策。
定案紀錄¶
2026-10-29 使用者審閱草稿後同意採納:按類型交付的現行形狀定為 schemaVersion 1,D-20261022-01 的功能內容全部保留,不設相容層,並把 builtin-delivery.json 的版本值納入 authority 清單。