mirror of
https://github.com/Shu-Ying/noname-shuying.git
synced 2026-10-20 22:29:59 +08:00
256 lines
12 KiB
YAML
256 lines
12 KiB
YAML
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
|