Files
noname-shuying/docs/comet/archive/2026-10-13-mengsan-lifecycle-fixes/verification.md
T

67 lines
6.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.
---
generated_from_state_version: 11
---
# Verification
## Current result
- Result: **Archived**
- Verification status: **Checks completed; result confirmed**
- Goal cycle: 1
- Iteration: 1
- Verifier attempt: 1
- Completed: 2026-10-13T02:32:58.872Z
- Summary: 独立只读验收A1-A6全部通过;当前候选正式回归46/46与语法检查通过,未发现本次范围内实质失败。PC/安卓整局未实测。
## Acceptance
| ID | Result | Source | Criterion | Reason |
| --- | --- | --- | --- | --- |
| A1 | passed | brief.md | 装备八卦等只登记于装备/已初始化技能来源的角色整局退出后,该旧角色的 initedSkills 和对应触发登记清除;连续退出多局不累积这些登记。 | skill-teardown.js:125-130、142-150、184-216 清点 initedSkills 与装备技能,按角色使用原生 removeEquipTrigger/removeSkillTrigger。test_battle_lifecycle.mjs:108-140 使用本地1.11.5.2原生方法验证连续三局八卦旧角色登记归零、仅初始化来源和另一角色登记保留;Runtime regressions 第1-2行通过。 |
| A2 | passed | brief.md | 需要执行的装备卸载回调及其子事件在整角色销毁之前完成;回调失败可向外部传播并记录,已执行的释放回调不会因重试再次运行。 | skill-teardown.js:148-182 包装本次装备卸载产生的已编译事件及后代内容,排空后记录并抛出原始失败;93-117 正常退出释放根事件,131-133、223 缓存操作避免重放。battle-flow.js:52-60 在session.dispose前等待释放;test_battle_lifecycle.mjs:143-171、241-254 验证回调/子事件顺序、两种ignore_error失败传播、一次执行及栈排空,Runtime第3-5、9-10行通过。 |
| A3 | passed | brief.md | 既有受保护技能策略保持:纯元数据标记可以保留在退场对象上,活动技能正确释放,局内单技能保护继续有效;其他角色持有的共享全局技能登记保持有效。 | skill-teardown.js:5-15、184-197 保留纯元数据受保护标记,10-90 区分活动技能整角色卸载与局内保护。test_skill_teardown.mjs:40-119及121-158的9项回归通过;test_battle_lifecycle.mjs:127-140 以原生globalmap确认另一角色共享全局登记保留;未清空公共hook/skill或修改Player原型。 |
| A4 | passed | brief.md | 战斗准备抛出异常时,无论引擎 ignore_error 为 true 或 false,外部控制器都能收到原始异常并结束等待,进入已有战斗异常退出路径,不继续战斗或进入奖励结算。 | mode.js:900-919 在prepareBattle内容内保存原始错误、requestStop,root.start排空后唤醒外层;920-930 异常提示及模式选择分支绕过结算。与原生gameEvent.js:196-257吞错/栈弹出逻辑一致;test_battle_lifecycle.mjs:208-227 两种ignore_error在2秒内退出、Error身份一致、栈为空,Runtime第6-7行通过。 |
| A5 | passed | brief.md | 准备失败生成梦三诊断记录并保留原始错误上下文;该失败路径不提交胜负结果、不改变上次成功存档、不发放奖励;正常准备和正常结算路径继续有效。 | mode.js:900-906记录原始Error与sessionId/runId/nodeId;失败分支928返回,不进入930结算。mode-storage.js:11-16、125-126读取存档副本,准备期间不提交新结果;test_battle_lifecycle.mjs:208-239、256-280 验证失败存档基线不变、提交0次、实际临时诊断JSON含原栈/节点和正常提交1次。结算后清理失败不重发奖励及相关诊断/事务回归通过。 |
| A6 | passed | brief.md | 提供可重复执行的装备登记与原生事件异常回归,相关受保护技能/结算/诊断回归通过;独立只读验证报告明确列出未实测的 PC 和安卓整局限制。 | 完整brief和Spec的A1-A6均独立核查。Runtime state.json:5-8、25-70 当前候选绑定和工作区正确,regressions 46 tests/46 pass/0 fail/skip;syntax exitCode=0。关键回归抽取本地1.11.5.2原生GameEvent、ArrayCompiler、Player与全局登记卸载源码;README.md:60-62提供重复入口及PC/安卓限制。复用有效检查,无重复整套运行。 |
## Checks
| Check | Command | Working directory | Status | Exit | Duration |
| --- | --- | --- | --- | ---: | ---: |
| relevant-regressions | -NoProfile -Command $env:NONAME_ROOT = 'D:\Work\noname\resources\app'; & 'C:\Program Files\nodejs\node.exe' --experimental-vm-modules --test tools/test_battle_lifecycle.mjs tools/test_skill_teardown.mjs tools/test_diagnostics.mjs tools/test_mobile_memory.mjs tools/test_intent.mjs tools/test_event_compilation.mjs; exit $LASTEXITCODE | . | passed | 0 | 763 ms |
| syntax-and-whitespace | -NoProfile -Command & 'C:\Program Files\nodejs\node.exe' --check mengsan/battle/skill-teardown.js; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; & 'C:\Program Files\nodejs\node.exe' --check mengsan/mode.js; if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }; git diff --check; exit $LASTEXITCODE | . | passed | 0 | 461 ms |
### Builder-reported evidence
These are Builder reports, not Runtime check receipts or independent verification results.
- targeted lifecycle and protected teardown: passed — 20/20;后续仅格式调整后生命周期11/11再次通过。
- diff whitespace: passed — git diff --check 通过;正式候选需复核最终修改。
- Known limitation: 未执行PC或安卓客户端整局;本地引擎证据为无名1.11.5.2的原生事件/编译器和登记卸载函数,外围服务为最小依赖桩。
- Known limitation: 未修改其他扩展或无名引擎;不承诺所有外部扩展及所有客户端版本兼容。
- Known limitation: 旧审查的16个旧夹具失败未全面改造,本次仅相关有效回归。
- Known limitation: 实现位于独立工作目录;尚未提交合并推送发布。
- Known limitation: codebase-memory技能已读取,但本会话未暴露图谱工具,结构证据以源码核对为准。
## Blockers
_None._
## Risks and skipped work
- 未执行PC或安卓客户端完整对局;验收依据为源码核查和自动化回归,不能视为实机证明。
- 原生事件/编译器/登记卸载方法由本地无名1.11.5.2源码抽取,事件管理器、界面、外围服务和结算入口有最小依赖桩;不承诺其他客户端版本或所有外部扩展改写兼容。
## Previous iterations
| Goal cycle | Iteration | Attempt | Outcome | Unresolved | Summary | Completed |
| ---: | ---: | ---: | --- | --- | --- | --- |
| 1 | 1 | 1 | pass | — | 独立只读验收A1-A6全部通过;当前候选正式回归46/46与语法检查通过,未发现本次范围内实质失败。PC/安卓整局未实测。 | 2026-10-13T02:32:58.872Z |
## Conclusion
独立只读验收A1-A6全部通过;当前候选正式回归46/46与语法检查通过,未发现本次范围内实质失败。PC/安卓整局未实测。