跳轉到

歷史記錄 · 2026-07-03

月份索引歷史記錄

重大重構里程碑

2026-07-03 ─ 部署資訊.md 首輪複審:CSP 交付機制定案(meta 注入+connect-src scheme 級)、pinning 下架職責補落點、DMCA multisig 殘句清除(跨 6 檔)

決策檔:D-20260703-01

首次逐檔複審。乾淨面:§16 SEO 常數群 / ORBITDB_REPLICATION_FACTOR / TURN_TOKEN_TTL_SEC / PROVIDER_FALLBACK_ORDER / bootstrap 常數全對上;SW networkFirst 對齊部署批;§2 禁直推對齊升版流程 §8.2。修:

  • 中 CSP × GitHub Pages × 玩家自選節點三方衝突定案(使用者確認放寬)——GH Pages 不能設自訂 HTTP header(security.md §3 的 CSP_HEADER 主站無法交付)、connect-src 固定域名白名單又與「玩家可自選 signaling / pinning / bootstrap」(部署 §11、資安 §14)衝突 → ①CSP 改 build 時生成 <meta> 注入 index.htmlCSP_HEADERCSP_META);②connect-src 放寬為 scheme 級白名單 'self' wss: https:(節點選擇權的必要代價;仍擋非 TLS 外連);③明文「meta CSP 不支援 frame-ancestors、GH Pages 無法送 X-Frame-Options主站無框架保護、風險接受(無 cookie / 無跨源授權狀態)」;HTTPS 靠 github.io HSTS preload / custom domain enforce-HTTPS。三檔同修:security.md §3(權威)+資安規範 §4+部署資訊 §2 註。
  • 中 pinning-service.md 補「下架與拒服務」新 §9(07-02 DMCA 大改的 impl 落點缺口——原檔只有退役 unpin):仲裁黑名單 CID(moderation.blacklist)→ 自動 unpin+拒重新 pin(黑名單 = 下架 ≠ 退役可復活)/ DMCA 即時層 unpin(notice 流程觸發)/ Repeat Infringer ≥ 3 拒 pin(維運政策常數、safe harbor §512(i))/ DMCA notice 後端 API(可選、同機掛);角色行+跨模組表補 dmca.md 列。
  • 中 dmca.md 檔頭「由 DMCA Agent multisig 簽署」= 07-02 廢 multisig 漏網殘句 → 「寫入由維運者(Registered Agent)伺服器側認證——無 multisig、DMCA 全維運層化」(對齊 DMCA流程:100 Registered Agent = 離鏈法律角色)。
  • 細項 5:§9「Lighthouse CI(可選)」vs §7.7 PR 四門檻矛盾 → 去(可選)/ §10 版本擴散摘要補 idle guard 行(同日 版本規範 §8.2 新規則)/ §12「Sentry-local」誤導命名 → 「本地錯誤日誌 buffer(不接 Sentry 等遠端服務)」+與資安規範 §8 互指 / §1「無中心化伺服器」→「無必要中心伺服器」(Star provider 自承 SPOF)/ §13 災難表補「Bootstrap 節點全 down」列(設定頁自填+既有 DHT 連線不受影響)。

2026-07-03 ─ 版本規範.md 三輪複審:yank × min 死角補規則、升級通道收斂「僅跨牆恆免費」、pinned 檢查點 staleness 上限定案(跨 5 檔)

決策檔:D-20260703-02D-20260703-03

三輪(端到端情境走查 / 改後自洽 / 操作表落地)。修:

  • 中 yank × 動態 min 交互矛盾——情境:min 已 ratchet 到 V、V 後被 yank → §22「降版到最近非 yanked 鄰版」落在 < min 的版 = unusable、§24 進房擋下,兩規則打架;且無規則保證 yank 出貨時存在可遷的好版本(若 V 是最新版 = 全 type 無版可用)→ 新規則:可用性與降版目標一律在非 yanked 版本集合上計算;min 落在 yanked 版 → 過渡期有效地板 = min 之下最近非 yanked 版(例外優先於 unusable 判定);CI 強制 yank 清單變更必須同版存在非 yanked 替代版;§18 降版目標公式補「(略過 yanked,§22)」。
  • 中 「非破壞舊版升級照常收費」懸空通道砍除——二輪殘留:(a) 上鏈費只燒在 UgcUploadEvent/UgcForkEvent,而 UpgradeEvent 已定案「即註冊事件、不另寫 UploadEvent」= 付費升級無事件可掛費;(b) 產品面無意義(非破壞舊版本就活躍、mesh 又被驗證鎖死)→ 升級通道收斂:僅限跨破壞牆(舊 CID 棄用 / unusable)、恆免費;非破壞舊版無升級通道(改內容走一般付費上傳 / fork);收件驗證五條 → 六條(新增①「舊 CID 低於該 type 最新破壞牆」——牆隨 major 出貨 = 純 client 靜態判定、無共識問題);UpgradeEvent 明文「不帶費用」。§23+ledger §1+經濟系統費用表三檔同修。
  • 細項:§14/§25「client_version 相同」→「major 相同(其餘五欄全等)」+掛 §16 發版軸掛鉤(映射隨 major 出貨 ⇒ major 相同即映射集相同——核心保證閉合)/ §18「破壞牆表一致(client/ledger 衍生)」→「牆 / yank 清單 = client 隨 major 出貨;棄用・min = ledger 衍生對 pinned 檢查點算」+兩處「8 人」漏網 →「全員」/ §3 清單資料列補「yank 清單除外 → major」(防 pattern-match 錯入 minor 家族)+§4 path 表補 src/asset-schema/ 列+§12 補 B 軸列 / 治理事件流程 §6 補兩列(B 軸 schema → major、yank 清單 → major)/ ⭐§20「可加 N 舊上限」定案 = ROOM_PINNED_CHECKPOINT_MAX_AGE_HOURS = 72(初估、程式參數表 §5;preRaceVersionCheck 拒過舊 pin——防惡意 host pin 遠古檢查點讓 unusable 資產復活)/ §13 不變式補 B 軸 CI 三條(遷移描述子每牆恰一份含雙向、yank 附替代版、schema/牆/yank 變更 ⇒ major)。

2026-07-03 ─ 版本規範.md 二輪複審:B 軸發版軸掛鉤定案、UpgradeEvent 收件驗證五條、升級免費條件改「棄用即免費」(跨 7 檔)

決策檔:D-20260703-02

二輪多角度(濫用面 / 發版軸掛鉤 / 收件驗證覆蓋)。修:

  • 高 B 軸機器的發版軸掛鉤未定義——破壞牆表 / 保留映射函式 / 新 schema 版 / yank 清單全隨 client 出貨,但沒說隨哪種 bump;A 軸配對閘只比 major,若牆 / 映射 / yank 隨 minor 出貨 → 同 major 不同 minor 的 peer 算出不同降版目標(desync)或看不懂新版 extras;§14「同一套保留映射函式」核心保證只有全部 major-gated 才成立 → 定案:任何 schema bump(破壞或非破壞)=新映射 / 新牆隨 client major 發版(§16 新列;本就是 §3「影響 deterministic = major」的必然結論、明文化);yank 清單 = client 隨附資料、隨 major 出貨、不上鏈(§22+UGC機制 §10.5 鏡像);loader 三分支 → 四分支:新增「open4wd_version 高於本 client 該 type 支援上限 → 拒絕載入+提示升級」(§15+建模參數表 §2 鏡像——跨 major 資產流通到舊 client 的缺口);連帶修 DerivedState 純度versionStatusByCid'yanked' 拿掉(client 清單不得混入純 ledger fold;讀取層 overlay,同 DMCA 清單 / 廢止材質模式;ledger.md §2+資料系統 §4 鏡像)。
  • AssetVersionUpgradeEvent 零收件驗證 = 繼承劫持洞——偽造後繼邊指向熱門資產舊 CID 可劫持評分 / 使用次數 / fork 樹位置(§23 三項全繼承)+白拿免費上鏈;或創作者「升級」時整個換 mesh = 免費改版通道白吃繼承 → ledger.md §1 新增收件 / apply 驗證五條:① event.peerId = 舊 CID 血緣節點創作者(後繼必為同人可執行化)② 同 type ③ 版本單調後繼 ④ 舊 CID 非仲裁黑名單(下架品不得換皮復活;DMCA 清單隨版不入共識、維持 pinning / 載入層擋)⑤ 新舊 mesh 幾何指紋一致(僅 extras 差異)——schema 遷移只動 extras、改 mesh = 新上傳 / fork(付費不繼承);⑤ 副效益 = 升級免 similarity 重宣告(mesh 全同 → 對他作相似度不變);AssetVersionUpgradeEvent 即新 CID 註冊事件(不另寫 UgcUploadEvent);每舊 CID 首筆有效、不符任一整筆 no-op。
  • 中 升級免費條件自相矛盾+ratchet 摩擦(使用者裁「棄用即免費」)——§23 首句「①②免費」vs 防濫用句「確實低於 client min」(經濟系統 §10 同句)打架:低於 min = 只有 unusable 免費 → 棄用期升級要錢、而 min 要 3 個不同創作者升級才動 = ratchet 靠人付費點火 → 免費條件改「舊 CID 處於棄用 / unusable(最近破壞牆之下)」、非破壞舊版照常收費;「client min」錯誤措辭一併消(min 是鏈上動態值);兩檔同修(§23+經濟系統費用表)。
  • 細項:§19 min 推導 predicate 精確化(對每道牆 V:「從 <V 升到 ≥V」不同創作者數 ≥ 門檻 → min 抬到 V、取最高滿足、單調;ledger.md §2 同註)/ §19「排除基礎公版」實為空集 → 改說明括號(公版 builtin: 前綴不在鏈上、天然不計)。觀察不動:門檻 3 的 Sybil 成本 = 3 小號上傳費、得手後果僅「舊資產轉 unusable 但可免費升級 / fork 救援」傷害有限,維持初估待 playtest。

