跳轉到

D-20260817-06|Sanitize 與文字過濾只保留可執行權威

背景與驅動力

SANITIZE_MAX_MEMORY_MB=256 沒有 runtime 消費者,而且瀏覽器 Worker API 不提供可攜的單一 Worker heap 配額;實作真正強制的是解析前輸入大小、文件與 collection、decoded geometry、extras 等硬天花板,以及逾時後終止 Worker。TEXT_BLACKLIST_MATCH_MODE=substring 同樣沒有消費者:聊天固定走 normalized literal substring,DMCA 則由每筆受 review 條目的 matchMode 決定 exact、substring 或 regex。

另一方面,MAX_CONTRIBUTION_TRIGGER_USAGE_RATIO 雖沒有 production runtime 讀點,仍由 system-constants invariants 對全部 ugcCacheUsagePolicy 做跨型別上限檢查,是可執行的 CI authority。

考慮過的選項

  • 為既有常數補上虛假的 runtime 讀點:名稱看似有消費者,但無法真正限制瀏覽器 heap,且會把聊天與 DMCA 的不同模式錯誤收斂(未採)。
  • 保留常數只作說明:會讓參數表把不可執行的宣告誤呈現為安全邊界,持續形成規範漂移(未採)。
  • 移除兩個幽靈常數,直接記錄並測試真正可執行的防線與比對行為;保留跨 policy 的 CI invariant(採納)。

決定

  • 移除 SANITIZE_MAX_MEMORY_MB。sanitize 的記憶體防線以輸入/結構天花板與 timeout termination 表述;不得宣稱瀏覽器可強制固定 MB 配額。
  • 移除 TEXT_BLACKLIST_MATCH_MODE。聊天 literal substring 是程式固定行為;DMCA 使用每筆條目的 matchMode,兩者都不讀全域 mode。
  • 保留 MAX_CONTRIBUTION_TRIGGER_USAGE_RATIO,並由 system-constants invariants 驗證所有 UGC cache policy 的觸發率不超過該上限且低於 critical usage。

後果與影響

規格只再宣稱能由 runtime 或 CI 執行的邊界,安全說明與實際防護一致。現有 sanitize、聊天與 DMCA 行為不變;移除的是未公開、未被消費的宣告。專案仍在 pre-launch,因此不提供別名或遷移層。