Files
ft/CodexOutput/upserver/Gameplay101Validation/不可用药水引导恢复独立方案审查.md

37 lines
4.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.
# Gameplay101Validation 不可用药水引导恢复独立方案审查
日期:2026-09-28。审查者:ZCode会话。独立性声明:未参与本方案编写与101首次运行;此前参与为业务包方案审查。本轮只读+hash重算+源码核对;未运行Unity/正式接口/修改共享状态。
## 受审hash核对
`stale-guide-review-hashes.json`:**19/19重算全部一致**。
## 总判定
**通过。** 无P1/P2;P3两条不阻塞。根因链准确、三选一取舍正确(放宽门会导致AddIndex(true)误完成引导——本审查独立核实该危险真实存在)、改动合同最小且边界严格。
## 重点逐项(按§6提示词)
**1. Init处延期避免错误指针:正确。** 根因链经源码核实:`GuideDataCenter.Init`(:95 async void)不检查活动可用性即恢复未完成指针→CheckRewardGuide因指针非空拦截→用户被要求完成无入口的引导。延期分支置于取现有_saveData之后、原恢复循环之前——**源头不产生活动指针**,正确位置。
**2. save数据与isUpdate保持:合同明确。** 延期时同_saveData按原键加入keyValuePairs后continue;不设curSaveData/curDefine/curGroupDefine、不改isUpdate、不发布事件、不额外Save、不清其他组指针、保留原字典数据——**只阻止挂载不丢进度**(活动将来可用时下次登录仍能原路恢复)。
**3. GetEvent只读语义与异常分支:严格。** `GetEvent(4,5)`(:449)只读查询严格=-1才延期;禁用GetEventAndInit/SetEvent/FixPotionData等有副作用接口;**异常不当作-1**(记录警告继续原恢复,由钓鱼准入拒绝)——保守方向正确。
**4. 其他组/PF/非Editor不回归:边界完备。** 限定`UNITY_EDITOR&&!SERVICE_HOST`+KV Ready+恰EventPotion01+isFinish=false+guideSubIndex>0且在范围内;EventPotion02/已完成/索引0/其他组/活动可用均原路径;默认PF与非Editor完全不触发。
**5. AddIndex(true)/GuideNextEvent误改风险:真实且被正确规避。** 本审查独立核实三处`AddIndex(true)`调用(FishingUpdateSys:2037/3028+FishingRewardPanel:582)——若选路线2放宽CheckRewardGuide,收鱼/鱼死亡时会把EventPotion01误标完成并写档。**路线1(源头延期)是唯一正确选择**;延期后无当前引导→AddIndex(true)无目标可改。
**6. 红绿验证充分:是。** 红测用101真实EventPotion01残留(非清指针替身)重现阻塞;绿测同输入指针不挂载+存档不变;可用药水活动经隔离配置构造走原恢复(不丢旧进度);异常/其他组/边界全覆盖;**"延后后调用AddIndex(true)不得改药水标记"的专项验证**直接锁定核心风险;Init为async void的测试时序(完成信号/下一帧观察/有限超时/每例恢复容器)考虑周全。
**7. 当前会话退出后才编码+剩余闭环覆盖:完整。** 68504在Play须先正常QuitStage/归档许可——不能运行中改源码触发域重载;后续连续执行(红测→两文件修改→回归→新进程→真实抛竿→收下→退出→v1恢复→统一复核)与原业务包合同一致;新增验收项"EventPotion01未被误完成+GuideSaveDataNew保持"精确对应本修正的风险。
## P3清单(不阻塞)
- **P3-1**:延期分支的条件2要求"对应节点属于EventPotionPanel"——建议实现时以`guidanceGroupDefines`节点数组实际Panel名断言(而非仅组名推断),测试加一条节点Panel不匹配时不延期的负例。
- **P3-2**:`GetEvent(4,5)`的magic数字(type4/subType5)建议在修正分支内用具名常量或注释标明语义(药水活动类型对),便于未来维护。
## 结论
**通过本最小修正方案。** 主会话核hash(已代验19/19)逐条裁决后:先正常退出当前68504会话(归档许可/保留claim),再连续执行红测→两文件修改→回归→新进程真实闭环→统一交付复核。原业务包合同继续有效;本修正不扩大到全平台/全部活动引导政策。