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

59 lines
7.0 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.
# 阶段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需求(此前评估已就绪)。