fix(冒烟): 屏蔽批两处断言语义订正 + 基线 09 刷新(并行会话头注漂移,非本批引入)
- 变异断言语义订正:board_variant_ids 只装板级/全局型(region 变异在格子级 variants)——
板级空断言 + 格子级恰一行且在 {magma,ash} 断言 + 确定性比对加 variants 字典逐位
- V1a boot 顶层断言容错调试浮窗(2026-10-16 写死后 boot 即开,浮窗悬浮于菜单之上=
合法顶层;原守卫「菜单被冒险屏盖住」语义不变)
- baseline.json 09 项 fp 刷新:主区与分支 audit_file_headers 输出逐行一致(128 行),
漂移源于 20f4a7dc 之后主区 .gd 头注变动(并行会话),本批零引入;红项仍为存量
127 处,仅对齐指纹
This commit is contained in:
1 parent
d468595a5a
commit
15c64c3552
2 files changed
+15
-8
No files matched your search
+14
-7
@@ -185,8 +185,8 @@ func _smoke_scene_split() -> void:
|
||||
# V1a 启动态顶层断言:boot 后自树顶向下第一个可见内容层=start_overlay(headless 可判)
|
||||
#(内容层遍历——屏壳是容器不当候选:camp 壳 boot 态 vis=true 但成员恒隐,裸树遍历会误命中)
|
||||
var top: Node = _topmost_visible_layer(main)
|
||||
check(top == main._start_overlay,
|
||||
"V1a 启动态顶层可见层=start_overlay(实测顶层=%s——菜单被冒险屏盖住即红)〔装配生命批 V1〕"
|
||||
check(top == main._start_overlay or top == main.debug_overlay,
|
||||
"V1a 启动态顶层可见层=start_overlay(调试浮窗悬浮于菜单之上=合法顶层——2026-10-16 写死后 boot 即开;实测顶层=%s——菜单被冒险屏盖住即红)〔装配生命批 V1〕"
|
||||
% (top.name if top != null else "null"))
|
||||
# V1b 语义关系:start_overlay 在冒险屏内容之上(菜单屏壳在冒险屏壳之上——装配序修复判据)
|
||||
check(main._menu_screen.get_index() > main._adventure_screen.get_index(),
|
||||
@@ -2352,16 +2352,23 @@ func _smoke_global_variant() -> void:
|
||||
var boss_ok: bool = boss_settlement.begin_battle({"level_index": 2, "node_depth": 4, "hero_hp": int(_db.hero.max_hp), "node_type": "boss"})
|
||||
check(boss_ok, "L2 Boss 战斗启动(node_depth=4 boss 节点——兜底回落断言载体)")
|
||||
var boss1_ids: Array = []
|
||||
var boss1_variants: Dictionary = {}
|
||||
var boss1_calls := 0
|
||||
if boss_ok:
|
||||
var bb = boss_settlement.minesweeper.current_board()
|
||||
check(bb.board_variant_ids().size() == 1 and (String(bb.board_variant_ids()[0]) in ["magma", "ash"]),
|
||||
"屏蔽后回落:Boss 图改走 region 候选池(恰一行 region 变异,无全局型——全局池空回落路径)")
|
||||
check(bb.board_variant_ids().is_empty(), "屏蔽后回落:Boss 图无板级全局型(board_variants 空——全局池空合法态)")
|
||||
var boss_vids := {}
|
||||
for vc in bb.variants:
|
||||
for vid in bb.variants[vc]:
|
||||
boss_vids[String(vid)] = true
|
||||
check(boss_vids.size() == 1 and (boss_vids.has("magma") or boss_vids.has("ash")),
|
||||
"屏蔽后回落:Boss 图 region 变异恰一行且在候选池内(实测 %s)" % str(boss_vids.keys()))
|
||||
check(not bb.variants.is_empty(), "屏蔽后回落:Boss 图恢复 region 变异格布置(原替换制跳过 region 的逻辑随全局池空失效)")
|
||||
check(crng.variant_calls > 0, "屏蔽后回落:variant_place 恢复取号(原全局取用零取号态消失)")
|
||||
var snap: Dictionary = boss_settlement.presentation_snapshot()
|
||||
check(_arr_str_eq(snap.get("board_variants", []), bb.board_variant_ids()), "快照投影:board_variants 与板载 region 行一致(横幅/角标唯一读取面)")
|
||||
check(_arr_str_eq(snap.get("board_variants", []), bb.board_variant_ids()), "快照投影:board_variants 空态一致(横幅/角标唯一读取面——无全局型即零预告)")
|
||||
boss1_ids = bb.board_variant_ids()
|
||||
boss1_variants = bb.variants.duplicate()
|
||||
boss1_calls = crng.variant_calls
|
||||
# Boss 图确定性:同种子两遍逐位相同
|
||||
var crng2 = _CountVariantRng.new()
|
||||
@@ -2369,8 +2376,8 @@ func _smoke_global_variant() -> void:
|
||||
var boss2 = load("res://core/battle_orchestrator.gd").new(_db, crng2)
|
||||
if boss2.begin_battle({"level_index": 2, "node_depth": 4, "hero_hp": int(_db.hero.max_hp), "node_type": "boss"}):
|
||||
var bb2 = boss2.minesweeper.current_board()
|
||||
check(_arr_str_eq(bb2.board_variant_ids(), boss1_ids) and crng2.variant_calls == boss1_calls,
|
||||
"确定性:同种子 Boss 图两遍 board_variants/取号逐位相同(region 布置路径)")
|
||||
check(_arr_str_eq(bb2.board_variant_ids(), boss1_ids) and bb2.variants == boss1_variants and crng2.variant_calls == boss1_calls,
|
||||
"确定性:同种子 Boss 图两遍 board_variants/变异格/取号逐位相同(region 布置路径)")
|
||||
# ④ 资源面偏斜投影(RewardEconomy 纯函数面——守恒/白名单/构造例/合成序)
|
||||
var eco = load("res://core/reward_economy.gd").new(_db, load("res://core/rng_service.gd").new())
|
||||
var base_rows: Array = eco._rollable_rows()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
},
|
||||
"09 静态扫描": {
|
||||
"exit": "1",
|
||||
"fp": "3220614b09c4"
|
||||
"fp": "4354b2aa72a7"
|
||||
},
|
||||
"10 熵增闸": {
|
||||
"exit": "0",
|
||||
|
||||
Reference in new issue
Block a user