Files
ft/CodexOutput/upserver/Gameplay101Validation/不可用药水引导修正裁决与实施记录.md

57 lines
9.1 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.
# 不可用药水引导修正:裁决与实施记录
2026-09-28,主会话。独立方案审查通过,无P1/P2。主会话于2026-09-28T08:58:34.5804905Z核对19项SHA256及长度,19/19一致。
## 裁决与批准
| 审查项 | 裁决 |
|---|---|
| 1 Init处延后恢复 | 接受;在现有存档取出后、原恢复循环前处理。 |
| 2 存档/isUpdate保持 | 接受;只保留该组到新字典并continue,不改进度、不清其他指针、不额外Save。 |
| 3 GetEvent与异常 | 接受;仅只读GetEvent(4,5)严格=-1,查询失败走原恢复并告警。 |
| 4 其他路径边界 | 接受;仅Editor非SERVICE_HOST、KV Enabled/Ready、EventPotion01有效未完成节点。 |
| 5 回调误改风险 | 接受已核实风险;选择源头延后方案,不删除钓鱼门。报告“唯一正确选择”限定为本次已比较的三个选项,不推成一般架构结论。 |
| 6 红绿与回归 | 接受;实际Init与AddIndex/GuideNextEvent,覆盖无活动/有活动/异常/节点及原奖励消费回归。 |
| 7 退出与闭环 | 接受;先确认现会话已退出drain并退役permit,再改代码;后续完整闭环连续执行。 |
P3-1接受:实际检查节点panelName恰为EventPotionPanel,新增节点不匹配负例。P3-2接受:活动类型4/子类型5使用具名常量或同处明确语义注释。
批准仅修改DataCenter.GuideData.cs与UserService.KVFishingRewardValidation.cs,允许本目录记录命令/测试/运行证据。不改配置、钓鱼费用/奖励逻辑、存档数据、claimed,不打包。实施以完整方案为准;不额外安排实施前复核。
## 检查点0
实际CLI已见68504的playing=false/ready=false/Error=null;事件记录在08:35:55.4493751Z已closed,未新增fishing事件。没有为了满足步骤再发QuitStage;接下来核cache和最终服务器快照,退役当前许可。退出是谁触发的不作推断,不把本轮只读检查写成主会话执行了退出。
## 检查点1:有效红测与生产修正
085931Z最终快照与082052Z的101全部55键一致;permit已归档,全部claimed保留。红测前两次因夹具静态PF赋值次序、原异步库Edit Mode上下文缺失提前失败,不计目标红测;预加载改同步完成,夹具临时补齐/恢复原上下文与runner,未改DLL或Init加载流程。guide-red-result3.json在实际Init完成且无异步异常后,明确失败于不可用药水指针为空断言;目标红测成立。随后按合同仅增加Init分支和私有只读判断,活动4/5具名,异常告警并原恢复。待全绿验收。
## 检查点2:限定实现与回归通过
奖励固定验证55组243断言全绿(原45组171+新增10组72);消费19组81断言;M09/M10/M12的12断言;B2-20真实31模块双epoch的83断言及restored=true全部通过。Editor编译0错误(272历史警告),SERVICE_HOST编译exit0/0错误。本轮测试均mock,formalRequests=0。17项非修改焦点hash仍与原清单一致;仅两项批准源码变化,生产增加30行左右、既有逻辑不重排。新hash见guide-implementation-hashes.json。测试环境前两次失败记录保留,不冒充红测;有效红测为result3,绿测为guide-green-result.json。
新增实际Init测试临时补齐原异步库Edit Mode上下文,结束恢复上下文/runner/资源定义/容器;没有修改第三方DLL或真实配置文件。生产不改默认PF/非Editor/SERVICE_HOST行为。后续新进程101实际闭环仍待执行,未宣布整体关闭。
## 检查点3:真实验证准备,等待正常退出
固定回归后CLI核对playing/enabled/ready=false、error/run=null、permitExists=false;清理成功。09:15:22Z对68504发正常CloseMainWindow且返回true;再次查进程仍在,日志止于关闭请求前,不强杀、不启动第二实例,已请用户查看退出/保存对话框。091527Z新备份10155键/10245键均与085931Z逐值一致;准备新v3脚本但尚未执行。
本轮备份工具共两轮(085931Z、091527Z),应用层合计4登录+4Get,工具Set/Delete=0;隔离测试formalRequests=0。实际钓鱼次数仍0,尚无新运行许可/新claim。原13个claim全部保留。下一步仍在主会话,先等旧进程确实退出再launch;用户启动CLI后核环境与最新基线再进入Play。若时间跨日或有外部操作,应刷新备份而非盲用091527Z。无需新增内部实施复核。
检查点3续:用户确认正常关闭后,主会话检查68504不存在,再经uloop launch启动项目,新进程55088(本地17:16:38)。加载完成,待用户启动CLI Loop;尚无新许可/Play/实际收鱼。
## 检查点4:真实登录与动作前基线通过
用户确认CLI已启动,19/19实施hash一致,新进程55088空闲、固定API核对正确;091527Z距当前仅3分钟,未跨日,使用该基线建立既有v3。09:19:17Z claim,09:19:26Z ready;首轮采样尚未完成登录,不误报失败。随后实际IsLogin=true、101/InternalId2/kv-loop/API正确、level62、gold36550472、Energy7305;药水GetEvent=-1、curDefine/curGroup/curSaveData均null,存档EventPotion01|4|False。没有GuideSaveDataNew写入审计。
092018Z动作前55键完整快照,GuideSaveDataNew原值保持,所有55键与cache.baseline一致,pending=0/activeBatch=null/unknownBatch=null,无fishing事件,accepted4。相对091527Z仅MonthlySignEvent(签到index6→7、日序3→4)、NewPlayerDataDic(体力7275→7305/登录统计)、ShopPackBuyCount(日序270→271)变化;正常签到路径与截图吻合,非钓鱼奖励/非补发,操作人已请用户确认。两次截图先每日赠礼后主页x5,AI未模拟UI输入。
用户表示已可甩杆;已交用户一次普通抛竿/拉杆/收鱼,成功停奖励页先不收下,失败停止不重试。当前仍活动Play及v3,不能直接Stop/重进。后续奖励快照、收下、正常退出、新进程恢复及最终复核未完成。此次新增一轮只读备份工具2登录+2Get/Set0/Delete0(含102附带观测);游戏写入另计。
检查点4续:09:21:37Z用户实际抛竿通过原门,fishing-energy-applied为7305−5=7300,consume-confirmed票据sequence6及consume-ready已记录;09:21:39Z strike完成(写0),当前战斗中。实际尝试计1,不允许第二次自动尝试。
## 检查点5:唯一一次真实收鱼与奖励落库
09:21:54Z fish10231 reward-confirmed(主档sequence12、Map_5_102 sequence11)及presented各1;用户报告已点击收下,主会话明确不再抛竿。奖励页停留截图未采集,不能补造;以原审计确认+用户收下说明+实际主页截图+服务器全量对账作为已获得证据,最终复核说明此偏差。092245Z快照与092018Z仅NewPlayerDataDic/Map_5_102两键变化;金币36550472→36552317(+1845)、体力7305→7300(−5)、energyRM7231→7236;鱼10231从6|0|54|0|False→6|9.23|54|5|False。GuideSaveDataNew及BattlePassRecordTask均保持,其他鱼不变。全55键cache相等,pending=0、active/unknown=null;consume/reward confirmed各1、presented1、fault0。实际三引导指针仍空,药水存档仍4/未完成。用户签到操作人尚未单独确认;签到+30及MonthlySignEvent变化已明确归因签到路径,未归入钓鱼收益。准备正常退出和新进程v1恢复。
## 检查点6:正常退出与恢复准备
奖励后Unity Error=0。经QuitStage在09:23:42Z记录closed,CLI实际playing=false/Ready=false/Error=null,cache待存/active/unknown均空。092418Z退出后全量55键与092245Z全部一致;v3许可归档permit-retired-guide-live-55088.json,全部14个claim保留。以092418Z制作既有v1恢复准备脚本,仅准备未执行;09:24:39Z向旧编辑器发正常关闭请求,不强杀。恢复仅登录读取/正常退出,不再抛竿,需验证金币36552317、体力7300、鱼10231=6|9.23|54|5|False、药水原存档保持。
检查点6续:已确认55088完全退出,uloop launch启动恢复进程130200(本地17:25:00)。待用户启动CLI后执行prepare-guide-recovery-v1.cs.txt及只读恢复核验guide-recovered-values.cs.txt,不运行第二次钓鱼。
## 检查点7:新进程恢复完成,交付待复核
恢复进程130200以v1登录101,09:28:49Z ready;guide-recovered-values.json为valuesPass=true、55键mismatches=[],实际金币36552317/体力7300/energyRM7236,鱼10231原值6|9.23|54|5|False及内存最大重量9.23/等级6一致,EventPotion01仍4/未完成且三个指针空。初次动态采样在启动阶段空引用,补GContext就绪判断;后续游戏Error0,非生产缺陷修复。
正常QuitStage在09:29:30Z closed,pending0/active与unknown为空。最终S3为092948Z,与S2 092418Z全部55键一致;两run最终cache与S3全部相等,10245键各轮观测一致。恢复run只有一次主档同值accepted,无钓鱼事件;v1许可已归档,根目录无permit,全部15claim保留。编辑器非Play,本包101停用协作窗口结束。
已编写合并实施交付与独立复核提示词,明确签到、提前收下缺奖励页截图、采样前置及请求统计偏差。下一步独立复核侧,仅复核本两文件及101业务包;主会话待核hash/逐项裁决后才能正式关闭,不继续新增开发或自封通过。