# 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重跑。