跳轉到

D-20261022-01|公版場地程序化交付與零件維持延後

2026-10-29 關聯追補:決定中的「schema 2」只是從未公開的候選名稱,現行按 tracks/parts 分類型交付的形狀即 schemaVersion: 1,已由 D-20261029-05 修訂。其餘決定不變。

背景與驅動力

三個公版場地已由程序化生成器從零重做並通過視覺定稿(issue 001042),權利來源乾淨,正式 finalizer 零 findings,八車成本回到 100 ms 級。零件仍在重做,權利證據未齊。D-20260820-01 的交付 狀態是全域單一值,delivered 要求 27 顆一起到位,無法表達「場地已交付、零件延後」。另外三個 程序化場地的 root extras(含 64×64 雨雪曝露格的完整 PhysicsManifest)達 70–110 KB,超過公版守門 沿用至今、沒有 canon 依據的 64 KiB 上限;牆條帶宣告版又因環序列在 extras 與 manifest 各存一份而 超過 500 KiB 場地預算。authoring 來源契約仍指向 Tripo 原檔,生成器沒有可隨 Release 保存的位置。

考慮過的選項

  • 維持全域單一狀態,只換 bytes:provenance 與交付狀態互相矛盾,否決。
  • 逐資產交付狀態:粒度超過需求,且 E2E 本來就以整車+場地為單位,否決。
  • 按 tracks/parts 分類型交付,各自持有 PROVENANCE(採納)。
  • 交付牆條帶宣告版並放寬 500 KiB 預算,或先做 extras 去重再交付:前者改預算、後者是程式變更; 純地面分塊版成本同級且符合預算,先交付純地面分塊版(採納),去重另案處理。

決定

  • public/assets/builtin-delivery.json 升 schema 2:decision=D-20261022-01、 releaseRequired: true,kinds.tracks 與 kinds.parts 各有 deferred-prelaunch|delivered 與 各自的 public/assets/builtin/<tracks|parts>/PROVENANCE.md。專案仍在 pre_launch,不保留 schema 1 的讀取或相容層。
  • 非 strict 開發檢查逐類回報延後;strict/release 只在兩類都 delivered 且各自 PROVENANCE 六節 皆有實質內容時通過。需要整車的測試(canonical 載入、自然完賽、admission 效能批次)要求兩類都已 交付;只需場地的 surface proof 只要求 tracks。E2E required coverage 的授權 skip 以「任一類延後」 判定。
  • 本次場地交付純地面分塊版(groundCellM 8、不宣告牆條帶):track-01 snowy-field v4、 track-02 urban-circuit v6、track-03 jungle-mud v5;parts 維持 deferred-prelaunch。
  • 公版 GLB root extras 上限定為 256 KiB(canonical JSON 的 UTF-8 bytes),作為 builtin 出貨預算的 一部分;UGC 的 extras 天花板仍是 SANITIZE_EXTRAS_MAX_BYTES。
  • 三場地 authoring 來源改指程序化 authoring GLB,生成器快照(Blender 4.5 腳本)、 GENERATOR.md 與 PROVENANCE.md 放進 release-input/tracks/,candidate epoch 升一。Release 準備工具新增 .py/.md 文字來源封裝為 authoring-text.zip;其他副檔名仍 fail closed。Tripo 場地原檔保留在既有 immutable Release,不再列入 desired state。

後果與影響

場地可先完成 strict 以外的全部守門並進入版控,零件延後不再阻擋場地驗收;release readiness 仍要求 兩類都交付。main 採用新來源前必須由維護者發新的 authoring-source immutable Release 並更新 dependency lock,之前 adoption gate 會以 fingerprint drift fail closed。extras 內曝露格與環序列的重複儲存另案 去重;牆條帶宣告版待去重後再評估是否改交付。