2026-07-03 ─ 版本規範.md 首輪複審:升版套用 idle guard、房間 pin = 正式帳本檢查點定案(跨 4 檔)

決策檔:D-20260703-03

首次逐檔複審(A 軸 §1–13 + B 軸 §14–26)。乾淨面:B 軸核心(§17–§25)與 UGC機制 §10 / 資料系統 §4.1 血緣節點 / ledger AssetVersionDerivedState / DEPRECATED_TO_UNUSABLE_THRESHOLD(=3、數不同創作者、client 常數合規治理可調鐵則)全對上;type enum「8 零件 + track」、UPDATE_* 常數、versioning.md 全指標皆驗證無誤。修:

  • 中 升版自動套用 / 24h 強制升版無「比賽中」防護——minor「2 分鐘後自動套用」= skipWaiting + reload,比賽中 reload = 異常斷線 −5 + forfeit(升 patch 版把人打斷線扣信譽;Stage 2 反而有 local draft 保護、比賽沒有)→ 新增套用時機 guard:自動套用與強制升版只在 idle(非比賽中、非房間內)觸發,賽中 / 房中發現新版 → 提示但延後至離開後下一個 idle 時點。落點:版本規範 §8.2(權威)+ §10 強制執行點註 + 升版流程 §2 流程行・§5.3 表下註 + versioning.md §5 SKIP_WAITING 觸發前置 guard。
  • 中 §20 房間 pin 對象定案 = 正式帳本檢查點——原文「pin 一個帳本檢查點(host 觀察到的 log head)」把兩個不同物件畫等號(07-03 後檢查點 = 24h 間隔治理多簽 LedgerCheckpointEvent、log head = 任意日誌頭)→ 定案 pin = host 已同步的最新 LedgerCheckpointEvent、非任意 log head(全 corpus 用語一致、「N 舊」上限自然以檢查點計、sync 錨點天然;版本閘門最多 24h 舊正是「新增事件不中途踢人」設計意圖、B 軸 min 移動慢無害);鏡像同修 賽內機制 §1.6。連帶修「(同 §7 economy_config 做法)」不精確——economy = 開賽前讀最新驗全員相等、B 軸 = pin 後不追新,兩 freshness 政策不同、明文分開。
  • 細項 6:§12「material-params/ 數值」漏 derive_logic → 補雙 bump(§4/§13 同檔本就雙、§12 自打)/ 「8 人」硬編 ×4(§6/§7/§14 表+§14 段落;賽內機制 §1.6 A 軸行同修)→「同房全員(2–8 人)」/ §3 分類表補「清單資料 minor」家族列(材質廢止 DEPRECATED_MATERIAL_IDS・DMCA 下架清單・文字黑名單庫資料——三者已各自定案 minor、版本權威檔反而沒收錄)/ §16 破壞性觸發「配對演算法改」→「零件 ↔ chassis 介面配對〔convert〕演算法改」(防誤讀為 matchmaking)/ §15 補「版本號段位不編碼破壞性」註(bump 一律末段 +1、首段保留恆 1;破壞與否由遷移描述子 / 破壞牆表記錄——§18 例本就破壞非破壞都動第二段)/ §5.1「鑄幣公式不同」→「鑄幣參數不同」(公式改版屬 derive_logic major、§2 自己的分界)。
  • 觀察不動:§1 protocol_version 標 semver 但 §5 全等比對(semver 語意用不上、無害);§8.2「2 分鐘」屬 UI 文案不常數化。

2026-07-03 ─ 資安規範.md 三輪複審:SignedPayload 事件劃界修正、Angular 對正、網路層攻擊索引(跨 1 檔)

三輪多角度(改後整檔自洽 / 逐節紅隊 / 對照模組地圖找漏索引)。乾淨面:前兩輪修改自洽、key-manager §9 ↔ §3.4 互指分工成立、Race Sign Key 粒度屬多回合模型已記錄暫定項維持。修:

  • 中 §3.4「所有 P2P 訊息與 ledger 事件共用 SignedPayload」過度宣稱——撞 資料系統 §11 劃界(nonce 屬 P2P 即時訊息層;事件無 nonce 欄、replay 防護 = 內容尋址 CID 冪等 + 首播 ±30s 收件驗證)→ 改「所有 P2P 即時訊息共用」+新註「Ledger 事件不走 SignedPayload、簽章為 BaseEvent.signature(多簽事件 signatures[])」;順帶消掉舊「多簽情境 nonce 各自 vs 共用」懸案(多簽者皆事件、無 nonce,問題不存在);§3.2 Ledger event 列補多簽例外。
  • 中 §6.3 白名單「React」→「Angular」(canon 使用技術.md:10;security.md CSP 'unsafe-inline' 註解本就寫 Angular——同檔兩處自相矛盾收斂)。
  • 細項 6:§2.1 流程「限制 vertex / triangle / texture size」對齊重寫後 sanitize(vertex 歸 pipeline;絕對天花板 = 檔案大小 / triangle / AABB / texture / extras)/ §2.2 補「本表僅 worker 執行限制、結構天花板見 security.md §1.2 + 程式參數表 §4」防半鏡誤讀(昨日 64KB 誤讀的防呆)/ §1 收件驗證列括號補 anti-piracy §5.1 / §13 補 chat-system/ 列(聊天簽章 + 收訊端限速——07-02 機制 §3.2 有提模組表漏列)/ 檔頭角色行補「不可信 GLB 信任模型、收件驗證索引、反作弊索引」/ §3.2 ConfigUpdateEvent 列補門檻 floor(2N/3)+1(同帳本檢查點 signer set,治理事件流程:25)。
  • 觀察落檔 2:§14 補 P2P IP 可見性誠實揭露(「同房玩家可見你的 IP、P2P 本質無中心中繼」——與聊天證據揭露同哲學、只揭露不承諾不存在的中繼);新 §11.3 網路層(eclipse / 假分叉)純索引既有緩解四條(檢查點 floor(2N/3)+1 多簽 / pinning 訂閱檢查點 §7 / fork resolution 決定性收斂 / libp2p PeerScore graylist-reject)。

2026-07-03 ─ 資安規範.md 二輪複審:sanitize 舊模型殘塊重寫、不可信 GLB 解析信任邊界、C4 第五鏡(跨 7 檔)

決策檔:D-20260703-04

