Files
ft/CodexOutput/upserver/阶段4最小真实玩法闭环-实施进度与最小补充审查-2026-09-24.md

7.1 KiB
Raw Blame History

R1实施进度与最小补充审查

R1原方案已独立审查通过并逐条裁决。本文件记录实施发现的具体缺口,申请一处登录期注册补充;不是R1实施完成报告,不重复审4B3A,也不申请全业务重构。当前源码保持模式关闭,真实玩法尚未验收。

1. 已做什么,以及改动规模

对比R1受审基线,10个既有源码增加152行、删除2行;新增3个源码及各自meta。实际差异和hash在KVGameplayLoopTests/checkpoint2-source-audit.json及diff-*.txt,不是相对整个工作区Git旧基线计算。

内容 修改理由 当前结果
SubBoostrap、PlayFabMgr 启动前确定Editor模式;原facade在此模式转发到已关闭的B3A入口 不开许可时仍走旧PF路径;B3A四入口尾段与受审原文逐字节一致
UserService、KVLoad、Agg、Login/PFLogin/Quit 借用已有API会话,等待31对象加载后发布身份;退出先排水,401不重认证 已编译;完整真实登录顺序未运行验证
PlayerData、鱼竿装备UI 原序列化只保留一份;等待该次装备及同步嵌套写的全部原票据 已接线;新链专用动态合成测试未执行成功,不能称确认链已验收
新增UserService.KVGameplayLoop Editor许可、进程限制、固定句柄、同步写票据收集、会话关闭 许可/进程标记15断言通过;未创建真实运行许可
新增PlayerKVGameplayBindings 连接31个容器对象的既有Reset/Replace方法 M24缺注册时拒绝,见下节
新增KVGameplayLoopSetup 固定CLI状态、许可校验/准备、只读标记列表 状态确认未PlayMode、Enabled/Ready=false,无标记

未修改31模块算法、Schema/State/Cache/网络Client/Bridge/Lease/Registry、服务器、场景或包。未打包、未Git提交。原有存量改动保留。

2. 唯一申请的代码差异:M24注册时机

事实:LoginStage.StartAsync的注册表没有EventShootingRangeData;现有注册发生在FishingEventData.SetEvent7和PlayerData活动分支,晚于R1的完整存档加载。旧独立验证宿主自行构造该对象,故其31对象测试通过不证明真实容器已注册M24。

当前PlayerKVGameplayBindings.Bind只Resolve,缺失则抛出明确错误;没有创建平行对象、跳过M24或补默认存档。该行为符合失败阻止发布,但无法达到完整真实登录。

拟批准的最小补丁,尚未执行: 只在LoginStage.StartAsync已有InjectionScope注册区内,增加Editor R1条件下的一次单例注册:

#if UNITY_EDITOR && !SERVICE_HOST
if (PlayerDataStorage.PlayerKVGameplayLoop.Enabled)
    GContext.container.Register<EventShootingRangeData>().AsSingleton();
#endif

保持旧默认路径原样。实例属于正常GContext,与后续SetEvent7的Resolve同一对象;后续已有“缺失才Register”分支无需改。对象仅用已有Reset/Replace读取快照,不提前调用UpdateData、UI初始化、奖励或保存。无需改M24业务源码、创建新加载器或修改场景。

这比原方案§5对LoginStage的“登录路由”说明增加了注册时机,故提交方法级补审后再落代码。请审核者确认注册区/InjectionScope时机、对象身份一致性及无构造副作用;若发现其他真实容器前置缺口,一并给出证据,不笼统要求扩展81个业务文件。

3. 数据事实及下一步

用户明确允许沿用101/102,并要求“不必强行修改”。固定地址http://s101.local:18080/只读预检成功:两个既有账号KV均0键,无NewPlayerDataDic。见KVGameplayLoopTests/checkpoint0-live-backup-retry.log及backups/20260924T035000Z/,原始备份和SHA256均已落盘。正式成功请求为2次登录+2次Get;KV Set/Delete为0。首次沙箱登录Network失败单独保留,不计作成功请求。

当前允许写入key集合为空,无数据修改,故无需执行恢复。保留这两个空档备份作为未来导入前基线。没有自动PF迁移或虚构鱼竿/货币;现行Schema对空档返回EmptyExisting,许可校验也拒绝空档启用。

已向用户提供三个来源选项:先只读检查同账号PF存档、提供已有完整KV备份、先接线而数据留后续;截至本文件没有收到选择。若用户选择PF,先只读备份并检查Schema/已有鱼竿,再列明拟导入的实际key、摘要、前值为空及精确恢复删除集合;只有具体范围明确后才实施导入。该测试账号准备不扩展到P2-α真实用户迁移。

4. 已验证及未验证

验证 结果/证据
新许可与进程标记 15断言PASS,含空档、重复key、摘要/账号/API不匹配、同进程拒绝、新进程允许、旧标记保留;checkpoint2-permit-final.log
默认服务宿主 非Android、Android+AGG各8组73断言PASS;checkpoint1-regression-service.log、checkpoint2-regression-service-android.log
4A/4B1/4B2/4B3A离线 18组226、23组279、75组1715、13组544,全部PASS;checkpoint2-regression-*
Unity现有固定回归入口 B3A 34断言、B2-20真实31对象/双epoch83断言,恢复成功,正式请求0;checkpoint2-unity-existing-regressions.json
Unity编译 无错误;重编译曾输出270条警告,新R1文件无警告;完整日志保留,不将增量0警告当作工程告警已清零
沙箱失败 File.Replace权限拒绝已取得堆栈;相同合成测试获准环境PASS;首败保留,不关闭历史KVSync/3C间歇项
新装备链专用合成脚本 首次动态编译重复Json程序集,修正后被CLI Restricted对反射/HttpMessageHandler规则阻止,未执行、未通过;不得绕过该规则或引用旧B3A测试冒充新链覆盖
真实闭环 未执行:无完整初始档,M24注册补充待审;真实UI、API发布时序、所有初始化写、原票据、重启恢复均保持未验收

回归只说明旧合同未发现退化;R1仍需专用失败/关闭测试和真实流程。补充批准后先落M24最小改动及检查点日志,再落实获准测试方式和数据来源,最后才能做真实运行及独立实施复核。

5. 给评审AI的提示词

请读R1原方案、独立审查、主会话裁决、本文件及KVGameplayLoopTests/checkpoint2-source-audit.json;核对checkpoint2-review-input-hashes.json。本次仅裁决§2的M24登录期单例注册补充是否合理、是否仍有同类具体前置遗漏,同时指出现有接线中阻止下一步的P1/P2问题。重点查看Editor无渠道SDK时Agg通知、身份延迟发布、同步嵌套票据和关闭顺序;原完整方案已批准,不重复退回整个分期。

请只新增《阶段4最小真实玩法闭环最小补充独立审查-2026-09-24.md》及自有证据,不修改共享实现/入口/TODO/开发日志。分别写“是否批准M24最小差异”“接线仍缺哪些必要验证”;不能将本次当作R1实施关闭审查。主会话随后逐条裁决、更新日志并继续。全程Unity CLI Loop、不用UnitySkills、不打包;不改CLI安全级别绕过拒绝,不擅自迁移101/102的PF存档。