Files
ft/CodexOutput/upserver/阶段4R1报错修复裁决与最小实施方案-2026-09-24.md

47 lines
4.9 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报错修复裁决与最小实施方案
## 检查点0:依据与逐项裁决(编码前)
用户要求“如果可以修复,请修复掉”,范围为已定位的两处错误。主会话重新核对R1受审210项全部一致;独立复核报告SHA256为`520C61DC28CCA763BAE400CF154C7FC28B2CA71F5A0F67159D38A8E0F42B5A63`。
| 项 | 裁决 |
|---|---|
| 复核①Advert修订 | 接受,保持不动。 |
| 复核②45键初始化 | 接受,不重导、不补写建筑字段,不写101/PF源档。 |
| 复核③核心装备/恢复 | 接受原证据,但会话closed不等于退出场景流程无异常,新增退出问题须修复验证。 |
| P2-1建筑缺键 | 接受已获独立批准的单方法修订,DecodePlayer默认null改为字符串0;原字符串不变,显式null仍拒绝,Reset清空合同保持。 |
| P3-1签到辅助 | 接受,继续披露现有关闭回调辅助,不称无辅助UI全流程。 |
| P3-2完整B3A | 接受,跑--all三个探针,不以单探针代替。 |
## 退出自动重进的完整补充方案与主会话评审
此项是复核报告之后新定位的问题,**不冒称已由独立评审批准**。用户已明确要求修复;主会话本节完成方法级方案、边界和验证评审,再按原R1已有QuitAct白名单实施。无需新建生命周期框架,也不扩大为热换号。
根因:QuitAct.OnStarted在清理结束后Invoke(Unload,2秒),旧QuitStage.RequestNextAct无条件载入PreBoot,同进程Claim必然重入。选择在QuitAct.OnStarted的既有清理及base.OnStarted之后、安排Unload之前,加`UNITY_EDITOR && !SERVICE_HOST`且PlayerKVGameplayLoop.Enabled的窄分支:记录需重启提示;ShutdownRegistry.Process.Status为Ready才结束Editor PlayMode;任何其他状态保留当前进程与排水任务,不安排Unload,不进入PreBoot。普通Editor/Player/SERVICE_HOST仍执行原Invoke。
方案逐点评审:
- 执行点位于StartAsync已完成既有释放/有界观察之后,不提前跳过资源清理;Ready才Stop,Pending/Failed不得用域重载掩盖未完成排水。
- 阻止的是当前测试模式自动重进,保留Claim的CreateNew、claimed文件及只运行一次合同;不删标记、不吞重复文件异常、不重新认证。
- 不修改QuitStage及其所有普通调用方;不改Bootstrap,不改默认游戏退出行为。
- 模式分支不发任何存档/HTTP请求;不会产生补偿写或覆盖玩家值。
- 已审建筑修订与本修订相互独立;测试分别证明根因,再联合验证真实登录/正常退出后不会第二次Bootstrap。
- 失败边界:若排水未完成,记录状态并停留退出阶段,保留Registry,不把停止准入当作已关闭。不得为了测试通过强制释放任务。
主会话评审结论:方案完整,批准最小实施。生产改动仅DecodePlayer一默认值和QuitAct.OnStarted一个Editor分支。测试允许更新既有PlayerSchemaTests、固定M01验证host及KVGameplayLoopTests专项工具;不修改getter/排行榜算法/存档/服务器/SDK/场景。
## 检查点与验收
1. 测试先行:缺键0与真实Replace后InfiniteBuildingLevel读取;存在字符串/空串原样、显式null拒绝、旧字段不泄漏、Reset仍清空。退出测试直接编译真实QuitAct,覆盖测试模式Ready停止、Pending/Failed等不自动重进/不停止、普通模式原2秒Unload。
2. 最小补丁与回归:4B2全量、Unity M01/B2-20、B3A --all、装备链与许可;编译无新增错误。保存首败。
3. 新进程102真实登录回归,观察排行榜NRE不再出现,正常QuitStage后等待超过原2秒,验证无PreBoot重进/claimed异常,正确停止Play,保留原数据/标记。需要重新启用已批准102许可,不重新导入或执行装备/消费。检查点更新日志。
本方案完成用户修复请求,不由此自动开放整个4B3/G4、4C、热换号或打包。
### 2026-09-24 R1报错修复检查点3及关闭
- 新进程101820_639258292892095408真实102登录成功,缺键建筑及等级均0;装备/等级/主要货币保持。登录与正常退出阶段原两类异常均未出现。
- 正常QuitStage于06:51:45Z closed,Registry Ready后自动停止Play;没有手动Stop。06:53:55只读Hierarchy确认editor状态。三个claimed保留、permit归档,最后CLI正常退出Unity。
- 前后backups/20260924T064749Z至20260924T065309Z:101空,102原45字符串全相同,不新增建筑key。本轮自然同值写1次,不能当作HTTP计数。
- 工具限制:退出脚本跨Play停止的await未返回并180秒超时;误用Editor未注册的get-project-info产生单独工具错误。完整证据保存、未清Console。关闭成功由事件、Ready日志、非运行Hierarchy及对账证明。
- 独立复核P2-1/P3-1/P3-2处理完成,R1正式关闭;签到关闭回调辅助边界仍披露,完整4B3/G4等未完成。详见《阶段4R1报错修复验收与关闭裁决-2026-09-24.md》。