多角度二輪(交叉引用有效性 / 常數權威對帳 / 威脅模型完整性 / 本週改制殘漂)。乾淨面:全部「詳見 §N」指標存在且相符、六常數與 程式參數表 §4 全對、檢查點 floor(2N/3)+1 / 快照 ⌊在場/2⌋+1 / Bug Bounty 離鏈自籌均一致。修:

  • 高 security.md §1 SANITIZE_LIMITS 舊模型殘塊整組重寫(資安規範 §2 指它為權威、且數值只存在該處):MAX_TRIANGLES 100_000 撞場地 visual 3M(Stage 2 才 decimate——照舊寫法合法大場地在 Stage 1 就被拒)、MAX_BOUNDS_M 100 撞場地 500×500×100m、MIN/MAX_MASS_G 50–500MAX_DENSITY_RATIO+介面 expectedMass「玩家宣稱質量」= 重構前概念(質量 = 體積 × 材質密度、材質 Stage 2 才指派,sanitize 時算不出)、meshFormat obj/stl 廢(GLB 唯一)、not-manifold 拒收撞 volume watertight→voxel 備援鏈(non-watertight 屬合法輸入)。改為結構安全「絕對天花板」——只擋任何 type 都不可能合法的 GLB、數值改引 canon 常數(TRACK_GLB_SIZE_MAX_MB 80MB parse 前擋 / TRACK_VISUAL_TRIANGLE_COUNT_MAX / TRACK_AABB_MAX_MM / 4K texture 邊長 / 退化三角形引 PART_DEGENERATE_TRIANGLE_AREA_MIN_MM2)+新結構常數 SANITIZE_EXTRAS_MAX_BYTESSANITIZE_EXTRAS_MAX_DEPTH = 8(初估)進 程式參數表 §4;per-type 幾何・質量・密度檢核歸 Stage 1–3 pipeline、sanitize 不重複設限(明文註)。同日勘誤(使用者質疑場地不夠用)SANITIZE_EXTRAS_MAX_BYTES 65536 → 16_777_216(16 MB)——64KB 是零件尺度、忘了場地 extras 總量會累積(route[] 間距下限 100mm、長賽道可合法累積數萬節點名 ≈ 5–10 MB + ≤100 entity extras),違反「絕對天花板只擋任何 type 都不可能合法」原則;desc 並補「extras 總量 ≠ GLB 檔案大小(檔案天花板 = TRACK_GLB_SIZE_MAX_MB 80MB)、防 junk-JSON 灌爆非設計預算」防再混淆。
  • 中 不可信 GLB 解析信任邊界(新 §2.4):Stage 1–3 + sanitize 全在上傳者 client、擋不住改裝 client 跳過檢核直接上鏈敵意 GLB,而收件驗證(similarity 指紋重算)與載入(車庫 / 進房)必須解析它——一筆敵意上傳 = 全網解析炸彈。定案:所有不可信 GLB 首次解析一律進 Sanitize Worker 同隔離同限額(上傳前 / 收件重算 / 首次載入;CSP worker-src 本已預留);失敗 / 超時 / 超限 → 本地拒用 fail-fast(比照 材質表 §11 loader 慣例;拒用是本地行為、非共識拒收);收件重算 GLB 未同步或解析失敗 → 暫緩排隊、有界重試(比照 settlement base 模式)。落點:資安規範 §2.4+§11.2 註(上傳檢核 = 誠實 client 品質閘)+§15 不變式「不可信 GLB 不進主執行緒解析」+security.md §1 intro scope+anti-piracy §5.1 收件驗證補解析隔離與暫緩條款。
  • 中 治理事件流程 §6 兩列:文字黑名單「✅ major(賽中即時過濾)」= 07-03 C4 修漏的第五面鏡子 → 對齊四鏡「庫資料 client minor、僅上傳 pre-check + 顯示過濾、不 gate 配對」;「Service Worker 升版(SANITIZE_WORKER_VERSION)」誤稱 → 「Sanitize Worker(Web Worker)」(Service Worker = PWA cache 另一物;版本規範 §8 / 升版流程 §5 的 SW 命中皆真 PWA、不動)。
  • 細項:§4 CSP 摘要對權威 security.md §3(form-action 'none''self'、補 IPFS gateway + worker-src、「限簽署的」→「限白名單內的」)/ §3.1「PIN 加密|本地存證用」→「本地金鑰加密儲存(Argon2id + AES-GCM)」+使用技術.md §6 同族鏡像(「對稱加密(待選 AES-GCM)」→ 已定案 Argon2id + AES-GCM)/ §3.2 match 列 ⌊N/2⌋+1 N 未定義 → ⌊在場/2⌋+1(同表快照列既有寫法;ledger.md §1 cell 補「N = 結束時在場」)/ §14「私訊只在房間內」→「聊天訊息…無中心伺服器紀錄」(corpus 無私訊功能)+補簽章證據誠實揭露(對方可留存、檢舉時隨案上鏈公開)+補「助記詞遺失或外洩 = 身分永久失控、無重置機制」/ §5 SRI 改寫(原外部 script 範例被 §4 CSP 'self' 直接擋掉自相矛盾 → runtime 原則無第三方、SRI 防 hosting 竄改產物、未來引入外部資源須 SRI + CSP 白名單雙動)/ §1 防禦層次表補「事件收件驗證 / 全網重算」(本系統最核心對抗層原不在表)+「反作弊」+「Pinning 安全 Header」三層 / security.md §9 括號摘要補 settlement 兩不變式。

2026-07-03 ─ 資安規範.md 複審:§11 反作弊索引追平本週結算反作弊鏈(跨 1 檔)

整檔內部一致、無設計錯誤;問題集中在「資安索引沒跟上 07-03 經濟複審定案的結算共謀防禦」。全部為追平已定案機制、無新規則:

  • §11.1 新增「結算共謀刷幣(全房合謀灌鑄)」列——收件端全網重算 settlement(逐位比對)+ base freshness 錨點(SETTLEMENT_BASE_MAX_LAG_SEC)+ 鑄幣資格閘,指向 經濟系統 §2.1 + ledger §1。原表完全無此攻擊向量(本週建成的主要經濟反作弊支柱)。
  • §11.1 Sybil 列改寫:原「鑄幣速率封頂 + 24h K=5 limit」只講一半 → 補主防線 finisherCount ≥ 3 鑄幣閘(擋 solo / 雙人分身房)+ per-player 有獎場數日限(player_prized_matches_per_day)。
  • §11.1 對齊 賽內機制 §5:補「抄近路 / 跳關」列(Checkpoint 依序點亮 + deterministic 重算);卡關列措辭對齊(卡空重定位 / 卡牆不另設偵測)。
  • §11.1 補 DesyncEvent 語意註:desync 中止寫入的 DesyncEvent 不影響信譽、純供調查(避免資安讀者誤讀為自動判作弊扣分)。
  • §3.2 Match settlement 列補註:多簽之外收件端另全網重算驗證(單靠多簽擋不住全房共謀)。
  • §13 跨模組表:補 economy/(結算收件全網重算 + 鑄幣資格閘)與 anti-piracy/(mesh fingerprint + 相似度比對)兩列;ledger/ 列補 settlement 收件驗證。
  • §15 不變式補兩條:收件端重算與多簽宣稱不符的 settlement → reject;base 未含本場最後 RaceSnapshotEvent(或 lag 超限)的 settlement → reject。

2026-07-03 ─ 灰區上傳改制 similarity-pending(立即上鏈+經濟隔離待審)+ fork parent 資格擋(跨 12 檔)

決策檔:D-20260703-05

源自使用者問「被下架作品的相似上傳會怎樣」→ 挖出「fork 已下架作品無明文禁止」洞 → 討論「70–90 暫緩等仲裁太慢 vs 立即上鏈不嚴謹」→ 使用者要求兩全 → 定案「把『可以玩』與『可以賺』拆開——玩即時、錢等裁決」。

新制(取代原「上傳暫緩」):70–90% 相似 → 選項「立即上鏈(similarity-pending / 改走 fork(對象已下架時無此選項)/ 取消」。pending = 純 deriveUgcUploadEvent 含非空 similarityMatches 宣告 → 自動開上傳期仲裁案、無獨立事件):可組裝 / 比賽 / 展示(標「相似度審查中」),但 royalty 不鑄、usage 統計不記(settlement 與黑名單 / 退役同一過濾點)、不可被評分(防審查期刷 +20)、不可被 fork對其之版權檢舉拒收(已有審理中案)。判非抄 / 流局 → 解除隔離、經濟開始(審查期不補發——同尾數不補哲學;流局解除=無辜者不被社群怠惰懲罰、事後檢舉承接);判抄 → 下架BlacklistEvent)、不扣信譽(灰區撞衫原則保留)。≥90% 維持拒收+申訴(申訴期不上鏈)——三檔梯度依誤判率給通道。仲裁機器沿用(moderation 新 §5.7:案錨 = 上傳事件、兩造 = 上傳者+相似對象作者、reportEventId 指上傳事件、結果不進準確率)——順帶修好舊「暫緩」的未定義(案原本無鏈上錨、仲裁者無證據來源;新制證據天然上鏈)。防濫用UPLOAD_PENDING_MAX_PER_UPLOADER = 3(同時待審上限、與檢舉端同構);收件驗證 = 驗宣告真實性(逐對整數重算、宣告含 ≥90 拒收)、完備性不驗(各 peer 索引瞬時不同、驗完備會 split)——隱匿宣告由事後檢舉承接(安全港誘因:誠實宣告最壞判抄只下架 vs 隱匿被抓 −100+三振=自我執行)。經濟誘因複驗:對真抄襲者 fork 嚴格優於 pending 賭局(fork 立即領 70%、pending 零收入且判抄歸零)→ 快速通道不吸引抄襲者。

