43 lines
4.6 KiB
Markdown
43 lines
4.6 KiB
Markdown
# 阶段4C2扣费前拦截诊断审查裁决与实施批准
|
||
|
||
2026-09-24。裁决人:接手主会话(用户授权接手PlayFab替换开发后的当前会话)。审查对象:《阶段4C2扣费前拦截诊断最小方案-待评审-2026-09-24.md》;独立审查报告:《阶段4C2扣费前拦截诊断方案独立审查-2026-09-24.md》。
|
||
|
||
## 一、hash复核
|
||
|
||
主会话独立复算 `KVFishingRewardTests/preconsume-diagnostic-review-hashes.json` 全部18项(python hashlib SHA256大写hex+字节数,绝对路径逐文件):**18/18一致,0项不一致**。与独立审查者Get-FileHash/sha256sum双重验证结果一致。受审基线成立,本轮裁决基于该冻结状态。
|
||
|
||
## 二、逐条裁决
|
||
|
||
| 项 | 审查结论 | 主会话裁决 |
|
||
|---|---|---|
|
||
| 问题1:证据只能定位到合并门,不能确定具体谓词 | 同意 | **接受**。与首次真实尝试记录一致,维持"未定位根因"表述 |
|
||
| 问题2:六字段足够唯一解释七条件,不需新增状态 | 同意(含SubType等价表) | **接受**。采纳等价关系:IsGeneralFish()⟺fishItem.SubType==1;IsPackItemFish()⟺SubType∈{21,22};fishItem/curFishData为null⟺对应ID输出null标记 |
|
||
| 问题3:仅改拒绝消息保持时序/副作用,存在null文本陷阱 | 同意 | **接受**。P2-1采纳,见下 |
|
||
| 问题4:验收组合足够、批准范围正确(有条件批准) | 同意 | **接受有条件批准**,条件见第三节 |
|
||
| P2-1:插值null输出空串,必须显式判null | 应修 | **采纳**。并补充实现约束:Unity 2022.3为C# 9,插值孔内不允许双引号,故采用**字符串拼接+显式三元判null**(形如`x==null?"null":x.ID.ToString()`),禁止依赖`?.`插值的隐式空串;消息保留原文案前缀保证检索连续性 |
|
||
| P2-2:提取测试slice与shim须同步并重跑 | 应修 | **采纳**。ConsumeControlSlice.cs.txt同步改后源码;ConsumeControlTests.cs.txt的shim `FishingData.fishItem`由`object`改为带`int ID/int SubType`的Item shim类(已核:测试仅`fishItem=null`一处赋值,类型收紧无破坏);重跑ConsumeControlTests全量断言。属既有测试维护,不违反"不新建框架" |
|
||
| P3-1:静态diff判据明确化 | 建议 | **采纳**。判据固定为:生产源码仅FishingBehaviorB.cs第51行Stop字符串实参变化;第49~50行谓词与该文件其余部分字节级不变;无其他生产文件改动 |
|
||
| P3-2:注明诊断语义(状态全集,非最先短路项) | 建议 | **采纳**,写入实施记录:SubType=21/22时条件2与条件6必然同真,六字段可推出各谓词真值但不标识短路顺序 |
|
||
| P3-3:注明ClaimFishingConsumption内存claim先于门 | 建议 | **采纳**。"扣费前拦截"表述成立;门前的内存claim(Consuming=true,非扣费、无审计事件)在文档复述时注明 |
|
||
| P3-4:备份hash差异说明 | 建议 | **采纳**。两份102备份SHA256不同仅因顶层`at`时间戳,45键逐值全同,已在审查报告记录,不误读为数据变化 |
|
||
|
||
## 三、实施批准(限定边界)
|
||
|
||
**批准实施,且仅限以下范围:**
|
||
|
||
1. 生产源码唯一改动:`Client/Assets/Scripts/GampPlay/FishingB/FishingBehaviorB.cs` 第51行Stop(...)的字符串实参——替换为包含六字段(fishItem.ID、fishItem.SubType、curFishData.ID、IsFree、IsRetry、IsDuel)的诊断文字,null显式输出"null"(按P2-1拼接实现)。if谓词(49~50行)、throw/Stop结构、Stop顺序、成功分支及其余门文字均不变。
|
||
2. 既有测试维护:ConsumeControlSlice.cs.txt同步、ConsumeControlTests.cs.txt的shim类型收紧。
|
||
3. 不新增:日志点、框架、源码文件、await、事件、第二个Fault、局部变量语句;不放宽准入;不动v1/v2/v3权限、票据、奖励算法、配置。
|
||
|
||
**验收条件(全部满足方可宣称本次诊断改动完成):**
|
||
- 静态diff符合P3-1判据;
|
||
- ConsumeControlTests重跑全过(含七条件逐项`Calls==0`前置门断言);
|
||
- SERVICE_HOST编译exit 0;
|
||
- Unity Editor编译0错误。若当前Unity CLI Loop服务未启动,Editor编译证据待用户启动Server后补验;补验完成前不宣称"双编译通过"。
|
||
|
||
## 四、边界声明
|
||
|
||
- 本裁决批准的是**诊断可观察性补充**,不构成根因修复,不构成4C2验收,不构成任何真实运行授权。
|
||
- 下一次真实运行仍需:新Unity进程、新备份、核对实际操作范围,并向用户明确一次尝试;不自动连续付费。
|
||
- 4C2/完整4C/G4维持未关闭;既有保留限制(默认非Editor历史_cheatingScore错误、StorageError根因未定、PF域名解析旧错误)不变。
|