mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-18 13:20:02 +08:00
78 lines
4.3 KiB
Markdown
78 lines
4.3 KiB
Markdown
# 梦三独立代码审查
|
|
|
|
日期:2026-10-13。基线:28f7096及工作区未提交的受保护技能结算兼容修改。
|
|
审查为只读,不修复业务代码,不提交或发布。
|
|
|
|
## 流程状态
|
|
|
|
用户调用Comet,项目解析为Native,用户选择当前目录包含未提交修复。
|
|
正式任务初始化未成功:new被旧任务shuying-skill-tianshu-review缺失
|
|
docs/comet/changes/shuying-skill-tianshu-review/comet-state.yaml阻塞。
|
|
status/doctor后执行Runtime给出的doctor --repair命令仍返回ENOENT。
|
|
Git历史中未找到该状态文件。旧任务现场保留,未手工重建或删除状态。
|
|
本报告是可以独立进行的源码审查,不是Comet正式验收报告。
|
|
|
|
## 已确认问题
|
|
|
|
### P2:整角色清理漏掉装备技能登记
|
|
|
|
位置:mengsan/battle/skill-teardown.js:124-128。
|
|
清理候选只包含skills/hiddenSkills/invisibleSkills/tempSkills/additionalSkills。
|
|
引擎装备技能通过addSkillTrigger登记到initedSkills与lib.hook,可能不在这些列表中。
|
|
梦三起始牌库包含八卦。装备八卦后获胜,清理不能解除其触发登记;随后
|
|
mengsan/mode.js:773-779仅删除角色索引和节点,不能清理旧lib.hook条目。
|
|
连续对局会积累旧角色的触发登记。
|
|
|
|
最小复现使用本地player.js原生addSkillTrigger/removeSkillTrigger与当前
|
|
createPlayerTeardown:八卦注册前后测试的两个键为
|
|
oldBattlePlayer_player_chooseToRespondBegin和
|
|
oldBattlePlayer_player_chooseToUseBegin。清理前2个、清理完成后仍2个;
|
|
调用原生removeSkillTrigger后0个,initedSkills也从[bagua_skill]清空。
|
|
这是最小依赖桩复现,未执行完整游戏对局。
|
|
|
|
建议:区分角色技能与装备登记的释放来源,补齐装备/已初始化登记的卸载,
|
|
并覆盖连续对局及共享全局技能归属,避免直接清空公共hook表。
|
|
|
|
### P2:引擎吞错时战斗控制器永久等待
|
|
|
|
位置:mengsan/mode.js:900-905。
|
|
战斗准备内容没有自己的异常边界;只有root.start()拒绝时才记录engineError
|
|
并调用finished()。启用引擎ignore_error后,GameEvent.loop可吞掉准备异常,
|
|
root.start()最终成功返回,外部await signal没有人唤醒。
|
|
缺失支援角色或准备期间的适配错误可触发此路径,异常退出提示不会出现。
|
|
|
|
复现使用本地原生GameEvent、ArrayCompiler和ContentCompilerBase,外围服务
|
|
为最小桩。准备内容主动抛错,ignore_error=true,结果为rootFinished=true、
|
|
engineError=null、finishSignal=false、eventStack=0。根代理已独立重复复现。
|
|
|
|
建议:在战斗准备内容的边界捕获、记录并向外部协调者传递异常;不依赖
|
|
引擎是否将错误重新抛出。补充ignore_error开关两种情况下的退出验证。
|
|
|
|
## 验证缺口
|
|
|
|
扩大执行10套相关测试,Node结果为54项、38通过、16失败、0跳过。
|
|
记录见.planning/mengsan-review/tests.txt(本机诊断产物,不参与发布)。
|
|
失败不能视为16个游戏缺陷:
|
|
|
|
- test_bonds.mjs依赖原生入口,仓库直接执行解析到不存在的D:/noname.js。
|
|
- test_mengsan_cards.mjs:14-15将每条import替换为const _status声明,当前多条
|
|
import导致重复声明,测试尚未进入业务断言。
|
|
- 遗物、奖励与奖励包测试存在接口桩和旧预期失配;例如永恒牌不可强化的
|
|
测试预期与当前upgrades.js明确允许强化的规则相反。
|
|
|
|
现有通过结果不足以证明羁绊、卡牌、遗物和奖励完整链路正确。应修复测试
|
|
接入和同步有效规则后,建立能在仓库中重复运行的回归入口;本轮未修改夹具。
|
|
|
|
## 未发现高置信问题的检查范围
|
|
|
|
检查图鉴/虚拟列表、手牌输入与布局、敌人意图刷新、通用牌运行时及个人牌堆。
|
|
当前看到有限缓存、取消帧回调、解除监听和清理观察器的路径;没有将潜在风险
|
|
或描述歧义当作确定缺陷。未实测PC或安卓整局,不能由源码证明实机无残留。
|
|
存档事务提交与奖励去重路径未发现新的高置信问题。
|
|
|
|
## 交付限制
|
|
|
|
使用GPT-6.1 Sol高推理进行独立只读复核,根代理重新核对两项产品问题。
|
|
未恢复Comet正式状态、未进入Shape确认/正式Verify;不能标为Comet通过。
|
|
恢复旧任务正式状态文件后,才能继续正式Comet工作流。
|