diff --git a/docs/comet/changes/shuying-skill-tianshu-review/brief.md b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/brief.md similarity index 100% rename from docs/comet/changes/shuying-skill-tianshu-review/brief.md rename to docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/brief.md diff --git a/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/comet-state.yaml b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/comet-state.yaml new file mode 100644 index 0000000..03579db --- /dev/null +++ b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/comet-state.yaml @@ -0,0 +1,514 @@ +schema: comet.native.v4 +name: shuying-skill-tianshu-review +language: zh-CN +phase: archive +status: done +state_version: 28 +brief: brief.md +document_constraints_version: 2 +shape_confirmation_hash: 73614dd2595713e137f716f16fb11eed1c7d59096b3fd243d53ff1d97cedd7d3 +spec_changes: + - capability: shuying-skill-correctness + operation: create + source: specs/shuying-skill-correctness/spec.md +workspace: + isolation: current + change_branch: main + target_branch: main + finish: null +loop: + stage: done + goal_cycle: 4 + 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: 羁绊的 filter、mod、async content 在没有开发者全局对象时,能通过模块导入获取引擎依赖。 + result: passed + reason: + text: tianshu/bondSkills.js:2显式模块导入,当前正式ESM用例验证无开发者lib/get/game全局时filter、mod和content执行。 + truncated: false + - id: A2 + source: brief.md + text: 江东基业二三级对应子技能通过正确 group 挂载并执行,低等级不重复叠加。 + result: passed + reason: + text: bondSkills.js:114/186二三级group与subSkill对应;extension.js:946-989按来源精确换级并核对当前所有权;正式二三级分组用例通过。 + truncated: false + - id: A3 + source: brief.md + text: 驭布对一张多目标杀只判定一次,成功时对各存活目标只造成一次伤害。 + result: passed + reason: + text: 青青子衿skill.js:qubu保留isFirstTarget,并在成功后遍历当前存活目标各一次;正式多目标用例通过。 + truncated: false + - id: A4 + source: brief.md + text: 驭布困难难度黑桃成功、梅花失败;阴间难度黑色成功、红色失败,动态描述与难度条件一致。 + result: passed + reason: + text: qubu按nightmare黑色、其余黑桃判定;动态描述同分支;当前正式hard与nightmare花色及动态切换用例通过。 + truncated: false + - id: A5 + source: brief.md + text: 狼顾失败后仅限制当前回合;黑桃成功时恢复次数,即使没有可弃手牌也不会错误占用次数。 + result: passed + reason: + text: langgu以global phaseAfter临时限制当前回合,成功先移除used再判断来源与合法手牌,空牌成功也恢复;正式用例通过。 + truncated: false + - id: A6 + source: brief.md + text: 奋威开局及中途获得时各初始化2蓄力,同次持有不因入场/开局事件重复添加,不重置共享蓄力。 + result: passed + reason: + text: character/skill.js:654奋威分组init添加2蓄力而不重置共享值;当前定向通过,非目标哈希一致且复用前轮fenwei-engine-lifecycle正式PASS记录。 + truncated: false + - id: A7 + source: brief.md + text: 舌战与狼顾仅从允许被发动者弃置的牌中随机选择。 + result: passed + reason: + text: 舌战两级与狼顾从getDiscardableCards(player,zone)抽取,并标记discarder;当前正式保护牌用例通过。 + truncated: false + - id: A8 + source: brief.md + text: 白仪与九天仅从允许被发动者获得的牌中随机选择。 + result: passed + reason: + text: 白仪/九天从getGainableCards(player,zone)随机取牌,难度数量与后续逻辑保留;当前正式保护牌用例通过。 + truncated: false + - id: A9 + source: brief.md + text: 连环伤害允许再次增伤,既有牌伤增益不添加 notLink 排除。 + result: passed + reason: + text: 既有五虎/天下无双/武安及戌狗增伤未增加notLink排除;当前正式五虎连环输入2增至3,确认允许再次增伤。 + truncated: false + - id: A10 + source: brief.md + text: 新增定向回归验证并运行相关现有天书测试,说明真实游戏/联机实测边界,保留无关改动。 + result: passed + reason: + text: 复用当前候选Runtime + 5文件回归101次执行全通过、0失败,含90个独立测试(回复fixture重复登记11项);正式空白检查退出0;11非目标SHA256一致。修复前40用例27失败为Builder开发期记录,未冒称Runtime红灯;未实机/联机。 + truncated: false + - id: A11 + source: brief.md + text: 狼顾阴间梅花成功、红色失败,普通/困难仅黑桃成功;动态描述同步。 + result: passed + reason: + text: langgu普通/困难仅spade,阴间color black;成功次数与合法他弃保留,动态描述注册链完整;9花色与3描述及友方用例通过。 + truncated: false + - id: A12 + source: brief.md + text: 妄尊阴间累计1点伤害即反击,困难1点不反击,未受伤时弃牌数仍为困难1/阴间2。 + result: passed + reason: + text: wangzun对当前回合源伤害累计,nightmare阈值>0,其余>1;0伤困难弃1/阴间弃2;正式0/1/2点分支和描述通过。 + truncated: false + - id: A13 + source: brief.md + text: 夺玺阴间替换摸牌后仅自己摸2,困难双方各摸1;动态描述、提示同步。 + result: passed + reason: + text: duoxi替换摸牌后失去1体力,nightmare仅存活自己摸2,hard双方各1;提示、动态文本和AI采用自己摸牌分支;正式分支及离场用例通过。 + truncated: false + - id: A14 + source: brief.md + text: 引雷困难自己回合不触发、阴间自己回合触发;描述同步回合条件。 + result: passed + reason: + text: yinlei + normal拒绝,hard本人回合拒绝、nightmare不限制回合;过滤未横置存活角色并随机横置;动态文本同步,正式4种回合分支通过。 + truncated: false + - id: A15 + source: brief.md + text: 张角三难度体力和上限8/16/24,起始手牌6/8/10和追加技能保留。 + result: passed + reason: + text: tianshu/config.js:121张角独立加成4/12/20叠加基础4得到8/16/24,hp/maxHp一致,起手6/8/10与hard起追加引雷保留;正式三难度及曹操不变断言通过。 + truncated: false + - id: A16 + source: brief.md + text: 疑神随机获取各目标合法装备,正常难度分支只选一名敌人,阴间所有合格敌人各一张;禁止选择受保护装备。 + result: passed + reason: + text: yishen取消回复后从每目标getGainableCards(player,e)随机取牌;非阴间随机一敌人,阴间所有合格敌人各一;未开放装备自选;正式合法/保护牌用例通过。 + truncated: false + - id: A17 + source: brief.md + text: 反馈受到多点伤害有逐点发动机会,可对友方来源发动,源牌耗尽后停止;自伤只获取自身装备。 + result: passed + reason: + text: fankui getIndex返回damage + num,引擎gameEvent.js:498-507数字展开N项,content.js:3435每轮重筛来源存活及可得牌;来源不限阵营,自伤只e;正式多点耗尽及自伤用例通过。 + truncated: false + - id: A18 + source: brief.md + text: 狼顾接受其他友方来源;暴虐满血也失去1体力并允许任意角色;雷击允许其他友方,谏征允许其他角色使用的杀,不增加阵营限制。 + result: passed + reason: + text: langgu其他来源不限阵营;baonue满血跳过摸牌/选人仍loseHp,受伤可选任意存活角色;leiji其他角色、zhuzheng其他杀使用者/原目标无阵营硬限制;当前正式范围用例通过。 + truncated: false + - id: A19 + source: brief.md + text: 远虑阴间保留unreal并明确描述;无双/神戟/战甲增强不回退,全部改动描述与提示一致。 + result: passed + reason: + text: 远虑nightmare仍unreal且文本写视为伤害;无双增伤与1/2次、神戟摸2/3/4和杀1/2/2、战甲阴间摸3保留;静态基准/动态难度/相关提示一致,正式增强用例通过。 + truncated: false +builder_handoff: + candidate_id: c9724c63-8c45-44ab-944c-4681834c1755 + identity_provider: skill-coordinated + builder_execution_ref: skill-coordinated:builder:9b9bc03f-d1c9-4af7-93f4-3aceeb630392 + iteration: 1 + summary: + text: 修复用户确认的青青子衿难度/体力/范围差异,同步文本;保留远虑虚拟伤害与无双神戟战甲增强。新增41项定向验证通过,修复前40项中27项复现失败;4个生产文件语法检查通过,11个非目标文件哈希未变。原A1-A10证据继续适用。未进行真实游戏或联机验证,未提交发布。 + truncated: false + addressed_acceptance_ids: + - A1 + - A2 + - A3 + - A4 + - A5 + - A6 + - A7 + - A8 + - A9 + - A10 + - A11 + - A12 + - A13 + - A14 + - A15 + - A16 + - A17 + - A18 + - A19 + acceptance_review: + - id: A1 + status: implemented-with-evidence + evidence: + - tianshu/bondSkills.js:2 + - tools/test_skill_review_fixes.mjs:90 + note: 显式导入引擎对象,无开发者全局对象的ESM调用filter/mod/content通过。 + - id: A2 + status: implemented-with-evidence + evidence: + - tianshu/bondSkills.js:114,186 + - tools/test_skill_review_fixes.mjs:104 + note: 修正5个group名,二/三级摸牌与他弃伤害、三级得牌反伤可通过组触发。 + - id: A3 + status: implemented-with-evidence + evidence: + - pve/boss/sets/qingqingzijin/skill.js:654 + - tools/test_skill_review_fixes.mjs:159 + note: 保留isFirstTarget,不同难度均每张两目标杀只有一次判定、各目标一次额外伤害。 + - id: A4 + status: implemented-with-evidence + evidence: + - pve/boss/sets/qingqingzijin/skill.js:662-672 + - pve/boss/sets/qingqingzijin/dynamicTranslate.js:69-75 + - tools/test_skill_review_fixes.mjs:136-195 + note: hard要求spade,nightmare要求black;六组难度花色场景及动态描述随hard/nightmare切换均通过。 + - id: A5 + status: implemented-with-evidence + evidence: + - pve/boss/sets/qingqingzijin/skill.js:241 + - tools/test_qingqingzijin_rules.mjs + - tools/test_skill_review_fixes.mjs + note: 狼顾当前回合限制、成功恢复次数和合法他弃保留,并由新难度测试覆盖。 + - id: A6 + status: implemented-with-evidence + evidence: + - character/skill.js:654 + - tools/test_skill_review_fixes.mjs:216 + - D:/Work/noname/resources/app/noname/library/element/player.js:10748 + note: 使用既有init子技能的引擎init回调添加2蓄力;同次持有由initedSkills避免重复,不重置共享charge。 + - id: A7 + status: implemented-with-evidence + evidence: + - tianshu/bondSkills.js:339,388 + - pve/boss/sets/qingqingzijin/skill.js:267 + - tools/test_skill_review_fixes.mjs:211,239 + note: 舌战和狼顾使用getDiscardableCards发动者上下文,保留随机操作并注明discarder。 + - id: A8 + status: implemented-with-evidence + evidence: + - pve/boss/sets/tianshu/skill.js:618,715 + - tools/test_skill_review_fixes.mjs:251 + note: 白仪和九天使用getGainableCards合法候选,保留难度取牌数与其余后续效果。 + - id: A9 + status: implemented-with-evidence + evidence: + - tools/test_skill_review_fixes.mjs:263 + - 既有五虎/天下无双/武安/戌狗增伤源码未变 + note: 用户明确允许连环再次增伤;本次未加notLink限制,专门用例输入2得到3。 + - id: A10 + status: implemented-with-evidence + evidence: + - 本轮定向19用例:修改前17pass2fail,修改后19pass + - 12个非目标文件与本轮快照SHA一致 + - 实现与动态描述语法及git diff --check通过 + note: 真实ESM测试覆盖新增难度分支和动态描述;已有其他修复保留,最终组合计划运行60执行。没有真实游戏/联机实测。 + - id: A11 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 狼顾阴间判定黑色、普通困难黑桃;新增动态描述并保持成功恢复及合法他弃。 + - id: A12 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 妄尊阴间正伤害即可反击,普通困难超过1点;弃牌数不变,描述同步。 + - id: A13 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 夺玺阴间仅自己摸2,困难双方各1;提示及AI和离场检查同步。 + - id: A14 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 引雷阴间回合内外均触发,困难仅回合外;新增动态描述。 + - id: A15 + status: implemented-with-evidence + evidence: + - tianshu/config.js:121 + - tools/test_qingqingzijin_rules.mjs + note: 张角独立模板额外体力4/12/20,加原始4得到8/16/24,起手与技能保留。 + - id: A16 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 疑神从getGainableCards合法装备随机取牌,阴间每名合格敌人各一张,取消自选。 + - id: A17 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 反馈getIndex返回伤害点数,支持友方来源,逐次检查合法牌;自伤仅取装备。 + - id: A18 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 取消狼顾来源、暴虐目标、雷击目标、谏征使用者及目标的额外阵营限制;暴虐满血仍失去1体力。 + - id: A19 + status: implemented-with-evidence + evidence: + - tools/test_qingqingzijin_rules.mjs + - pve/boss/sets/qingqingzijin/skill.js + - pve/boss/sets/qingqingzijin/dynamicTranslate.js + note: 远虑unreal保留且文本明确视为;无双神戟战甲增强与连环规则保留;文本提示同步。 + checks: + - name: + text: 青青子衿定向回归 + truncated: false + result: passed + note: + text: 41/41通过,修复前40用例13通过27失败。 + truncated: false + - name: + text: 生产JS语法 + truncated: false + result: passed + note: + text: skill/dynamicTranslate/translate/config语法通过。 + truncated: false + - name: + text: 非目标文件保护 + truncated: false + result: passed + note: + text: 11个基线哈希一致,其他已有改动保留。 + truncated: false + checks_truncated: false + known_limits: + - text: 未进行真实游戏、浏览器或联机实测。 + truncated: false + - text: 测试mjs沿用仓库现有忽略规则,当前文件保存在工作区,未暂存或提交。 + truncated: false + known_limits_truncated: false + review: null + submitted_at: 2026-10-12T06:36:05.406Z +blockers: [] +verification: + candidate_id: c9724c63-8c45-44ab-944c-4681834c1755 + identity_provider: skill-coordinated + verifier_execution_ref: skill-coordinated:verifier:778df9a8-a7ae-4d96-ba17-7fd7da47daf7 + iteration: 1 + attempt: 1 + assurance: skill-coordinated + verdict: pass + checks: + - id: boss-rules-regressions + name: + text: 青青子衿及全部相关天书回归 + truncated: false + argv_display: + - text: --test + truncated: false + - text: tools/test_qingqingzijin_rules.mjs + truncated: false + - text: tools/test_skill_review_fixes.mjs + truncated: false + - text: tools/test_tianshu_direct_damage.mjs + truncated: false + - text: tools/test_tianshu_skill_recover.mjs + truncated: false + - text: tools/test_tianshu_stage_turn.mjs + truncated: false + argv_truncated: false + cwd_ref: . + status: passed + exit_code: 0 + duration_ms: 415 + - id: boss-rules-whitespace + name: + text: 工作区差异空白检查 + truncated: false + argv_display: + - text: diff + truncated: false + - text: --check + truncated: false + argv_truncated: false + cwd_ref: . + status: passed + exit_code: 0 + duration_ms: 120 + summary: + text: 独立只读Verifier已读完brief、完整Spec及A1-A19,逐项全部通过。复用绑定当前候选c9724c63-8c45-44ab-944c-4681834c1755的正式回归101次执行全通过(90独立测试,11重复fixture)和空白检查,不重复整套。核对本轮狼顾黑色、妄尊1点、夺玺自己摸2及AI、引雷不限回合、张角8/16/24,全部范围修复及保留增强/连环规则;追踪动态描述注册与数字getIndex引擎调度。11个非目标文件SHA256与基线完全一致。未编辑源码/测试/文档/gitignore、未执行git操作、记忆更新或发布,未实机/联机。 + truncated: false + risks: + - text: 未进行真实游戏、浏览器界面或联机验证;ESM桥接/局部桩及引擎源码证据不等同于实机验证。 + truncated: false + - text: 测试mjs沿用既有忽略规则,文件在工作区尚未暂存或提交;未执行发布。 + truncated: false + - text: 修复前失败计数为Builder开发期观察,并非本轮Runtime失败回执;当前正式结果为101次通过、90个独立测试。 + truncated: false + risks_truncated: false + completed_at: 2026-10-12T06:41:40.687Z +history: + - goal_cycle: 1 + iteration: 1 + attempt: 1 + outcome: pass + unresolved_ids: [] + summary: + text: |- + 只读审查验收通过(A1-A4),此结论表示审查交付满足范围,不表示待审源码全部合规。当前工作区及既有未提交修改作为审查对象,梦三模式和梦三测试均排除;本 Verifier 未修改产品源码、未修复、未提交、未发布。 + + 已确认事实:活跃路径共有 140 个顶层技能声明(character 5、驱鬼逐邪 30、青青子衿 21、天书 Boss 21、十二生肖 12、天书 bondSkills 28、新天书 extension 规则 23),74 个 subSkill;2 个显式 sourceSkill 均为 wushuang_shuying 的子技能,另外 72 个由引擎补充。当前禁载的原神另有 6 根、8 子技能,未计入活跃统计。D:/Work/noname/resources/app/noname/game/index.js:8251-8270 的 finishSkill 先注册父名_子名并在 sourceSkill===undefined 时补父名;docs/lib-skill-format.md:258-286 同样说明自动归属。不能将省略显式 sourceSkill 本身判为违规,也不能将子技能注册等同于玩家已经拥有。 + + 按严重程度排序的 8 项实现问题: + [P1] 天书羁绊 ESM 没有引入引擎对象。D:/Work/noname-shuying/tianshu/bondSkills.js:1-2 无 import,但 :335-342 用 lib、:559 用 get、:742 用 get、:745 用 game。获得舌战、南蛮、奇策等羁绊后,在普通非 dev 环境执行对应 filter/mod/content 会引用未定义对象。真实 ESM 直接导入后,Skill07.filter 与 Skill06.mod 独立复现 ReferenceError: get is not defined,Skill03.content 复现 lib is not defined。initTianshu 的形参不会成为另一个 ESM 模块的词法变量;引擎 init/index.js:512 只在 dev/debug 路径调用 cheat.i,library/index.js:8891-8897 的全局暴露不能当生产依赖。 + [P1] 江东基业二三级 group 错名。D:/Work/noname-shuying/tianshu/bondSkills.js:112-113、:184-186 写 Count2/Count3,而父技能定义为 Skill2/Skill3。独立展开全部 117 根及其子技能后,恰有这 5 个 group 引用找不到。正确的 Skill2_draw/discard、Skill3_draw/discard/gain 已由 finishSkill 注册,但错误 group 未将它们展开挂载到持有者。tianshu/config.js:327、:333 确实授予二三级父技能,故升级后对应摸牌/弃牌伤害/获得牌伤害效果失效。 + [P1] 驭布多目标重复全目标群伤。D:/Work/noname-shuying/pve/boss/sets/qingqingzijin/skill.js:643-652 监听 useCardToPlayered 未限定 isFirstTarget,:662-665 每次都遍历 trigger.targets。引擎 content.js:9258-9297 对每个目标建立该事件,:9270 仅首个设 isFirstTarget。友方一张杀指定 N 个存活目标时可判定 N 次,每次成功都对全部目标伤害;N=2 且都成功时,每人额外受到 2 次伤害。 + [P2] 驭布花色与描述不一致。同文件 :657 用 get.color(card)==black,因此梅花也成功;translate.js:36 写黑桃。建议明确规则后统一条件和文本。 + [P2] 狼顾按轮限制而文本按回合。同文件 :240 检查 used,:259 用 roundStart 清除;translate.js:16 写每回合限一次。某回合判定失败后,在同一轮下一角色回合仍被锁,直至下轮;成功时 :263 手动清除是另一条路径,不能弥补失败路径。 + [P2] 奋威中途奖励获得不初始化 2 点蓄力。D:/Work/noname-shuying/character/skill.js:591 定义 beginMarkCount:2,:650-670 仅 enterGame/开局 phaseBefore 添加初始值,父技能没有对应获得时 init。天书 :63 通过 addAdditionalSkills 中途授予已有角色;引擎 player.js:10979-11016 为普通技能增添,不触发 enterGame。正常已在场角色在非开局获得奋威时没有初始 2 点蓄力,直到其他蓄力条件发生;翻译 character/translate.js:14 标为 2/8。 + [P2] 他弃候选过滤错误,可绕过 canBeDiscarded 保护。D:/Work/noname-shuying/tianshu/bondSkills.js:335-342、:390-397 的舌战使用 cardDiscardable(持有者自己弃牌规则)筛选别人弃牌;狼顾 qingqingzijin/skill.js:262-267 先 countDiscardableCards,再从全部 h 随机选牌,同样未保护候选集合。混有可弃和禁止被他人弃置牌时可选中受保护牌,或错误排除仅禁止自弃而允许他弃的牌。引擎 library/index.js:11151 与 :11171 区分两套 mod;player.js:5273 的 getDiscardableCards(player,zone) 才提供对应他弃候选。 + [P2] 白仪/九天随机获得忽略 canBeGained 候选。D:/Work/noname-shuying/pve/boss/sets/tianshu/skill.js:617-619、:711-718 只先检查 countGainableCards>0,实际从全 he/h 随机抽取。目标同时有可获得和受保护牌时可以抽中受保护牌并直接 gain。建议使用 getGainableCards(player,zone),引擎 player.js:5285-5302 按 canBeGained 过滤。 + + 另有 1 项潜在 P2,规则意图待确认:五虎、天下无双、武安君等牌伤增益及戌狗未排除连环传播。D:/Work/noname-shuying/tianshu/bondSkills.js:419-453、:471-518、:785-842;pve/boss/sets/shiershengxiao/skill.js:484-490。引擎 library/skill.js:1962-1973 将已增伤 num 连同 card/source 再传给下一目标,这些 damageBegin1 条件仍可通过并再次加伤。已确认源码行为,但尚无法确认设计要求是否刻意允许传播再次叠加;不能未经规则确认直接把缺少 notLink 认作普遍违规。建议以同一火杀、两个连环目标实测并确认预期。 + + 天书所有权/直伤/回复证据:extension.js:49-72 只记录奖励来源,:731-812 按当前奖励技能与译名去重,:946-1003 按独立羁绊来源同步、保留其他来源并在永久失去后重算;getDirectDamageOrigin 与 getSkillRecoverOrigin 按父事件向上追踪并用 sourceSkillFor 归属,分别拒绝用牌/响应/嵌套伤害/技能 cost 及桃园次级回复。extension.js:1419-1486 在最终伤害结算登记并按最终 num 摸牌,三级无来源仍保留原施术者记录;skillRecover.js:30-63 包装原生回复,处理满血与溢出并防止二次结算。异步执行依据本地 AsyncCompiler.js:7-10 与 ArrayCompiler.js:28,原 async 函数被调用时只传事件、触发、玩家和结果,不会给 bondSkills 注入 get/lib/game。 + + 正式验证:Runtime 检查 tianshu-review-tests 在当前候选执行 node --test tools/test_tianshu_direct_damage.mjs tools/test_tianshu_skill_recover.mjs tools/test_tianshu_stage_turn.mjs,退出 0,41 次测试执行全部通过、0 失败。skillRecover 测试导入 directDamage fixture 同时重复登记其 11 个测试,因此是 30 个独立测试、41 次执行;不能说有 41 个独立场景。正式日志 .comet/runtime/native/changes/shuying-skill-tianshu-review/logs/checks/0efa4fae-105e-4e92-ac43-eb454f8e2798-tianshu-review-tests.log。测试覆盖父链归属、最终伤害、无来源保留、所有权剥离重算、桃园满血/溢出/次级回复与换关轮次;采用 VM/桩,给 bond 技能注入全局对象,所以无法反证真实 ESM 导入缺陷。Builder 的 10 文件语法通过仅是开发期证据,不等于游戏运行。未做真实游戏、联机、dev 关闭浏览器联调;受保护卡随机结果、复杂事件父链以及连环规则意图仍需游戏复核。 + + 建议优先修复 3 项 P1,再处理 5 项 P2;本只读任务未实施建议。以上审查与限制均已记录,A1-A4 通过不要求本次修复源码。 + truncated: false + completed_at: 2026-10-12T03:43:33.267Z + - goal_cycle: 1 + iteration: 1 + attempt: 1 + outcome: recovery + unresolved_ids: [] + summary: + text: 用户接受审查结果并明确要求修复报告中的8项已确认问题;用户确认连环传导允许再次增伤。将只读审查范围扩展为这些问题的最小修复与验证,沿用当前目录,保留既有改动。 + truncated: false + completed_at: 2026-10-12T03:54:53.001Z + - goal_cycle: 2 + iteration: 1 + attempt: 1 + outcome: pass + unresolved_ids: [] + summary: + text: |- + 本轮独立验收A1–A10全部通过,五轴代码复核未发现需要阻断本次修复的问题。4个技能源码文件实际24行新增、40行删除:补羁绊引擎依赖导入及江东二三级分组,修正驭布首目标判定和黑桃条件、狼顾回合次数与成功空牌恢复,接入奋威动态init,修正舌战/狼顾他弃和白仪/九天他取候选。保留连环再次增伤,未触及梦三、停用原神或用户已有天书直伤/回复实现。 + 正式证据复用skill-fix-regressions和skill-diff-whitespace的passed结果(14新增用例及旧天书测试合计55次执行、44个独立用例),补充fenwei-engine-lifecycle正式passed,实际提取并调用当前引擎addSkill/addSkillTrigger/removeSkillTrigger/addCharge/getMaxCharge/expandSkills,验证初始值、去重、共享蓄力、失去后再获得和封顶。8个非目标文件SHA256与修复前baseline完全一致。红绿历史为Builder会话观察,未保存为Runtime红灯回执;Verifier对照before字节确认原条件与本次修正。 + 正确性方面已追踪用牌首目标事件队列、临时技能过期、card mods当前事件/发动者/牌主上下文与技能获得失去;可读性及架构遵循现有最小修改与引擎规范API,未新增通用抽象;安全性未引入网络、凭据或不可信输入通路;性能以一次判定替代每目标重复判定,其余只过滤有限牌集合。 + 额外考察但未纳入:固定羁绊技能旧hook未立即删除,但引擎执行前核对当前所有权,因此不构成低级叠加,属于原有管理流程;初始化在新技能持有期再加2且受共享容量限制符合引擎蓄力语义;白仪后段自弃仍使用cardDiscardable符合其“其随机弃置”描述;连环再次增伤是用户明确决定,不作为缺陷;统一导入中未使用ui/ai/_status沿用模块习惯,不为风格增加无关修改。没有真实游戏、浏览器界面或联机实测,本轮引擎检查仅为隔离方法验证。 + truncated: false + completed_at: 2026-10-12T04:16:35.786Z + - goal_cycle: 2 + iteration: 1 + attempt: 1 + outcome: recovery + unresolved_ids: [] + summary: + text: 用户核实驭布规则并明确要求改动:困难hard黑桃,阴间nightmare黑色;保留此前多目标一张杀只判定一次的修复,同步动态描述和难度分支回归验证。 + truncated: false + completed_at: 2026-10-12T04:26:08.214Z + - goal_cycle: 3 + iteration: 1 + attempt: 1 + outcome: pass + unresolved_ids: [] + summary: + text: 独立只读验收A1-A10全部通过。本轮相对前轮仅更新2个源码文件:pve/boss/sets/qingqingzijin/skill.js的驭布难度条件与dynamicTranslate.js的驭布动态描述;另增补tools/test_skill_review_fixes.mjs难度/描述用例。hard黑桃、nightmare黑色、默认非阴间黑桃;保留isFirstTarget每张多目标杀只判一次及存活目标一次伤害,动态描述经既有注册链实时读取难度。复用当前候选正式qubu-difficulty-regressions和qubu-diff-whitespace的passed记录,不重复整套:19定向用例与旧天书测试合计60次执行、49个独立用例。修改前17pass/2fail和修改后19pass的红绿对照为Builder会话观察,非Runtime红灯记录。12非目标文件SHA256独立复核均与本轮baseline一致,包括.gitignore/update.txt及前轮其他修复文件;复用前轮匹配的源码/引擎证据核对其余验收项。未修改源码、测试、忽略规则、索引或HEAD,未提交发布;未做真实游戏、浏览器界面或联机实测,ESM与局部桩结果不等同于实机验证。 + truncated: false + completed_at: 2026-10-12T04:35:16.773Z + - goal_cycle: 3 + iteration: 1 + attempt: 1 + outcome: recovery + unresolved_ids: [] + summary: + text: 用户逐项确认官网差异修复:保留远虑虚拟伤害及无双神戟战甲增强;修复狼顾妄尊夺玺引雷、张角体力和报告列出的范围差异,同步文本。 + truncated: false + completed_at: 2026-10-12T06:23:10.262Z + - goal_cycle: 4 + iteration: 1 + attempt: 1 + outcome: pass + unresolved_ids: [] + summary: + text: 独立只读Verifier已读完brief、完整Spec及A1-A19,逐项全部通过。复用绑定当前候选c9724c63-8c45-44ab-944c-4681834c1755的正式回归101次执行全通过(90独立测试,11重复fixture)和空白检查,不重复整套。核对本轮狼顾黑色、妄尊1点、夺玺自己摸2及AI、引雷不限回合、张角8/16/24,全部范围修复及保留增强/连环规则;追踪动态描述注册与数字getIndex引擎调度。11个非目标文件SHA256与基线完全一致。未编辑源码/测试/文档/gitignore、未执行git操作、记忆更新或发布,未实机/联机。 + truncated: false + completed_at: 2026-10-12T06:41:40.687Z +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-13T01:31:51.574Z diff --git a/docs/comet/changes/shuying-skill-tianshu-review/specs/shuying-skill-correctness/spec.md b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/specs/shuying-skill-correctness/spec.md similarity index 100% rename from docs/comet/changes/shuying-skill-tianshu-review/specs/shuying-skill-correctness/spec.md rename to docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/specs/shuying-skill-correctness/spec.md diff --git a/docs/comet/changes/shuying-skill-tianshu-review/verification.md b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/verification.md similarity index 98% rename from docs/comet/changes/shuying-skill-tianshu-review/verification.md rename to docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/verification.md index e3004ab..92c3aa9 100644 --- a/docs/comet/changes/shuying-skill-tianshu-review/verification.md +++ b/docs/comet/archive/2026-10-12-shuying-skill-tianshu-review/verification.md @@ -1,13 +1,13 @@ --- -generated_from_state_version: 24 +generated_from_state_version: 28 --- # 验证 ## 当前结果 -- 结果: **验收通过,需要你确认** -- 验证情况: **已完成检查,但需要你确认验证结果** +- 结果: **已归档** +- 验证情况: **已完成检查,验证结果已确认** - 目标周期: 4 - 迭代: 1 - 验证器尝试次数: 1 @@ -57,7 +57,7 @@ generated_from_state_version: 24 ## 阻塞项 -- **user**: The generic Skill bridge cannot prove an independent Verifier execution; user confirmation is required before Archive. — next: `await-user` +_无。_ ## 风险与跳过的工作 diff --git a/docs/comet/changes/shuying-skill-tianshu-review/comet-state.yaml b/docs/comet/changes/shuying-skill-tianshu-review/comet-state.yaml deleted file mode 100644 index e2c4307..0000000 --- a/docs/comet/changes/shuying-skill-tianshu-review/comet-state.yaml +++ /dev/null @@ -1,146 +0,0 @@ -# Recovery authorized by the user on 2026-10-13. -# CLI-generated Shape state; historical version 24 evidence is backed up in -# .planning/comet-state-recovery-20261013. All acceptance requires revalidation. -schema: comet.native.v4 -name: shuying-skill-tianshu-review -language: zh-CN -phase: shape -status: await-user -state_version: 25 -brief: brief.md -document_constraints_version: 2 -shape_confirmation_hash: 73614dd2595713e137f716f16fb11eed1c7d59096b3fd243d53ff1d97cedd7d3 -spec_changes: - - capability: shuying-skill-correctness - operation: create - source: specs/shuying-skill-correctness/spec.md -workspace: - isolation: current - change_branch: null - target_branch: null - finish: null -loop: - stage: await-user - goal_cycle: 1 - iteration: 0 - attempt: 0 - retry_epoch: 0 - failed_iteration_count: 0 - no_progress_count: 0 - execution_failure_count: 0 - previous_unresolved_ids: [] - next_action: confirm-shape -acceptance: - - id: A1 - source: brief.md - text: 羁绊的 filter、mod、async content 在没有开发者全局对象时,能通过模块导入获取引擎依赖。 - result: pending - reason: null - - id: A2 - source: brief.md - text: 江东基业二三级对应子技能通过正确 group 挂载并执行,低等级不重复叠加。 - result: pending - reason: null - - id: A3 - source: brief.md - text: 驭布对一张多目标杀只判定一次,成功时对各存活目标只造成一次伤害。 - result: pending - reason: null - - id: A4 - source: brief.md - text: 驭布困难难度黑桃成功、梅花失败;阴间难度黑色成功、红色失败,动态描述与难度条件一致。 - result: pending - reason: null - - id: A5 - source: brief.md - text: 狼顾失败后仅限制当前回合;黑桃成功时恢复次数,即使没有可弃手牌也不会错误占用次数。 - result: pending - reason: null - - id: A6 - source: brief.md - text: 奋威开局及中途获得时各初始化2蓄力,同次持有不因入场/开局事件重复添加,不重置共享蓄力。 - result: pending - reason: null - - id: A7 - source: brief.md - text: 舌战与狼顾仅从允许被发动者弃置的牌中随机选择。 - result: pending - reason: null - - id: A8 - source: brief.md - text: 白仪与九天仅从允许被发动者获得的牌中随机选择。 - result: pending - reason: null - - id: A9 - source: brief.md - text: 连环伤害允许再次增伤,既有牌伤增益不添加 notLink 排除。 - result: pending - reason: null - - id: A10 - source: brief.md - text: 新增定向回归验证并运行相关现有天书测试,说明真实游戏/联机实测边界,保留无关改动。 - result: pending - reason: null - - id: A11 - source: brief.md - text: 狼顾阴间梅花成功、红色失败,普通/困难仅黑桃成功;动态描述同步。 - result: pending - reason: null - - id: A12 - source: brief.md - text: 妄尊阴间累计1点伤害即反击,困难1点不反击,未受伤时弃牌数仍为困难1/阴间2。 - result: pending - reason: null - - id: A13 - source: brief.md - text: 夺玺阴间替换摸牌后仅自己摸2,困难双方各摸1;动态描述、提示同步。 - result: pending - reason: null - - id: A14 - source: brief.md - text: 引雷困难自己回合不触发、阴间自己回合触发;描述同步回合条件。 - result: pending - reason: null - - id: A15 - source: brief.md - text: 张角三难度体力和上限8/16/24,起始手牌6/8/10和追加技能保留。 - result: pending - reason: null - - id: A16 - source: brief.md - text: 疑神随机获取各目标合法装备,正常难度分支只选一名敌人,阴间所有合格敌人各一张;禁止选择受保护装备。 - result: pending - reason: null - - id: A17 - source: brief.md - text: 反馈受到多点伤害有逐点发动机会,可对友方来源发动,源牌耗尽后停止;自伤只获取自身装备。 - result: pending - reason: null - - id: A18 - source: brief.md - text: 狼顾接受其他友方来源;暴虐满血也失去1体力并允许任意角色;雷击允许其他友方,谏征允许其他角色使用的杀,不增加阵营限制。 - result: pending - reason: null - - id: A19 - source: brief.md - text: 远虑阴间保留unreal并明确描述;无双/神戟/战甲增强不回退,全部改动描述与提示一致。 - result: pending - reason: null -builder_handoff: null -blockers: [] -verification: null -history: [] -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: pending -verification_report: null -archived: false -created_at: 2026-10-13T01:31:51.574Z diff --git a/docs/comet/specs/shuying-skill-correctness/spec.md b/docs/comet/specs/shuying-skill-correctness/spec.md new file mode 100644 index 0000000..1e103b5 --- /dev/null +++ b/docs/comet/specs/shuying-skill-correctness/spec.md @@ -0,0 +1,103 @@ +# 术樱包技能修复 + +## Requirement: 羁绊依赖和分组 + +天书羁绊模块通过显式导入绑定引擎对象;各等级只挂载自己的正确子技能。 + +### Scenario: 非开发者环境的羁绊执行 +Acceptance: A1 +无全局 lib/get/game 时,已导入的羁绊 filter、mod、async content 使用模块绑定正常执行。 + +### Scenario: 江东升级后的效果 +Acceptance: A2 +二级、三级拥有正确 draw/discard/gain 子技能;升档后不同时叠加旧等级。 + +## Requirement: 驭布和狼顾 + +驭布对每次用杀执行一次判定,困难难度要求黑桃、阴间难度要求黑色;狼顾按回合限制次数,成功时恢复次数,随机他弃遵守保护。 + +### Scenario: 驭布多目标 +Acceptance: A3 +杀指定两个目标,只在首次指定目标事件判定一次;符合当前难度的判定成功后各存活目标受到一次伤害。 + +### Scenario: 驭布花色 +Acceptance: A4 +困难 hard 时黑桃成功、梅花与红色失败;阴间 nightmare 时黑桃与梅花成功、红色失败。动态描述困难显示黑桃、阴间显示黑色,默认非阴间保持黑桃。 + +### Scenario: 狼顾次数 +Acceptance: A5 +判定失败保留使用标记到当前全局回合结束;符合当前难度的判定成功移除标记,与原持牌角色是否有可弃手牌无关。 + +## Requirement: 动态获得和候选牌合法性 + +奋威初始化兼容中途获得,禁止开局/入场重复加初始值,保留其他技能已有共享蓄力。随机牌操作使用对应他弃/他取合法候选。 + +### Scenario: 奋威动态获得 +Acceptance: A6 +开局和中途获得均初始化2蓄力;入场和开局事件不会重复添加。已有共享蓄力不被重置。 + +### Scenario: 随机他弃 +Acceptance: A7 +舌战和狼顾目标混有可弃和受保护牌时,随机结果只属于允许被发动者弃置的集合。 + +### Scenario: 随机获得 +Acceptance: A8 +白仪和九天目标混有可取得和受保护牌时,随机结果只属于允许被发动者获得的集合。 + +## Requirement: 保持规则与验证 + +用户允许连环传导再次增伤。只修改审查确认问题,不触及梦三、不重构无关功能。 + +### Scenario: 连环再次增伤 +Acceptance: A9 +五虎等既有牌伤增益仍接受连环伤害并增加伤害值。 + +### Scenario: 回归验证 +Acceptance: A10 +在修改前证明定向问题复现,修复后相关验证通过,同时现有天书直伤、回复和换关轮次测试通过;报告是否进行真实游戏或联机验证。 + +## Requirement: 青青子衿难度与体力 + +普通normal对应官网休闲,困难hard对应官网普通,阴间nightmare对应官网困难。按用户逐项决定修复规则,保留明确指定的增强版本。 + +### Scenario: 狼顾难度 +Acceptance: A11 +普通、困难仅黑桃成功;阴间黑桃和梅花成功、红色失败。动态描述反映条件;成功恢复次数及合法他弃继续成立。 + +### Scenario: 妄尊难度 +Acceptance: A12 +阴间敌人在当前回合对自己造成过正伤害即可反击1点;普通、困难仍要求累计伤害超过1点。未受伤时普通、困难弃1,阴间弃2。描述与条件一致。 + +### Scenario: 夺玺难度 +Acceptance: A13 +其他角色摸牌阶段可以失去1点体力替换摸牌;困难自己与其各摸1,阴间仅自己摸2。玩家离场不再摸牌,选择提示及动态描述同步。 + +### Scenario: 引雷难度 +Acceptance: A14 +困难仅自己回合外失牌触发,阴间自己回合内外均可。普通不获得追加技能;随机横置未横置角色。描述显示对应回合条件。 + +### Scenario: 张角体力 +Acceptance: A15 +张角普通、困难、阴间的初始体力与上限分别为8、16、24。起始手牌6/8/10、基础技能与困难起追加引雷保留;其他BOSS配置不受影响。 + +## Requirement: 取牌方式和角色范围 + +随机获得从发动者合法候选中抽取;描述未限制阵营时,不把AI偏好作为硬性目标限制。 + +### Scenario: 随机疑神 +Acceptance: A16 +疑神替换回复后,普通/困难获取一名随机合格敌人的随机合法装备,阴间获取每名合格敌人的一张随机合法装备;不提供装备自选,也不获取受保护装备。 + +### Scenario: 反馈逐点 +Acceptance: A17 +受到N点伤害后有N次独立可选反馈机会,每次获取来源一张合法牌;来源包括友方,来源离场或没有合法牌时不发动。自伤只能取自身装备,不能重复获取手牌。 + +### Scenario: 角色范围 +Acceptance: A18 +狼顾获得任何其他角色牌可触发;暴虐满血时X为0仍失去1体力,不选择伤害目标,受伤时目标可以是任意存活角色;雷击可选任意其他角色;谏征接受任何其他角色的杀,只检查非原目标、攻击范围和手牌等实际条件。AI可以偏好敌方/保护友方,但不得限制用户可选范围。 + +## Requirement: 保留增强并同步文本 + +### Scenario: 增强与文本 +Acceptance: A19 +远虑阴间仍调用unreal并描述为视为受到过伤害;无双未响应增伤次数、神戟普通/困难/阴间额外摸2/3/4和额外杀1/2/2、战甲阴间摸3均保留。狼顾、妄尊、夺玺、引雷及所有本轮改动的静态/动态文本和选择提示与最终规则一致。