fork parent 資格(前段討論定案)parent 不得為已下架(仲裁黑名單 / DMCA 清單)或 similarity-pending 作品 → 拒收——fork child 實體含 parent mesh(侵權物再散佈起點)、新血緣讓被定罪者從新作永續領 20%(既有 fork 的正交保護是護無辜、不開新洗白道);重製正道 = 大幅修改後以原創上傳(判定基於內容、非血緣——與黑名單不傳染同哲學鏡像);版權 §3.6 fork 救援註明僅限 unusable / 退役。相似上傳命中已下架對象 → 不硬擋、拿掉 fork 選項+提示申訴路(誤判緩衝 = 仲裁本身,使用者裁定方向)。

落點:anti-piracy.md §4 / §5 表 / 新 §5.1、moderation.md 新 §5.7 + canFileReport pending 擋、版權.md §4 parent 資格 / §5.3 三檔表 / §3.6 / §8、資料系統 §3(similarityMatches 宣告註)、ledger.md §2(UgcDerivedState.similarityPending)、economy.md §2 / §4(pending 過濾 ×2)、ugc-rating.md(submitRating 擋)、UGC機制 §4.2 + UGC上傳流程 §4(拒收列 ×2 檔)、衍生流程 §1 / §9、程式參數表 §5(新常數)、信譽系統 §5.1(措辭)。grep:「上傳暫緩」/「需仲裁通過才可上鏈」0 殘留、similarity-pending 12 檔口徑一致。

同日追補——鹽化占位攻擊(使用者發現)+對象分層與安全港次數閘(跨 7 檔):使用者指出相似度鏈占位:攻擊者連傳 A1(70% 似 A)→ 判抄下架、A2(70% 似 A1)、A3(70% 似 A2)——判抄作品指紋永留索引且各硬擋自身 ≥90% 鄰域 → 真原創 B(91% 似 A3、僅 50% 似 A)被自動拒收;灰區不罰=製鹽零信譽成本、鏈式行走可把封鎖區延伸任意遠、零件設計空間有限更放大。評估=半真但成分真(≥90 可申訴故非「無人可上傳」,但鹽化摩擦+仲裁 DoS+安全港無限重試三成分皆真)。修法兩條:⭐① 對象分層——仲裁判抄下架(on-chain BlacklistEvent)作品的相似命中任何 % 至多 similarity-pending、永不硬擋(B 至多過一次仲裁即獲清白;鹽從「封鎖」降級為「一次審查」);DMCA 清單維持硬擋(標記站外 IP 領域本就該攔;且清單隨 client 版、不可入共識分層——收件驗證只能吃 on-chain 狀態,否則跨版 split);混合命中取最嚴(任一 ≥90 match 為活躍 / DMCA → 拒收)。攻擊面精準封死:仲裁下架=攻擊者唯一能自製的鹽、DMCA 鹽需真版權方配合做不到。⭐② 安全港次數閘(斷鹽鏈)——同一上傳者 rolling 30 天內上傳期判抄 ≥ 3(UPLOAD_PENDING_SUSPEND_STRIKES / _DAYS)→ pending 通道暫停 30 天(灰區僅剩 fork / 取消、< 70% 原創上傳不受影響);純 derive(數上傳期案 pass 結果)、不動信譽——安全港留給誠實撞衫者但非無限次。壓測確認:侵權變體重傳(≥90 似 DMCA 物)維持自動拒收;誠實者三連判抄僅關灰區通道;Sybil 換號重製鹽=上鏈費 ×3+每鹽一次完整仲裁、有界殘餘 playtest 觀察。落點:anti-piracy §4(reject case 分層)/ §5.1(兩規則+收件驗證措辭)、版權 §5.3 對象分層段 / §8、UGC上傳流程 §4、衍生流程 §2 fork 檢核、moderation §5.7(pass 結果累積次數閘)、程式參數表 §5(+2 常數)。同日版權.md 第三輪複審:兩波大改後整檔重讀自洽(§8 step 2 exact-CID 與分層無衝突、§3.4 既有樹 vs §4 新 fork 分界乾淨、70–90 vs DMCA 物語意閉合);細項 3 打磨——§5.3 表 ≥90 行補分層限定詞、§10 既得權益表補 similarity-pending 判抄列(審查期未鑄 → 無回收問題=隔離閉環)、§12 對接表補 similarity-pending。版權.md 三輪複審完結、無待辦

2026-07-03 ─ 版權.md 首・二輪複審:授權不可撤銷+AI 內容條款、fork 判定兩節 scope 註、§5.2 重編號、文字黑名單去「升 protocol」、公版資產授權補列(跨 7 檔)

決策檔:D-20260703-06

首次逐節複審;中 2 細項 5 觀察 1(使用者照建議裁可)。

M1 §2 上傳協議補「授權為永久、不可撤銷」(原五條沒寫——整套 fork 經濟的法律地基:retire / 下架只影響未來直接使用與 royalty,不撤銷既有 fork 的衍生授權與已上鏈內容〔fork child GLB 實體含原作 mesh、ledger append-only〕);條款 6 補雙路徑(DMCA 維運層 + 社群檢舉仲裁 −100——兩路平行,對齊 §10 表)。M2 §5.2.4 / §5.2.5(原 5.2.5 / 5.2.6)前插 scope 註:rigidDiff / functionalDiff 屬 fork 原創判定(ugc-fork 物理 / 功能指紋聚合策略、設計理由收於版權檔=刻意互指),≠ 所在 §5.2 標題的 anti-piracy mesh 幾何指紋——正是 06-11 勘誤警告的兩套指紋混淆點。細項:C1 UgcForkEventextends BaseEventcreator → 繼承 peerId——BaseEvent 權威欄位名;版權 §3.1 + 衍生流程 §2 兩處);C2 §4 補兩個 10% 門檻區辨註FORK_SIMILARITY_THRESHOLD_PERCENT = 宣告 fork 最小修改幅度・protocol 常數・量測 per-type diff ↔ forkDetection.stage1_geometry.passthrough_threshold = 原創偵測快篩・治理 config・量測 (頂點+AABB)/2——恰同值、兩套機制、勿合併);C3 §5.2 跳號重編(5.2.3→5.2.2、5.2.4→5.2.3、5.2.5→5.2.4、5.2.6→5.2.5;外部引用 anti-piracy.md / ugc-fork.md 同步改);C4 文字黑名單「更新需升 protocol」→「格式版本=常數;庫資料隨 client minor 出貨(同 DMCA 清單模式、僅上傳 pre-check 不 gate 配對)」——四處鏡像同步(版權 §7 / 程式參數表 §4 / DMCA流程 / chat-system.md);C5 §3.6 fork 救援補前提「GLB 仍可取得——已退役 unpin 者先 unretire 激活;全網無人持有則無法救援(歸檔=best-effort)」。D 觀察不動:退役 unpin 後 GLB 可能永久遺失=P5 既有取捨。乾淨面:§3.2–3.5 分潤全鏈(本週修過項在位)、§5.3 門檻 90/70 ↔ anti-piracy、§6 DMCA 全段 ↔ 07-02 維運層化、§8 pre-check、§10 既得權益、§13 透明度。版權.md 首輪複審完結

同日第二輪多角度複審(授權鏈深層完整性 / 流程 walk-through;中 1 細項 4 全修):⭐M1 §2 補「AI 輔助 / 生成內容視同上傳者作品」條款(使用者裁可)——UGC機制 §3.7/§3.8 明文支援 AI mesh 工作流(Tripo / Meshy 為預期輸入源)、但版權檔對 AI 內容零著墨(可版權性各法域不一、AI 服務輸出條款各異)→ 責任錨在上傳者(含確認所用 AI 服務條款允許依本協議授權)、與「不得侵權」條款同構。C1 §1 版權範圍表補「公版資產(assets/builtin、24+3)」列(隨 codebase license、非 UGC——不參與分潤不可評分;原全 corpus 未寫);C2 §1 第三方 row「音樂相關不在本企劃資料夾收錄」殘句(脫鉤後音樂規劃在 其他/audio-system.md 待定)→ 改指標;C3 §8 pre-check step 4 補 70–90% 灰區分支(上傳暫緩、開上傳期仲裁——原流程只有 ≥90 拒收與通過兩出口);C4 §2 條款 2 補「衍生作品自動保留原作署名(immutable,UGC機制 §7)」——corpus 強制的署名權首次在版權檔明文。D 觀察不動:fork child 轉授權由「每次上傳自動接受同一份協議」構造性保證(share-alike by construction);DMCA notice 衍生 CID 由版權方自行列舉。版權.md 二輪複審完結、無待辦

