52 lines
5.5 KiB
Markdown
52 lines
5.5 KiB
Markdown
# R1报错修复验收与关闭裁决
|
||
|
||
日期:2026-09-24。依据:[编码前逐项裁决与最小方案](阶段4R1报错修复裁决与最小实施方案-2026-09-24.md)、[独立实施复核](阶段4最小真实玩法闭环R1实施独立复核-2026-09-24.md)。
|
||
|
||
## 裁决与实际改动
|
||
|
||
独立报告SHA256 `520C61DC28CCA763BAE400CF154C7FC28B2CA71F5A0F67159D38A8E0F42B5A63`;编码前受审210项全部一致。报告五项回答及P2-1/P3-1/P3-2已逐条接受,详见编码前裁决。本轮修复生产逻辑仅两处:
|
||
|
||
1. `PlayerKVSaveSchema.DecodePlayer`缺InfiniteBuildingData时默认字符串`"0"`,恢复原业务默认。已有字符串/空字符串原样,显式null仍拒绝,Reset仍清空;不在getter吞异常、不补写服务器键。
|
||
2. `QuitAct.OnStarted`只对Editor KV闭环模式,在原清理完成后阻止Unload自动重进;Registry Ready才自动停止Play,其他状态保留进程及排水任务。普通路径仍2秒Unload。保留CreateNew和全部claimed标记,不吞IOException。
|
||
|
||
建筑修订来自独立报告明确批准;退出衔接为用户明确要求修复后、主会话编码前完成的补充方案评审,不冒称独立评审覆盖该新增修订。未改排行榜、PlayerData getter、QuitStage、Bootstrap、服务器或SDK。
|
||
|
||
状态文档同步前对210项旧受审清单重算,变更为上述两个生产文件、PlayerKVEditorValidationHost固定验证host、PlayerSchemaTests、KVGameplayLoopTests.csproj和实施记录,其余清单项一致;随后入口/开发状态/TODO/机器todo同步关闭结果。最终差异见repair-baseline-delta.json,新增工具/证据列入repair-final-hashes.json。工作区其他Git差异是既有改动,不能归为本轮修复。
|
||
|
||
## 检查点1/2:先失败后修复
|
||
|
||
原实现红测:4B2缺键默认断言失败;Unity M01真实Replace失败;实际QuitAct测试模式五状态均仍安排Unload而失败。首败原输出保留,不覆盖。
|
||
|
||
| 验证 | 修复后结果 | KVGameplayLoopTests下证据 |
|
||
|---|---|---|
|
||
| 4B2全量 | 75组1716断言,0失败 | repair-building-green.log |
|
||
| B3A --all | 13组544断言,0失败 | repair-b3a-all.log |
|
||
| 实际QuitAct,Editor/普通模式×5状态 | 10组35断言,0失败 | repair-exit-green.log |
|
||
| SERVICE_HOST原退出分支 | 10组30断言,0失败 | repair-exit-default.log |
|
||
| 许可 | 15断言通过 | repair-permit.log |
|
||
| Unity真实M01/B2-20/装备链 | 168/83/28断言通过,均恢复 | repair-unity-regression.json |
|
||
| Unity编译 | 0错误270警告 | repair-unity-compile.json |
|
||
|
||
P2-1的旧值不泄漏、缺键Replace后实际InfiniteBuildingLevel==0、已有值/空串、显式null拒绝、Reset合同均覆盖。P3-2要求的全量三探针已补齐。
|
||
|
||
## 检查点3:102真实回归
|
||
|
||
- 新Unity进程`101820_639258292892095408`,登录前本地缓存不存在;只启用已有102许可,不重导45键、不装备/消费/领奖。正式地址仍`http://s101.local:18080/`。
|
||
- 06:49:24Z claim,06:49:32Z Ready。真实内存建筑数据和InfiniteBuildingLevel均`"0"`;装备30003、等级60、金币213645、珍珠445、钻石100。正常登录/排行榜调用期间Error为0,见repair-real-values.json、repair-real-login-errors.json。
|
||
- 正常IStageService切QuitStage;06:51:45Z closed,随后日志`KV loop ended; restart Unity before another run. Shutdown: Ready`。没有手动Stop。06:53:55只读Hierarchy Context为editor(非runtime),证明已自动结束Play且超过原2秒延迟。编辑器恢复PreBoot场景不等于运行态再次Bootstrap。
|
||
- 退出后原两类错误为0(repair-real-exit-errors.json)。第三进程仅一次claim、一次Ready、一笔同值NewPlayerDataDic本地写尝试;accepted不是HTTP次数。
|
||
- 前后只读备份`20260924T064749Z`→`20260924T065309Z`,101均0键、102均45键且逐字符串完全相同;InfiniteBuildingData仍不存在,未补写。见repair-server-comparison.json。
|
||
- permit归档至runs/101820_639258292892095408/permit-used.json,三个进程claimed及import-102.claimed保留。最后通过CLI正常退出Unity101820,gracefully;无活动许可、未打包。
|
||
|
||
### 验证工具限制如实保留
|
||
|
||
正常QuitStage的动态脚本await随自动结束Play未返回,CLI最终180秒超时;这不是游戏关闭失败,closed、Ready退出日志、非运行态Hierarchy及逐值对账独立证明关闭成功。动态执行槽因等待仍占用,已正常退出Unity释放;没有修改CLI、强杀进程或手动Stop来伪造通过。今后这类退出验证应分开发起请求与只读观察,不依赖跨Stop的await返回。
|
||
|
||
另一次只读状态查询使用CLI帮助中列出但Editor未注册的get-project-info,产生一条Unknown tool错误;repair-final-errors.json仅此工具错误。首次退出Error=0和最终工具错误分开保存,不清Console、不声称最终全部日志为0。
|
||
|
||
## 正式关闭范围
|
||
|
||
**R1最小真实玩法闭环正式关闭,两处用户报错已修复并完成回归。** 独立报告允许P2-1修复回归后关闭,其余P3处理完成。签到隐藏关闭按钮曾由CLI触发既有关闭回调、未领奖,这一辅助边界保留;原鱼竿选择/装备使用实际UI,不能称完全无辅助用户流程。
|
||
|
||
关闭只覆盖单账号、重启式重登的一条真实存档闭环。4B3整体/G4、完整B/C热换号、4C消费、P2-α存量档专项、身份/外围迁移及最终打包仍未完成;不因本轮修复自动开启全量KV。继续运行必须新Unity进程和有效许可,不能删除claimed重跑。
|