保存独立KV用户服务、固定会话存档与原业务接线,以及C3d资料缓存和C3e本人统计写。 保留原PF/AGG路线、业务公式和时序;榜单读取、好友资料、公告、匹配及首场景闸仍待完成。 验证:ServiceHost两条件各33组646断言;Unity CLI Loop编译0错误269警告。 包含相关方案、评审裁决、测试及状态文档。未操作服务器、正式账号或打包。
3.8 KiB
3.8 KiB
M2修订1独立审查:主会话裁决与新增阻断
日期:2026-09-29。受审报告:M2-先移植后优化独立方案审查-修订1.md,SHA256 5D293D41D26A23859AFEC85674B57F21BBF90D6FE8FEE445E954A1AF21BFE8A0。主会话独立复算15项受审文件长度与SHA256,15/15一致;受审方案hash 64CB30F2C0613BB59E12F5C00BF0A64230FEE5047715488FA02E87C1CE92C219。报告及原受审材料保持原样。本裁决不批准生产代码。
逐项裁决
| 报告项 | 主会话裁决 |
|---|---|
| 总体路线通过 | 接受“先移植、后优化”,Guard是9月28日迁移新增而非原PF语义;B02四入口等价关闭仍有效。总体路线通过不等于首批编码批准。 |
| CP1–CP2有条件通过 | 接受“有条件”的限定;条件尚未满足,暂不编码。需补五项具体合同/白名单,且下述正式启动阻断未被报告覆盖;因此不采纳“约30–50行即可接正式玩法”的工作量推断。 |
| P2-1五项 | 全部接受为编码前置:正式入口签名、Guard释放点、原handle出口、Player构建31模块绑定、非Editor正式工厂与配置来源。每项须有文件/调用顺序/失败路径/验收。 |
| P3-1 Guard引用映射 | 接受,作为迁移期不改Guard的范围核对及CP5后续评估输入;不因表格本身扩大CP1代码白名单。 |
| P3-2 PF缓冲/触发差异 | 接受,每个业务域记录旧PF与KV的真实触发差异,CP4停用组件前逐项销账。 |
| P3-3 Player编译旧错误 | 限定接受“历史错误需单列来源”的事实;不接受把有编译错误的Player构建记为通过。CP1离线/Editor可明确未验Player;正式入口交付前仍须解决或隔离该错误并获得0错误构建证据,不能用白名单冒充可运行。 |
源码新增阻断:审查报告未覆盖的正式启动链
SubBoostrap.cs:91无条件AddComponent<PlayFabMgr>(),其Awake在无Guard时立即建立PF缓冲和40秒循环。UserService.KVLoad.cs:27–32的受控协调器配置却要求未唤醒的PlayFabMgr、HasLiveInstanceForKVLoad==false、CustomServerMgr.IsFreshForKVLoad。普通游戏启动后这些条件不成立;只在LoadAsync末尾释放Guard不能使正式路径可达。需要先明确按backend分流的组件创建/未启动证明,不许静默停用PF默认路径。UserService.KVLoad.cs:17–25把精确SaveBackend=kv拒为BackendNotEnabled;UserService.cs:189–203普通LoginCore先走PF登录,IsLogin与IsAuthorized也按PF状态计算。AggUserService.cs:68–75在渠道SDK登录前同样先拒KV。正式入口必须设计认证、正常Done/授权状态与PF回退边界;不是协调器加模式参数即可完成。CustomServerMgr.cs:49–73,126–129当前KV网络借用只允许验证,普通API请求在kvOnly抛错;PlayerKVLoginContext.cs:398–399更只准两条__kv_validation路由。正式KV游戏需要可用且会话隔离的业务API路由。不能把验证租约改名当正式传输,也不能恢复旧Cookie容器的无排水替换缺陷。PlayerKVGameplayBindings.cs:1整文件仅在UNITY_EDITOR && !SERVICE_HOST编译;LoginStage与正常服务注册仍按旧路径。移除编译门不等于正式对象全部注册且静止,须明确容器时序和缺失时拒绝。
上述是能否到达正式KV加载的前置条件,并非CP5架构优化。原ZCode报告判断“模式参数加30–50行可实现”未分析这些路径,不能作为编码授权。先修订完整方案,把P2五项与四类启动前置一起列入精确白名单/验收矩阵,再送原ZCode复审;不重复开发B01/B02,不在未批准范围试写。用户要求完成后的代码干净清晰:不得以测试专用旁路、同名PF转发壳或永远闲置的新组件掩盖这些缺口。