2026-07-03 ─ 資料系統.md 首・二輪複審:手動退役限創作者、DesyncEvent 目錄補列+殘稿清理、多簽事件例外註、DerivedState 兩清單對齊(跨 6 檔)

事件目錄權威(§3)首次逐檔複審;高 1 中 2 細項 3 全修(使用者照建議裁可)。

H1 手動退役「任何人可付」=經濟攻擊:ledger.md §7 UgcMaintenanceEvent.payer「通常創作者,但任何人可付」× reason:'retire'=立即退役 → 任何人付一筆 maintenance_burn 即可下架他人熱門 UGC(loadout 阻擋+royalty 斷流=一次性小額費用的競品攻擊);資料系統 §13 標籤「創作者意志」與規則自相矛盾 → retire 守門:收件 / apply 驗 payer === 該 CID 血緣節點創作者、不符無效 no-op(同燒幣守門模式);renew / unretire 維持任何人可付(利他續命)。兩檔同步。M1 DesyncEvent:(a) §3 事件目錄漏列(ledger.md §9 有完整 interface)→ 補「賽內異常」列;(b) 比賽進行流程兩處 stale 語意——:143「寫入後續用於檢舉 / 信譽扣分」+ :205「累積 → 黑名單」與權威 ledger §9「不影響信譽、純供調查」直接矛盾(07-02「作弊非檢舉類型、黑名單=純仲裁三振」定案前殘稿)→ 改對齊(持續 desync 踢出計棄賽=自動處置、斷線 −5 / forfeit 自然承接)。M2 多簽事件例外:§3「所有事件帶 signature」對 MatchResultEvent / RaceSnapshotEvent / ConfigUpdateEvent / LedgerCheckpointEvent / DesyncEvent 不成立(signatures[] 多簽)→ 補例外註;順帶 economy.md:29 event.signerevent.peerId(BaseEvent 權威欄位名唯一 drift)。細項:C1 'config_update''config-update'(全 corpus 唯一 snake_case 事件名,資料系統 §12+治理事件流程 兩處);C2 §5 數字精度補整數域(X100 / 查表——與算式表 §0 對稱);C3 本機工作筆記勘誤(早前筆記「社群代表選舉撤案」易誤讀——落檔為 DMCA流程 §103「不設社群代表」、corpus 無 EndorsementEvent)。乾淨面:事件目錄其餘全對帳(含三句「無獨立事件」否定式)、§6/§17/§18 本週新狀態、§9.1 兩階段純函數、§13 退役效果 ↔ 版權 §3.4。資料系統.md 首輪複審完結

同日第二輪多角度複審(儲存 / 序列化語意 / DerivedState 對帳 / 裁剪×錨;中 1 細項 6 全修):⭐M1 §4 DerivedState 清單與 ledger.md §2 巢狀權威互不對齊——§4 缺列 Moderation / Rating / Match 三個 impl 實存子型別、Ugc 行誤含「rating 累積 / 黑名單」(impl 分屬 Rating / Moderation)、ForkTreeDerivedState 實為概念視圖(impl 巢於 ugc.forkLineage + record ancestors)、AssetVersionDerivedState 在 ledger.md §2 完全無落點(B 軸動態 min 是共識 derive、必須住 DerivedState)→ §4 表重排(+3 列、Ugc 行修正、ForkTree / AssetVersion 加 impl 標註)+ ledger.md §2 新增頂層欄 assetVersionAssetVersionDerivedState interface(minSupportedByType / versionStatusByCid / successorEdges)。細項:C1 §1 OrbitDB 行例子「鑄幣 / 信譽」=不存在的事件類(與 §3 三句否定式自打)→ 改「UGC 上傳 / fork / match-result / 檢舉仲裁 / 治理」;C2 §5「欄位順序依 spec 固定」誤導 → 「dag-cbor canonical 排序(格式內建——map key 長度優先+bytewise;禁自訂 / hashmap 插入序)」;C3 §7 補 scope+指標(裁分歧鏈=resolveFork 找共同祖先檢查點→比鏈長→checksum tiebreak〔ledger.md §4〕;事件級競合走 CRDT total order 首筆有效模式〔moderation §5.6〕);C4 §6「賽後可裁剪」補下限「最早於該場 MatchResultEvent 落地後」(settlement 收件驗證以快照為新鮮度錨);C5 §18 補 CI 不變式 ∀ peer: balance ≥ 0(唯一例外首次上鏈負資產);C6 §11 補劃界「nonce 屬 P2P 訊息層、ledger 事件無 nonce 欄(內容尋址天然防 replay、冪等)」。乾淨面:首輪六修在位、ledger §1:42 match-result 簽章例外表 ↔ §3 footnote 咬合、resolveFork 機制完整(checkpoint 錨點模型在 CRDT log 上自洽)、§12 ↔ 治理事件流程 同步。資料系統.md 二輪複審完結、無待辦

2026-07-03 ─ 算式表.md 首・二輪複審:質量公式單位 ×1000 修正、風力對齊 8 向 aero、stress 量綱閉合 K_IMPACT_DEPTH_MM、磁源平均法向釘定、磁力 Newton 3rd(跨 6 檔)

物理段(§0–§11、§20–§21)首次逐式複審(§12–19 經濟信譽段同週已修);高 1 中 2 細項 7 觀察 2,使用者全數照建議裁可。

H1 §1 質量公式單位錯 1000 倍mass_grams = volume_mm³ × density_g_per_mm³——材質表權威 density: g/cm³(表+TS 介面兩處)、corpus 體積慣例 cm³(K_MOTOR_INPUT W/cm³ 等)→ 改 volume_cm³ × density_g_per_cm³(幾何積分 mm³ ÷1000 換算註記)。M1 §10.3 風力公式=舊模型殘留wind_speed_n × frontal_area × cos(夾角) 與建模 §4.2「runtime 讀 8 個 drag_coefs 套用本式」對不上(frontal_area+連續 cos 是 auto_frontal_drag_coef 廢除〔05-24〕前殘影、量綱 N×面積也錯)→ wind_force = wind_speed_n × drag_coef(風向相對車身角)(N × 無量綱=N 免 K;水平相鄰兩 cardinal 桶〔±X/±Z〕線性插值、俯仰對角桶不參與水平風)。M2 §7 stress 量綱未定impact_energy / contact_area = J/mm² 直接與材質 MPa 閾值比大小(差一個變形深度、無 K 可校)→ stress = impact_energy_mj / (contact_area_mm² × K_IMPACT_DEPTH_MM)(mJ/(mm²·mm) = MPa 量綱閉合;新常數 = 等效變形深度 1.0 初估入 程式參數表 §18);遊戲機制 §4.5 同款 copy 同步。

細項 7:C1 磁源↔磁源單一 N 極向量推導釘定——「sub-mesh 表面法向」逐面無單一向量、§5.3 內積無從算 → 面積加權平均法向(pre-bake 入 extras;退化〔近球對稱平均趨零〕→ fallback node +Z),五處鏡像同句(算式表 §5.1 / 材質表 §8.3+magnet_floor desc / 建模 §5 速查+§9.4)+順帶修建模 §5 速查「passive 磁源 N 極」誤植(passive 鐵磁無 N 極 → 材質型〔靜態〕磁源)/ C2 §3 殺手鐧未定義變數 heat_increment → 明文 = applied_energy × K_CHIP_HEAT / C3 §0 量化行補第三域「信譽 / 評分 / 仲裁權重=整數(X100 / 查表,§16–19)」/ C4 §1 裸值掛常數名(VEHICLE_TOTAL_MASS_MIN/MAX_GRAMSVEHICLE_PART_MASS_RATIO_MAX)/ C5 §20 σ_minTRUESKILL_SIGMA_MIN(6.0)+「§配對」鬆錨 → §1.2 / C6 §5.2 r 標 mm(尺度 K 吸收)+ §6.1 part.surface_area = auto_surface_area_mm2 標註 / C7 §10.2 「≤ 50 個」掛 WEATHER_PATCH_COUNT_MAXD 觀察不動:patch seed 線性混合弱(跨 seed 碰撞、全 peer 一致=共識安全、純 RNG 品質);patch 預設值表單一 copy 住算式表。乾淨面:§18 K 常數 19 名全數對帳(公式用名 ↔ 程式參數表逐一對上);§2/§3 能量模型、multi-actuator ω、general_push、§6 熱、§11 回合初始、§20.1 deriveTotalRanking、§21 治理註全數與定案一致。算式表.md 首輪複審完結

