55 lines
6.6 KiB
Markdown
55 lines
6.6 KiB
Markdown
# 阶段4C1普通钓鱼消费确认实施独立复核
|
||
|
||
日期:2026-09-24。审查者:ZCode会话。独立性声明:未参与4C1实施(此前参与为4C1方案审查);本轮只读+hash重算+离线复跑+证据核验,仅新增本报告。
|
||
|
||
## hash核对
|
||
|
||
`KVFishingConsumeTests/implementation-review-hashes.json`:items **172/172重算全部一致**(count一致);`scope-diff.json`四个旧源码当前hash逐一匹配(KVGameplayLoopSetup +10/−4、PlayerData +20/−0、FishingBehaviorB +111/−4、UserService.KVGameplayLoop +105/−7,合计+246/−15);其余25快照源码21项未变。
|
||
|
||
## 总结论
|
||
|
||
**接受。限定4C1可关闭**(主会话核hash逐条裁决后),两项重点限制均裁定为"证据充分/影响可接受",附P3四条。
|
||
|
||
## 八项必答
|
||
|
||
**1. 白名单与合同保持:确认。** 变更恰为方案§7六项中的四旧文件+固定host;未触及任务/经济公式/底层(25快照21项字节不变佐证);PF路径与R1装备合同经回归保持(B2 75/1716、B3A 13/544、装备9组28、退出Editor 10组35/SERVICE_HOST 10组30——C1-09证据+前轮复跑基线)。
|
||
|
||
**2. 动作身份与防二次消费:确认(按证据实际覆盖)。** 代码核实:`CancelFishing`恒置`Cancelled`、`Ready&&!Continued`才Fault、`ClaimFishingConsumption`的`Consuming`标志+duplicate-suppressed;固定host 19组81断言覆盖duplicate-state-writes/pending-response-does-not-continue/external-final-supersession/lost-response/unauthorized/tween中断与AutoKill/实际OnDisable入口取消;离线ControlTests 27断言**编译真实三个消费/guard方法**(视觉/存储为spy)。交付如实声明"未逐条加载动画资源复现所有回调"——边界诚实,不冒称。
|
||
|
||
**3. 顺序与最终原票据合同:确认。** 本审查核实`CancelFishing`实现与裁决一致;C1-04证据:本动作多key、同key重复、localOnly终态拒绝、中间/最终Superseded区分,真实main#4与BattlePass#3的key/sequence/valueHash与服务器逐键Get对账匹配;Unknown/401/存储失败/部分提交各故障用例不掩盖、不换票据。
|
||
|
||
**4. 订阅纳入:确认。** 固定host使用真实Achievement/BattlePass/MiniBP/LuckyGame/LuckMagic订阅与原Save;当前Tables无ConsumeEnergy触发的FishingEvent/TriggerPack记录(实跑scope/sentry快照一致,仅主档/战令变化);"不能泛化为全活动安全"的限定保留。
|
||
|
||
**5. C1-01~10证据分层:充分。** 红测先行(legacy-red实际旧方法2项、permit-red 4/8);固定host 19/81、控制流提取27、真实UI消费、真实服务器对账、新进程新缓存恢复四层分明;`_cheatingScore` CS0103前后相同如实不称Player编译通过。
|
||
|
||
**6. 重点:首跑退出修复证据——裁定充分,接受。** 理由:①修复为两行条件收窄,本审查代码核实与裁决逐字一致(恒Cancelled保配额、Fault仅Ready&&!Continued);②红测在**实际OnDisable入口**失败(非模拟),修后同入口19/81绿;③修复后真实证据:恢复run正常Quit、Error=0、playing/ready=false、最终服务器逐值一致——真实退出路径(无活动动作)已实证;④"完成后动作的正常退出"路径由实际入口红绿对+修复逻辑的窄性覆盖;二次真实收费重跑的边际证据价值低于其对专用账号的又一次不可逆消费成本。**不建议要求补真实重跑**;若主会话要求补证,最小补证=固定host新增"Continued后OnDisable不Fault不二次Exit"显式断言(现有19组已隐含覆盖)。
|
||
|
||
**7. 重点:编辑器强杀限制——影响可接受,如实保留。** 时序为游戏已closed/排水/Stop Play**之后**,工具10秒超时才强杀编辑器进程——与"提交在途强杀"性质不同:Owner已排水、票据已Confirmed并经服务器对账、恢复验证用新进程新缓存不依赖旧编辑器。对本期待验收(游戏正常退出→新进程服务器恢复)**无实质影响**;记录保留、不称优雅退出。建议后续:退出验证用独立只读请求取证(本次恢复run已如此实践),编辑器生命周期与游戏验收解耦。
|
||
|
||
**8. 真实102变化支持关闭限定4C1:支持。** 恰一次扣费10(403→393、energyRM 102→112、倍率索引4/MaxEnergy50);19槽仅3/9变化、ad消费成就102→112、日序266;战令每日10003/每周20001各0→10;货币/鱼竿不变;45键中仅2键变化、43键逐值相同;101空;恢复run只读、最终服务器与消费后逐值一致;5个claimed保留、无重导/领奖/二次扣费。**关闭范围=限定4C1**(一次收费抛竿的扣费→原票据确认→可拉杆→重启恢复);完整捕鱼奖励闭环/4C整体/热换号/G4不含。
|
||
|
||
## 本复核独立执行
|
||
|
||
| 项 | 结果 |
|
||
|---|---|
|
||
| implementation-review-hashes 172项 | 全部一致 |
|
||
| scope-diff四文件hash | 全部匹配 |
|
||
| ControlTests离线复跑 | 27断言通过,退出0 |
|
||
| Unity固定host 19/81 | 记录result.json核验success=true(其文件hash在172项清单内;本轮未在Unity重跑——当前空闲编辑器Enabled态不满足固定host隔离前置,如实记录) |
|
||
| recovery-final-diff核验 | 101空✓、102恢复后与消费后服务器逐值相等✓、最终playing/ready=false✓ |
|
||
|
||
## P3清单
|
||
|
||
- **P3-1**:CLI瞬时Click不触发UIButton短按流→LongPress 0.15s适配——已如实记录为输入工具适配;建议后续把该适配写入固定操作脚本,避免每次run临时判断。
|
||
- **P3-2**:"游戏运行本身HTTP未单独计数"——建议run-control事件流后续按请求类型计数(Get/Set/Delete),闭合"总Set=0不能写"的口径空隙。
|
||
- **P3-3**:Unity固定host本轮未由本审查重跑(隔离前置不满足)——依赖hash锁定的记录结果+离线复跑;主会话关闭前如具备隔离条件可选择性重跑一次留证。
|
||
- **P3-4**:首跑两条关联错误的real-final-errors.json保留✓;建议关闭裁决中明示"首跑非零错误、修复后无第二次真实收费验证"为已知边界(本报告Q6已裁定接受)。
|
||
|
||
## 保留项(不因关闭消失)
|
||
|
||
拉杆收鱼/鱼获/发奖、转盘与SyncDataImmidiate通用化、连续多次钓鱼、热换号、全B/C、P2-α存量档专项+用户产品确认、身份/外围、tickets长期历史、真机/最终打包、G4。4C1通过不开放普通用户。
|
||
|
||
## 主会话精确下一步
|
||
|
||
核对本报告hash(已代验172+scope-diff)→逐条裁决(含Q6/Q7两项裁定与P3四条)→正式关闭限定4C1→下一分期按用户优先级另立方案(候选:拉杆收鱼确认、转盘消费、4B3B/C或P2-α专项)。
|