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

67 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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条件下的一次单例注册:
```csharp
#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存档。