同日第二輪多角度複審(impl 鏡像 / 數值走查 / 完整性;中 1 細項 2 全修):⭐M1 §5 磁力 Newton 3rd 未明文——§5.2 force 只施 target、§5.3 連施給誰都沒寫;磁場力是引擎手動施加(§4「Rapier 自然處理」僅指接觸碰撞、不含場力)→ 照字面實作=武器磁鐵吸對手而自身不受反向拉力(單邊物理、零代價牽引)→ 兩式補「force 施於 target / b、同時 −force 施於 source / a」(場地 fixed / kinematic 磁源施了也不動、天然無影響;武器磁鐵吸人自身同被拖——重吸輕 vs 輕吸重的戰術差異)+ §5.3 補 delta = b.position − a.position 定義。C1 §0 單位行補「衝撞 stress 鏈用 mJ(§7)」;C2 §20 補 displayRating = μ − 3σ 一行(權威留賽內機制 §1.2、含窗口 ±5/+5per10s/±30 指標)。驗證乾淨面:第一輪三式(質量 / 風力 / stress)impl 側零殘影(physics-engine.md 僅指標式引用);數值走查(K_IMPACT_DEPTH_MM=1:3 m/s 日常碰撞 ≈ 9 MPa < yield、10 m/s 對撞 ≈ 50 MPa ≈ burst 區——量級可校);8 skill enum / Event-Hold 分類、雙軌耗電(宣告值持續+技能爆發額外=刻意超載設計)、滾動接觸由 yield 閾值天然擋疲勞、§6.4 burn/freeze 與材質表流體一致。算式表.md 二輪複審完結、無待辦

2026-07-03 ─ 經濟系統.md 新時代首〜四輪複審:royalty 公式 100× 修正、公共池廢語、治理可調鐵則、settlement 收件全網重算+base 新鮮度、場級鑄幣資格 mintEligible、per-player 有獎場數上限、燒幣共識守門(跨 16+ 檔)

決策檔:D-20260703-07D-20260703-08D-20260703-09

脫鉤與大改(多回合 / 治理兩軌 / void 閘)後對 經濟系統.md 的完整重審(舊 project-resources 時代 7 輪之後首次)。高 3 中 2 細項 4 觀察 2,使用者裁決:H2 選 (c)、H3 兩群組移出、D1 加上限、其餘照建議;C1 經確認=「承認整數歸零、改文字」非改行為。

H1 royalty 公式尺度差 100 倍(算式表 §14 + 經濟 §7 同款):ratingMultX100 = ratingX100 × 20 實為 X10000 量(ratingX100 已含 ×100)、分母卻只除 100³ → 實發 = 意圖 × 100(rating 4.5 一次使用 9000 minor = 22 倍冠軍獎金,royalty 通膨會壓垮幣值)→ 改名 ratingMultX10000 + 分母補一個 100n(bit-exact、不採 /5 先除後乘截斷),兩檔補「維度驗算:base 50 × rating 4.5 × niche ×2 × 係數 100 = 90 minor」範例。

H2 「公共池」四處引用、零機制、canon 與 impl 矛盾(使用者裁 (c) 歸當前作者):版權.md:71 與 算式表 §15 說缺 grandparent 層「回流公共池」(2026-05-31 D1 對齊時就抄此句)、economy.md computeRoyaltyShares 卻把缺層+整除殘留全補給當前作者、全 corpus 無 pool balance / 事件 / 支出機制、資安規範+security.md 還假設可拿它付 Bug Bounty → 統一「缺層份額與整除殘留一律歸當前創作者——原創(無血緣)作品實拿 100%、無公共池機制」(版權.md:71 / 算式表 §15 / 經濟 §8.1 / economy.md 註解四處同句);Bug Bounty 兩處改「金額與資金來源待定(離鏈自籌;遊戲幣無外部價值不適合作賞金)」。

H3 治理可調鐵則 + newcomer / reputation 群組移出 config(使用者裁移出):兩群組(新手保護 7 天/400、ratingInitial 500 / clamp 0–1000、準確率 30% / 樣本 10)被累積型共識 derive 消費(新手下限經 getEffectiveScore 烘進評分權重、準確率門檻烘進惡意檢舉 delta、初始值改=全史重算)——config epoch 切換會使 genesis replay 與既有 state 分叉。對照安全樣板(revShare / match_prize / creator_royalty / forkDetection = event-creation 消費、結果內嵌簽章事件 → replay 安全)→ 立鐵則「config 值只能在 event-creation 時消費、結果內嵌簽章事件;累積型 derive 消費值一律 protocol 常數」(程式參數表 §17.3 + 治理事件流程新 §2.2 表)。落地:§17.1 介面刪 newcomer / reputation / antiAbuse 三欄、§17.2 刪 10 列、§5 新增 6 protocol 常數REPUTATION_INITIAL/MIN/MAXNEWCOMER_PROTECTION_DAYS=7NEWCOMER_REPUTATION_FLOOR=400MALICIOUS_REPORTER_ACCURACY_MAX_PCT=30MALICIOUS_REPORTER_SAMPLE_MIN=10MALICIOUS_REPORTER_COOLDOWN_DAYS=30);antiAbuse.selfRewardCooldownHours 刪除(impl 零接線、(cid,player) 24h 去重已涵蓋自用)、forkRewardChainDepthMax 併入 revShare.maxDepth(版權.md:59 改名);治理事件流程 §2.2–2.4 三節收斂為新 §2.2「不在治理 config 的值」(含 DMCA 閾值列)+ §2.5→§2.3 / §2.6→§2.4 改號 + §1 流程圖「信譽 / 仲裁走 protocol 常數」+ :234「decay」殘句清除;升版流程 §8.1 / system-constants §4 群組清單同步。

M1 void 場 / 棄賽者仍計 UGC 使用統計(繞過 07-03 信譽 void 閘的第二條路):economy.md applyEvent 原 for player of event.ranking 不設閘 → 雙人 void 房灌 totalUses = usage-milestone +5 信譽與隱式評分(算式表 §19 查表吃 usageCount)可刷;forfeit 者 usage 佔 (cid,player) 去重窗卻沒鑄 royalty(創作者 24h 內少領)→ usage 統計與鑄幣同閘:僅記 finisherCount ≥ 3 場的完賽者(economy.md §2 補 finishers 過濾、經濟 §6.2 兩列+新「使用統計計數規則」段、信譽系統 §2.2 milestone 列註)。

M2 economy.md 硬編治理可調值 + revShare 浮點computeRoyaltyShares 硬編 70n/20n/10n → 改吃 config.revShare(簽名補參數);revShare 0.7/0.2/0.1 浮點違反整數量化 → currentTierPct/parentTierPct/grandparentTierPct pct 整數 70/20/10(程式參數表 §17.2 / §19.2 CI assert === 100 / 資料系統 §17 不變式 / 治理事件流程 §2.1 / 經濟 §8.1 全同步)。

D1 per-player 每日有獎場數上限(使用者裁加):K=5 只鎖完全相同組合、輪換一人即新 comboHash(12 帳號可輪 495 種)→ 新 match_prize.player_prized_matches_per_day = 20(rolling 24h、待 playtest):超限者本場獎金 0、名次保留不影響他人;判定自新 EconomyDerivedState.recentPrizedMatches(applyEvent 記錄、checkpoint GC 同 combos;ledger.md §2 / 資料系統 §4 補欄);settlement 內嵌簽章 → replay 安全;royalty 不經此限((cid,player) 去重節流)。經濟新 §6.1b / §11 表 / economy.md §4 檢查 / 比賽結算流程 §11 同步。D2 併發結算 K=5 微幅超發=有界、觀察不動。

細項:C1 月軟曲線「∞→0 不歸零」錯——整數量化 monthMinted > 99×softCap 時 factorX100 = 0 → 改明文「當月鑄幣停止=等效月硬頂、防極端刷量兜底」(使用者確認採「承認歸零」非 clamp 1——小額 ×1% 截斷後本來就是 0、「永不歸零」原是虛的;算式表 §12 + 經濟 §5 + §11 表);C2 比賽結算流程 §4「Niche 階梯」→「線性連續 ×0.5–×2.0 clamp」(06-01 線性化殘句);C3 經濟 §12 Reputation 對接行語意顛倒 → 「評分權重依信譽 → rating → royalty;使用 / 高評分里程碑 → 信譽加分」。grep 驗證:公共池(權威檔僅剩否定句)/ ratingMultX100 / selfReward / forkRewardChainDepthMax / NewcomerConfig|ReputationConfig|AntiAbuseConfig / 不歸零 / currentTier[^P](含漏網 資料系統 §17 + 程式參數表 §19.2 assert + 升版流程 §8.1)全 corpus 0 殘留。經濟系統.md 首輪結案;乾淨面:bigint 尾數抹零、⌊N/2⌋+1、checkMonthRollover 月界時序、finisherCount / void、slot / sponsor / 負資產全鏈路、版本後繼 §8.1b。

