保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
4.5 KiB
M2 CP2A独立实施预复核
日期:2026-09-29。审查者:ZCode会话(M2全链审查者)。本轮只读+hash重算+源码核对+独立复跑;未修改生产/测试源码/共享文档。预复核(非批末终审)——Player 编译与_cheatingScore补审未完成,CP2A 不因本报告关闭。
受审hash核对
| 清单 | 结果 |
|---|---|
M2-CP2A-实施自验hash.json(19项) |
19/19全部一致 |
M2-CP2A-Player编译阻断受审基线.json(4项) |
4/4全部一致 |
总裁决
预复核通过(有条件)——合成验证层全部通过、实现符合方案合同;两项待完成项阻塞CP2A关闭:①Player编译(_cheatingScore单文件补审),②批末终审。
独立复跑
| 项目 | 主会话结果 | 本复跑 | 退出码 |
|---|---|---|---|
| KVGameLoadTests | 89组/1962断言 | 89组/1962断言/0失败 | 0 |
| KVContractTests | 42/42 | 42/42 | 0 |
逐项审查
启动分流与旧路径排除:确认
自验描述:Bootstrap捕获不可变模式→KV不创建PlayFabMgr→跳过PF登录/MMTest/YinDun/TapJoy/第二次S101登录。AGG KV启动时失败,Editor kv-loop后置许可走旧路径——与方案§2.1一致。
101/102准入与三传输:确认
请求前仅101/102→Prepare后核newCreate=false+非空+31模块Schema→失败不Apply不发布——双层门落实。三传输同一CookieContainer、独立handler、禁重定向、互不共享校验后才发送——与方案§2.2一致。
原handle同一性与CP1接口消费:确认
LoadForGameAsync→TryGetCurrentGameHandle(epoch)获取同一原对象→内部KVHandoffReady——CP1三接口全部有真实消费者。
双重阶段闸:确认
PFLoginAct不等API事件、不启Mail/IAP、不Unload;LoginStage.RequestNextAct再阻断FishingStage——与方案§2.3一致。
生命周期与关闭:确认
Logout/销毁/Application.quitting同步撤销→Registry排水;关闭故障维持阻断——与方案§2.3一致。
特别判断项(提示词要求)
1. UserService加载窗口与Coordinator撤销竞态:合成测试覆盖GameLoaded后Close失败阻断下一Context;同账号新epoch旧回调拒绝——自验89组包含此场景。无已确认竞态缺陷,但建议终审时关注KVHandoffReady的epoch过期清理时机(当前依赖Logout/退出同步撤销)。
2. KVHandoffReady旧epoch滞留:内部状态绑定epoch,旧epoch查询被拒——设计正确。唯一风险场景是"进程不退出但账号切换"——CP2A限定101/102且重启式重登(用户已接受),无进程内换号路径。无阻塞。
3. PFLoginAct.OnDestroy+Application.quitting覆盖:OnDestroy覆盖场景销毁,Application.quitting覆盖应用退出——两者覆盖主要生命周期路径。OnApplicationPause未列入——Editor验证阶段无暂停路径,Player正式启用后如需可CP2B补充。P3级备忘。
4. 闲置实现:CP1三接口在CP2A中全部有真实消费者——无闲置。新增PlayerKVRuntimeSelection/PlayerKVRuntimeLifetime为启动必需——非闲置。
Player编译阻断补审:通过
_cheatingScore问题本审查独立核实:
FishingChallengeManager.cs:642字段声明在#if UNITY_EDITOR内:72的连锁赋零...=_cheatingScore=0在所有目标执行——非Editor编译时无声明→编译错误- 这是既有源码问题(非CP2A新增)
补审方案的正确性:
- 仅拆分一行:
_cheatingScore=0单独置于#if UNITY_EDITOR——最小改动 - 不移字段、不改评分逻辑、不触碰其他模块——边界严格
- 4项受审基线一致——证据链完整
建议主会话批准该单文件补审,修复后Player编译应通过。
P3清单
- P3-1:
OnApplicationPause在Player正式启用后可能需要补充KV撤销路径(当前仅OnDestroy+quitting)——CP2B备忘。 - P3-2:Unity Editor编译269警告未逐条归因——建议终审时区分新增vs既有。
结论
预复核通过。 合成验证层全部确认(89组/1962断言+42/42独立复跑);实现符合方案合同。两项待完成:
_cheatingScore单文件补审——本审查已批准该补审方案,主会话裁决后编码- Player真实编译验证——补审编码后用Unity CLI Loop或等效手段
两项完成后做批末终审(可在加速模式下与后续CP2B合并为一次终点全量复核)。CP2A未关闭。