3.7 KiB
Outcome
修复梦三独立审查确认的两项战斗生命周期缺陷:整角色退出遗漏装备技能登记,以及引擎忽略异常时战斗准备失败导致外部控制器永久等待。目标是减少连续对局残留,并让准备失败能自动记录诊断、停止开战、进入已有异常退出提示。
Scope
仅修改梦三的战斗准备、整角色技能释放及相关回归测试。调查依据为主工作区 docs/reviews/mengsan-20261013.md 的两项已确认问题,以及本地无名 1.11.5.2 的原生 GameEvent、装备触发登记和释放实现;审查报告用于定位,不作为全包功能改造需求。
修复基线为主工作区 main 的 28f7096 加用户已有的未提交受保护技能修复。进入 Build 后将以下已有文件的当前内容同步到隔离工作目录,再实施本次最小修复:.gitignore、mengsan/README.md、mengsan/battle/battle-flow.js、mengsan/battle/skill-teardown.js、mengsan/mode.js、tools/test_skill_teardown.mjs。保留这些文件中已有的结算提交状态、失败不重放及诊断行为,不修改主工作区。
关键行为:装备和已初始化的触发登记必须按角色释放;需要执行的原生装备卸载子事件在删除角色节点前完成。准备异常在梦三内容边界传递给外部控制器,不能依赖引擎 root.start() 是否拒绝。
Non-goals
不改无名引擎或其他扩展;不清空公共技能/触发表;不删除 fixed、superCharlotte 标签或技能定义;不调整卡牌、羁绊、遗物、奖励规则。不全面修复审查中发现的旧测试夹具失配;只新增或调整本次相关有效回归。PC/安卓整局实机验证没有运行环境,不宣称已完成。此阶段不提交、合并、推送或发布,回到主工作区交付需在验证结果确认后决定。
Acceptance examples
- 装备八卦等只登记于装备/已初始化技能来源的角色整局退出后,该旧角色的 initedSkills 和对应触发登记清除;连续退出多局不累积这些登记。
- 需要执行的装备卸载回调及其子事件在整角色销毁之前完成;回调失败可向外部传播并记录,已执行的释放回调不会因重试再次运行。
- 既有受保护技能策略保持:纯元数据标记可以保留在退场对象上,活动技能正确释放,局内单技能保护继续有效;其他角色持有的共享全局技能登记保持有效。
- 战斗准备抛出异常时,无论引擎 ignore_error 为 true 或 false,外部控制器都能收到原始异常并结束等待,进入已有战斗异常退出路径,不继续战斗或进入奖励结算。
- 准备失败生成梦三诊断记录并保留原始错误上下文;该失败路径不提交胜负结果、不改变上次成功存档、不发放奖励;正常准备和正常结算路径继续有效。
- 提供可重复执行的装备登记与原生事件异常回归,相关受保护技能/结算/诊断回归通过;独立只读验证报告明确列出未实测的 PC 和安卓整局限制。
Constraints and invariants
只操作梦三拥有的战斗和角色资源。维持现有事件排空顺序、存档事务和奖励去重语义,不修改通用 Player.prototype。使用原生登记/卸载和 GameEvent 代码核对兼容性,不用与实现同形的空桩代替关键因果验证。
Decisions
此前用户已选择在当前目录审查最新代码和未提交修复。此次 CLI 明确拒绝第二活动任务复用当前目录;因此为梦三单独创建 codex/mengsan-lifecycle-fixes 工作目录,原天书任务保留。两项缺陷涉及同一生命周期,采用一个 Native change 顺序处理,不拆分并行实现任务。正式验证使用新启动的 GPT-6.1 Sol 高推理只读验证者。