歷史記錄 · 2026-07-09¶
重大重構里程碑¶
2026-07-09 ─ 里程碑 20:拍 12 bootstrap+Api+上鏈編排+治理 reducer——站位補立 src/bootstrap/+⭐同拍三路複審(高 1 中 1 低 1+整合完備;測試 540/540、十二驗證全綠)¶
決策檔:D-20260709-01
12a 治理 reducer+config epoch 化:DerivedState 補 economyConfig(ConfigUpdateEvent 沿 log 序推進=任一 fold 位置讀該位有效值)+lastEventAt;economy/governance.ts(verifyConfigUpdateSignatureSet=digest 剔 signature/signatures、distinct valid signer ∈ prevEpoch set ≥ checkpointQuorum;applyConfigUpdate epoch 連號→shape→revShare 不變式→簽章集)+economy/lifecycle.ts(deriveRetireStatus 三觸發:lastUsed 無用/低評無用/creatorGone;grace 守門);appliers 費率收口(slot/maintenance/upload amount===epoch 化 config 現值否則 no-op=⭐slot×config 懸掛裁決銷帳);isEconomyConfigShape 逐欄樹驗(擋 undefined 毒化 dag-cbor)。
12b 仲裁進程編排+⭐H7 panel-signature-set:moderation/coordinator.ts(evaluateCase 決定性檢查點狀態機=抽籤/投票/期滿/重抽/流局;buildAttestation 每面板成員 replay 後只簽自算結果;publishResult/writeBlacklist)+attestation.ts(verifyArbitrationResultSignatureSet fold 恆驗=arbiters=7+≥quorum distinct 非兩造穩定資格簽章有效/池不足流局改驗合格池上界)=8c match-result 多簽洞的仲裁對應堵死(收件=live 面、fold 恆驗=決定性牆同組判定)。
12c 域內散件:signaling-service/register-auth.ts(房間註冊證明 ±30s hex wire)+versioning/asset-versions.ts(deriveMinSupported ratchet/makeAssetVersionGate/preRaceVersionCheck)+chat-system/blocklist.ts(Memory/Idb 雙實作)+moderation/use-gate.ts(canUseUgc=黑名單/退役/DMCA 使用邊界)+ugc-rating/builder.ts(buildRateEvent hot→accept/miss→defer、不入 fold)。
12d 上鏈編排(B3 除外):⭐anti-piracy/canonicalize.ts(決定性指紋八步驟=重心平移→PCA Jacobi〔tan 迴圈無反三角、固定 16 sweeps〕→特徵向量四種正負號組合枚舉取序列化字典序最小=旋轉不變、單一 X 反射鏡像、顯式 LE DataView 序列化、nodeNames NUL 分隔)+similarity-index.ts(MeshFingerprintIndex/findSimilar 重用 classifySimilarity)+editor/pipeline/submit.ts(submitToChain=指紋→分類→塊→事件;exact/reject/arbitrate 閘)+browser-compress.ts+workers.ts(Wave A transferable 單次 terminate)+viewport/asset-resolver.ts(blockAssetResolver 獨立 buffer copy+LRU 16);UGCMetadata 補 meshFingerprint 欄。
12e bootstrap 組裝=站 12 全結案:bootstrap/ledger-assembly.ts(composeGlobalRegistry 七域鏈序=economy→ugc-fork→ugc-rating→reputation→moderation→matchmaking→anti-piracy〔reputation 必在 economy 後〕+composeLiveValidator+createStateMirror+assembleLedger ledgerRef 循環 gate 初始化)+browser-ports.ts+create-app.ts(makeCreateOpen4wdApp deps 注入、coordinator 捕捉 ports)+real-providers.ts(十域真 AppDataProviders;網路面未接=errors.p2p.offline)+matchmaking/matchmaker-poller.ts(gossip 輪詢、動態窗口、⭐雙發防撞=PeerId 字典序較小方發起)+garage-store.ts(UNIFIED_DB_STORES +garage-loadouts)。
⭐同拍三路深讀複審(共識面/drift 契約面/指紋編排面,只讀不改→逐條驗證→生產修):
- 高 H1(跨標的簽章轉移→誤下架無辜 CID/誤扣信譽)已修:仲裁
reportEventId=${reporter}@${reportedAt}` 與 attestation digest 皆不含 target → 同 reporter 同時戳對甲(真侵權)乙(無辜)兩標的報案撞 caseId,甲案的 pass 面板簽章可套用於對乙標的偽造結果(digest 不綁 target)→ 過 anchor 守門〔乙報案存在〕+簽章集 → 觸發 blacklist-cid 全網下架乙+−100/三振。修=caseId 與 digest 雙綁 target(${reporter}@${reportedAt}#${target}+digest 顯式帶 target;上傳期案upload:${cid}` 本含 cid 免疫);跨標的轉移迴歸測試+canon moderation §1/§5.6 回寫。 - 中 M3(多簽事件冒名灌身分歸屬)已修:共通 fold 無條件以
event.peerId記 registeredAt/lastEventAt,但多簽型別(match-result/config-update 等)peerId=發布者非密碼學綁定〔foldGuard 放行〕→ 任一 peer 舊時戳重播他人真多簽+冒名 peerId 即灌活動延後受害者 UGC 退役/預釘註冊時點。修=共通 fold 對MULTISIG_EVENT_TYPES跳過身分歸屬(只推進 clock/計數;finisher 場數本由 reputation reducer 以已驗 ranking 記);集合移入 derived-state.ts 單一權威、ledger-api foldGuard 共用;迴歸測試+canon ledger.md §6 回寫。 - 低 L4(治理設 month_soft_cap=0 除零拋錯)已修:isEconomyConfigShape 加
≥1守門+測試。 - 整合完備修:⭐canonicalize.ts 內含字面 NUL byte(nodeNames 分隔符誤植 U+0000 非逸出
'\0')→ ripgrep 視此共識檔為 binary、所有 grep 稽核靜默跳過 → 逐位元組換'\0'(runtime 同)恢復可搜+警示註;§14 註解 spec 引用清 7 行(canonicalize/submit/attestation/receive-validation/asset-versions×3);i18n 補四語系 16 key(errors.p2p.offline/keyManager.locked/garage.reject.slots-full/rating.reject×10/submit×3——i18n:validate 只驗字典互一致、抓不到 code 引用缺口)+canFileReport 契約拒因改 i18n key;指紋護欄=golden 向量測試釘死固定輸入 primary(防 LE 序/分隔符靜默改動=不變性測試全綠仍分叉共識)+rotation 不變性 docstring 措辭修+submitToChain/worker 錯誤通道與 buffer detach 契約註。 - ⭐H2 提請使用者裁決(未改;07-09 使用者核對後措辭更正):月軟線(全域
monthFactorX100,monthMinted為單一全域累加器、>99×softCapfloor 0)+個人日上限(player_prized_matches_per_day)確實存在且有效——但只在 live 收件路徑(computeMatchSettlement/verifySettlement)。缺口=match-result fold 不重放這兩道、只驗單場≤ month_soft_cap(settlementBoundsValid);歷史舊時戳 append 繞 live → 每筆偽造 match 各鑄一個month_soft_cap、換 matchId 重複=聚合不受月軟線約束+製造信譽/場數/仲裁資格。同構里程碑 8c 多簽洞/H7 仲裁洞(皆 live-only 防線被歷史 append 繞過);實作忠實對應 canon(economy「憑空鑄幣最後防線」採單場軟上限、ledger「歷史同步不重驗」)=canon 級經濟設計權衡、非實作缺陷。乾淨補法=fold 端全域monthMinted硬頂(timeless、與 8c/H7 同家族)/checkpoint 全域鑄燒不變式/playtest 可調。⭐同日已裁決+實作=選項 1(使用者定:全域月硬頂、>= cap停在線後、人日上限不做):新增治理欄month_hard_cap_minor(genesis 100×soft=對齊 live 軟曲線 floor-to-0 自停之處、合法 play 碰不到)+applyMatchResultEconomyfold 首段守門(當月已達硬頂=整場 no-op)+shape 守門 hard≥soft+雙 config 定義同步(economy/config.ts+system-constants)+測試 +1(541)+canon 回寫(程式參數表 §17/economy.md/ledger.md §6.1)。殘留追蹤:① 跨月 backdating(已驗穩態不可達:fold base=最新治理定案檢查點快照凍結monthStartTimestamp+monthMinted〔state-codecround-trip〕、Sybil 無法定案檢查點〔propose/sign/finalize 全要 governanceSigners quorum〕→ 倒填只鑄「當前月」bucket 受 hard_cap;檢查點機制即選項 2 想加的全域錨、故選項 2 不需要;唯一窗=首次檢查點前 genesis、低值+可一行封 init monthStartTimestamp)/② prong-2 已評估不需補且不可補(matchCount 每 fc≥3 場 +1 無上限可偽造,但isQualifiedArbiter真 Sybil 屏障=不可偽造 30 天年資+面板 7 席 quorum 4 需占領 pool >57%;matchCount 非 Sybil gate;全 Sybil 場必過 foldGuard、fold 無 timeless 法辨真偽)/③ 雙 EconomyConfig 定義分歧已處理=drift-guard 測試(斷言 revShare/governanceSigners 跨層一致)+header 註〔根因=分層 stand-in、地基不可 import app〕。測試 542。 - 複審乾淨面:real-providers 十域方法簽章/回傳型別/Result 形全對 data-providers.ts 契約;registry 七域鏈序與 canon 逐字相符;bootstrap barrel 僅 type-import editor、helia/orbit 維持動態 import 鐵則;canonicalize 決定性核心(Jacobi/LE/鏡像/量化)無高缺陷。
下一步=拍 13 race-runtime(B3 引擎側讀烘焙值+真車模型 race 幀+主迴圈組裝)→ 拍 14 收口(versioning SW 升版/pwa-offline/Lighthouse)→ 首次本機測試閘。測試 540/540(42 檔)、十二驗證全綠;⭐首次本機測試前不 commit/push(使用者定)。
2026-07-09 ─ 里程碑 19:拍 11 viewport+資產載入——O4Viewport 四場景+editor 全串+⭐B2/B5 銷帳(測試 484/484、十二驗證全綠)¶
11a src/viewport/ 模組地基(站位補立=程式架構 §4 矩陣新列):part-layout(box 期擺位純函數=顯示層啟發、GLB 定稿後改讀 bake extras mount 座標;partId=顯示鍵)+vehicle-scene(BoxGeometry+PART_TYPE_COLORS+disposeObject 遞迴釋放)+presets(六款 stage 配方 garage/workshop/showroom/arena/podium/neutral、背景吃 --color-bg-canvas token 鏡像、霧/地面按配方)+camera(frameObject 包圍球取景、垂直/水平視角取遠者)+gltf-pipeline(GLTFLoader+DRACO /vendor/draco-gltf/+KTX2 /vendor/basis/、壞資產 reject=呼叫端 fail-soft)+renderer-factory(isWebGLAvailable 探測;SSR/jsdom=null 工廠→純場景圖模式)+asset-resolver(VIEWPORT_ASSETS DI 埠、預設 null 解析器;真實作隨 bootstrap 拍)+O4Viewport 元件(descriptor/tokens effect=整場重建+seq 守門、rAF loop、showcase 自轉在內容群組不搶軌道控制、OrbitControls damping);garage-page 首屏展示接線+app.config 補 {provide: ThemeService, useValue: themes}(⭐token 鏡像 DI 化——three 不讀 CSS 變數的正式通道)。SSG 36 路 prerender 通過=O4Viewport server 路徑安全(server DOM 無 getContext→try/catch 收斂 false)。
11b assembly 場景+overlay:layoutMountPoints(roller 六位含空位/tire 四位恆占/weapon 隨欄位;與擺位共用比例常數)+assembly.ts(collider 線框=AABB EdgesGeometry/mount 標記=占用實心點·空位環/重心=質量加權——builtin volume×密度真值、UGC bbox×0.35×1.05 佔位近似)+picking.ts(Raycaster NDC→partId userData 向上回溯)+O4Viewport assembly overlays 三開關掛載+pointer 短按選取(≤6px/400ms、僅 assembly 發射 select);⭐loadout 結構檢核落 builtin-assets/loadout-structure.ts——checkLoadoutStructure(findings 零文案 code+params)+validateVehicleStructure(matchmaking validateStructure 埠形 adapter)=車間[檢查]與賽前提交單一實作(防「車間放行、賽前拒收」漂移);規則=tires 恰 4/rollers ≤6/builtin ref 存在+型別對位/passive split 域 0–100+僅被動武器可帶(UGC 未知不擋);garage-edit-page 接線(assembly viewport+三 overlay toggle+選取顯示+真檢核 findings 列表);⭐O4Toggle/O4Select 補 ariaLabel(a11y lint:label 包自訂元件不算關聯→span+aria-label)。
11c-1 finalize 資料路徑(⭐B2/B5 銷帳):⭐B2=applySceneEdits(SceneEdits 攤平入 GLB 本體:TRS 覆寫〔矩陣節點先分解為 TRS、鏡射 det≤0=err〕/rename/新增 empty 掛 scene root/移除=自父鏈 detach 不重排 index〔孤兒 entry 由壓縮步 prune〕;空 edits=bytes 直通)——引擎與收件端只讀 GLB 本體、覆寫層不出編輯器;⭐B5=buildChassisMounts(chassis Mount 四類表 {name, pos, axis|rot}:tire/roller 帶 hinge 軸=mount 世界 +X〔rotatedXAxis 四元數展開〕、body/single 帶 rot;只寫實際存在)+tire/roller auto_hinge: true 恆烘;finalize orchestrator(finalizePart/finalizeTrack:攤平→wave A 重跑〔transform 已變=幾何量全重算〕→嚴格檢核〔任一 reject=停檢核回全量 findings〕→wave B〔contact/thermal/deviations/aero=body/fragments=最大體積節點/autoChain=weapon〕→bake→壓縮注入埠〔Worker 端綁 compressGlb;未注入=跳過〕)。
11c-2 editor 顯示層:src/editor/viewport/ EditorViewport(top-down 正交+up=−Z、workshop preset、OrbitControls 禁旋轉=pan+zoom、⭐SceneEdits 覆寫即時預覽=base TRS 快取+合成〔GLB 本體不動、finalize 才攤平〕、removed=隱藏、點選+BoxHelper 高亮、TransformControls gizmo〔dragging-changed 停 orbit、mouseUp 發 local TRS〕、⭐gizmo helper=重用件先摘除再 disposeObject 防 GPU 資源連帶釋放)+editor-page 全接線(匯入 GLB→MeshSanitizer Worker 消毒→session A2+undo/redo→gizmo 三模式→props 分頁 partType/材質→送出=finalize 全串→rejects 分頁 findings+狀態列 counts→出口 A IndexedDB local:<uuid> toast)。⭐工具坑記案:pages 對 editor 一律深路徑匯入——barrel 含 compress.ts→@gltf-transform 的 import("node:fs") 動態載入=瀏覽器 bundle esbuild 解析失敗(沒呼叫也炸);壓縮步屬 Worker 面、頁面永不觸。
11d race 場景+rig+adapter:race-scene(applyRenderFrame=缺席車 lazy 建占位〔單盒+八席輪替色〕、位姿直寫、eliminated=半透明、brokenPartIds 隱藏=真車模型期生效)+camera-rig(五模式純數學:follow=車後上方/third-person=固定世界角度跟隨/free=軌道控制接管/overhead=高空俯視 up=−Z/finish-line=bounds +Z 端定點;目標缺席=退俯視不閃跳;nextCameraMode C 鍵循環序)+O4Viewport race case(FrameSource 訂閱=幀套用、⭐換場景/destroy 退訂、rig 於 rAF 每幀套用、free 時 controls.enabled 讓渡)+race-page 接線(假 session onFrame=FrameSource 同構轉接、穩定 descriptor 引用)+⭐UGC stats adapter 落 mechanics-catalog/ugc-stats-adapter.ts(statsInputFromExtras=零件 GLB extras〔bake 烘焙值=權威〕→VehicleStatsInput;幾何=chassis 烘焙 tire mount 前後距+質心 y;extrasFromBuiltin=公版轉同形、混裝單一路徑——測試鎖「兩路徑 stats 一致」)。
測試 452→484/484(39 檔)、十二驗證全綠、i18n 276→285 keys×4。staged:Worker 化 wave A/壓縮接線+出口 B(bootstrap 拍)、真車模型 race 幀(race-runtime 拍)、VIEWPORT_ASSETS 真實作(bootstrap 拍)、findings i18n 對映、editor layers/stats 分頁、Stage 1 type 決議 UI。⭐B3(引擎側讀烘焙值)=race-runtime 拍;B4(WS handshake 簽章)=bootstrap 拍。
同拍複審結案(兩路深讀 agents=viewport 模組全檔+finalize 鏈;findings 逐條驗證後修——關鍵發現對照 vendored three 0.185 原始碼確證)。高 5 全修:①canvas 尺寸——setSize(w,h,false) 不寫 style、DPR>1 版面溢出被裁 → three-stage.scss 補 canvas 100% 規則;②⭐OrbitControls.update() 結尾恆 lookAt(target)、會覆寫 rig 每幀朝向 → rig 接管幀跳過 update(free 才跑);③race bounds 只取空景(overhead 高 1.1m 看不到 5m 圈)→ 幀套用後以車群擴張 bounds;④editor viewport 正交 near/far 固定 0.001/100、mm 場景高於 ~40mm 全裁出 far → #frame 隨距重算;⑤⭐three 場景名≠glTF 節點名鍵域錯位(GLTFLoader 自造節點〔多 primitive 子 Mesh 帶序號〕被選取→覆寫鍵攤平時查無=編輯靜默蒸發)→ 頁面供 pickableNames(parseSceneGraph 名集)+pick 向上爬合法祖先+applySceneEdits 查無鍵改 err(fail-fast 最後防線)。中 14 修:⭐車頭慣例修正(canon 建模參數表 §5=−Z;part-layout 前後全翻+內裝 z 反轉、camera-rig 原本即對)/destroy 後 track fetch 續跑=DRACO worker 重生洩漏(ngOnDestroy bump seq)/disposeObject 改全屬性 isTexture 掃描(列舉法漏 emissive/ao)/keydown 'C' 表單焦點不攔(聊天打字誤切視角)/退場車幽靈(seen 差集清+dispose)/首取景 aspect 16/9 預設(onRenderer 先同步)/技能鈕 pointer capture+pointercancel(hold 滑出卡啟動態)/rig 讓渡 controls.enabled 不跨場景/isWebGLAvailable 模組級快取+探測 context 即刻 loseContext+stage 銷毀 forceContextLoss(context 上限防)/submitLocal await 前快照輸入+rail busy 守門(送出中切分頁錯置存檔)/finalize error 與存檔失敗 toast(原全靜默)/fragments 改 nodeIndex 對接(未命名 mesh 撞空名)/⭐validator 補 mount-not-empty(mesh 命名成 Mount_=檢核綠、烘焙 mount 表靜默缺項)/⭐writeRootExtras 補 replace 模式+finalize 一律整組替換(來源 GLB 預埋規格同名鍵〔materials/weapon_…〕未經 validator 直通成品)+finalize 併驗 stage1(匯入路徑上限檢核被繞過)。細項 12 修(headless 不白抓 fetch/raceVehicles 換場景即清/race-page 死 frame 訂閱移除/mount 種子統一/garage showcase computed equal=refresh 不重建閃跳/removedEmpties 限 empty(mesh=err)/gizmo 點放不推 no-op undo+短拖收尾不換選取/auto_empties 補 Axis_前綴/passive 武器不烘未驗 actuators+不推 auto_chain/stats adapter 畸形 extras Array.isArray 守門/editor fee catch+隨 kind 報價)。裁決 staged 2:trackFit(超限縮放+降階)全鏈零消費者——現行為 validateTrack 直接拒收(安全向)、fit 套用隨場地真 GLB 期定案;editor「編輯/預覽」鈕行為(線框設計存在、切換語意隨後拍)。觀察備查:eliminated 材質直改(真車模型 clone 共享 material 期需 per-instance)/占位車色綁首見 index(序不穩可能撞色)/context-lost 無恢復路徑(本機測試期)/主題 live-apply(同站 10 備查)/workshop preset 米制地面在 mm 場景(隨資產尺度期)。測試 484/484 維持、十二驗證全綠。
2026-07-09 ─ ⭐全專案二次深讀複審:fold 守門主題+§14 註解全清+canon 回寫 5(測試 452/452、十二驗證全綠)¶
決策檔:D-20260709-02
站 0–10 全結案後、使用者「先針對全專案各方向完整 review」+兩裁決。7 路平行 review agents(契約一致性/安全共識/測試品質/canon-code drift/效能/錯誤處理/架構)+十二驗證基線,findings 逐條對 canon+程式碼驗證(本輪零誤報)。
⭐最高價值結構發現=fold 守門主題:live 收件驗證只擋即時(簽章+±30s);log AC write:['*']、歷史同步不重驗時效性條款 → 任一 peer 可用舊時戳條目繞過 live 收件驗證、讓事件直達 fold。凡「錯誤事件 fold 套用即造成不可逆傷害」的 reducer,其守門必須 fold 端自帶、且只依賴 timeless 且 state 可判的條件(簽章集/金額界限/前置結果存在性)。⭐內容尋址不防 log 重播:OrbitDB db.add(同值) 每次產生新 entry(identity/clock 不同→新 hash)、all() 回多筆、fold 逐筆套用——累積型 reducer 需自帶 fold 冪等守門、冪等型(Set add/Map set)天然安全。
裁決 1(§14 註解全清、使用者定):6 路 agents 清 ~107 檔 ~197 處程式碼註解的 spec 檔名/§節引用(自足化);保留 ⭐標記/技術值/程式模組名/實作拍站標記;測試名字面(it/describe 字串)非註解、§14 comment-scoped 不列管(保留其對算式表數字表的溯源價值)。450/450 綠不破。
裁決 2(findings 驗證後執行、使用者「依照你的建議」全權):
- A 組生產修(主 repo):H1 event-codec normalizeAmounts 補 slot/sponsor bigint 歸一/H2-sanitize 軸序 canonical [長Z,寬X,高Y]/H2-fold ledger-api applyEvent try/catch 畸形跳過/H2-report targetKind∈{cid,peer}/H3–H5 economy 冒名+amount>0+replay 守門/H6 anti-piracy blacklist 需前置 pass 仲裁結果/M1 select [selected]/M2 六頁 route param effect()/M9 form-field i18n pipe+login 錯誤訊息透傳/P2P rollback frame 上界/F1 CI 補四驗證/F2 CSP 注入斷言。
- B1 fold 守門(本輪核心):H2/H4/H5/H6 已落地。⭐H7=仲裁結果 fold 未重驗 tally:
applyArbitrationResult採信事件自報result(票不入 state → fold 無法重算)=里程碑 8c match-result 多簽洞的仲裁對應。硬化=面板簽章集(panel-signature-set):結果事件攜 ≥quorum 面板仲裁者簽章集、fold 恆驗+signer∈可重導面板——隨仲裁 P2P 上鏈編排路徑實作。 - 本窗口補強測試(主 repo):economy(冒名/upload·match-result 重播/settlementBounds 負額·憑空鑄幣)+anti-piracy blacklist 負向(無 pass 結果=no-op)。測試 450→452(38 檔)。
canon 回寫 5(本 repo):①⭐ledger.md §6.1 fold 守門(foldGuard)新節——收件≠fold、內容尋址不防 log 重播、守門目錄表(match-result/ugc-upload/slot·sponsor/blacklist-cid/report)、畸形事件 try/catch 韌性;解 比賽結算流程 §8.6 對「ledger foldGuard」的懸空引用。②economy.md §4 royalty .sort()(canonical 字典序——提案端插入序 vs dag-cbor 解碼鍵序不同會使 verifySettlement 逐 index 誤拒)。③資料系統 replay 段修正(內容尋址不防 log 重播、累積型 reducer 需冪等守門)。④anti-piracy.md §5.1 blacklist fold 守門段(信任根=仲裁結果本身的 fold 驗證)。⑤moderation.md §5.6 ⚠️ H7 硬化段(fold 未重驗 tally 的漏洞+panel-signature-set 硬化)。
staged 銷帳對照(B 群裁決):B2=編輯器 finalize 攤平 transform/B3=引擎讀烘焙值/B4=WS handshake 簽章/B5=auto_chassis_mounts·auto_hinge 入 ledger(隨後續拍);⏳slot amount×config 仍懸掛(治理 reducer epoch 化 config)。⭐程式碼零 commit(首次本機測試前不 commit/push)。
收尾對帳(同輪二次掃描):決策清單逐項覆核+改動自身複審——修 drift 3=⭐資安規範 §3 replay 段(原「內容尋址 CID 冪等」與 資料系統 修正矛盾——漏掃的 copy,改「fold 端冪等守門+不防 log 重播」)/anti-piracy §5.1 引用節號 §5.3→§5.6(panel-signature-set 段實際位置)/economy.md §2 settlementBoundsValid 引數對齊程式碼簽名 (event, config);補判別式負向測試 4=sanitize AABB 軸序(長件合法·高件拒——鎖 canonical 重排)/rollback input 未來幀窗界(=收·>丟+預測判別)/moderation report 非法 targetKind no-op/⭐ledger fold 畸形韌性(applier 拋錯=該筆整體丟棄含共通 fold、live 與 refold 皆不癱瘓、後續事件照 fold);CI 判定=check:materials 缺席屬刻意(腳本檔頭明文需 sibling specs checkout、待 CI 掛載步)、check:invariants 為 test 子集不重複掛。測試 452→456/456(38 檔)。