diff --git a/game/README.md b/game/README.md index e205732f..e35159ad 100644 --- a/game/README.md +++ b/game/README.md @@ -401,7 +401,7 @@ Godot_v4.7.2-stable_win64_console.exe --headless --path . --script res://smoke/s **落地变更**: - `auto_player.gd` 增完美策略求解器(`perfect_action`/`_deduce`):single + subset 推理不动点(A1 F1 `measure_inferability` 同族规则集,**去 safe_set oracle**——约束未知邻格含雷格,比生成期闸保守);**零盲挖**(只挖已证安全格 = 构造保证零踩雷,扫描末断言兜底违例 quit(1))· **已证雷格全标旗**(旗先于挖——轮末 weaken + 魔法 首次充能,雷上旗不阻连锁)· 卡死且资源可 → `b1.player_request_refresh()` 轮内刷新 · 否则停手(残 AP 1:1 入 RAP)。输入只经 A2 查询面(reveal_record/is_revealed/has_flag),**禁读棋盘雷区真值**——测推理上界,非全知作弊。core 层零改动; - `window_selection` 增 `heal_no_waste` 选项(缺口 < 治疗量不用;完美档启用)+ 完美档轮次门解除(round_gate=0); -- `level_autoplay.gd` 增 `policy` 参数(默认 "normal"——tune_sim_controller/defense_scan/level_debug 既有调用零改动);完美档驱动 `_autoplay_battle_perfect`(move/dig/flag 走 A2 settle_batch、refresh 走 B1 编排、连续拒绝 ≥3 停手防死循环);st 增 `mine_hits`/`refreshes` 计数(mine_hit 证据行埋点); +- `level_autoplay.gd` 增 `policy` 参数(默认 "normal"——tune_sim_controller/defense_scan/level_debug 既有调用零改动);完美档经 `policy="perfect"` 由 `_decide_act` 分派承载(原专职驱动 `_autoplay_battle_perfect` 已随样板收口并入分派——move/dig/flag 走 A2 settle_batch、refresh 走 B1 编排、连续拒绝 ≥3 停手防死循环);st 增 `mine_hits`/`refreshes` 计数(mine_hit 证据行埋点); - `level_monte_carlo.gd` 增第 3 CLI 参 `[policy]`(normal/perfect/both,缺省 normal 兼容既有文档命令)+ 策略/踩雷/刷新列;脚注 F5 带文案同步 [30,50] 带锚定稿。 **完美档基线(N=30 · 种子 4200–4229 · 耗时 597.6s)**:**0 加成通关率 100%**(弱策略基线档 60%)、通关剩余 HP 均 **47.4/50**、整关承伤均 3.5(p90 18.0)、普通场承伤 0.5%(带 ≤20%)、Boss 场 5.3%(带 ≤50%)、踩雷 0.00/局(断言 ✓)、刷新 0.23/局、跳战率 20%。+50%~+200% 全档位恒 100% 满血通关(+200% 承伤均 0.4)——**技能轴上界完全碾压现行曲线:F5 带与 F6 S/K 区间对完美档零分辨力**(区间模型无策略水平轴的结构性证实;calibration_gap 获得机制解释与定量上界)。 diff --git a/game/core/adventure_runner.gd b/game/core/adventure_runner.gd index f5f0019f..cb7e866d 100644 --- a/game/core/adventure_runner.gd +++ b/game/core/adventure_runner.gd @@ -594,7 +594,9 @@ func _resolve_node_replace(discard_handle: int) -> bool: push_error("[冒险结构] resolve_node_replace 拒绝——句柄不在持有集: %d" % discard_handle) return false for iid in incoming: - _runner.grant_aux_item(String(iid), "reward_node") + var rec: Dictionary = _runner.grant_aux_item(String(iid), "reward_node") + if rec.is_empty(): + push_warning("[冒险结构] 替换子道具授予被拒(防御兜底留痕): %s" % String(iid)) # 放弃新件(discard_handle < 0)= 原持有集不动、新件不获取 _finish_node_bonus("aux_item", incoming.size()) return true diff --git a/game/presentation/views/hero_info_panel_view.gd b/game/presentation/views/hero_info_panel_view.gd index 4254e04e..4e6f39fb 100644 --- a/game/presentation/views/hero_info_panel_view.gd +++ b/game/presentation/views/hero_info_panel_view.gd @@ -28,7 +28,7 @@ var _relic_list: VBoxContainer func _init() -> void: custom_minimum_size = Vector2(240, 0) clip_contents = true - # 主面板穿石板戏服(样张 v2 冻结批 T2——纹理本色≈PANEL_HERO;数据框仍素面 §7.1;缺位回退 flat) + # 主面板穿石板戏服(样张 v2 冻结批 T2——纹理本色;数据框仍素面 §7.1;缺位回退 flat) var sb := UiKit.panel_skinned(Vector4(8, 6, 8, 6)) add_theme_stylebox_override("panel", sb) var col := VBoxContainer.new() diff --git a/game/tests/smoke/critical-paths.md b/game/tests/smoke/critical-paths.md index 9fccca72..c1e5e361 100644 --- a/game/tests/smoke/critical-paths.md +++ b/game/tests/smoke/critical-paths.md @@ -3,7 +3,7 @@ **Purpose**: QA 交接前 15 分钟内人工跑完的关键路径清单。 **Run via**: `/smoke-check`(读本文件)。 **Update**: 新核心系统落地后增补条目。 -**分工注记**:自动化冒烟(切片 96/96)覆盖规则正确性;本清单面向**表现与手感**(自动化探针不可 G-W-T 的部分)。 +**分工注记**:自动化冒烟(全量断言,现行口径 718/0——2026-10-04 迭代 13 T6 随批换代,随批末闸走)覆盖规则正确性;本清单面向**表现与手感**(自动化探针不可 G-W-T 的部分)。 ## Core Stability(恒跑)