Files
ft/CodexOutput/upserver/阶段4C2引导准入补充方案独立审查-2026-09-24.md

46 lines
4.7 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-24。审查者:ZCode会话。独立性声明:未参与补充方案编写与实施;此前参与为4C2原方案审查。本轮只读+hash重算+源码核查,未启动游戏/正式请求/许可/数据修改。
## 受审hash核对
`KVFishingRewardTests/guide-supplement-review-hashes.json`:**419/419重算全部一致**(与原方案319项清单未混用)。
## 总判定
**接受,批准R0~R4继续。** 无P1/P2;P3三条不阻塞。补充方案是"严格门挡死真实验收"与"放开引导"之间的正确最小解,且可达性闭合经本审查源码独立验证。
## 七项逐条回答
**1. 范围足够小且可运行:是。** 本审查核实`offline-guide-gate-final.json`:11组相关引导中102恰缺方案点名的7组(unfinished与missingNotSkipped逐名一致,SkipLevel=40不覆盖)——严格门确实挡死全部普通捕鱼,而"通过改测试档完成引导"被正确拒绝。7组精确白名单+保留其余4组(Fish_01/Fish_02/StabFish/FishEscape)必须完成,是最小可行放宽。其余运行门(SubType/免费/重试/固定鱼/对战/礼包/巡游/收集/挑战/活动稳定)全部保留。
**2. 可达性覆盖:闭合(本审查独立验证)。**
- `InspectTriggerGuide`的switch `default: continue`(GuideData.cs:362)——None类型在自动巡检中不触发 ✓;
- 显式入口确实存在:`StartFishSpSkill`(FishingUpdateSys:2306,经:2234协程启动)、`ShowFrostSkill`(:2318)、`DamageProtectionEnd`(:1231/:1129)——方案不放任的风险为真 ✓;
- **技能对象唯一注入来源闭合**:本审查追踪三个运行时技能对象(:269–271 `fishSpSkillData/superDashSpSkillData/dirtyStuckSpSkillData`)的数据源为`curFishData.FishSKillList`(:334)与`curFishData.FishEscape`(:354)——而准入合同第4/5条恰好要求该鱼全部SpSkillID≤0、`TbFishSpSkill.GetOrDefault`为空、三个运行时对象为空:**鱼级配置检查+运行时对象空检查双保险**,无技能事件即无显式入口可触达7组;
- `FishEscape`组属四组必须完成之列(102已完成),且无技能鱼无逃逸路径(:1917触发不达);未发现动态注入或后台触发路径。若有遗漏,方案自身的退回条款("发现遗漏则退回")保留。
**3. 配置完整性:足以拒绝漂移。** 资产hash+11组完整序列化投影(名字/触发条件/参数/完整节点字段)双校验,明确"不能只比较组名"、"不能靠磁盘hash掩盖运行时对象变化"——窄实现非新框架 ✓。建议固化投影字段清单时包含每组全部节点数量(防增删节点)。
**4. 预检一致性:一致。** 新条件在扣费前+S1/S2/S3三检查点重复执行;原Guide通知照常发布一次、实际活跃引导须仍为空(发布后复核)——不允许禁用通知/MarkGuideFinished/GMClearGuide/写新引导记录 ✓;失败沿用原Fault/排水合同、费用不回滚不重试 ✓。
**5. 修改边界:足够且应保持收紧。** 仅两个新增reward文件的预检/固定测试+7旧文件"现有门调用处只补同一检查"——本审查建议主会话裁决时把后者进一步限定为**只增加对同一预检函数的调用**(不新增第二个实现),与方案精神一致。
**6. 证据诚实:确认。** 中间报告(阶段4C2实施进展与准入阻塞)如实保留红测未完成/Map Schema/实景生命周期/准入补验等未覆盖项与StorageError未定根因;"当前严格门仍存在,新方案未实施"的定位与本审查观察一致。
**7. R0~R4:批准。** 顺序合同完整(R1保留真实拒绝证据先行、R3全预检过才发v3许可、R4一次消费上限与原C3一致)。
## P3清单(不阻塞)
- **P3-1**:§2.3的7组"首节点是FishingPanel_Advanced"——建议投影校验同时包含**每组末节点**(防止末节点指向奖励后自动触发点)。
- **P3-2**:准入合同第4条的`TbFishSpSkill.GetOrDefault(id)`运行时查询建议记录查询过的id集合进run证据(空集亦记录),使"无可解析技能"可对账。
- **P3-3**:R2补验清单建议显式加入"4C1固定19组81断言复跑"(补充改动触碰的UserService.KVFishingReward.cs与4C1的KVGameplayLoop同进程协作,防回归遗漏——原清单已含奖励host与实际入口,此处点名4C1组)。
## 保留项
本补充只调整准入;4C2关闭仍需R4真实闭环+独立实施复核;StorageError未定根因、默认非Editor历史错误、4C1首跑边界等全部保留;P2-α/4C整体/热换号/G4不变。
## 结论
**接受补充方案,批准R0~R4。** 建议3条P3随主会话裁决采纳。