test(批B): 断言层级重构大提交——1065 条断言自 smoke_all.gd 全量迁入 16 标准宿主(冒烟/单元/集成/系统+UI 探针);smoke_all.gd 整体退役;变异引擎按用户令删除、验证改核代码(三冷启动审核员 1065 全审:1047 有效,17 存疑+2 段落级,其中 2 段落级经今日闸记录实证解决);10 条核代码修复(恒真/名实/静默跳过/键名等——grilling 一轮修订);验证集清单回写 1068 条三对齐零差异;底册去向补正与笔误清账
This commit is contained in:
1 parent
8fbd2dd875
commit
957391e13b
29 files changed
+6759
-8446
No files matched your search
@@ -1,291 +0,0 @@
|
||||
# 批 B 变异统一台账(机器生成)
|
||||
|
||||
> 生成命令:`godot --headless --path game --script res://tests/mutation/mutation_engine.gd -- --all --snap=seal_polarity=res://tests/.gates/mut_snapshots/seal_polarity_test.gd(23 套分批跑齐:system/TSG/board/roll/seal;board_generator 与 roll 尾套带 --excl-func/--excl-line 毒候选隔离与 --budget 收刀,各批命令见实现报告)`
|
||||
> 生成时间:2026-10-23T13:33:47 · 引擎:游戏环境启动一次,逐条执行「内存内改坏 → 重跑该断言所在套函数 → 验 FAIL → 撤销 → 记录」,全程不改任何文件。
|
||||
> 三武器:table=已加载 Resource 内存字段改写 · inject=生产脚本源码内存变换+reload 原地重编译(零触盘)· state=对象状态篡改(长活成员/静态与初值/autoload 树状态)。
|
||||
> 中间结果 JSON 在 `user://mutation_work/results/`(仓库外);本文件为唯一持久产出。
|
||||
|
||||
## 一、逐条记录
|
||||
|
||||
| 宿主 | 套 | # | 标签 | 武器 | 改坏点 | 结果 | 复验轮耗时 | 连带红 |
|
||||
|---|---|---|---|---|---|---|---|---|
|
||||
| system_test | split_tail | 0 | false | state | ConfigDB:-1 tree_rename / [状态·树] autoload 节点 /root/ConfigDB 改名(装配链就绪护栏击穿) | 验红 | 13ms | 0 |
|
||||
| system_test | smoke_scene_split | 1 | menu.start_overlay != null and menu.lvbtn != null and menu.resumebtn != null and menu.campbtn !=… | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 2 | menu.start_overlay.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 3 | menu.mouse_filter == Control.MOUSE_FILTER_IGNORE | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 4 | camp.camp_overlay != null | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 5 | not camp.camp_overlay.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 6 | adv.battle_root != null and adv.stage != null and adv.board_zone != null and adv.board_view != n… | | | 异常 | — | — |
|
||||
| system_test | smoke_scene_split | 7 | top == main._start_overlay | inject | main.gd:198 bool true→false / main.gd:199 bool true→false [_start_overlay.visible = true → _star… | 验红 | 221ms | 0 |
|
||||
| system_test | smoke_scene_split | 8 | main._menu_screen.get_index() > main._adventure_screen.get_index() | inject | main.gd:467 num 1→0 / main.gd:468 num 1→0 [slot += 1 → slot += 0] | 验红 | 204ms | 2 |
|
||||
| system_test | smoke_scene_split | 9 | chain_ok | inject | main.gd:222 asgn 置null / main.gd:223 asgn 置null [info_panel = _adventure_screen.info_panel → inf… | 验红 | 224ms | 0 |
|
||||
| system_test | smoke_scene_split | 10 | main._start_overlay == main._menu_screen.start_overlay and main.camp_overlay == main._camp_scree… | inject | main.gd:218 asgn 置null / main.gd:219 asgn 置null [_start_overlay = _menu_screen.start_overlay → _… | 验红 | 221ms | 1 |
|
||||
| system_test | smoke_scene_split | 11 | main.run_scope != null and not main.run_scope.is_adventure | inject | main.gd:196 bool false→true / main.gd:197 bool false→true [_begin_session(false) # 闲时会话(gp_led… | 验红 | 214ms | 0 |
|
||||
| system_test | smoke_boot_chain | 12 | db.is_ready and db.hero != null | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 13 | AudioServer.is_bus_mute(master) == (ss.volume_linear <= 0.001) and is_equal_approx(AudioServer.g… | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 14 | ui_kit.motion_scale == (0.5 if ss.reduced_motion else 1.0) | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 15 | main._start_overlay.visible | inject | main.gd:198 bool true→false / main.gd:199 bool true→false [_start_overlay.visible = true → _star… | 验红 | 121ms | 2 |
|
||||
| system_test | smoke_boot_chain | 16 | not sm.has_breakpoint() and not main._resume_btn.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 17 | sm.active_slot() == 0 and not sm.has_write_target() | inject | save_manager.gd:358 bool false→true / save_manager.gd:359 bool false→true [return false → return… | 验红 | 133ms | 1 |
|
||||
| system_test | smoke_boot_chain | 18 | sm.keystone_balance() == 0 and not sm.has_breakpoint() and sm.adventure_total() == 0 | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 19 | not sm.write_to_disk() | inject | save_manager.gd:358 bool false→true / save_manager.gd:359 bool false→true [return false → return… | 验红 | 131ms | 1 |
|
||||
| system_test | smoke_boot_chain | 20 | not (FileAccess.file_exists("user://save.json") and not FileAccess.file_exists(sm.slot_path(1))) | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 21 | not sm.has_breakpoint() and not main._resume_btn.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 22 | sm.has_breakpoint() and main._resume_btn.visible | inject | main.gd:533 op ==→!= / main.gd:534 op ==→!= [if _resume_btn == null: → if _resume_btn != null:] | 验红 | 122ms | 2 |
|
||||
| system_test | smoke_boot_chain | 23 | not main._resume_btn.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 24 | main.run_scope != null and not main.run_scope.is_adventure and main.run_scope.is_inside_tree() | inject | main.gd:171 op !=→== / main.gd:172 op !=→== [if run_scope != null: → if run_scope == null:] | 验红 | 138ms | 2 |
|
||||
| system_test | smoke_boot_chain | 25 | not main.debug_overlay.visible | | | 异常 | — | — |
|
||||
| system_test | smoke_boot_chain | 26 | main.debug_badge != null and main.debug_badge.visible | inject | main.gd:199 bool true→false / main.gd:200 bool true→false [_debug_entry = true # 调试入口门控写死=true… | 验红 | 122ms | 2 |
|
||||
| system_test | smoke_run_lifecycle | 27 | main.run_scope != null and main.run_scope.is_adventure and main.run_scope.adventure != null | inject | main.gd:492 if 取反 / main.gd:493 if 取反 [if save_manager.has_breakpoint(): → if not (save_manager.… | 验红 | 138ms | 0 |
|
||||
| system_test | smoke_run_lifecycle | 28 | main.run_scope.hints_shown.is_empty() | | | 异常 | — | — |
|
||||
| system_test | smoke_run_lifecycle | 29 | main.run_scope.adventure.abandon() | | | 异常 | — | — |
|
||||
| system_test | smoke_run_lifecycle | 30 | finished.done | inject | main.gd:11 key 错位:"/root/RngService" / main.gd:12 key 错位:"/root/RngService" [const AUTOLOAD_PATH… | 验红 | 331ms | 3 |
|
||||
| system_test | smoke_run_lifecycle | 31 | main._end_overlay.is_open() | inject | main.gd:11 key 错位:"/root/RngService" / main.gd:12 key 错位:"/root/RngService" [const AUTOLOAD_PATH… | 验红 | 333ms | 3 |
|
||||
| system_test | smoke_run_lifecycle | 32 | not main.run_scope.is_adventure and main.run_scope.adventure == null and main.run_scope.runner =… | inject | main.gd:726 bool false→true / main.gd:727 bool false→true [_begin_session(false) → _begin_sessio… | 验红 | 141ms | 1 |
|
||||
| system_test | smoke_run_lifecycle | 33 | main.run_scope.hints_shown.is_empty() and not main.run_scope.boss_active and main.run_scope.last… | inject | main.gd:712 if 取反 / main.gd:713 if 取反 [if _bonus.resume_if_pending(): # 三选一停点在途恢复入口… → if not … | 验红 | 141ms | 2 |
|
||||
| system_test | smoke_run_lifecycle | 34 | main._start_overlay.visible | inject | main.gd:728 bool true→false / main.gd:729 bool true→false [_start_overlay.visible = true → _star… | 验红 | 153ms | 1 |
|
||||
| system_test | smoke_run_lifecycle | 35 | not sm.has_breakpoint() | | | 异常 | — | — |
|
||||
| system_test | smoke_run_lifecycle | 36 | main.run_scope.is_adventure and main.run_scope.adventure != null and main.run_scope.hints_shown.… | inject | main.gd:174 asgn 置null / main.gd:175 asgn 置null [run_scope.is_adventure = adventure_session → ru… | 验红 | 212ms | 2 |
|
||||
| system_test | smoke_run_lifecycle | 37 | not main._start_overlay.visible | inject | main.gd:498 bool false→true / main.gd:499 bool false→true [_start_overlay.visible = false → _sta… | 验红 | 141ms | 1 |
|
||||
| system_test | smoke_lifecycle_matrix | 39 | main.run_scope.settlement == null or not main.run_scope.settlement.is_battle_live() | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 40 | main.run_scope.adventure.abandon() | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 41 | finished.done and main._end_overlay.is_open() | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 42 | main.run_scope != old_scope and main.run_scope.is_inside_tree() | inject | main.gd:716 bool false→true / main.gd:717 bool false→true [_settlement_stop_pending = false → _s… | 验红 | 6481ms | 2 |
|
||||
| system_test | smoke_lifecycle_matrix | 43 | not is_instance_valid(old_scope) | inject | main.gd:716 bool false→true / main.gd:717 bool false→true [_settlement_stop_pending = false → _s… | 验红 | 6341ms | 2 |
|
||||
| system_test | smoke_lifecycle_matrix | 44 | false | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 45 | main.run_scope.adventure != null and main.run_scope.adventure != first_adv | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 46 | main.run_scope.adventure.abandon() | | | 异常 | — | — |
|
||||
| system_test | smoke_lifecycle_matrix | 47 | main._resume_btn.visible | inject | main.gd:533 op ==→!= / main.gd:534 op ==→!= [if _resume_btn == null: → if _resume_btn != null:] | 验红 | 4864ms | 0 |
|
||||
| system_test | smoke_lifecycle_matrix | 48 | main.run_scope != idle_scope and main.run_scope.is_inside_tree() | inject | main.gd:544 if 去not / main.gd:545 if 去not [if not save_manager.has_breakpoint(): → if save_manag… | 验红 | 2963ms | 1 |
|
||||
| system_test | stage_faces | 38 | bad.is_empty() | inject | main.gd:218 asgn 置null / main.gd:219 asgn 置null [_start_overlay = _menu_screen.start_overlay → _… | 验红 | 307ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 21 | "状态表 defense_up 行已退役(无双轨)" | table | status_effects.rows.effect_id=defense_up:-1 table 字面量插行 / 表插行 status_effects.rows:effect_id=defe… | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 22 | "ac_up 行在位(hero · +1 ac · 只续时不叠层——2026-09-20 主角增益续时批)" | table | status_effects.rows[1].effect_id:-1 table 删键 / 表行删键 status_effects.rows[1].effect_id | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 23 | "奖励表 defense 正向行 effect_id = ac_up(显示名盾牌加护,权重/tier 不变)" | table | reward.rows[1].cell_type:-1 table 删键 / 表行删键 reward.rows[1].cell_type | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 24 | "effect_pool_map 无 defense_up/ac_up 键(减伤不入池——AC 不经乘区)" | table | settlement.effect_pool_map.defense_up:-1 table 字典加键 / 字典加键 settlement.effect_pool_map:defense_up… | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 25 | "hero_defense 池 percent 行叠满不可触池底(墙最深%s > clamp_lo %d——单效果归零结构性不可达)" % [ wall_detail if wall_deta… | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 26 | "主角 armor_class 在域内(%d——暂定基准随表走)" % int(_db.hero.armor_class) | table | hero.armor_class:-1 table_set / 表改写 hero.armor_class: 10 → 100 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 27 | "敌方 AC 行值在已裁带宽内(杂鱼 0~5·重击手/重装手 8~9·Boss 8~12——迭代 5 返工批 v1 重投,越带行%s)" % [ ac_detail if ac_detail … | table | enemy.rows[4].enemy_id:-1 table_set / 表行改写 enemy.rows[4].enemy_id: ogre_chief → ogre_chief_x | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 28 | "Boss AC 关卡台阶严格递增(%d < %d < %d)" % [int(boss_ac.get(1, 0)), int(boss_ac.get(2, 0)), int(boss_ac.… | table | enemy.rows[12].level_index:-1 table 删键 / 表行删键 enemy.rows[12].level_index | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 29 | "熊地精首遇带(1,battle,%d)降档锚定(hp 22 · ac 2 · 池 attack6/charge2/heavy2 零改动——迭代 24 N1;首遇带数据驱动定位)〔fv21〕"… | table | enemy.rows[2].level_index:-1 table 删键 / 表行删键 enemy.rows[2].level_index | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 30 | "第一关相邻深度带总量比 ≤ 2.5(12/10/22/35/72——迭代 24 N1 曲线护栏,带键升序;越带%s)" % [ curve_detail if curve_detail !=… | table | enemy.rows[2].level_index:-1 table 删键 / 表行删键 enemy.rows[2].level_index | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 31 | "掷点参数拍板值在位(d20 / nat20 暴击 ×200%% / 下限 1 / attack_bonus 0 / armor_roll 流)" | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 21 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_ac_swap_guard | 32 | "档位表拍板值在位(缺口 1-3 → ×0.75 · 4-7 → ×0.5 · 8+ → ×0.25——无零档)" | table | settlement.roll_tier_bounds:-1 table 删行 / 表删行 settlement.roll_tier_bounds[0] | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_enemy_bands | 17 | "敌人表 20 行且键序 = 迁移表序((L,row_kind,depth_band,enemy_id) 逐行比对——文件行序不变)〔fv11〕" | table | enemy.rows[0].depth_band:-1 table 删键 / 表行删键 enemy.rows[0].depth_band | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_enemy_bands | 18 | "hobgoblin 行在 (1,battle,3) 留任随迁(缺口行不删不补——补齐归敌种内容批)〔fv12〕〔fv25〕" | table | enemy.rows[3].depth_band:-1 table 删键 / 表行删键 enemy.rows[3].depth_band | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_enemy_bands | 19 | "hobgoblin 缺口登记随行(表文件注释在位——缺口不静默)〔fv25〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_enemy_bands | 20 | "三关 Boss 行各恰一行且 row_kind=boss、band=图 Boss 节点深度(%d/%d/%d%s)〔fv13〕" % [ _boss_depth(1), _boss_dept… | table | enemy.rows[4].depth_band:-1 table 删键 / 表行删键 enemy.rows[4].depth_band | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_variation_framework | 33 | "变异清单 6 行(荆棘丛/藤蔓缠绕/岩浆/烬覆 + 落石/矿尘——首批类型定稿批 + 第三关内容批;贫矿脉 2026-10-16 用户令屏蔽删行)" | table | variation.rows:-1 table 复插行 / 表复插行 variation.rows[0] → 表首 | 验红 | 5ms | 3 |
|
||||
| table_structure_guard | smoke_variation_framework | 34 | "变异表校验零错误(6 行全过域与跨字段互锁——含 scope=global 三互锁负样本)" | table | variation.rows[0].variant_id:-1 table 删键 / 表行删键 variation.rows[0].variant_id | 验红 | 21ms | 0 |
|
||||
| table_structure_guard | smoke_variation_framework | 35 | "L1 dungeon 候选池 = 荆棘丛+藤蔓缠绕(unlock + board_types 双闸)" | table | variation.rows:-1 table 复插行 / 表复插行 variation.rows[0] → 表首 | 验红 | 5ms | 3 |
|
||||
| table_structure_guard | smoke_variation_framework | 36 | "L2 underdark 候选池 = 岩浆+烬覆(第二关解锁)" | table | variation.rows:-1 table 复插行 / 表复插行 variation.rows[2] → 表首 | 验红 | 5ms | 2 |
|
||||
| table_structure_guard | smoke_variation_framework | 37 | "unlock 门控:L1 不进 underdark 行(岩浆/烬覆第二关解锁)" | table | variation.rows[2].unlock_level:-1 table_set / 表行改写 variation.rows[2].unlock_level: 2 → 1 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_variation_framework | 38 | "board_types 门控:L2 dungeon 板池 = 荆棘丛+藤蔓缠绕(解锁累积;岩浆/烬覆被 board_types ∅ 交集排除)" | table | variation.rows:-1 table 复插行 / 表复插行 variation.rows[0] → 表首 | 验红 | 5ms | 3 |
|
||||
| table_structure_guard | smoke_variation_framework | 39 | "清单外 variant_id 返回空(读取通道在位)" | table | variation.rows.variant_id=nonexistent:-1 table 字面量插行 / 表插行 variation.rows:variant_id=nonexistent… | 验红 | 5ms | 3 |
|
||||
| table_structure_guard | smoke_variation_framework | 40 | "跨字段互锁负样本①:flat_damage + placement=any 被拒(只出现在未打开的格子)" | inject | variation_table.gd:28 key 错位:"variant_id" / variation_table.gd:29 key 错位:"variant_id" [var vid: … | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_variation_framework | 41 | "跨字段互锁负样本②:hide_number + trigger≠on_number_shown 被拒" | inject | variation_table.gd:28 key 错位:"variant_id" / variation_table.gd:29 key 错位:"variant_id" [var vid: … | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_difficulty_table | 42 | "DifficultyTable MVP 空表加载(结构位)" | table | difficulty.rows:-1 table 空表插行 / 空表插行 difficulty.rows(合成行灭 is_empty) | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_difficulty_table | 43 | "spawn 受理" | inject | unit_container.gd:37 key 错位:"battle" / unit_container.gd:38 key 错位:"battle" [hero_attack_type: S… | 验红 | 69ms | 0 |
|
||||
| table_structure_guard | smoke_difficulty_table | 44 | "空表零修饰(hp=%d atk=%d = 行值 %d/%d)" % [int(unit.hp), int(unit.atk), int(d0.hp), int(d0.atk)] | inject | unit_container.gd:57 num 1.0→2.0 / unit_container.gd:58 num 1.0→2.0 [var hp_mult: float = float(… | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_difficulty_table | 45 | "修饰后 spawn 受理" | inject | unit_container.gd:116 bool true→false / unit_container.gd:117 bool true→false [return true → ret… | 验红 | 5ms | 2 |
|
||||
| table_structure_guard | smoke_difficulty_table | 46 | "hp 修饰 ×1.5(%d→%d,max_hp 同步)" % [int(d0.hp), int(g2.hp)] | inject | unit_container.gd:57 key 错位:"hp_mult" / unit_container.gd:58 key 错位:"hp_mult" [var hp_mult: floa… | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_difficulty_table | 47 | "atk 修饰 ×2.0(%d→%d)" % [int(d0.atk), int(g2.atk)] | inject | unit_container.gd:58 key 错位:"atk_mult" / unit_container.gd:59 key 错位:"atk_mult" [var atk_mult: f… | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_difficulty_table | 48 | "越域修饰 spawn 受理" | inject | unit_container.gd:116 bool true→false / unit_container.gd:117 bool true→false [return true → ret… | 验红 | 5ms | 2 |
|
||||
| table_structure_guard | smoke_difficulty_table | 49 | "越域乘数 clamp 至 10(%d→%d)" % [int(d0.hp), int(enemy_system_c.all_enemies()[0].hp)] | inject | unit_container.gd:57 key 错位:"hp_mult" / unit_container.gd:58 key 错位:"hp_mult" [var hp_mult: floa… | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 50 | "格面资源十型封闭(第九型 gp 九型批 2026-09-20 / 第十型 treasure_item 秘宝内容批 2026-09-29——词表 v1.2)" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 51 | "奖励字典 18 行(九型×正负 18 格——aux 挖格投放四行已退役 2026-10-01 用户拍板甲:战斗/挖格不掉道具,秘宝唯一来路=三选一共享池〔节点/通关〕;清图槽独立批尾不计)" | table | reward.rows:-1 table 复插行 / 表复插行 reward.rows[0] → 表首 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 52 | "危险格负向直伤 %s power=%d(卡⑧投值)" % [rid, int(mine_power[rid])] | table | reward.rows[7].power:-1 table_set / 表行改写 reward.rows[7].power: 6 → 5 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 53 | "正向 cell 行权重 ≥1 全在池 / 负向行权重恒 0 不入池(正向合计 %d——配置推导)" % pos_weight | table | reward.rows[0].weight:-1 table_set / 表行改写 reward.rows[0].weight: 14 → 0 | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 54 | "gp 型两行(GP 袋 gp_gain 正向 weight 2 / 破财 gp_loss 负向 weight 0 不入池)" | table | reward.rows:-1 table 删行 / 表删行 reward.rows[18] | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_nine_types_gp_stream | 55 | "derive_at 纯函数不推计数器(统一流全局计数器恒 0——并流后纯函数语义不变,gp_drop 专用向量随分盐作废、统一向量中央断言)" | inject | rng_service.gd:103 return 取反 / rng_service.gd:104 return 取反 [return _counter → return not (_coun… | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_adventure_table | 0 | "db.adventure 已加载(adventure.tres 入 manifest)" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 1 | "AdventureTable.validate() 零违例(全键域检+档位配额结构锚在案)" | table | adventure.clear_heal_pct:-1 table_set / 表改写 adventure.clear_heal_pct: 20 → 200 | 验红 | 117ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 2 | "clear_heal_pct ∈ [0,100](%d——通关部分回血比例)" % int(_db.adventure.clear_heal_pct) | table | adventure.clear_heal_pct:-1 table_set / 表改写 adventure.clear_heal_pct: 20 → 200 | 验红 | 125ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 3 | "档位配额结构锚(四级 70/25/7/0——迭代 31 卡② 净删两件投放):%s = %d 张" % [tier, int(_db.adventure.TIER_QUOTAS[tier])… | table | adventure.curio_quota_attack_common:-1 table_set / 表改写 adventure.curio_quota_attack_common: 18 →… | 验红 | 125ms | 2 |
|
||||
| table_structure_guard | smoke_adventure_table | 4 | "令牌池总量 = 102 张(四级 普通 70/优秀 25/稀有 7/传说 0——迭代 31 卡② 净删两件投放 104→102)〔凭证裁削批 V5〕" | table | adventure.curio_quota_attack_common:-1 table_set / 表改写 adventure.curio_quota_attack_common: 18 →… | 验红 | 124ms | 2 |
|
||||
| table_structure_guard | smoke_adventure_table | 5 | "数值对(四级换代承袭):小GP 20/大GP 50 · 小增伤 +1/大 +2 · 小生命 +5/大 +10 · 小护甲 +1/大 +2" | table | adventure.curio_value_attack_common:-1 table_set / 表改写 adventure.curio_value_attack_common: 1 → … | 验红 | 126ms | 0 |
|
||||
| table_structure_guard | smoke_adventure_table | 6 | "恢复件 +6 当即回血(优秀档承袭)· AP +1(稀有档承袭)〔专长批 V14 换代〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 7 | "cap 占位在域(案②提前退役——99=实质无上限,实数归调参批)〔专长批 V8 形态面〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 8 | "同调位读数源=树同调位节点点亮数(迭代 21 T4 槽位收编——null 档求值 0;谓词表已退役)〔天赋树批 V14〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 9 | "新目录 12 件全量落表(旧 12 行删除;装配词表=活行 12 件零重复)〔秘宝批 V1〕" | table | treasure_items.rows:-1 table 复插行 / 表复插行 treasure_items.rows[0] → 表首 | 验红 | 119ms | 2 |
|
||||
| table_structure_guard | smoke_adventure_table | 10 | "命名锁定:12 件 item_id 与 display_name 逐件=正式名(C2 代号即名)〔秘宝批 V2 初筛〕" | table | treasure_items.rows[0].item_id:-1 table 删键 / 表行删键 treasure_items.rows[0].item_id | 验红 | 125ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 11 | "逐行解锁方式与契约 8 分配一致(钥石 8 件带价格、条件 4 件带谓词行互斥)+三档 7/3/2〔秘宝批 V1〕" | table | treasure_items.rows[0].item_id:-1 table 删键 / 表行删键 treasure_items.rows[0].item_id | 验红 | 117ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 12 | "装配→战斗贯通:enc.attunement=[morning_order] 起战 attune_has=true(注入面+只读出口)〔秘宝批换主语〕" | inject | battle_orchestrator.gd:198 return 取反 / battle_orchestrator.gd:199 return 取反 [return _attune_has(… | 验红 | 320ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 13 | "空装配基线:不带 attunement 起战 attune_has=false(off 态零扰动)〔秘宝批换主语〕" | inject | battle_orchestrator.gd:198 return 取反 / battle_orchestrator.gd:199 return 取反 [return _attune_has(… | 验红 | 309ms | 1 |
|
||||
| table_structure_guard | smoke_adventure_table | 14 | "新 12 行效果词零棋盘改写类(危险格/安全格分布同池冻结——真视/开格动作外无写面)〔秘宝批 V9〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 15 | "效果三方向覆盖在册(信息/行动资源/操作能力=plan·抉择刷新——12 件目录结构对齐设计权威)〔秘宝批 V10 覆盖半〕" | | | 异常 | — | — |
|
||||
| table_structure_guard | smoke_adventure_table | 16 | "装配面空目录合法态:白板档 12 件全未解锁且 mode 分派正确(空目录=合法可玩态)〔秘宝批 V18〕" | table | treasure_items.rows:-1 table 复插行 / 表复插行 treasure_items.rows[0] → 表首 | 验红 | 119ms | 2 |
|
||||
| table_structure_guard | smoke_meta | 56 | "MetaTable 非空 + validate 零错(三行族词表封闭/唯一/连续/域界/first≥repeat/ratio 全过)" | table | meta.boss_keystone[0].repeat_kill:-1 table 删键 / 表行删键 meta.boss_keystone[0].repeat_kill | 验红 | 5ms | 0 |
|
||||
| table_structure_guard | smoke_meta | 57 | "MetaTable 行族规模 3/3/2(Boss/换算恰三/Y 升级两档——forge_products 迭代 21 退役、workshop_items 迭代 22 退役)" | table | meta.boss_keystone:-1 table 复插行 / 表复插行 meta.boss_keystone[0] → 表首 | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_meta | 58 | "conversion attr 词表封闭恰全(三属性轴——meta_* 访问器可达)" | table | meta.conversion[0].attr:-1 table 删键 / 表行删键 meta.conversion[0].attr | 验红 | 5ms | 1 |
|
||||
| table_structure_guard | smoke_meta | 59 | "boss_keystone L1–L3 行连续可达且 first_kill ≥ repeat_kill 全行(首杀全量/重复小额)" | table | meta.boss_keystone[0].level_index:-1 table 删键 / 表行删键 meta.boss_keystone[0].level_index | 验红 | 5ms | 1 |
|
||||
| board_gen_reward | smoke_layout_cell_formula | 0 | "L%d %dx%d 板网格高 %d ≤ 可用高 %d − 预留 24(格边 %dpx——下缘不贴边不裁切)" % [L, b.width, b.height, grid_h, int(ava… | inject | board_view.gd:226 op ==→!= / board_view.gd:227 op ==→!= [if _board == null or _board.width == 0:… | 验红 | 214ms | 0 |
|
||||
| board_gen_reward | smoke_layout_cell_formula | 1 | "L%d 格边在 26–46 档内(%dpx)" % [L, int(cell)] | inject | board_view.gd:233 num 46→23(折半) / board_view.gd:234 num 46→23(折半) [_cell = float(clampi(cell, 26… | 验红 | 294ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 2 | "roll_board 受理" | inject | reward_economy.gd:41 if 取反 / reward_economy.gd:42 if 取反 [if eligible.is_empty(): → if not (eligi… | 验红 | 101ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 3 | "重复 roll_board 被拒(恰一次——double-roll 守卫)" | inject | reward_economy.gd:40 bool false→true / reward_economy.gd:41 bool false→true [return false → retu… | 验红 | 106ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 4 | "query_identity 投影 = {reward_id, cell_type, tier} 且五型封闭(样本 %s)" % str(types_seen.keys()) | inject | reward_economy.gd:112 key 错位:"reward_id" / reward_economy.gd:113 key 错位:"reward_id" [return {"re… | 验红 | 101ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 5 | "清单外坐标查询 = null(封锁格无身份同口径)" | inject | reward_economy.gd:110 return 取反 / reward_economy.gd:111 return 取反 [return null → return not (nul… | 验红 | 101ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 6 | "同格重复 grant 幂等(同一快照——受理恰一次)" | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 7 | "清单外 grant 拒绝" | inject | reward_economy.gd:136 return 取反 / reward_economy.gd:137 return 取反 [return null → return not (nul… | 验红 | 100ms | 0 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 8 | "清图批尾身份 = clear_blast(clear_default 唯一活行)" | inject | reward_economy.gd:342 op ==→!= / reward_economy.gd:343 op ==→!= [if row.reward_id == rid: → if r… | 验红 | 100ms | 1 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 9 | "清图奖励 power ∈ 表区间 [%d, %d](roll 值 %d——配置推导)" % [cb_range[0], cb_range[1], int(cs1.power)] | inject | reward_economy.gd:342 op ==→!= / reward_economy.gd:343 op ==→!= [if row.reward_id == rid: → if r… | 验红 | 101ms | 1 |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 10 | "grant_clear 同批次重调幂等" | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_reward_identity_unit | 11 | "映射退役后 grant 拒绝(生命周期闭合)" | inject | reward_economy.gd:133 return 取反 / reward_economy.gd:134 return 取反 [return null → return not (nul… | 验红 | 100ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 12 | "BoardGen 行解析 (%d,0)" % L | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 13 | "R1 ceil 解析 (2,3)→(2,4)(向上取整偏难)" | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 14 | "L%d 生成产物非空" % L | inject | board_generator.gd:206 key 错位:"inferability" / board_generator.gd:207 key 错位:"inferability" ["in… | 验红 | 85ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 15 | "L%d clearable(安全格 8 邻连通)" % L | inject | board_generator.gd:268 if 去not / board_generator.gd:269 if 去not [if not safe_set.has(c): → if sa… | 验红 | 1013ms | 4 |
|
||||
| board_gen_reward | smoke_board_generator | 16 | "L%d legality 全过" % L | inject | board_generator.gd:282 return 取反 / board_generator.gd:283 return 取反 [return reasons.is_empty() →… | 验红 | 509ms | 2 |
|
||||
| board_gen_reward | smoke_board_generator | 17 | "L%d inferability %.3f %s target %.2f(accept_mode=%s)" % [L, inf, "≥" if inf >= float(row.infera… | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 18 | "L%d 生成器产物零变体格(变异布置归战斗初始化第 4 步——生成器管线不布置,2026-09-19 用户拍板棋盘设置顺序)" % L | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 19 | "L%d 指标集输出降级标记与目标雷数(三分出口表)" % L | inject | board_generator.gd:341 key 错位:"target_mines" / board_generator.gd:342 key 错位:"target_mines" ["ta… | 验红 | 67ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 20 | "L%d 降级产物标记 = (accept_mode==accept_best)(%s→%s)" % [L, mode, str(b1.degraded_product)] | inject | board_generator.gd:353 op ==→!= / board_generator.gd:354 op ==→!= [b.degraded_product = accept_m… | 验红 | 1237ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 21 | "L%d 非法产物标记 = (accept_mode==accept_worst)(%s→%s)" % [L, mode, str(b1.illegal_product)] | inject | board_generator.gd:352 op ==→!= / board_generator.gd:353 op ==→!= [b.illegal_product = accept_mo… | 验红 | 1141ms | 2 |
|
||||
| board_gen_reward | smoke_board_generator | 22 | "L%d 降级/非法产物标记互斥(两出口不可同真)" % L | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 23 | "L%d 产物断言:实际雷数 %d ≤ 目标雷数 N=%d(先布后删只减不增)" % [L, int(b1.metrics.actual_mines), int(b1.metrics.targ… | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 24 | "L%d attempts_used ∈ [1,%d]" % [L, int(row.max_gen_attempts)] | inject | board_generator.gd:343 key 错位:"attempts_used" / board_generator.gd:344 key 错位:"attempts_used" ["… | 验红 | 1149ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 25 | "L%d 非法产物标记 = false" % L | inject | board_generator.gd:282 return 置假 / board_generator.gd:283 return 置假 [return reasons.is_empty() →… | 验红 | 1123ms | 2 |
|
||||
| board_gen_reward | smoke_board_generator | 26 | "L%d 同种子两次生成逐格相同" % L | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 27 | "L%d 异种子产物不同(退化护栏)" % L | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 28 | "L%d r0_max_cap 正式行投值在位(%d ≥ 出生保障面 9——板面 30%% 锚)" % [L, cap_val] | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_board_generator | 29 | "L%d 结构断言 R₀=%d ≤ cap=%d(R₀≤cap 重掷闸承载)" % [L, int(b1.metrics.r0_count), cap_val] | inject | board_generator.gd:282 return 取反 / board_generator.gd:283 return 取反 [return reasons.is_empty() →… | 验红 | 511ms | 2 |
|
||||
| board_gen_reward | smoke_board_generator | 30 | "L%d r0_cap_rejected 尝试事实指标在位(本图 %d 次触发)" % [L, int(b1.metrics.get("r0_cap_rejected", -1))] | inject | board_generator.gd:350 key 错位:"r0_cap_rejected" / board_generator.gd:351 key 错位:"r0_cap_rejected… | 验红 | 1278ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 31 | "L%d ring_removed=%d ≤ 剃雷域候选危险格数((3+2r)²−9——全域剃雷退役)" % [L, int(b1.metrics.get("ring_removed", 99… | inject | board_generator.gd:347 key 错位:"ring_removed" / board_generator.gd:348 key 错位:"ring_removed" ["ri… | 验红 | 1220ms | 0 |
|
||||
| board_gen_reward | smoke_board_generator | 32 | "L1 cap 压线 9:出图 R₀=%d %s(三分出口诚实降级——超阈即 accept_worst 非法标记,玩家永不卡死)" % [int(b9.metrics.r0_count), "… | inject | board_generator.gd:282 return 取反 / board_generator.gd:283 return 取反 [return reasons.is_empty() →… | 验红 | 490ms | 2 |
|
||||
| board_gen_reward | smoke_board_generator | 33 | "L1 cap 压线出图指标集完整(accept_mode=%s / 闸触发 %d 次)" % [String(b9.metrics.get("accept_mode", "")), int(… | inject | board_generator.gd:344 key 错位:"accept_mode" / board_generator.gd:345 key 错位:"accept_mode" ["acce… | 验红 | 1292ms | 2 |
|
||||
| board_gen_reward | smoke_power_interval | 34 | "区间行配对齐全且 power = floor 中点(配置推导 %d 行:%s)" % [interval_rows.size(), str(interval_rows.keys())] | table | reward.rows[3].power:-1 table_set / 表行改写 reward.rows[3].power: 2 → 1 | 验红 | 8ms | 0 |
|
||||
| board_gen_reward | smoke_power_interval | 35 | "24 板全区间行快照 power ∈ [power_min, power_max](含清图槽)" | table | reward.rows[3].power_max:-1 table_set / 表行改写 reward.rows[3].power_max: 2 → 1 | 验红 | 8ms | 1 |
|
||||
| board_gen_reward | smoke_power_interval | 36 | "定值行快照 power 恒等表值——区间批零外溢" | inject | reward_economy.gd:125 num 1→0 / reward_economy.gd:126 num 1→0 [return _snapshot(_row_by_id(rid),… | 验红 | 8ms | 0 |
|
||||
| board_gen_reward | smoke_power_interval | 37 | "区间行上下阶实际流动(≥2 样本的区间行须 ≥2 个不同 roll 值)" | | | 异常 | — | — |
|
||||
| board_gen_reward | smoke_power_interval | 38 | "定值行(lo=hi)roll 恒等表值" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_enemy_attack_type | 0 | "敌方 %d 行 attack_type 全填 normal(迭代 24 N3 轴开列,越轨行%s)" % [ _db.enemy.rows.size(), at_detail if at_d… | table | enemy.rows[0].attack_type:-1 table_set / 表行改写 enemy.rows[0].attack_type: normal → normal_x | 验红 | 185ms | 0 |
|
||||
| roll_multiplier | smoke_enemy_attack_type | 1 | "敌方单位快照 attack_type 非空(spawn 注入面——迭代 24 N3)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_enemy_attack_type | 2 | "克制矩阵命中证词:同种子三甲型实测 heavy %d == light %d − 1 · ward %d == light %d + 1(迭代 24 N3 全局平移 −1/0/+1)" % … | table | enemy.rows[5].level_index:-1 table_set / 表行改写 enemy.rows[5].level_index: 2 → 3 | 验红 | 1673ms | 0 |
|
||||
| roll_multiplier | smoke_enemy_attack_type | 3 | "敌方伤害技单据载荷 attack_type 非空(= %s——第 9 参传值面,迭代 24 N3)" % payload_at | table | enemy.rows[13].unit_count:-1 table_set / 表行改写 enemy.rows[13].unit_count: 1 → 0 | 验红 | 5850ms | 1 |
|
||||
| roll_multiplier | smoke_armor_roll | 4 | "查档 AC%d 全掷点域分布(100/75/50/25 = %s)" % [cfg.ac, str([dist[100], dist[75], dist[50], dist[25]])] | table | settlement.roll_tier_bounds:-1 table 删行 / 表删行 settlement.roll_tier_bounds[0] | 验红 | 1135ms | 1 |
|
||||
| roll_multiplier | smoke_armor_roll | 5 | "AC10 EV 锚:期望系数合计 %d/2000 = 期望减免 21.25%%(nat20 恒全额含内)" % ev_sum | table | settlement.roll_tier_bounds:-1 table 删行 / 表删行 settlement.roll_tier_bounds[0] | 验红 | 1131ms | 1 |
|
||||
| roll_multiplier | smoke_armor_roll | 6 | "nat20 种子可达(seed=%d——主角先手首掷命中 %d)" % [crit_seed, int(_db.settlement.crit_roll)] | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 19 | 验红 | 50384ms | 2 |
|
||||
| roll_multiplier | smoke_armor_roll | 7 | "nat20 → 行留档 roll=20 + crit 标记(主角先手普通分量)" | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 19 | 验红 | 50180ms | 2 |
|
||||
| roll_multiplier | smoke_armor_roll | 8 | "nat20 → 普通分量 ×2(%d = 2×%d,暴击倍率只乘该分量,穿刺/魔法不吃)" % [int(crit_rows.get("normal", -1)), int(_db.hero… | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 19 | 验红 | 50107ms | 2 |
|
||||
| roll_multiplier | smoke_armor_roll | 9 | "削弱重复授予 → 层数保持 1、剩余结算数重置 2(续时语义——结构性消饱和)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_armor_roll | 10 | "削弱单层池读数 = 行值(enemy_output 池单层贡献——×2 叠满触底 ×0 不可达,免伤轮根治)" | table | settlement.effect_pool_map.weaken:-1 table_set / 表行改写 settlement.effect_pool_map.weaken: enemy_o… | 验红 | 1139ms | 0 |
|
||||
| roll_multiplier | smoke_armor_roll | 11 | "AC11 攻击拍逐拍判定(×%d 拍全部落档域 {100,75,50,25})" % tiers.size() | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 0 | 验红 | 51284ms | 4 |
|
||||
| roll_multiplier | smoke_armor_roll | 12 | "折扣档实际流动(AC11 实测档位 %s——≥2 档可见)" % str(tier_distinct.keys()) | table | settlement.roll_faces:-1 table_set / 表改写 settlement.roll_faces: 20 → 0 | 验红 | 51319ms | 4 |
|
||||
| roll_multiplier | smoke_armor_roll | 13 | "全战斗流零 v=0 伤害行(伤害下限全局生效)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_armor_roll | 14 | "hero_attack/enemy_action 伤害行掷点读数+档位随行留档(P2 归因)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_armor_roll | 15 | "棋盘来源伤害行零掷点字段(爆裂/直伤/清障炸药/奖励即时必中全额)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_armor_roll | 16 | "棋盘克制直伤贴底 → 下限 1(点数 2 vs 不利修正 −1)" | table | settlement.damage_floor:-1 table_set / 表改写 settlement.damage_floor: 1 → 2 | 验红 | 1152ms | 1 |
|
||||
| roll_multiplier | smoke_armor_roll | 17 | "克制修正触底穿透 → 下限 1(点数 1 vs 修正 −3)" | table | settlement.damage_floor:-1 table_set / 表改写 settlement.damage_floor: 1 → 2 | 验红 | 1123ms | 1 |
|
||||
| roll_multiplier | smoke_armor_roll | 18 | "空桶不吃修正恒 0(零点数分量无伤害可落地——边界不变不受下限影响)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_pool_wiring | 19 | "单分量基线在位(normal 分量 = 落地值、基线 %d——充能退役批)" % base_v | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_pool_wiring | 20 | "增伤经乘区加成合计(%d → %d = ×1.5——attack_up 直乘旁路退役,覆盖面=攻击合计)" % [base_v, int(up_row.get("value", -1))] | table | status_effects.rows[0].effect_id:-1 table 删键 / 表行删键 status_effects.rows[0].effect_id | 验红 | 194ms | 0 |
|
||||
| roll_multiplier | smoke_pool_wiring | 21 | "乏力经乘区削减合计(%d → %d = ×0.75)" % [base_v, int(sapped_row.get("value", -1))] | table | status_effects.rows[5].effect_id:-1 table 删键 / 表行删键 status_effects.rows[5].effect_id | 验红 | 194ms | 0 |
|
||||
| roll_multiplier | smoke_pool_wiring | 22 | "硬化折半方向(%d → %d = ×0.5 且 < 基线——敌方防御池负值减伤,翻倍 bug 退役)" % [base_v, int(fortify_row.get("value", -1)… | table | status_effects.rows[7].effect_id:-1 table 删键 / 表行删键 status_effects.rows[7].effect_id | 验红 | 203ms | 0 |
|
||||
| roll_multiplier | smoke_damage_types | 23 | "goblin 护甲 = light(轻甲——教学位)" | table | enemy.rows[0].unit_count:-1 table_set / 表行改写 enemy.rows[0].unit_count: 1 → 0 | 验红 | 412ms | 0 |
|
||||
| roll_multiplier | smoke_damage_types | 24 | "bugbear 护甲 = light(护甲类型重配批 2026-09-18:关卡 1 全轻甲)" | table | enemy.rows[2].unit_count:-1 table_set / 表行改写 enemy.rows[2].unit_count: 1 → 0 | 验红 | 400ms | 0 |
|
||||
| roll_multiplier | smoke_damage_types | 25 | "ogre_chief 护甲 = light(Boss 行集——护甲类型重配批 2026-09-18:关卡 1 全轻甲)" | table | enemy.rows[3].armor_type:-1 table_set / 表行改写 enemy.rows[3].armor_type: light → light_x | 验红 | 397ms | 0 |
|
||||
| roll_multiplier | smoke_damage_types | 26 | "普通行:轻甲 0 / 魔法护甲 +1 / 重甲 −1(加法核)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_damage_types | 27 | "穿刺行:轻甲 −1 / 魔法护甲 +1 / 重甲 0 中性(用户拍板)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_damage_types | 28 | "魔法行:轻甲 0 / 魔法护甲 −1 / 重甲 +1(加法核)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_damage_types | 29 | "标错封印产生 seal_miss 归因行(×%d)" % miss_rows | table | enemy.rows[4].level_index:-1 table 删键 / 表行删键 enemy.rows[4].level_index | 验红 | 68ms | 2 |
|
||||
| roll_multiplier | smoke_damage_types | 30 | "标错封印兑付该安全格资源的负向字典行(×%d——attack/defense/weaken 效果行或 heal 直伤行)" % negative_rows | table | enemy.rows[4].level_index:-1 table 删键 / 表行删键 enemy.rows[4].level_index | 验红 | 72ms | 2 |
|
||||
| roll_multiplier | smoke_damage_types | 31 | "封印命中兑付该危险格资源的正向字典行(×%d——充能退役后无魔法分量,正向=格面资源)" % hit_rows | table | enemy.rows[4].level_index:-1 table 删键 / 表行删键 enemy.rows[4].level_index | 验红 | 67ms | 2 |
|
||||
| roll_multiplier | smoke_damage_types | 32 | "标错惩罚轮回放断言:同种子步骤流逐行相同(类型化负向兑付确定性)" | | | 异常 | — | — |
|
||||
| roll_multiplier | smoke_attack_chain_fresh_pool | 33 | "fresh 池回归战斗启动(Boss 行)" | inject | battle_orchestrator.gd:380 asgn 置null / battle_orchestrator.gd:381 asgn 置null [_ledger = ledger_… | 验红 | 249ms | 1 |
|
||||
| roll_multiplier | smoke_attack_chain_fresh_pool | 34 | "非施放攻击拍采样充足(%d 拍——增益施放行零兑付为设计语义不计)" % ticks.size() | inject | battle_orchestrator.gd:304 key 错位:"[战斗结算] begin_battle " / battle_orchestrator.gd:305 key 错位:"[战… | 验红 | 324ms | 0 |
|
||||
| roll_multiplier | smoke_attack_chain_fresh_pool | 35 | "fresh 池非蓄力拍 d_tick = max(1, 掷点档位基线)(Boss 攻击链健康——Bug#2 回归断言)" | | | 异常 | — | — |
|
||||
| seal_polarity | smoke_seal_ap_exhausted | 0 | "回归战斗启动(Boss 行——D0 20HP 级会被盲挖粉尘秒杀,无法承载封印回归场景)" | state | battle_orchestrator.gd:43 num 0→1 / [状态·初值] battle_orchestrator.gd:44 num 0→1 [var round_index :… | 验红 | 113ms | 4 |
|
||||
| seal_polarity | smoke_seal_ap_exhausted | 1 | "%d 次挖掘后恰剩 1 AP(phase=%s ap=%d)" % [ap_total - 1, str(settlement.action_economy.phase), settleme… | state | battle_orchestrator.gd:43 num 0→1 / [状态·初值] battle_orchestrator.gd:44 num 0→1 [var round_index :… | 验红 | 131ms | 4 |
|
||||
| seal_polarity | smoke_seal_ap_exhausted | 2 | "仍存在可挖目标(封印目标来源)" | state | battle_orchestrator.gd:43 num 0→1 / [状态·初值] battle_orchestrator.gd:44 num 0→1 [var round_index :… | 验红 | 114ms | 4 |
|
||||
| seal_polarity | smoke_seal_ap_exhausted | 3 | "末点 AP 封印被受理" | state | battle_orchestrator.gd:43 num 0→1 / [状态·初值] battle_orchestrator.gd:44 num 0→1 [var round_index :… | 验红 | 113ms | 4 |
|
||||
| seal_polarity | smoke_seal_ap_exhausted | 4 | "封印动作耗尽 AP 触发轮末结算并进入第 2 轮(rounds=%s)" % str(rounds) | state | battle_orchestrator.gd:20 key 错位:"decay" / [状态·初值] battle_orchestrator.gd:21 key 错位:"decay" [con… | 验红 | 362ms | 0 |
|
||||
|
||||
## 二、异常清单(打不红的条+原因)
|
||||
|
||||
- system_test:smoke_scene_split #1「menu.start_overlay != null and menu.lvbtn != null and menu.resumebtn != null and menu.campbtn !=…」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_scene_split #2「menu.start_overlay.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形;断言表达式读 schema 常量(大写成员,宿主 preload 编译期绑定原件)——…
|
||||
- system_test:smoke_scene_split #3「menu.mouse_filter == Control.MOUSE_FILTER_IGNORE」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形;断言表达式读 schema 常量(大写成员,宿主 preload 编译期绑定原件)——…
|
||||
- system_test:smoke_scene_split #4「camp.camp_overlay != null」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_scene_split #5「not camp.camp_overlay.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_scene_split #6「adv.battle_root != null and adv.stage != null and adv.board_zone != null and adv.board_view != n…」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #12「db.is_ready and db.hero != null」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #13「AudioServer.is_bus_mute(master) == (ss.volume_linear <= 0.001) and is_equal_approx(AudioServer.g…」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #14「ui_kit.motion_scale == (0.5 if ss.reduced_motion else 1.0)」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #16「not sm.has_breakpoint() and not main._resume_btn.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #18「sm.keystone_balance() == 0 and not sm.has_breakpoint() and sm.adventure_total() == 0」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #20「not (FileAccess.file_exists("user://save.json") and not FileAccess.file_exists(sm.slot_path(1)))」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形;断言表达式含磁盘读取(FileAccess/DirAccess)——内存内改坏不可达,…
|
||||
- system_test:smoke_boot_chain #21「not sm.has_breakpoint() and not main._resume_btn.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #23「not main._resume_btn.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #25「not main.debug_overlay.visible」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain #—「」——跑后基线未复绿——存在跨试跑状态残留,须人工排查
|
||||
- system_test:smoke_run_lifecycle #28「main.run_scope.hints_shown.is_empty()」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_run_lifecycle #29「main.run_scope.adventure.abandon()」——复验未红(改坏候选 1 个均不复现——疑似非确定断言)
|
||||
- system_test:smoke_run_lifecycle #35「not sm.has_breakpoint()」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_lifecycle_matrix #39「main.run_scope.settlement == null or not main.run_scope.settlement.is_battle_live()」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_lifecycle_matrix #40「main.run_scope.adventure.abandon()」——复验未红(改坏候选 1 个均不复现——疑似非确定断言)
|
||||
- system_test:smoke_lifecycle_matrix #41「finished.done and main._end_overlay.is_open()」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_lifecycle_matrix #44「false」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_lifecycle_matrix #45「main.run_scope.adventure != null and main.run_scope.adventure != first_adv」——预算内未找到能翻红的改坏(试跑 600 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_lifecycle_matrix #46「main.run_scope.adventure.abandon()」——复验未红(改坏候选 1 个均不复现——疑似非确定断言)
|
||||
- table_structure_guard:smoke_ac_swap_guard #25「"hero_defense 池 percent 行叠满不可触池底(墙最深%s > clamp_lo %d——单效果归零结构性不可达)" % [ wall_detail if wall_deta…」——预算内未找到能翻红的改坏(试跑 1608 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_enemy_bands #19「"hobgoblin 缺口登记随行(表文件注释在位——缺口不静默)〔fv25〕"」——预算内未找到能翻红的改坏(试跑 708 轮,武器=table, inject)——死断言候选或改坏面缺形;断言表达式含磁盘读取(FileAccess/DirAccess)——内存内改坏不可达,…
|
||||
- table_structure_guard:smoke_nine_types_gp_stream #50「"格面资源十型封闭(第九型 gp 九型批 2026-09-20 / 第十型 treasure_item 秘宝内容批 2026-09-29——词表 v1.2)"」——预算内未找到能翻红的改坏(试跑 639 轮,武器=table, inject)——死断言候选或改坏面缺形;断言表达式读 schema 常量(大写成员,宿主 preload 编译期绑定原件)——…
|
||||
- table_structure_guard:smoke_adventure_table #0「"db.adventure 已加载(adventure.tres 入 manifest)"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_adventure_table #6「"恢复件 +6 当即回血(优秀档承袭)· AP +1(稀有档承袭)〔专长批 V14 换代〕"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_adventure_table #7「"cap 占位在域(案②提前退役——99=实质无上限,实数归调参批)〔专长批 V8 形态面〕"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_adventure_table #8「"同调位读数源=树同调位节点点亮数(迭代 21 T4 槽位收编——null 档求值 0;谓词表已退役)〔天赋树批 V14〕"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_adventure_table #14「"新 12 行效果词零棋盘改写类(危险格/安全格分布同池冻结——真视/开格动作外无写面)〔秘宝批 V9〕"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- table_structure_guard:smoke_adventure_table #15「"效果三方向覆盖在册(信息/行动资源/操作能力=plan·抉择刷新——12 件目录结构对齐设计权威)〔秘宝批 V10 覆盖半〕"」——预算内未找到能翻红的改坏(试跑 3000 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_reward_identity_unit #6「"同格重复 grant 幂等(同一快照——受理恰一次)"」——预算内未找到能翻红的改坏(试跑 339 轮,武器=inject, state)——死断言候选或改坏面缺形;标签含幂等语义——确定性快照的内容等值在单行确定性变异下难破,疑似结构性打不红,须人工…
|
||||
- board_gen_reward:smoke_reward_identity_unit #10「"grant_clear 同批次重调幂等"」——预算内未找到能翻红的改坏(试跑 339 轮,武器=inject, state)——死断言候选或改坏面缺形;标签含幂等语义——确定性快照的内容等值在单行确定性变异下难破,疑似结构性打不红,须人工…
|
||||
- board_gen_reward:smoke_board_generator #12「"BoardGen 行解析 (%d,0)" % L」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #13「"R1 ceil 解析 (2,3)→(2,4)(向上取整偏难)"」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #17「"L%d inferability %.3f %s target %.2f(accept_mode=%s)" % [L, inf, "≥" if inf >= float(row.infera…」——复验未红(改坏候选 1 个均不复现——疑似非确定断言)
|
||||
- board_gen_reward:smoke_board_generator #18「"L%d 生成器产物零变体格(变异布置归战斗初始化第 4 步——生成器管线不布置,2026-09-19 用户拍板棋盘设置顺序)" % L」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #22「"L%d 降级/非法产物标记互斥(两出口不可同真)" % L」——复验未红(改坏候选 1 个均不复现——疑似非确定断言)
|
||||
- board_gen_reward:smoke_board_generator #23「"L%d 产物断言:实际雷数 %d ≤ 目标雷数 N=%d(先布后删只减不增)" % [L, int(b1.metrics.actual_mines), int(b1.metrics.targ…」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #26「"L%d 同种子两次生成逐格相同" % L」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #27「"L%d 异种子产物不同(退化护栏)" % L」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_board_generator #28「"L%d r0_max_cap 正式行投值在位(%d ≥ 出生保障面 9——板面 30%% 锚)" % [L, cap_val]」——预算内未找到能翻红的改坏(试跑 60 轮,武器=inject, table)——死断言候选或改坏面缺形;断言表达式读 schema 常量(大写成员,宿主 preload 编译期绑定原件)——路…
|
||||
- board_gen_reward:smoke_power_interval #37「"区间行上下阶实际流动(≥2 样本的区间行须 ≥2 个不同 roll 值)"」——预算内未找到能翻红的改坏(试跑 596 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- board_gen_reward:smoke_power_interval #38「"定值行(lo=hi)roll 恒等表值"」——预算内未找到能翻红的改坏(试跑 596 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_enemy_attack_type #1「"敌方单位快照 attack_type 非空(spawn 注入面——迭代 24 N3)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_armor_roll #9「"削弱重复授予 → 层数保持 1、剩余结算数重置 2(续时语义——结构性消饱和)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_armor_roll #13「"全战斗流零 v=0 伤害行(伤害下限全局生效)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_armor_roll #14「"hero_attack/enemy_action 伤害行掷点读数+档位随行留档(P2 归因)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_armor_roll #15「"棋盘来源伤害行零掷点字段(爆裂/直伤/清障炸药/奖励即时必中全额)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_armor_roll #18「"空桶不吃修正恒 0(零点数分量无伤害可落地——边界不变不受下限影响)"」——预算内未找到能翻红的改坏(试跑 600 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_pool_wiring #19「"单分量基线在位(normal 分量 = 落地值、基线 %d——充能退役批)" % base_v」——预算内未找到能翻红的改坏(试跑 500 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_damage_types #26「"普通行:轻甲 0 / 魔法护甲 +1 / 重甲 −1(加法核)"」——预算内未找到能翻红的改坏(试跑 500 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_damage_types #27「"穿刺行:轻甲 −1 / 魔法护甲 +1 / 重甲 0 中性(用户拍板)"」——预算内未找到能翻红的改坏(试跑 500 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_damage_types #28「"魔法行:轻甲 0 / 魔法护甲 −1 / 重甲 +1(加法核)"」——预算内未找到能翻红的改坏(试跑 500 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_damage_types #32「"标错惩罚轮回放断言:同种子步骤流逐行相同(类型化负向兑付确定性)"」——预算内未找到能翻红的改坏(试跑 500 轮,武器=table, inject)——死断言候选或改坏面缺形
|
||||
- roll_multiplier:smoke_attack_chain_fresh_pool #35「"fresh 池非蓄力拍 d_tick = max(1, 掷点档位基线)(Boss 攻击链健康——Bug#2 回归断言)"」——预算内未找到能翻红的改坏(试跑 500 轮,武器=inject, state)——死断言候选或改坏面缺形
|
||||
- system_test:smoke_boot_chain——跑后基线未复绿(存在跨试跑状态残留)
|
||||
|
||||
## 三、汇总
|
||||
|
||||
- system_test:split_tail——1 条(验红 1 / 异常 0)· 改坏试跑 1 轮 · 跑后基线复绿
|
||||
- system_test:smoke_scene_split——11 条(验红 5 / 异常 6)· 改坏试跑 600 轮 · 跑后基线复绿
|
||||
- system_test:smoke_boot_chain——15 条(验红 6 / 异常 9)· 改坏试跑 600 轮 · 跑后基线**未复绿**
|
||||
- system_test:smoke_run_lifecycle——11 条(验红 8 / 异常 3)· 改坏试跑 600 轮 · 跑后基线复绿
|
||||
- system_test:smoke_lifecycle_matrix——10 条(验红 4 / 异常 6)· 改坏试跑 600 轮 · 跑后基线复绿
|
||||
- system_test:stage_faces——1 条(验红 1 / 异常 0)· 改坏试跑 10 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_ac_swap_guard——12 条(验红 11 / 异常 1)· 改坏试跑 1608 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_enemy_bands——4 条(验红 3 / 异常 1)· 改坏试跑 708 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_variation_framework——9 条(验红 9 / 异常 0)· 改坏试跑 103 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_difficulty_table——8 条(验红 8 / 异常 0)· 改坏试跑 131 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_nine_types_gp_stream——6 条(验红 5 / 异常 1)· 改坏试跑 639 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_adventure_table——17 条(验红 11 / 异常 6)· 改坏试跑 3000 轮 · 跑后基线复绿
|
||||
- table_structure_guard:smoke_meta——4 条(验红 4 / 异常 0)· 改坏试跑 41 轮 · 跑后基线复绿
|
||||
- board_gen_reward:smoke_layout_cell_formula——2 条(验红 2 / 异常 0)· 改坏试跑 14 轮 · 跑后基线复绿
|
||||
- board_gen_reward:smoke_reward_identity_unit——10 条(验红 8 / 异常 2)· 改坏试跑 339 轮 · 跑后基线复绿
|
||||
- board_gen_reward:smoke_board_generator——22 条(验红 13 / 异常 9)· 改坏试跑 60 轮 · 跑后基线复绿
|
||||
- board_gen_reward:smoke_power_interval——5 条(验红 3 / 异常 2)· 改坏试跑 596 轮 · 跑后基线复绿
|
||||
- roll_multiplier:smoke_enemy_attack_type——4 条(验红 3 / 异常 1)· 改坏试跑 600 轮 · 跑后基线复绿
|
||||
- roll_multiplier:smoke_armor_roll——15 条(验红 10 / 异常 5)· 改坏试跑 600 轮 · 跑后基线复绿
|
||||
- roll_multiplier:smoke_pool_wiring——4 条(验红 3 / 异常 1)· 改坏试跑 500 轮 · 跑后基线复绿
|
||||
- roll_multiplier:smoke_damage_types——10 条(验红 6 / 异常 4)· 改坏试跑 500 轮 · 跑后基线复绿
|
||||
- roll_multiplier:smoke_attack_chain_fresh_pool——3 条(验红 2 / 异常 1)· 改坏试跑 500 轮 · 跑后基线复绿
|
||||
- seal_polarity:smoke_seal_ap_exhausted——5 条(验红 5 / 异常 0)· 改坏试跑 9 轮 · 跑后基线复绿
|
||||
|
||||
合计 189 条:验红 131 / 异常 58。
|
||||
@@ -309,3 +309,123 @@
|
||||
7. 波 2 改名后把旧目录名 `game/smoke` 加入熵增闸 RETIRED 清单(防复发)。
|
||||
8. dump_battle/experiment_density 台账「一次性」件**只搬不删**。
|
||||
9. 待办清单:570 条目删除归 batch-closure,波 2 不代删。
|
||||
|
||||
## 十一、波 1 搬家代理二施工记录(G9/G10/G11/G12 —— 2026-10-22 搬家代理二)
|
||||
|
||||
**作业形态=纯文本搬家**:零测试运行、零 git 提交、`game/smoke/smoke_all.gd` 与他人宿主零改动(我名下 22 个套函数与消费 helper 原文全部原地保留,删除归收尾批);manifest(run_all.gd)登记未做(归收尾装配统一登记)。六件宿主全部新建、均为未提交工作区文件——**以下各套状态=已搬运(待装配验证)**。
|
||||
|
||||
**G9 单元·元进度与锻造 → game/tests/unit/core/meta_progression_forge_test.gd(新建):六套 133 条全部迁入,已搬运(待装配验证)。**
|
||||
- _meta_pricing_and_buy(4 条)/_meta_settle_and_workshop(42 条)/_meta_injection(10 条)/_smoke_forge_axes(33 条)/_smoke_tree(25 条)/_smoke_tree_rules(19 条)——各条已搬运(待装配验证)。
|
||||
- 挂载终态=宿主 `_init` 自建 `_db`(load_tables(true) 失败不中止承 G2–G5 同款);套执行序沿源(_smoke_meta 薄壳序 pricing→settle_ws→injection→forge_axes,接 _run_core_smoke 尾段 tree→tree_rules)。
|
||||
- 消费 helper(全部宿主自持私有副本):`_META_SMOKE_PATHS`(全 18 路径)+`_meta_smoke_cleanup/_meta_new_save/_fresh_rng`+`_run_battle/_auto_play_round`(**过渡副本**——去 G6 专属「收束相位回 Idle」断言,G4/G5 同款零断言纯驱动形态)+`AutoPlayer` 按现路径 `res://smoke/auto_player.gd` preload。全局 class_name 裸用:Attunement/EffectEngine/EffectContext(G3 先例)。
|
||||
|
||||
**G10 单元·存档域 → game/tests/unit/core/save_manager_domain_test.gd(新建):91 条迁入,已搬运(待装配验证)。**
|
||||
- _smoke_save 60 条(原 70 条;⑨ 摘要集成块基点 :6807–6831 共 10 条按裁决三**转办集成**,宿主内留转办注记)——已搬运(待装配验证)。
|
||||
- _smoke_save_slots 31 条——已搬运(待装配验证)。
|
||||
- 消费 helper:`_fresh_rng`(自持副本)+`_db` 夹具(v2 续玩受理/收束链夹具消费);_smoke_save_slots 零 helper 自足。paths[8] `smoke_save_integration.json` 仅被转办块消费,名册照源保留(段首尾清场循环零害)。
|
||||
|
||||
**G11 单元·呈现投影与主题 → game/tests/unit/presentation/theme_projection_test.gd(新建):十套 120 条迁入,已搬运(待装配验证)。**
|
||||
- _smoke_type_glow(24)/_smoke_battle_log_view(6)/_smoke_global_theme(22)/_smoke_button_five_states(23)/_smoke_texture_filter(9)/_smoke_contrast_inks(9)/_smoke_element_details(8)/_smoke_diag_button_retired(7)/_status_panel_projection(4)/_career_overlay_projection(8)——各条已搬运(待装配验证)。
|
||||
- _smoke_playtest_logger 8 条按裁决七改判集成——**不随本宿主,转办**(见下方转办清单)。
|
||||
- 挂载终态=`_db`+`_rng`(master 种子 42 沿源)双夹具;套执行序沿源(_run_core_smoke 序+_smoke_meta 薄壳尾序 status_panel→career_overlay)。
|
||||
- 消费 helper(全部自持私有副本):`_theme_rel_luminance/_theme_contrast`+微光簇全件(`_GLOW_FIXTURE_TYPES` 常量+`_glow_type_overrides/_glow_blocked` 成员+`_glow_fixture_identity/_glow_unrevealed_neighbors/_glow_expected_set/_glow_key_set_equal/_glow_map_equal`)+`_mk_stream`+`_ms_digest`+`_META_SMOKE_PATHS/_meta_smoke_cleanup/_meta_new_save`(G9 同名 helper 双份过渡,收尾批去重)+`AutoPlayer` 现路径 preload。全局类裸用:UiKit(微光五组映射);ThemeDB 单例直用。
|
||||
- **待装配验证要点**:_smoke_global_theme 依赖 ThemeDB 项目主题在座,裁决四要求实跑验证(本批禁跑测试未做)——`--script` 取不到则整体降级系统测试宿主,实跑证据记回本账本。
|
||||
|
||||
**G12 单元·源码契约+集成 → 三宿主,35 条迁入,已搬运(待装配验证)。**
|
||||
- unit/data_config/rng_stream_boot_test.gd(新建):_initialize 13 条——已搬运(待装配验证)。:70「事件日志会话落盘」1 条按裁决一**转办集成**。宿主接线注记:`_initialize` 是 MainLoop 虚拟入口,宿主内改名 `_smoke_initialize` 由 `_init` 显式调用(断言零动)。
|
||||
- unit/contracts/source_guard_test.gd(新建,裁决五新设子目录):_smoke_type_gate 2+_smoke_hygiene_gates 6——已搬运(待装配验证)。零夹具零 helper(仓库文件直读面)。
|
||||
- integration/node_map_templates_test.gd(新建,首个集成新增件):_smoke_node_map_templates 14 条(裁决六整套集成不拆)——已搬运(待装配验证)。`_db` 夹具(level.rows 模板池);消费 helper:`_smoke_rest_stub`(自持私有副本——cond 内 `Callable(self, "_smoke_rest_stub")` 引用名照源)。
|
||||
- **编排壳记注**:_initialize 的编排骨架(load_ok 才进 _run_core_smoke、尾接 _split_tail)、_split_tail 瘦壳、对 _smoke_type_gate/_smoke_hygiene_gates/_smoke_node_map_templates 与我组各套的 _run_core_smoke/_smoke_meta 调用行——**编排非断言,随 smoke_all.gd 收尾整体删除退役**,不搬。
|
||||
|
||||
**对账与自检(纯文本)**:
|
||||
- 六宿主 Kit.check 计数:13+8+14+133+91+120=**379**=名下总条数(390−转办 11)。
|
||||
- 标签逐字对账:六文件 379 条首参字面量与冻结清单(S01 去 14 号、S76 去 :6807–6831、S36 整章除外)脚本比对**零缺失零多出**(超出抽 5 条要求的全量比对)。
|
||||
- 粗检:六文件括号/引号平衡、无裸 `check(` 残留;git 状态=仅新增六文件,smoke_all.gd 他人文件零改动。
|
||||
|
||||
**转办清单(集成散条,宿主未指定——待主会话/装配批落位)**:
|
||||
1. _initialize :70「事件日志会话落盘(2026-09-27 统一流裁决)」1 条(裁决一)。
|
||||
2. _smoke_save ⑨ 摘要集成块基点 :6807–6831 共 10 条(裁决三;消费 `res://smoke/level_autoplay.gd`)。
|
||||
3. _smoke_playtest_logger 整套 8 条(裁决七;消费 playtest_logger+真实结算流)。
|
||||
|
||||
**异常与待主会话**:① _smoke_global_theme ThemeDB 实跑验证缺位(见上,装配验证轮补);② 冻结清单处置列对上述 11 条仍写「迁单元测试」(波 0 生成早于裁决、清单禁改)——以本节转办记录为准;③ 装配验证轮须将六宿主登记进 run_all.gd manifest(含集成件 node_map_templates_test,同入口同协议)。
|
||||
|
||||
## 十二、波 1 搬家代理一施工记录(G5 剩余/G6/G7/G8 —— 2026-10-22 搬家代理一)
|
||||
|
||||
**作业形态=纯文本搬家**:零测试运行、零 git 提交、`game/smoke/smoke_all.gd` 与他人宿主零改动(名下 31 个套行对应函数与消费 helper 原文全部原地保留,删除归收尾批);manifest(run_all.gd)登记未做(归收尾装配统一登记)。**以下各套状态=已搬运(待装配验证)**。
|
||||
|
||||
**G5 单元·封印与极性(剩余七套)→ game/tests/unit/battle_settlement/seal_polarity_test.gd(既有宿主 append-only 追加):67 条迁入,已搬运(待装配验证)。**
|
||||
- _smoke_seal_irreversible_quadrants(21 条)/_smoke_clear_reward_chain(5 条,源内调用 _smoke_clear_reward_zero_paths 随迁)/_smoke_clear_reward_zero_paths(11 条)/_smoke_refresh_provenance_guard(5 条)/_smoke_polarity_routing(12 条)/_smoke_negative_dictionary(8 条)/_smoke_resource_surface(5 条)——各条已搬运(待装配验证)。
|
||||
- 追加形态=`_init` 套1 调用行后插六个调用行(套执行序沿源编排基点序:chain→provenance→routing→quadrants→negative→resource——provenance 依赖 chain 写入的 `_regular_clear_reward_rows` 基线)+文件尾追加七套函数与 helper;**套1 既有字节零改动**(git diff=728 insertions / 0 deletions,CRLF 沿用原文件风格)。
|
||||
- 消费 helper(宿主自持私有副本,按账本「随首用套迁入」随本批首次消费迁入):const `CLEAR_SMOKE_DEPTH/CLEAR_SMOKE_HERO_HP`+成员 `_regular_clear_reward_rows`+const `POSITIVE_EFFECTS/NEGATIVE_EFFECTS`+`_find_seal_target/_auto_play_round/_run_full_clear/_drive_clear/_rows_of_type/_has_source_row/_has_effect_id/_polarity_probe_accepts/_run_polarity_probe/_rows_at`+`_run_battle`(**过渡副本**——去 G6 专属「收束相位回 Idle」断言,G4 同款零断言纯驱动形态);AutoPlayer 复用套1 既有 preload。
|
||||
- **「他人已完成宿主」处置记账**:seal_polarity_test.gd 是账本 §五 落位计划里 G5 的预定宿主(其文件头注即写明八套),剩余七套唯一去处就是本文件——按「套1 内容勿动」执行 append-only 追加;若主会话要求另立文件请改账并移转。
|
||||
|
||||
**G6 单元·轮内流与技能池+变异 → 双宿主,134 条迁入,已搬运(待装配验证)。**
|
||||
- unit/battle_settlement/round_flow_skill_pool_test.gd(新建):_smoke_full_battle(7 条标签,编排双调用 L1/L2)+_run_battle(**1 条「收束相位回 Idle」本体随迁**——G4/G5/G9 宿主零断言副本以其为本源)+_smoke_active_refresh(17)+_smoke_encounter_roll(8,含全源唯一 quiet=true 一条——Kit 通道无此参,只影响 PASS 行打印,计数/红绿同口径,标签与 cond 逐字保留并加接线注记)+_smoke_settlement_segments(5)+_smoke_skill_pool 调度壳(0 条,源内序调五件)+_smoke_skill_pool_data(27)+_smoke_skill_pool_replay_independence(2)+_smoke_skill_pool_ev_anchor(1)+_smoke_skill_pool_death_void(5)+_smoke_skill_pool_validation_reject(13)+_smoke_debuff_rider(3)+_smoke_counter_buckets(6)=95 条。套执行序沿源编排基点调用序(full_battle×2→active_refresh→encounter_roll→settlement_segments→skill_pool 壳→counter_buckets)。
|
||||
- unit/battle_settlement/variant_placement_test.gd(新建):_smoke_variant_placement(9 条标签,编排双调用 L1/L2)+_smoke_global_variant(30)=39 条。
|
||||
- 消费 helper(各自持私有副本):round_flow=`_auto_play_round/_active_refresh_replay/_row_kind_of/_boss_depth/_first_encounter_band/_level_active_nodes/_level_battle_nodes/_encounter_replay/_row_phase/_fresh_rng/_record_pool_trajectories/_has_err_category`+AutoPlayer 现路径 preload+全局类裸用 SkillLottery/SettlementTable/EffectEngine(G3 先例);variant_placement=class `_CountVariantRng`(extends RngServiceCore)+`_variant_dump/_arr_str_eq/_rows_weights_equal/_rows_weight_map/_board_resource_dump/_errs_has_cross_field`。
|
||||
|
||||
**G7 单元·冒险结构与专长 → game/tests/unit/core/adventure_feats_test.gd(新建):133 条迁入,已搬运(待装配验证)。**
|
||||
- _smoke_adventure_api(11)/_smoke_adventure(54)/_smoke_feats(68=源 71−转办集成 3)——已搬运(待装配验证)。
|
||||
- 剪切记账:_smoke_feats 断点往返块(基点 :1420–1426 三条+其 save_manager 驱动代码)按裁决②整体移出宿主、宿主内留转办注记;表还原行 `_db.feats = live_rows` 原样保留(后续 V3 订阅面断言依赖现行表)。
|
||||
- 消费 helper(自持私有副本):`_smoke_find_token/_api_mark_started/_api_mark_choices/_api_mark_node/_adv_drive_to_shop/_adv_st/_battle_st/_fresh_rng/_level_active_nodes`;`res://smoke/level_autoplay.gd` 按现路径局部 load;全局类裸用 FeatTable/EffectEngine。
|
||||
|
||||
**G8 单元·关卡图与 GP 商店 → game/tests/unit/core/level_shop_economy_test.gd(新建):141 条迁入,已搬运(待装配验证)。**
|
||||
- _smoke_level(11)/_smoke_level_graph(54)/_smoke_gp_wallet(9)/_smoke_gp_escrow(12)/_smoke_shop_room(22)/_smoke_shop_graph(6)/_smoke_shop_pool(27)——已搬运(待装配验证)。
|
||||
- 消费 helper(自持私有副本):`_battle_st/_fresh_rng/_escrow_sum_of/_find_gp_dig/_shop_products_by_id/_adv_drive_to_shop/_adv_st/_all_entry_boss_paths/_level_active_nodes/_first_encounter_band/_boss_depth/_has_err_category`;`res://smoke/level_autoplay.gd` 按现路径局部 load。
|
||||
|
||||
**对账与自检(纯文本)**:
|
||||
- 宿主 Kit.check 计数:seal 追加 67(+套1 既有 5=文件共 72)+round_flow 95+variant_placement 39+adventure_feats 133+level_shop_economy 141=**475**=名下总条数(478−转办 3)。
|
||||
- 标签/cond 全量脚本比对(超出抽 5 条要求):五宿主 475 条按被迁函数逐条与 smoke_all.gd 源对齐(label/cond 折叠口径零差异;_smoke_feats 按剪切后 68 vs 源 71 对齐);475 条标签字面量与冻结清单各套章节逐字比对零缺失零多出。
|
||||
- 粗检:四新建文件无裸 `check(` 残留(round_flow 仅一处源注释「禁恒真 check(true)」随套逐字带入);文件尾换行齐。
|
||||
|
||||
**转办清单(集成散条,单元宿主不收——待装配批落位)**:
|
||||
1. _smoke_feats 基点 :1420–1426 三条(裁决②):「断点附随件:relics 持有集入快照(迭代 12 T1 扩列)」「断点附随件:adventure 计数器账本键在案(T6/T7 扩列)」「断点余库:已兑付 relic 令牌逐枚还原(x3 零残留——续玩不重复获得)」——驱动代码=save_manager 临时档(`user://_smoke_feats_bp.json`)装配+注入表上 `_on_level_finished(victory)`+`breakpoint_snapshot()` 取读+`clear_breakpoint()`,随三条同迁(adventure_feats_test.gd 内已留注记)。
|
||||
|
||||
**异常与待主会话**:① 「他人已完成宿主一个字不许改」与「G5 剩余套落位 seal_polarity_test.gd」字面冲突,按 append-only 执行(见上 G5 节),请主会话追认或改判;② 冻结清单处置列对 feats 三条仍写「迁单元测试」(波 0 生成早于裁决、清单禁改)——以本节转办记录为准;③ 我批被迁函数与共享 helper 在 smoke_all.gd 原地保留(本波禁改 smoke_all),其中 `_find_seal_target/_run_full_clear/_drive_clear/_rows_of_type/_has_source_row/_has_effect_id/_run_polarity_probe/_polarity_probe_accepts/_rows_at` 与两 const 的 smoke 侧消费者已全部迁毕,原件删除归收尾批;④ 跨宿主重复 helper(收尾去重候选):`_fresh_rng`×3(rf/af/ls)+`_has_err_category`×2(rf/ls)+`_level_active_nodes`×3(rf/af/ls)+`_first_encounter_band`×2(rf/ls)+`_boss_depth`×2(rf/ls)+`_battle_st`×2(af/ls)+`_adv_st`×2(af/ls)+`_adv_drive_to_shop`×2(af/ls)+`_auto_play_round/_run_battle` 过渡副本多宿主(rf 主持本体带断言,G4/G5/G9 副本零断言);⑤ 装配验证轮须将四件新宿主登记进 run_all.gd manifest。
|
||||
|
||||
## 十三、装配批施工记录(2026-10-22 装配代理)
|
||||
|
||||
**作业形态=纯文本与 python 级装配**:零游戏测试(引擎由验证线并行占用)、零 git 提交、M1/M2 十一件已迁宿主内容零改动(seal_polarity_test.gd diff 终检仍=728 insertions/0 deletions,即 M1 交付原态)。以下装配结果=待统一验证,实跑归主会话。
|
||||
|
||||
**1. 转办 22 条落集成宿主**:新建 `game/tests/integration/cross_system_flow_test.gd`(命名照 integration 现有惯例;与单元同入口同协议=extends SceneTree+Kit.check 主通道;表加载失败不中止承 G2–G5 同款;驱动随条自持、零新增断言——前置受理失败自然落后续断言红)。四块去向(四宿主注记所指转办义务至此全部落位):
|
||||
|
||||
| 转办块 | 条数·裁决 | 宿主函数 | 驱动形态 |
|
||||
|---|---|---|---|
|
||||
| _initialize :70 事件日志会话落盘 | 1·裁决一 | `_rng_event_log_session` | 沿源取号序列自持:set_master_seed(42)→open_stream×2→new_adventure(4242)→open_stream("gp_drop")→查 `user://logs/rng_log_4242.jsonl` |
|
||||
| _smoke_feats 基点 :1420–1426 断点往返 | 3·裁决二 | `_feats_breakpoint_roundtrip` | 沿源 :721–797 重建:5 行临时表注入+seed 72 起局+兑付 x3+save_manager 临时档(`user://_smoke_feats_bp.json`)装配+_on_level_finished(victory)+快照取读+clear_breakpoint;起局/兑付两步受理断言留单元宿主;临时档段首清场+段尾清理;表还原行保留 |
|
||||
| _smoke_save ⑨ 摘要集成块 基点 :6807–6831 | 10·裁决三 | `_save_summary_integration` | level_autoplay 按现路径 preload;`user://smoke_save_integration.json`(源 paths[8])段首清场+段尾清理,绝不碰 user://save.json |
|
||||
| _smoke_playtest_logger 整套 | 8·裁决七 | `_smoke_playtest_logger`(函数名沿源) | PlaytestLogger×BattleOrchestrator 真实结算流驱动照源(快照信号收集/停手两结算/诊断转储/JSONL 回读/close_session) |
|
||||
|
||||
**2. manifest 登记**:`game/tests/run_all.gd` `_suites()` 追加 11 行(44→55 条,expect 全 0),格式照现行惯例(域分组插入+注释枚举覆盖面+「批 B 自 smoke_all 迁入」尾注):unit 九件新=round_flow_skill_pool/variant_placement/adventure_feats/level_shop_economy/meta_progression_forge/save_manager_domain/theme_projection/rng_stream_boot/source_guard;integration 两件=node_map_templates/cross_system_flow(转办块宿主)。既有四件登记(table_structure_guard/board_gen_reward/roll_multiplier/seal_polarity)未重。
|
||||
|
||||
**3. 闸 01 切换**:`tools/run_system_test.py` DEFAULT_SCRIPT 改 `res://tests/system_test.gd`(头注宿主句与用法注释同步;闸 01 识别的两形态摘要行不变);`tools/run_all_gates.sh` 闸 01 注释改指新宿主,闸键名「01 系统测试」未动。
|
||||
|
||||
**4. 删源**:`game/smoke/smoke_all.gd`+`smoke_all.gd.uid` 整体删除(两件均入 git 历史,工作区 ` D` 未暂存,与两搬家代理未提交产出同批待主会话统一提交)。
|
||||
|
||||
**5. extract_checks.py 改造与自检**:默认源改三宿主遍历(unit/**+integration/** 递归+system_test.gd,现命中 58 文件);`--src` 升级多文件显式模式(相对路径按仓库根解析);解析器双通道=点前缀 `Kit.check(` 标签在前/裸 `check(` cond 在前(`_check(` 同名前缀与标签实参无字面量的 wrapper 调用不取——先例 reward_overlay_test `_req` 直传变量;字面量损坏仍会以「消失」呈现,不漏检);`--extract`/`--list-funcs` 随多源升级(多源按〔源文件,函数〕分章,章头带源);冻结清单防误覆不变。对账指纹按合同 §五三要素(标签/cond/计数)修正——quiet 列保留展示不入指纹:quiet 是 smoke 通道打印档位(只影响 PASS 行打印,计数/红绿同口径,M1 已记账),Kit 通道无此参,波 0 四元指纹在通道转换后结构性失配;清单冻结三列未动一字,非放宽对账(quiet 变更在 smoke 通道已无承载面)。
|
||||
|
||||
自检两口径(python 级,非游戏测试):
|
||||
- **显式模式(16 宿主=本批迁移面全量):清单 1065/现提取 1065 计数对齐,标签/cond 逐字零差异,PASS(退出码 0)**——1043 已搬+22 转办全在宿主。分件计数与 §二/§五落位逐件相等:system_test 49/table_structure_guard 60/rng_stream_boot 13/source_guard 8/board_gen_reward 39/adventure_feats 133/level_shop_economy 141/meta_progression_forge 133/save_manager_domain 91/roll_multiplier 36/seal_polarity 72/round_flow_skill_pool 95/variant_placement 39/theme_projection 120/node_map_templates 14/cross_system_flow 22。
|
||||
- **缺省遍历模式:消失 0/标签变更 0/cond 变更 0;新增 317 条全部来自既有套件**(config_db_test 34、damage_controller_test 34、type_glow_test 23、level_map_type_vis_test 23、damage_math_test 21、forge_table_test 20 等 22 文件——全为批前在册单元/集成套件的 Kit.check 断言,非本批迁移面;16 宿主在新增列零出现)。退出码 1 系「新增」类差异,属遍历面含既有套件的预期形态;批 B 出口判定以显式模式为准(§十.1「波 3 出口对账用显式模式」同口径)。
|
||||
|
||||
**待实跑(归下一棒验证代理/统一验证)**:
|
||||
- 裁决四 `_smoke_global_theme` ThemeDB 项目主题 `--script` 取得性验证(theme_projection_test 宿主内注记同此)——取不到则整体降级系统测试宿主,实跑证据记回账本。
|
||||
- 全部宿主与闸 01/02 实跑归统一验证(本批零游戏测试);manifest 新 11 件 expect 全 0(无致命/负面类)。
|
||||
- 工具与文档面遗留(§七普查在案,归波 2):`game/tests/static_scan.sh:100` S11 头注仍提 smoke_all(纯注释);`game/tests/README.md` 过渡期口径句(含 manifest 条数句现为 55)、AGENTS.md:20、architecture.md、game/README 等引用面同批换代;manifest 登记的 11 件新宿主 .uid 边车由引擎首轮导入自动生成(与 M1/M2 九件新件同态,禁手造)。
|
||||
|
||||
## 十四、核代码修复批施工记录(2026-10-23 主会话执行)
|
||||
|
||||
三冷启动审核员 1065 条全审:1047 有效 / 17 条逐条存疑 + 2 段落级(后者经今日闸记录实证解决:system_test.log 65 项 0 失败=48 条 autoload 门控断言全实跑;unit.log「V1 项目主题挂载」PASS=ThemeDB 在座 21 条全实跑)。grilling 审查一轮:5 条方案成立、4 条被击穿修订(A1 收敛为 has 键在案/B7 改夹具观测路线并补 hp_acc 项/C9 落锤现态加场景绑定/B8-区间行改判测试侧死逻辑——「生产疑似 bug」系 G3 错账已撤销)、另按升格标准新增 attach/rider 键名修复。10 条全部由主会话执行完毕:
|
||||
|
||||
1. cross_system_flow:92 恒真→`bp_r.has("adventure_counters")`(键在案语义;该流零计数器内容,禁验 size>0)
|
||||
2. table_guard:493 前置 derive_at×3 调用,使命题「纯函数不推计数器」真正被验
|
||||
3. table_guard:130 拆两条:null 早退分支(label 补注)+ _TreeSaveMock 非 null 档真实计数(socket1=1)
|
||||
4. theme:554/580/596 对象引用比较→内容比较(新增 `_sb_content_differs` 助手:Texture 比纹理/Flat 比 bg_color/异型即不同)
|
||||
5. table_guard 护栏后新增绊线钉:hero_defense 池映射数==0
|
||||
6. seal:481-488 补 ap_delta 按行值符号辨极性分支(与安全格循环同口径;_polarity_probe_accepts 未动;:537 同形缺口靠受理谓词保护的依赖已记)
|
||||
7. level_autoplay 停点加 bonus_max_hp 观测面(测试基建)+ adventure_feats:185-210 窗口拟合改观测值精确断言(公式含 hp_acc 项)
|
||||
8. board_gen:270-275 自比较死逻辑重写:新增 draws 总抽数计数,判据改「总抽≥2 且不同值<2」
|
||||
9. level_shop:806-818 白盒抬 GP+64 绑定场景+else 显式红护栏
|
||||
10. roll_multiplier:443 "attach"→"rider" 键名修复
|
||||
|
||||
**闭案措辞(按测试规约 §6)**:system_test :279/:421 与幂等等值类=「结构复核通过、变异拦截能力未证(执行前提/预算收刀)」。**变异形态留档(只登记不执行——测试已被用户叫停)**:1=adventure_runner.gd:1025 键改名|2=derive_at 内推计数器|3b=计数循环恒 0|4=disabled 改挂 pressed 同内容|5 钉=effect_pool_map 加 hero_defense 映射|6=seal 兑付行符号翻转|7=回血基数改表值上限|8=双掷点恒取下界(R1 已实证形态)|9=货架全不可负担|10=Boss 池加入 rider_mult 技能。**错账撤销**:G3「生产疑似 bug 登记待办」作废——区间行死逻辑在测试源码自身,本批已修。
|
||||
Reference in new issue
Block a user