# 阶段4B2独立实施复核 日期:2026-09-24(受审交付落盘2026-09-23)。审查者:ZCode会话。 **独立性声明**:本审查者未参与4B2任何生产/测试代码的编写与实施;此前参与仅为设计层差异补审(D1–D5审查报告,受审对象均为主会话编制的方案文档)。本轮全部复核命令由本会话亲自执行,结论以实际结果为准。 本轮只读+仅新增本文件与复跑日志(`review-*`前缀,新文件名,未覆盖任何交付证据);未改生产代码/共享文档;无子Agent、无正式服、无PlayMode、不打包。 ## 受审hash核对 `KVGameLoadTests/checkpoint4-delivery-hashes.json`共**221项,逐项重算SHA256全部一致**。边界证据JSON:123项基线=85原样+38获批变更+**0项白名单外**(`outside=[]`);ClubService仅新增KV块(P2-β兑现);65个KV入口方法直审0违规标记。 ## 复核结论 **接受4B2实施。无P1/P2。** 建议:主会话核对hash与逐条裁决后关闭4B2;4B3(读写路由)另立方案评审,P2-α(真实存量档迁移+用户产品确认)仍为正式启用硬门。 ## 独立复跑结果(全部本会话执行,真实退出码) | 命令 | 结果 | 退出码 | 复跑日志 | |---|---|---|---| | `KVGameLoadTests`(离线) | 75组/0失败/**1715断言** | 0 | review-offline.log(新run `20260924021937_2c8e39d5…`) | | `--cleanup-failure prepare/schema/apply` | 5+8+8=21断言全过 | 0×3 | review-cleanup-*.log | | ServiceHost(非Android) | 8组/73断言/formalRequests=0 | 0 | review-service-false.log | | ServiceHost(AndroidProbe) | 8组/73断言/formalRequests=0 | 0 | review-service-android.log | | ServiceHost(PlayerProbe非编辑器工厂) | 两类能力工厂缺失确认 | 0 | review-service-player.log | | KVContractTests | 42/42 | 0 | — | | KVSyncTests | 86/86 | 0 | — | | KVSyncCoordinatorTests | 29/29 | 0 | — | | KVSyncCoordinatorReviewTests | 通过 | 0 | — | | **KVStage3CTests --offline** | **首跑7/8(L7失败)→ 单独复跑8/8** | 1→0 | **review-3c-firstfail-20260924.log(首败证据已按P3-1规程保存)**+review-3c-rerun | | KVLoginContextTests(4B1) | 23组/278断言 | 0 | — | | KVLiveTests仅build | 0错误 | 0 | — | | Unity CLI Loop compile | Success=true/0错误 | 0 | review-unity-compile.log | | **Unity B2-20完整事务** | **success=true,31真实模块,双epoch,83断言,auth=2/gets=2/borrowed=1(401)/forbidden=0/eventPublishes=0/eventSubscriptions=0/sameObjects=true/restored=true/fullB220=true** | 0 | review-unity-b220.json | (Unity Editor隔夜未运行,本审查按操作入口文档以2022.3.62f2c1启动后复跑,get-version确认DataPath正确。) ## B2-01~B2-22逐条裁决 依据交付矩阵§3–§5、边界证据JSON与本复跑:**B2-01~B2-20全部通过**(关键项:B2-07同对象A→B整组空态由19局部用例+B2-20同对象断言证实;B2-11拒写门经guard代码抽查——`PlayFabMgr`全部入口前置`Reject`(Compare/Update/Lifecycle×4/PrefsSave)且PrefsSave在`PlayerPrefs.Save()`之前;B2-15/16/17经B2-20的forbidden=0与QuitAct代码抽查——`:37`同步撤销先于任何await、`:54`Hub后有界观察;B2-18经cleanup-failure三进程+OriginalError保留;B2-19经4B1 23组复跑)。**B2-21通过**(回归最终全过;两个偶发失败事实与处理见下)。**B2-22由本报告完成独立实施复核部分,关闭裁决归主会话。** ## 已知事项裁决(提示词要求逐项) 1. **KVSync偶发85/86(StorageError)+本次新增:3C L7偶发7/8(InvalidOperationException)**。两项均为:连跑链中首跑失败、单独复跑全过、**失败套件的Program与各自验收版本字节一致**(本审查重算:KVSyncTests `217FCDC2…`、KVStage3CTests `66C41B8B…`=3C修复终版)——**非4B2引入**,属并发重组用例在本机的时序敏感(负载相关)。裁决:不阻塞4B2验收;偶发调查项从一项扩为两项(3A StorageError+3C L7:965附近),建议单独立项在连跑负载下复现并定位;本审查已按规程保存首败完整日志与堆栈,不以复跑成功覆盖。 2. **旧NetworkTransport仅构建不运行**:接受。其依赖转发正式服的代理,评审启动代理即越权;交付如实标注"未覆盖",不冒充。 3. **ServiceHost的PF公共路径在真实API前故意失败**:接受——受控范围定义如此,不称真实渠道端到端通过;诚实边界。 4. **非Android DTO兼容为未触达旧分支的测试构建**:接受,已在证据中如实限定。 ## 其他观察(P3) - **P3-1**:离线断言计数1715(本复跑)vs 1713(交付)——交付hash 221/221一致排除代码漂移,属并发组合断言计数波动(4B1先例273+5=278 vs 279同类);记录不改结论。 - **P3-2**:Unity验证依赖Editor运行态——运维注意项(隔夜关闭后需先启动2022.3.62f2c1;本审查已验证启动流程可靠)。 - **P3-3**:`UserService.KVLoad.cs`的`RejectSaveBackend`把非法后端值同时归入`BackendUnsupported`分支逻辑清晰,但建议实施记录注明"kv→BackendNotEnabled、其他→BackendUnsupported"的映射表已固化,供4B3接线方查阅。 ## 边界重申 4B2通过=受控加载链具备与验证完成;**LoadedForValidation不授玩法/Done/IsLogin**;正式启用硬门=P2-α(真实存量档兼容/迁移专项+独立评审+用户产品确认)+4B3读写路由+4C消费+tickets有界历史+4D场景验收。本报告不授权4B3、不宣布4B2关闭(主会话核对hash、逐条裁决后关闭)、不构成对28→31模块以外任何未验内容的追认。