# 阶段4最小真实玩法闭环最小补充独立审查 日期:2026-09-24。审查者:ZCode会话。独立性声明:未参与R1实施与补充方案编写;本轮只读+hash计算+源码比对,仅新增本报告。 ## 受审输入核对 `KVGameplayLoopTests/checkpoint2-review-input-hashes.json`共81项,逐项重算——**全部一致**。 ## 结论一:**批准M24最小差异** **事实独立核实**: 1. `LoginStage.StartAsync`注册区(:18–70+)确无`EventShootingRangeData`;其现有注册仅在`DataCenter.PlayerData.cs:850–854`(活动分支)与`FishingEventData.cs:1038–1042`(SetEvent7),两者均为"Resolve→缺失才Register→再Resolve"语义且晚于R1登录期全档加载——补充文档事实成立。 2. **同类缺口排查(本审查全量比对)**:归一化命名空间后,`PlayerKVGameplayBindings`全部`Require<>`目标(31绑定+Tables)与登录注册表逐一比对——**`EventShootingRangeData`是唯一登录期缺失项**(`T`为泛型占位;`cfg.Tables`由Bootstrap注册、初验推进到M24才失败即此前全部解析成功的事实佐证)。M28两个实例经`eventBase.ThanksGivingPackData/ChainPackWithProgressMigrationData`字段获取(Bindings:35),非容器类型,无缺口。 3. **补丁评估**:`#if UNITY_EDITOR && !SERVICE_HOST`+`PlayerKVGameplayLoop.Enabled`条件+既有InjectionScope区内单例注册——三重限定下旧默认路径零变化;注册的对象与后续SetEvent7"缺失才Register"分支解析到**同一单例**(对象身份一致);该类为纯数据注册,构造无UI/网络/保存副作用;不改M24业务源码。**最小且正确。** ## 结论二:接线仍缺的必要验证(阻止真实闭环的项) | 编号 | 缺口 | 性质与建议 | |---|---|---| | V-1(P2) | **新装备链"同步嵌套票据收集"零通过测试**:专用动态合成脚本被CLI Restricted的反射/HttpMessageHandler规则阻止,未执行未通过(文档如实声明)。 | 不能带此空窗进入真实运行。建议改用**固定宿主入口**模式(同B3A `KVSaveRouteValidation`先例:`KVGameplayLoopSetup`增加固定case转接+HotUpdate内UNITY_EDITOR测试方法,编译期固定、无动态反射),把"装备→嵌套写→多票据→水位Flush→全部Confirmed/Superseded停止"的合成用例跑通后再进真实链。 | | V-2(P2,非代码) | **数据来源未决**:101/102现有KV为0键(只读备份已落盘、Set/Delete=0),三个来源选项(PF只读检查/提供KV备份/先接线后补数据)用户未选。 | 已正确阻塞真实运行;PF导入若被选择,须先按文档§3给出"实际key、摘要、前值为空、精确恢复删除集合"再实施。 | | V-3(P3) | **Editor无渠道SDK路径的Agg通知语义应写明**:Editor(非AGG)注册的是`PlayFabUserService`,不存在Agg订阅——`OnInitData?.Invoke`为空触发是无害且预期的,但R1方案§2.2措辞假定了Agg窗口。 | 检查点日志中明确一句即可,防后续误判"通知丢失"。 | | V-4(P3) | **身份延迟发布与关闭顺序已接线但未真实运行验证**(文档§4如实列出)。 | 随真实闭环验收覆盖;在此之前不声称已验证。 | **未发现新的P1。** 已声明未验证项(新装备链、真实登录时序、全部初始化写、原票据、重启恢复)与实际状态一致,无虚报。 ## 边界重申 本次为最小补充审查:不作为R1实施关闭审查;M24补丁落码后应更新检查点日志;真实PlayMode与业务写仍待本补充裁决+V-1测试通过+V-2数据授权后执行;101/102空档备份保留为导入前基线;不迁移PF存档、不改CLI安全级别、不打包。P2-α、4C、tickets、身份、4D/G4启用门保持。