fix(迭代22反哺⑤补): 试炼镐C区展示行——charges=0件被_reseed_attune_charges注入循环跳过不入骑库存,而C区槽投影遍历骑库存→试炼镐C区不可见/悬停浮窗进度无处承载(追认批集成缺口,单测只测读数口未覆盖投影链)。修复=inventory_projection末段追加自动兑付件展示行(合成handle=-1非库存句柄+note积点N/8+槽点击走说明toast不进两步交互); use_attune_convert删除遗留孤儿函数头注释清一; 单测新增④b展示行断言两条(装配即入投影handle=-1+note=积点0/8/开格后1/8组合根重查链)+StubAutoInvRunner空骑库存桩。重闸全绿: 冒烟898/0+单测22套+probe_gate --full+render_gate golden 3屏0.00%+doc三闸对基线零新增(死链3/拔旗1/gdd_lint三文件表格占比FAIL均实证存量=79aac07版本对比表格行零变化)+熵增闸PASS; 06裁决小节与实现报告⑤条补集成补丁注记

This commit is contained in:
DKChan committed 2026-10-12 23:43:38 +08:00
1 parent 8455b4aeff
commit cff741ea2a
5 files changed
+52 -5

No files matched your search

@@ -94,6 +94,23 @@ func _init() -> void:
Kit.check_quiet(int(ob4b.action_economy._ap) == ap_base and not bool(ob4b.attune_convert_state().get("assembled", true)),
"试炼镐反例:未装配零兑付零计数(AP=整轮表值、读数口 assembled=false)")
# ④b 自动兑付件 C 区展示行(反哺批⑤补——charges=0 不入骑库存〔_reseed 注入循环跳过〕,
# 展示行=C 区悬停浮窗进度唯一承载:handle=-1 非库存句柄+note 进度;空骑库存桩直构投影链)
var rng4c = load("res://core/rng_service.gd").new(); rng4c.set_master_seed(253)
var ob4c = orch_s.new(db, rng4c)
ob4c.begin_battle({"level_index": 1, "node_depth": 0, "hero_hp": int(db.hero.max_hp), "attunement": ["trial_pick"]})
var ctrl4 = load("res://presentation/treasure_interact_controller.gd").new(db, null, null, null, null,
func(): return ob4c, func(): return StubAutoInvRunner.new())
var proj4: Array = ctrl4.inventory_projection()
Kit.check_quiet(proj4.size() == 1 and int(proj4[0].get("handle", 0)) == -1
and String(proj4[0].get("item_id", "")) == "trial_pick"
and String(proj4[0].get("note", "")) == "积点 0/8",
"试炼镐 C 区展示行:装配即入投影(handle=-1 合成行+悬停进度 note=积点 N/8——charges=0 不入骑库存的浮窗承载)")
ob4c._on_cell_revealed({"kind": "safe", "cell": Vector2i(0, 0)})
var proj4b: Array = ctrl4.inventory_projection()
Kit.check_quiet(String(proj4b[0].get("note", "")) == "积点 1/8",
"试炼镐展示行进度刷新:开格后 note=积点 1/8(组合根重查链)")
# ⑤ 刷新练习(存量账一次性加仓/临时账不动)
var rng5 = load("res://core/rng_service.gd").new(); rng5.set_master_seed(261)
var adr5 = runner_s.new(db, rng5)
@@ -319,3 +336,14 @@ func _cell_at(orch, c: Vector2i) -> Vector2i:
if b != null and b.in_bounds(c):
return c
return Vector2i(-9, -9)
# 自动兑付件展示行测试桩(反哺批⑤——空骑库存 runner 桩:charges=0 件不入骑库存,
# 展示行合成逻辑在 treasure_interact_controller.inventory_projection 末段)
class StubAutoInvRunner:
extends RefCounted
var treasure_inventory: StubAutoInv = StubAutoInv.new()
class StubAutoInv:
extends RefCounted
func query_inventory(_cb: Callable) -> Array:
return []