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

256 lines
12 KiB
YAML
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.
schema: comet.native.v4
name: mengsan-lifecycle-fixes
language: en
phase: archive
status: done
state_version: 11
brief: brief.md
document_constraints_version: 2
shape_confirmation_hash: e9c151b43d8a9b61035c6dbcf96cdc2d8e4c276b78f160cbc8bc26a67647abbf
spec_changes:
- capability: mengsan-battle-lifecycle
operation: create
source: specs/mengsan-battle-lifecycle/spec.md
workspace:
isolation: worktree
change_branch: codex/mengsan-lifecycle-fixes
target_branch: main
finish: merge
loop:
stage: done
goal_cycle: 1
iteration: 1
attempt: 1
retry_epoch: 0
failed_iteration_count: 0
no_progress_count: 0
execution_failure_count: 0
previous_unresolved_ids: []
next_action: null
acceptance:
- id: A1
source: brief.md
text: 装备八卦等只登记于装备/已初始化技能来源的角色整局退出后,该旧角色的 initedSkills 和对应触发登记清除;连续退出多局不累积这些登记。
result: passed
reason:
text: 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行通过。
truncated: false
- id: A2
source: brief.md
text: 需要执行的装备卸载回调及其子事件在整角色销毁之前完成;回调失败可向外部传播并记录,已执行的释放回调不会因重试再次运行。
result: passed
reason:
text: 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行通过。
truncated: false
- id: A3
source: brief.md
text: 既有受保护技能策略保持:纯元数据标记可以保留在退场对象上,活动技能正确释放,局内单技能保护继续有效;其他角色持有的共享全局技能登记保持有效。
result: passed
reason:
text: 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原型。
truncated: false
- id: A4
source: brief.md
text: 战斗准备抛出异常时,无论引擎 ignore_error 为 true 或
false,外部控制器都能收到原始异常并结束等待,进入已有战斗异常退出路径,不继续战斗或进入奖励结算。
result: passed
reason:
text: 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行通过。
truncated: false
- id: A5
source: brief.md
text: 准备失败生成梦三诊断记录并保留原始错误上下文;该失败路径不提交胜负结果、不改变上次成功存档、不发放奖励;正常准备和正常结算路径继续有效。
result: passed
reason:
text: 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次。结算后清理失败不重发奖励及相关诊断/事务回归通过。
truncated: false
- id: A6
source: brief.md
text: 提供可重复执行的装备登记与原生事件异常回归,相关受保护技能/结算/诊断回归通过;独立只读验证报告明确列出未实测的 PC 和安卓整局限制。
result: passed
reason:
text: 完整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/安卓限制。复用有效检查,无重复整套运行。
truncated: false
builder_handoff:
candidate_id: 013d3893-4bba-4fb3-81e1-46b49e47e09b
identity_provider: skill-coordinated
builder_execution_ref: skill-coordinated:builder:7a547236-6f9c-4f1e-92e9-ae185431d904
iteration: 1
summary:
text: 补齐退场角色装备及 initedSkills
登记释放,等待并捕获装备卸载子事件异常;准备内容内捕获原始错误,停止会话,根事件正常排空后唤醒外部协调者。保留已同步的受保护技能兼容修复、提交状态和奖励去重。
truncated: false
addressed_acceptance_ids:
- A1
- A2
- A3
- A4
- A5
- A6
acceptance_review:
- id: A1
status: implemented-with-evidence
evidence:
- mengsan/battle/skill-teardown.js:createPlayerTeardown;tools/test_battle_lifecycle.mjs
连续三局原生八卦注册释放及仅 initedSkills 来源回归通过
note: 按角色调用原生 removeEquipTrigger/removeSkillTrigger,补齐登记来源,不清空公共表。
- id: A2
status: implemented-with-evidence
evidence:
- skill-teardown.js 装备事件局部边界和 waitNext;原生 onLose/嵌套子事件错误在 ignore_error
true/false 均传播、队列排空和一次执行回归通过
note: 事件内容已编译,仅包装当前装备卸载产生的事件及后代;复用缓存操作避免重放。
- id: A3
status: implemented-with-evidence
evidence:
- tools/test_skill_teardown.mjs 9/9 通过;test_battle_lifecycle 原生
addGlobalSkill/removeGlobalSkill 保留另一角色所有权回归通过
note: 同步并保留现有保护策略、纯元数据标记和局内单技能边界。
- id: A4
status: implemented-with-evidence
evidence:
- mengsan/mode.js:playBattle 内容内 failBattle 边界;原生
GameEvent.loop/ArrayCompiler 两种 ignore_error 准备抛错回归通过
note: 原始错误在引擎可能吞错前保存;正常根事件排空后结束外层等待,不进入结算。
- id: A5
status: implemented-with-evidence
evidence:
- test_battle_lifecycle 准备失败写出实际临时报告
JSON,检查原始错误栈/节点;存档基线不变、提交计数0;正常结算计数1;protected teardown 提交后失败不重发奖励回归通过
note: 调用现有诊断接口,不改存档事务,失败走保留存档退出路径。
- id: A6
status: implemented-with-evidence
evidence:
- 新增 tools/test_battle_lifecycle.mjs 11/11 通过,相关 skill teardown 9/9
通过;mengsan/README.md 记录回归入口及实机限制
note: 已提供可重复回归和正式检查计划,提交后按 Native 协议启动新的只读验证者;正式验收结果尚未宣称通过。
checks:
- name:
text: targeted lifecycle and protected teardown
truncated: false
result: passed
note:
text: 20/20;后续仅格式调整后生命周期11/11再次通过。
truncated: false
- name:
text: diff whitespace
truncated: false
result: passed
note:
text: git diff --check 通过;正式候选需复核最终修改。
truncated: false
checks_truncated: false
known_limits:
- text: 未执行PC或安卓客户端整局;本地引擎证据为无名1.11.5.2的原生事件/编译器和登记卸载函数,外围服务为最小依赖桩。
truncated: false
- text: 未修改其他扩展或无名引擎;不承诺所有外部扩展及所有客户端版本兼容。
truncated: false
- text: 旧审查的16个旧夹具失败未全面改造,本次仅相关有效回归。
truncated: false
- text: 实现位于独立工作目录;尚未提交合并推送发布。
truncated: false
- text: codebase-memory技能已读取,但本会话未暴露图谱工具,结构证据以源码核对为准。
truncated: false
known_limits_truncated: false
review: null
submitted_at: 2026-10-13T02:25:19.819Z
blockers: []
verification:
candidate_id: 013d3893-4bba-4fb3-81e1-46b49e47e09b
identity_provider: skill-coordinated
verifier_execution_ref: skill-coordinated:verifier:59515ca5-0d91-4ded-9343-b64a59ac88d9
iteration: 1
attempt: 1
assurance: skill-coordinated
verdict: pass
checks:
- id: regressions
name:
text: relevant-regressions
truncated: false
argv_display:
- text: -NoProfile
truncated: false
- text: -Command
truncated: false
- text: $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
truncated: false
argv_truncated: false
cwd_ref: .
status: passed
exit_code: 0
duration_ms: 763
- id: syntax
name:
text: syntax-and-whitespace
truncated: false
argv_display:
- text: -NoProfile
truncated: false
- text: -Command
truncated: false
- text: "& '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"
truncated: false
argv_truncated: false
cwd_ref: .
status: passed
exit_code: 0
duration_ms: 461
summary:
text: 独立只读验收A1-A6全部通过;当前候选正式回归46/46与语法检查通过,未发现本次范围内实质失败。PC/安卓整局未实测。
truncated: false
risks:
- text: 未执行PC或安卓客户端完整对局;验收依据为源码核查和自动化回归,不能视为实机证明。
truncated: false
- text: 原生事件/编译器/登记卸载方法由本地无名1.11.5.2源码抽取,事件管理器、界面、外围服务和结算入口有最小依赖桩;不承诺其他客户端版本或所有外部扩展改写兼容。
truncated: false
risks_truncated: false
completed_at: 2026-10-13T02:32:58.872Z
history:
- goal_cycle: 1
iteration: 1
attempt: 1
outcome: pass
unresolved_ids: []
summary:
text: 独立只读验收A1-A6全部通过;当前候选正式回归46/46与语法检查通过,未发现本次范围内实质失败。PC/安卓整局未实测。
truncated: false
completed_at: 2026-10-13T02:32:58.872Z
history_overflow:
dropped_entries: 0
first_dropped_at: null
last_dropped_at: null
outcome_counts:
pass: 0
fail: 0
blocked: 0
execution-error: 0
recovery: 0
verification_result: pass
verification_report: verification.md
archived: true
created_at: 2026-10-13T02:05:19.971Z