Files
ft/CodexOutput/upserver/阶段4最小真实玩法闭环102真实运行记录-2026-09-24.md

65 lines
8.4 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.
# 102真实运行记录:真实装备与新进程恢复通过,待实施复核
## 当前结果
102已真实登录并进入主界面,在原鱼竿界面将20001换为已有30003;原装备票据Confirmed,服务器Get确认30003;正常QuitStage完成关闭。**新Unity进程120896、新缓存从服务器恢复30003已经通过,并再次正常关闭。R1仍待独立实施复核及已知异常处理,不关闭。**
下一步在评审侧:复核本轮R1实施证据,并对本记录末尾建筑字段缺键默认值的最小修订给出明确结论。启动时CLI曾连接失败并请求用户确认服务,随后已恢复,环境问题已解除。`uloop fix`返回No lock files found,没有修改CLI安全设置或创建替代控制入口。
## 本轮审查与最小实现
独立报告及92项受审hash核对通过,见[逐条裁决与实施批准](阶段4最小真实玩法闭环102兼容审查裁决与实施批准-2026-09-24.md)。两项批准及三条P3全部落实。
相对92项基线,业务源码**只有PlayerKVSaveSchema.Advert一处参数变化**:允许合法显式JSON null,保留原字符串,缺字段和非字符串仍拒绝。其余变化是Preflight测试/初始化工具(Program.cs、csproj、新AdvertCompatibilityTests.cs/Import102.cs)和证据文档。没有改排行榜、签到、鱼竿经济或其他业务算法。
| 验证 | 结果及证据(均在KVGameplayLoopTests) |
|---|---|
| null边界专项 | 16断言通过,cdtime-red.log保留原失败,cdtime-green-final.log为最终通过 |
| 原102整档 | cdtime-source-schema.json:45键Valid、0错误、已有30003/20001;101另两项仍拒绝 |
| 离线4B2 | cdtime-b2-approved.log:75组1713断言,0失败 |
| Unity | M04 136、B2-20 83、B3A 34断言;装备链9组28断言,全部通过并恢复 |
| 许可/编译 | 15断言;Unity 0错误270警告 |
首败及工具编译错误保留。测试进程未处理异常曾锁住输出,确认本轮测试进程路径后结束,最终使用UseAppHost=false完成。CLI许可首脚本因Newtonsoft重复引用失败,同批误触Play立即Stop;日志仅记录两条插件警告、未见登录。改用确定45键常量调用既有PreparePermit,单独验证成功后才启动正式run。不得把此操作失误隐藏或计作成功验证。
## 102数据初始化与变更核对
PF来源、45个原值及hash沿用已审方案,未改一字值。`imports/20260924T061443Z`保存真实账号/服务器时间、候选Valid结果、导入前空KV、Set200结果、导入后备份和45行逐键布尔矩阵;无额外键。`import-102.claimed`保留,**不可再次运行导入命令**。沙箱首次login Network失败发生在任何Set之前;沙箱外成功的初始化仅一个Set。
原许可备份:`imports/20260924T061443Z/after.json`,SHA256 `1374C7ED31EFB0EAC0EB6EDBF57276A61B8DE0CA1B222C86FB853EFEB9BF38DD`。
首次真实run:`runs/54200_639258133649707870/events.jsonl`。5次本地write-attempt,3个不同键,全在45键范围;本地接受次数不是HTTP Set次数。真实装备的1张原票据在06:18:14Z Confirmed,06:19:17Z记录closed。没有抛竿、升级、购买或领奖。
服务器装备后备份:`backups/20260924T061841Z/102.json`,SHA256 `9BECFC6ED1D2EF0905F9B4A448779D026D0A548C71F540B5C3CC2A7069C45F0D`,仍45键,101仍空。逐字段差异在`real102-run-summary.json`:
- `NewPlayerDataDic.newData`仅装备槽20001→30003;等级60、金币213645、珍珠445、钻石100保持。
- `ShopPackBuyCount`日序264→266;`BattlePassRecordTask`日刷新tick更新。
- 主存档`vipL`按原14天滚动窗口推进、`ad`的LoginDays(19)按登录推进、`rt`活动编号30301021→30301023。相关逻辑仍来自原PlayerData初始化、FishingStage登录事件和FishingEventData活动初始化,没有人工改值。
初始化后允许已有键的业务值自然变化;逐值完全相等只要求于导入核验时。没有自动重试Set;保留测试结果,不自动删除102。工具未写PF源存档;运行仍依赖PF外围身份,不能宣称已去除PF或全量统计/外围调用。
## 关闭与重启证据
正常IStageService切QuitStage,Ready先撤销,已有Bridge排水后closed,再Stop Play。原进程54200由`uloop launch --quit`正常退出(gracefully),新进程120896在14:20:37本地时间启动,项目Client、Unity2022.3.62f2c1。
编辑器原PreBoot场景dirty:先SaveScene(saveAsCopy=true)到`PreBoot-before-restart.unity`,与原文件SHA256均为`C627A6F2EE128DE93508159979A155575696DFDBD1B5E40F702C480C1B4A2723`;逐字节相等后重新打开原场景清除dirty才退出,没有丢弃独有序列化修改。原进程claimed文件未删除;第二次Play必须属于新进程,不得用清标记伪造重启。
新进程初始CLI连接失败,恢复后进行了完整验证:`real102-newcache-before.json`证明`runs/120896_639258276377220393/cache`在登录前不存在;第二次Ready Owner为`94968f2b1c8c489eb35e13247df1c58c`,不同于首轮;`real102-restored-memory.json`记录装备30003、等级60/金币213645/珍珠445/钻石100,与服务器一致。第二轮未进行装备操作,不是再次改值伪造恢复。恢复后只发生1次原主档的同值本地写;06:25:56Z正常closed,再Stop Play。
最终服务器备份`backups/20260924T062616Z/102.json`(SHA256 `D951CBDC16234CEBD3F6EE8D8A3BE564E4BCD8D7D6EED4836E15DFE5245D1253`)仍45键、与首次装备后逐值一致;101仍为空。活动许可已归档到第二次run的`permit-used.json`,根permit.json不存在;两个进程占用标记均保留。最终playing=false、Ready=false;静态Enabled仍保留本进程历史状态,不表示游戏还运行。普通用户启用门未开放。
## 已发现限制与最小后续修订建议(尚未编码)
1. **排行榜建筑默认值偏差**:真实登录后`PlayerData.InfiniteBuildingLevel`对null调用Split导致异常,堆栈见`real102-errors.json`。原字段初始化为`"0"`,旧InitData只在存在key时覆盖;新DecodePlayer缺键返回Building=null,Replace覆盖默认值。102没有该key,属于合法缺键而非损坏存档。这没有阻断本次鱼竿保存,但不应在正式关闭时忽略。
2. **签到弹窗验证边界**:可领奖时btn_close被原业务隐藏;本轮经CLI触发现有关闭回调,只DestroyUI,不领奖、不写签到数据。后续鱼竿包/选竿/装备均使用CLI模拟真实UI点击。此项不等于完全无测试辅助的端到端用户流程。
建议一次极小的缺键默认值修订,交实施复核时一并审:只把`PlayerKVSaveSchema.DecodePlayer`的局部`string building=null`改为`string building="0"`;已有字符串(含空串)原样保留,显式null继续Malformed;不改Reset清空合同,不在getter吞异常,不往服务器补写新key。必须更新原`PlayerSchemaTests`把缺键默认null的错误断言改为0,并新增“缺键→真实Replace→InfiniteBuildingLevel为0”的固定M01 Unity验证,保留旧值不泄漏与显式null拒绝测试。此修订超出本次Advert方法白名单,**尚未实施,待完整评审及裁决**。
本轮仍不打包、不动4C、不做101其余兼容、不启用热换号或全量迁移。核心真实闭环证据已齐,但不能据此忽略排行榜异常或直接关闭R1/4B3/G4。
## 给独立评审AI的提示词
请先核对`KVGameplayLoopTests/real102-implementation-review-hashes.json`,阅读原R1方案/实施批准、102兼容审查与主会话裁决、本运行记录以及`real102-run-summary.json`。本轮只新增《阶段4最小真实玩法闭环R1实施独立复核-2026-09-24.md》和自有证据,不改共享源码、入口/TODO/日志,不重复写101/102,也不重新执行导入。
请分别回答:①92项基线后的唯一业务变更Advert参数是否符合批准;②45键原值导入/逐键矩阵及实际3键初始化变化是否符合授权;③真实UI装备、原票据Confirmed、两次正常关闭、新进程/新缓存服务器恢复证据是否充分;④隐藏签到关闭回调的测试辅助与排行榜异常对R1验收的影响;⑤是否批准上节DecodePlayer缺键默认值单方法修订及对应原断言/真实消费者回归范围。需要具体P1/P2/P3与接受/修订后接受/退回结论,不以代码存在代替运行证据,不因核心闭环通过忽略已知异常。主会话收到后核hash、逐条裁决,按批准范围修复和验证,再处理正式关闭。