5.5 KiB
R1报错修复验收与关闭裁决
日期:2026-09-24。依据:编码前逐项裁决与最小方案、独立实施复核。
裁决与实际改动
独立报告SHA256 520C61DC28CCA763BAE400CF154C7FC28B2CA71F5A0F67159D38A8E0F42B5A63;编码前受审210项全部一致。报告五项回答及P2-1/P3-1/P3-2已逐条接受,详见编码前裁决。本轮修复生产逻辑仅两处:
PlayerKVSaveSchema.DecodePlayer缺InfiniteBuildingData时默认字符串"0",恢复原业务默认。已有字符串/空字符串原样,显式null仍拒绝,Reset仍清空;不在getter吞异常、不补写服务器键。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重跑。