D-20260814-24|Pre-launch 自有版本統一為 v1¶
背景與驅動力¶
專案仍為 pre_launch,卻有自有 asset、schema、snapshot、IndexedDB、receipt、tooling manifest
與 service attachment 隨內部修改次數累增到 2~16。這些數字沒有已公開 client、正式帳本、外部
service 或玩家持久資料可對應,並已造成 source、生成物、vendored copy 與 current canon 漂移。
既有決策已分別把 builtin、signaling 與 pinning 介面重設為 v1,但缺少涵蓋所有自有版本權威的
共同執法清單。
考慮過的選項¶
- 延續各模組的內部累計數字:不需重生 metadata,但會把未公開改版誤寫成公開歷史,否決。
- 為 2~16 建立 migration/dual-read:沒有相容對象,增加無效分支與驗證面,否決。
- current 完整形狀統一重設為 v1、候選另用非相容 revision(採納)。
決定¶
runtime_phase = pre_launch時,所有 Open4WD 自有的首次公開 schema、wire、snapshot、receipt、 persistence、tooling manifest 與 asset current baseline 一律為1。完整 current shape 直接取代 未公開中間形狀,不設降版 migration、dual-read、legacy parser 或相容 alias。- 內部候選以
candidate_epoch、prepub-rcN、digest、CID、golden 或明確的 fixture/render revision 區分,不挪用 compatibility version。第三方或標準版本如 glTF 2.0、Circuit Relay v2、 UUID v4、套件 SemVer 與 GitHub API 不受此限制。 - Main 的 builtin 與 per-type asset schema、PhysicsManifest、SavedState、sanitizer worker、統一 IndexedDB、identity IndexedDB,以及 pinning receipt/vendor manifest、signaling socket attachment 全部以完整現行內容重設為 1;生成物與 vendored copies 必須由各自 source 重生或同步。
- D-20260814-05/06/08/10 與 D-20260814-19 的功能內容全部保留;其中 SavedState v12/v16、 builtin v10 與 receipt version 2 僅是未公開候選名稱,現由唯一 v1 current shape 修訂。歷史文字 保留供稽核,不回寫成彷彿當時未曾使用那些內部數字。
- CI 必須讀取機器可讀的自有版本 authority 清單:pre-launch 要求 current baseline 全為 1、 source/生成物/vendored copy exact-match,並禁止 current canon 再出現 active 自有 v2+;未知版 拒絕 fixture、歷史/舊 ADR 與明列的第三方標準可排除。
轉入 live 後¶
主 repo 公開觸發 live 後,本決策的「固定 1」閘改為正常單調升版規則。任何真實破壞性變更
都必須有新 ADR、相容/遷移或明確拒絕策略、conformance vectors 與跨 repo 原子發布證據;不得
把 candidate epoch 當成 public compatibility version,也不得把版本號倒退。
後果與影響¶
首次公開基線可從一致且可驗算的 v1 開始,開發中的每次欄位調整不再製造虛假相容歷史。代價是 現有本機開發資料與快取必須依明示 reset 流程重建;這是 pre-launch 開發操作,不是玩家 migration。