同日第二輪多角度複審(共識驗證鏈 / 新機制交互 / 殘骸掃描;高 1 中 2 細項 4 全修,M2 使用者裁「統一謂詞」):⭐H1 收件端不重算 settlement——全員共謀房可寫任意金額:驗算只存在完賽者簽章前(結算流程 §8.4)、收件驗證原僅「signatures[] ≥ ⌊N/2⌋+1」(ledger.md §1)+ applyEvent「不重算直接套用」——8/8 同農場時多簽對抗性歸零、可內嵌任意 economySettlement,月軟曲線 / K=5 / per-player cap 全部形同虛設 → 收件驗證加「settlement 全網重算」(與 moderation §5.6 同哲學):MatchEconomySettlement 新增 baseLogHeadCid(原只在 P2P 訊息、事件本體沒有=收件端無錨可算)——首播收件 deriveStateAt(baseLogHeadCid)computeMatchSettlement → 逐位比對不符拒收;歷史同步不重驗;假名次 P2P 本無從外驗、但金額回到「被公式與各閘封頂」。落點:ledger.md §1/§5(含簽章保證段)、economy.md §2/§4、經濟 §2.1/§11、比賽結算流程新 §8.6、資料系統 §17 新不變式「結算金額全網可驗算」。⭐M1 比賽結算流程 §9「RaceResultDispute 仲裁」整段刪除(07-02 仲裁大改前殘骸:幽靈事件〔資料系統 §3 無此目〕+ Race 舊前綴 + 「抽選 N 個」舊文 + 接不進 4 種 ReportReason + 對客觀可重算的算術用主觀投票=錯的工具)→ 改「多簽未達門檻=本場無結算、無事件」(該場不存在於帳本——信譽 / TrueSkill 皆由 MatchResultEvent derive、無事件即無從套用;SETTLEMENT_TIMEOUT 既有語意);鏡像 賽內機制 §3.3 同步。⭐M2 場級鑄幣資格統一謂詞(使用者裁定):K=5 canon 原只說「有獎金」、impl 卻連 royalty 一起巢在 combo 閘內(royalty 放行=同組合換裝備繞去重無限刷;同擋=canon 沒說)→ 新 MatchEconomySettlement.mintEligible = finisherCount ≥ 3 且 combo 未達 K=5prizes / royalties / ugcUsageStats 三者同閘(連帶解掉「K=5 超限場記 usage 白佔去重窗」);recentMatchCombos 只記合格場(K=5 計數=窗內合格場、不合格場不佔窗);per-player cap 維持個人層只擋獎金。落點:ledger.md §5、economy.md §2/§4、經濟 §6.1/§6.2/§7/§11、信譽系統 §2.2、比賽結算流程 §8.5/§11。細項:C1 結算流程 §8.5「空 settlement 仍更新 ugcUsageStats」與 usage 閘矛盾 → 依 mintEligible;C2 comboHash 演算法未指定 → 釘 sha256;C3 經濟 §10.1「與舊 onboardingClaimed 同型」廢概念引用刪除;C4 玩家整體旅程 §5「詳見 專案企劃書.md §E」死引用(06-02 已標待清)→ 改「本節即權威、細部操作稿另議」。D 觀察不動:併發結算 staleness 家族(月係數 / K=5 / per-player cap 皆對 baseLogHead 算、並行雙場微幅超發=有界決定性)、monthFactorX100 number 型(≤100 無損)、genesis monthStartTimestamp 自癒。grep:RaceResultDispute / onboardingClaimed / 「最多 5 場有獎金」0 殘留、mintEligible 六檔一致。經濟系統.md 二輪複審完結

同日第三輪複審(二階攻擊面;高 1 中 2 細項 2 全修;使用者三點裁決:加回合終局快照 / lag 600s / 接受窗內並行放大殘餘):⭐H1 baseLogHeadCid 新鮮度無界——二輪收件重算只驗「與 base 一致」、不驗 base 本身新舊:共謀房挑舊 head 當 base(月初 head → factor 100 / 前 5 場之前 → K=5 歸零 / 領獎場之前 → per-player cap 歸零)即繞過全部三個限流器 → 收件驗證新增②「base 新鮮度」雙條款:base 必須包含本場最後一筆 RaceSnapshotEventevent.timestamp − 該快照.timestamp ≤ SETTLEMENT_BASE_MAX_LAG_SEC(新常數 600、涵蓋最壞 takeover 鏈 ~5min、待 playtest);整場無快照 → 僅接受 mintEligible = false前置協議加項(使用者裁加):每回合終局強制一筆賽內快照(60s 節奏外、短回合 <60s 也保證 ≥1 筆——否則快場〔3 圈 40s〕整場零快照會誤傷合法鑄幣;順帶把錨從「最多差 59s」釘到回合結束)+ RaceSnapshotEvent 最小 schema 首次定義matchId+roundIndex+frame+checksum+signatures——原全 corpus 只有行為描述、連對應欄位都沒有)。副效益:base 恆在 lag 窗內 → 驗算免 replay 至舊檢查點、維護近窗狀態即可。已知殘餘(使用者裁接受、入 §8.6 風險註):lag 窗內同 PeerId 並行多場可使各場 base 互不可見 → K=5 / per-player cap 短窗放大 ≤ 窗內可完賽場數倍;月軟曲線全域兜底、apply 端二次檢查複雜度不值首版不做、playtest 觀察。M1 收件驗證「base 尚未同步」→ 明文暫緩排隊重試、非拒收(有界重試 / TTL 防垃圾 base DoS;原字面會誤拒剛上線 peer 收到的誠實事件)。M2 比賽結算流程 §1 流程圖殘鏡——「拒簽,進入仲裁」(二輪刪 §9 漏掃同檔自己的圖)→「湊不滿門檻 → 本場無結算、無事件」;[本地計算] 節點補 mintEligible、per-player 上限;新增 [收件驗證(全網)] 節點。細項:C1 經濟 §4 鑄幣入口觸發欄對齊統一謂詞(「完賽 3+ 人」→「場具鑄幣資格」×2 列);C2 程式流程/ledger.md 事件樹補 baseLogHeadCid + mintEligible。落點:ledger.md §1/§5、資料系統 §6、賽內機制 §2.3、程式參數表 §7(新常數)、比賽結算流程 §1/§8.6、經濟 §4/§11、程式流程/ledger.md。grep:SETTLEMENT_BASE_MAX_LAG 四檔一致、「終局強制」三檔一致、「進入仲裁」殘句 0。經濟系統.md 三輪複審完結

同日第四輪複審(燒幣側共識守門 / 快照三階效應;中 2 細項 3 全修)M1 RaceSnapshotEvent 收件驗證定義——第三輪把快照升格為新鮮度錨、但其收件規則沒定且與 ledger §1「其他事件走標準 BaseEvent.signature」衝突(快照是多簽事件、無單一 signature;「在場人數」收件端不可知)→ 釘「timestamp ±30s + ≥ 1 有效簽章即收、不驗 quorum」(快照對收件端只是時間錨、時間由 ±30s 誠實性保證,quorum 屬賽內共識自理;假快照幫不了 stale base——剛寫的快照舊 head 不含;賽後裁剪不衝突——首播驗證在裁剪前);ledger §1+資料系統 §6 雙落。M2 燒幣事件共識側守門明文化——balance ≥ amount 原只在 §10.1 upload case 與 client builder(builder 是 UX 前置非共識)、economy.md §2 的 slot / sponsor case 無條件 subBalance → 惡意 peer 可寫超額燒幣(無限負餘額=免費刷贊助排行榜+免費車位)→ applyEvent 補雙守門:「餘額不足=事件無效 no-op(apply 序決定性、雙花由 log 序裁——先到扣款後到無效)」+「newSlotIndex ≠ derive(count)+1 無效(防跳級)」;economy.md §2/§5 註+經濟 §10.1 補共識側措辭。細項:C1 比賽進行流程 §5 快照節奏補「每回合終局強制一筆」(第三輪漏掃的鏡像);C2 經濟 §6.2 補劃界「信譽比賽加分閘=finisherCount ≥ 3、不含 K=5、與鑄幣資格刻意不同(同組合第 6 場仍真比賽、+1 合理、量由信譽 24h 日額擋)——勿誤對齊」;C3 經濟 §1 目標表「多簽背書」→「+收件全網重算」(三輪後真實機制)。乾淨面:版本後繼免費三條件 ↔ 版本規範 §23 一致、月界 straddle、快照裁剪時序、mintEligible 全鏈路互引閉合。經濟系統.md 四輪複審完結、無待辦

