4.3 KiB
4.3 KiB
阶段4C2扣费前拦截诊断实施记录
2026-09-24。实施人:接手主会话。依据:《阶段4C2扣费前拦截诊断审查裁决与实施批准-2026-09-24.md》(独立审查见《阶段4C2扣费前拦截诊断方案独立审查-2026-09-24.md》,18/18 hash基线)。本记录为批准范围内的限定实施与验证证据。
实施内容(完全在批准边界内)
- 生产源码唯一改动:
Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs第51行Stop(...)字符串实参。if谓词(49~50行)、throw/Stop结构、Stop顺序、其余门文字均未动。新消息保留原文案前缀,追加六字段:fishItem.ID、fishItem.SubType、curFishData.ID、IsFree、IsRetry、IsDuel;null按P2-1显式三元输出"null"(C# 9不允许插值孔内双引号,采用字符串拼接实现)。 - 既有测试维护(P2-2):
KVFishingRewardTests/ConsumeControlSlice.cs.txt同步同一throw表达式;ConsumeControlTests.cs.txtshim新增Item{ID=1,SubType=1}类,FishingData.fishItem由object收紧为Item(已核测试唯一赋值点为fishItem=null,兼容)。 - 未新增任何日志点、框架、源码文件、await、事件、第二个Fault、局部变量语句;未放宽准入。
验证证据(四项验收条件全部满足)
| 条件 | 结果 | 证据 |
|---|---|---|
| 静态diff(P3-1判据) | 通过:raw diff仅51c51一行;原文件混合行尾(CRLF+LF)完整保留(Edit工具首次写入曾整文件统一CRLF,发现后已恢复备份并改用字节级替换) |
diagnostic-impl/FishingBehaviorB.before.cs(改动前备份)与当前文件diff;file确认当前仍为CRLF+LF混合 |
| 既有消费入口提取测试 | 通过:PASS 27 assertions,七条件前置门(free/retry/duel/pack/special/missing-fish/missing-item)逐项Calls==0保持,新消息表达式编译并执行 |
dotnet run ConsumeControlTests.csproj 输出 |
| SERVICE_HOST编译 | 通过:exit 0,0 error(仅既有警告类别) | diagnostic-impl/service-host-compile.log(Unity Roslyn csc.dll -noconfig @service-host.rsp,cwd=Client) |
| Unity Editor编译 | 通过:uloop compile Success=true/ErrorCount=0;首次执行为实际增量编译(输出仅既有警告,无error),复核调用0/0 | diagnostic-impl/editor-compile.json;uloop连接Unity 42620(CLI Loop服务运行中) |
hash记录
- 改动前基线:FishingBehaviorB.cs
0A76743E…9BE8(99010字节,与审查清单一致)。 - 改动后:FishingBehaviorB.cs
6581E2EF316B764F0E7B984B4A8040B93087A467FA374AA0E5E979D356580A04(99384字节,+374字节即诊断文字)。 - 本批改动文件hash快照:
diagnostic-impl/implementation-hashes.json。审查清单preconsume-diagnostic-review-hashes.json保持为改动前历史基线,其中FishingBehaviorB.cs一项因本批准改动自然失效,其余17项不受影响。
按裁决采纳的语义说明(P3-2/P3-3/P3-4)
- 六字段报告的是状态全集:可推出七个谓词各自真值(IsGeneralFish⟺SubType==1;IsPackItemFish⟺SubType∈{21,22};对象null⟺对应ID输出"null"),但不标识哪个析取项最先短路;SubType=21/22时条件2与条件6必然同真。
- 该门位于第48行
ClaimFishingConsumption(内存claim Consuming=true,非扣费、无审计事件)之后;"扣费前拦截"表述成立,复述顺序时注明此内存claim先于门。 - 首次尝试的两份102备份SHA256不同仅因顶层
at时间戳,45键逐值全同(独立审查已ConvertFrom-Json逐值验证),hash差异不是数据变化。
边界与下一步
- 本诊断补充不构成根因修复:尚无新的真实运行,七个条件中哪项触发仍未观测。不构成4C2验收,4C2/完整4C/G4维持未关闭。
- 下一次真实运行需:用户明确授权一次尝试、新Unity进程(或经核对的可复用进程)、新备份、核对实际操作范围;不自动连续付费、不重导102、不删claimed。
- 运行后读到的六字段值将直接判定触发条件;若证明是不支持类型自然命中(如抽中特殊鱼),保留原门并归档;若证明实现错误,另按已审范围定位修复,不改概率/鱼数据/输入逻辑。
- 既有保留限制不变:默认非Editor历史_cheatingScore编译错误、偶发StorageError根因未定、PF域名解析旧错误。