跳轉到

D-20261031-04|公版多起跑完賽率量測與非退步閘

背景與驅動力

D-20261031-02 把公版自然完賽從單一 canonical 起跑改為 多起跑完賽率,基線取 D-20261028-05 的 30 起跑結果, 並要求不得退步。但完賽率量測只存在研究輪腳本中,在 src 凍結複本上執行、沒有進 repo,所以退步只能等下一次 研究輪手動發現(issue 001160)。

考慮過的選項

  • 甲:產品化完整量測。 3 車 × 3 場 × 30 起跑、270 場,基線入 repo,以統計檢定判定退步;作為手動與 nightly 閘。
  • 乙:每組 3 起跑的小樣本常駐 CI 閘。 速度快,但樣本太小,實際退步幾乎測不出來。
  • 丙:維持研究輪手動量測。 「不得退步」沒有執行者。

決定

採甲。

  • main 新增 pnpm measure:completion-rate:以 live src 打包,單車跑完整一圈,起跑擾動為 30 個固定的側移、 前後移與偏航組合;判準沿用研究輪——上限 600 秒、30 秒無路線推進為卡停、車身朝下連續 120 幀為翻覆、 依路線方向判定掉頭,另把時間上限獨立一類。
  • 基線 scripts/completion-rate/baseline.json 記錄各格計數、每場結果、bundle 與公版 GLB 雜湊及起跑集合雜湊。 總完賽數比例變少且單尾 Fisher exact p < 0.05 即失敗;資產或起跑集合與基線不同時照常比對,並在報告標示。
  • 不進一般 CI;作為 nightly 與公版資產或物理參數變更前的手動閘。基線只在已審查的變更後以 --write-baseline 重寫。

後果與影響

  • 首次以現行程式量出的基線為 146/270(翻覆 28、掉頭 17、卡停 79),各格與 D-20261028-05 的 T2 結果相同; 每場逐幀雜湊鏈重跑一致。
  • 完整量測約需 19 分鐘(14 個 worker)。在 146 的基線下,完賽數要降到 125 以下才會判定退步,較小的下降需靠 報告中的逐格與逐場變化人工判讀。

定案紀錄

2026-10-31 使用者裁決採甲:產品化 30 起跑完賽率量測,基線入 repo,以單尾 Fisher exact 判定退步,作為 nightly 與公版資產、物理參數變更前的手動閘。