2026-07-03 ─ 信譽系統第五・六輪複審:仲裁票集合決定性、void 場信譽刷分堵洞+比賽加分日額、規則索引與 history 分離(跨 10+ 檔)

決策檔:D-20260703-11

第五輪換角度(改後自洽 / 票集合決定性 / 生命週期邊界 / 跨子系統組合),信譽系統.md 本體與前四輪骨架驗證乾淨,問題全在耦合檔:高 1 中 3 細項 5 全修

H1 仲裁 tally「票集合」未定義(第四輪 §5.6 只驗 arbiters 欄位、沒驗票源——非面板票照 sample code 會被累加=票灌水繞過隨機面板整個安全模型;同人多票重複累加;期滿後上鏈的票算不算未釘=驗算結果因票集不同而翻)→ moderation.md §5.3 新「票集合」四規則:①面板過濾(只計該輪面板成員票)②窗口(log 序在該輪抽籤點後、期滿檢查點 log_head 前)③每人一票(取窗內 log 序最後一筆、窗內可改票)④重抽輪不沿用(第一輪票作廢、再中籤須重投);arbitration-vote 收件驗證(投票者∈面板、已抽籤未期滿、未撤回,不符拒收);tallyArbitration 簽名補 drawAt;§5.6 驗算第 4 條引用票集合定義;§11 補「票灌水」風險列。同步 信譽系統 §8.2、檢舉與仲裁流程 §1/§5.3。

M1 void 場信譽刷分堵洞+比賽加分日額(使用者裁定=按建議+加日額):經濟系統 §6.2「finisherCount<3 信譽照常更新」寫於 2026-06-02(當時 match 信譽效果只有斷線−5/連勝),06-30 完賽制 +1 落地後繼承「照常」→ 雙人房零成本刷 +1/場、連勝 5 場後每場 +6(+1完賽+5連勝)、167 場到 1000=Sybil 農場滲透仲裁池成本只剩時間。修正非對稱加分(完賽 +1/連勝 +5)與 matchCount 僅計 finisherCount ≥ 3 之場(沿用經濟 void 同門檻同理由「不具競技意義」;連勝窗僅列 valid 場——void 不入窗、不破連勝、不觸發頒發);斷線 −5 不論 void 照罰(void 正為全體斷線而設)。⭐新增比賽加分日額 REPUTATION_MATCH_GAIN_DAILY_MAX = 10(使用者提議、rolling 24h 非日曆日——日界線無跨 peer 共識定義;只蓋 match-finish+win-streak 合計、逐筆檢查(完賽先於連勝)超額不發;扣分不設上限、其他加分各有自身閘不重複蓋;窗口回看觸發事件 timestamp=決定性;待 playtest 校準)。matchCount 計數規則順帶明文化(原全 corpus 未定義)=「非斷線完賽且 finisherCount ≥ 3」與完賽 +1 同一計數。落檔:信譽系統 §2.2/§2.3/§8.1/§10、reputation.md §1/§2/§5.1(deriveMatchReputation 重寫+matchGains24hOfcapped)/§9、程式參數表 §5、經濟系統 §6.2、信譽變動流程 §2、比賽結算流程 §6、賽內機制 §3.2。

M2 ugc-rating.md §7 高評分 +20 provenance(第四輪修過的同類、當時漏掃本檔):appliedAt: stat.derivedAt(欄位不存在+derive 當下時間反模式)+causeEventId: stat.cid as any(CID 硬塞 EventId)+§6.1 呼叫名 checkHighRatedMilestoneEvent 與 §7 定義名對不上("Event" 後綴違反無獨立事件教義)+ revoke 分支不跑里程碑檢查(撤低分票可令 rating 升越 4.5 而漏發)→ deriveHighRatedReputation(stat, ugcRecords, milestones, cause, at) 綁觸發事件(rate/revoke 皆傳 event.id/event.timestamp)、revoke 分支補檢查、變數改 milestoneDeltas;§2 stale TODO「須加入 資料系統 §3」→「已列於」(§3 早收錄)。

M3 新手下限 400「讀點契約」明文化applyNewPlayerProtection 存在但無人規定誰呼叫;ugc-rating §6.1 評分權重讀 raw score(共識 derive——raw<200 於 7 天內可達〔狂斷線〕→ 權重 50 vs 保護後 400 → 100,語意必須擇一)→ 裁定保護作用於分數本身:新 getEffectiveScore(reputation.md §4)=唯一讀分入口;仲裁資格與 weight(now=抽籤檢查點)、評分權重(now=UgcRateEvent.timestamp)、配對過濾(now=consensusNow)、API/UI 全走它;consensus derive 內 now 一律綁事件/檢查點 timestamp。改點:reputation.md §4/§6.2、moderation.md §5.1/§5.3、ugc-rating §6.1、信譽系統 §4.1。

細項 5:C1 canFileReport ①補「玩家已全域黑名單 → 拒」(對象終局對稱;已永 ban 再告白燒 7 席;其名下 CID 仍可逐一告)——moderation §4/§11、信譽系統 §5.1、流程 §1/C2 連勝 recentOf 明文含本場(=第 5 連勝觸發,非第 6 場)/C3 canRevoke 硬編 24h → ARBITRATION_DRAW_DELAY_HOURS/C4 PeerScore 常數指標「資安規範 §13」(只是對接表一行)→ 程式參數表 §10+peer-discovery.md(moderation §5.4、流程 §3)/C5 §5.6 驗算規則 1 補「未撤回」明文。D 觀察不動:新網路前 30 天池<7 全流局屬預期(法遵由 DMCA 維運層兜);Sybil 滲透根本界線=honest-majority 假設(M1 抬成本、殘餘接受)。grep 驗證:checkHighRatedMilestoneEvent/milestoneEvents/stat.derivedAt/資安規範.md §13/信譽 / matchRecords 照常/raw scores.get(rater|peer|arbiter) 全 corpus 0 殘留;完賽 +1/連勝/REPUTATION_MATCH_GAIN_DAILY_MAX/matchCount 全 copy 對齊。

同日第六輪複審(改後整檔重讀+新機制交互+有界狀態當規則依據;中 1 細項 4 全修、D 觀察 2 維持):⭐M1 history(最近 100 筆、供 UI)被兩條規則當查詢依據——reputation.md §5.3 前科 30 天 rolling 用 lastDeltaOf 查 history:活躍玩家 ~10 delta/日、30 天 300 筆早把 25 天前的 −30 擠出 100 筆窗 → 前科保護對活躍玩家靜默失效、重複扣 −30(全 peer 同樣算錯=決定性不破、規則破);§5.1 matchGains24hOf「自推導 delta 串回看」依據含糊同病 → derive 專用規則索引lastMaliciousReporterAt(O(1)、判罰時寫入)+ recentMatchGains(24h 窗、發放時寫入 apply 修剪、日額使其自然 ≤ ~10 筆可序列化進檢查點);history 明文降級「僅 UI 顯示、不得作規則依據」(reputation.md §2/§5.1/§5.3)。C4 ledger.md §2 DerivedState 巢狀總覽兩塊 staleReputationDerivedStatehistoryModerationDerivedStatepeerBlacklistreportsByReporterarbitrationResultspendingReports 型別舊)→ 對齊 moderation.md §2/reputation.md §2 並加「完整定義見」指標。C1 信譽系統 §8.1「三條件」→「四條件」+ moderation §5.1「三條門檻」→「四條門檻」(第四輪加了非全域黑名單列、計數沒跟上)。C2 §5.2 step 3「抽選期滿」→「抽籤點到達」+掛 ARBITRATION_DRAW_DELAY_HOURS(防與投票期滿混淆)。C3 信譽變動流程 §1「[DerivedState 累加] 套用新手保護下限 400」與第五輪讀點契約矛盾(第五輪掃漏的鏡像)→ 改「scores 存 raw、下限於讀點套用 getEffectiveScore」。D 維持(使用者裁定):D1 日額×連勝手感(24h 內第 5 場觸頂 10、第 6 場起當日 0 加分——信任分非進度條、by design);D2 3 人房單人退賽 void 使他人 +1 落空(搭 06-02 既有經濟 void 行為、退賽者三重自損、不另設機制)。grep:lastDeltaOf抽選期滿三條門檻 0 殘留(餘「三條件」全為 §4.3 惡意檢舉正確三條件)。信譽系統.md 六輪複審完結、無待辦