Files
ft/CodexOutput/upserver/阶段4C2完整实施独立复核-2026-09-28.md

7.0 KiB
Raw Blame History

阶段4C2完整实施独立复核(第四次真实闭环与新进程恢复)

日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与4C2任何实施与真实运行;此前参与为4C1/4C2方案及多轮差异审查。本轮只读+hash重算+证据核验+离线复跑,未启动Unity/许可/正式请求/消费。

受审hash核对

KVFishingRewardTests/fourth-implementation-review-hashes.json:302/302重算全部一致(含三项修复源码与全部本轮证据文件)。

总结论

接受(限定验收)。可送主会话正式关闭4C2。 证据偏差(Q6)经逐项分析裁定为可接受的组合验收;无P1/P2;P3四条。

本复核独立执行

项 结果
302项hash 全部一致
对账脚本证据 fourth-reconciliation.json:45→45键、5变化键与记录逐项一致;fourth-recovered-values.json:core 19槽与服务器相同、目标鱼5|8.74|20|10|False、日/周任务逐项匹配
离线复跑(直跑DLL,见P3-1说明) ControllerTests 9断言PASS、FormulaTests四组对照PASS、ConsumeControlTests 27 PASS、PanelTests(raycasts/KV listener/PF listener)PASS、PermitTests 12/12、OldPresentationTests红测按设计FAIL(exit1,证明旧代码"确认前展示"缺陷仍在原件中)
复核事故披露 首轮经dotnet run复跑ControllerTests/FormulaTests出现FAIL——取证后确认系共享bin目录apphost损坏(三个.exe时间戳精确相同17:15:44.338190500、同尺寸156672=一个apphost被复制覆盖三个名字,dotnet run经损坏exe启动了OldPresentation的dll);直跑DLL后全绿。非代码回归,详见P3-1

八项逐条

1. 白名单/公式/顺序/票据/生命周期:守住。 本轮零业务源码变更(302项hash佐证);三项历史修复均在各自批准白名单内;消费一次(393→383、energyRM132→142)、奖励最终票据task seq10/主档seq16/地图seq15与服务器逐值一致;两run关闭后cache baseline与最终45键相同、pending0/unknownBatch=null/activeBatch=null。

2. controller/panel修复完整。 我直跑DLL复证:Controller 9断言(重入抑制/UI await不持scope/Disable清理/ Destroy撤销/自然失败不进奖励核/旧许可拒绝/confirmed后Disable不二次Fault)PASS;Panel(交互恢复/KV监听注册/raycast)PASS;红测按设计失败证明原件缺陷仍在。45/171与双编译证据有效沿用。

3. run44848单消费单确认:确认。 事件流:claim→ready→preflight(02:48:19.463冻结Fish10223/Item410010223/Map102/Rod30003/Mag4)→扣费(.500–.615)→strike段1写→ending段0写→reward段6写(引导notifications1/activated0)→三最终票据confirmed(02:48:32.200)→presented(.204,晚于confirmed)→各1次→正常closed(02:49:28,Error0)→无第二次抛竿。

4. 五变化键归因:成立。 签到16200与捕鱼2516正确分离(231488=215288+16200→234004);Map_5_102仅10223变化(数量+10/重量0→8.74,等级5/卡数20/NewFish保持,其他鱼仅键序重排);vipL基日339→343各有效槽+4符合原UpdateVIPScoreDic;rt 30301023→30301027符合原排行事件切换;MonthlySignEvent/ShopPackBuyCount归因签到与跨日。

5. 恢复证据充分性与验证层次:足够,层次裁定如下。 103828新身份(run/claim登录前不存在)、v1许可仅恢复、19槽主档与服务器相同、有效KV读回目标鱼+活对象公开接口(重量8.74/等级5/NewFish=false)、活BattlePass三值一致、同值登录保存受理如实记录、Error0、许可退役11个claimed保留。裁定:TotalNum=10由有效KV读回证明已足够——公开接口+KV有效值覆盖被消费语义,私有反射读取活对象TotalNum不必要。

6. 重点:证据偏差裁决——接受限定验收(组合验收),不要求再消费。

  • "precast/live-gates"晚于扣费:该文件本欲提供的"动作前基线"功能已由等价证据覆盖——登录前备份024346Z(与023420Z逐键相同、后者又与第三次结束态相同)=真正的动作前基线;run内preflight(扣费前0.037秒)冻结了鱼/物品/地图/鱼竿/倍率;扣费前体力393在preflight审计中。命名与采样时序是流程瑕疵非证据缺口。
  • 金币公式无本轮复算:随机/掉落/加成参数未留,本轮2516无法独立重算。但公式源码hash冻结未改+FormulaTests四组对照我直跑复证PASS+原票据审计+服务器逐值一致——裁定为P3级缺口,为复算单独再消耗一次不可逆真实消费的边际证据价值不成立。
  • 无奖励面板截图/三属性实测:点击生效由用户确认+主页截图+confirmed/presented各1次+既有红绿(PanelTests我复证)充分证明。
  • 签到污染:用户本人操作并确认,数据正确分离,未混入捕鱼收益。
  • 组合验收:第三次(严格动作前备份+奖励落库)+本次(收下→主页→新进程恢复)跨两轮覆盖全链,每轮各自完整可审计——接受。

7. EventApiURL配置:符合授权。 用户明确要求改地址;仅新增本地debugconfig.json的EventApiURL,不覆盖资源/CDN、不动PF身份端点;102全程实际API读回s101.local。PF身份依赖如实保留未宣称修复(DNS错误未复现≠根因修复)。

8. 范围:无越界。 本轮关闭仅覆盖限定4C2(一次收费抛竿→收鱼→奖励确认→收下→主页→新进程恢复);完整4C/G4/热换号/4B3剩余/上线不因此关闭。可送主会话正式关闭裁决。

P3清单

  • P3-1|共享bin目录apphost损坏(本复核实测发现):KVFishingRewardTests下多项目共享bin导致.exe被复制覆盖(三个同时间戳同尺寸),dotnet run结果不可信。建议:后续复跑一律dotnet <dll>或为各项目设独立OutputPath;评审流程加注。
  • P3-2|金币公式本轮无复算(Q6裁定):后续真实run若需单轮完整样本,运行前留存随机/掉落参数即可(流程改进,非代码)。
  • P3-3|证据文件命名应反映实际采样时点:precast/live-gates实际为扣费后采样——建议未来证据文件名或首字段记录planned-vs-actual时间,避免复核误导。
  • P3-4|用户操作前置采样流程:把"预检采样+动作前备份"完成后再交还用户控制权,写入未来真实run checklist(P2-α前置)。

保留项

PlayFab身份依赖、DNS错误未复现未定根因、StorageError偶发、默认非Editor _cheatingScore、4C1首跑边界、KVSync/3C两项间歇首败——全部如实保留。完整4C(转盘/连续消费/鱼获全路径)、4B3B/C、P2-α、身份、tickets、4D/G4、最终打包未完成。

结论

接受限定4C2验收;建议主会话核hash(已代验302/302)逐条裁决后正式关闭4C2。 下一步候选按用户优先级:4B3B/C全量迁移、4C其余(转盘)、P2-α存量档专项或服务端revision/CAS需求(此前评估已就绪)。