W5: sim一轮裁定落地+二轮校准 — 冤煞独立表(wrath_layers 22行)/宿慧渐近封顶F-1/跳过钳制F-2/验收门#2#3#10#13#14修订;二轮4/5 FAIL转PASS,#13 R4残留0.396(带外0.021),硬门#5#10不回归,红线9.5e15→7.007B,test_runner 750检查8/8用例

This commit is contained in:
程基岩(engineering-lead) committed 2026-10-21 17:41:21 +08:00
1 parent c534e95458
commit c0a5c52cb7
37 files changed
+49293 -153

No files matched your search

+26
View File
@@ -37,6 +37,32 @@ func run(a, data: BalanceData) -> void:
a.eq(data.tune_text("tune_restart_curve", ""), "1:0.6:0.4:0.3", "重开曲线文本")
a.near(data.tune_num("tune_wrath_layers", 0.0), 22.0, 1e-9, "冤煞 22 层")
a.near(data.tune_num("tune_click_base", 0.0), 1.0, 1e-9, "点击基础值 1")
# W5 裁定调参(sim 一轮裁定 §2.3/§2.4):宿慧渐近 + 跳过封顶 + 削减速加深
a.near(data.tune_num("tune_suihui_global_max", 0.0), 0.5, 1e-9, "宿慧渐近上限 0.50")
a.near(data.tune_num("tune_suihui_global_scale", 0.0), 420.0, 1e-9, "宿慧衰减尺度 420")
a.near(data.tune_num("tune_skip_level_cap_per_gen", 0.0), 50.0, 1e-9, "跳过每档封顶 50")
a.near(data.tune_num("tune_wrath_penalty", 0.0), 0.04, 1e-9, "削减速 4%/层")
a.near(data.tune_num("tune_wrath_penalty_cap", 0.0), 0.4, 1e-9, "削减速封顶 40%")
a.false_(data.has_tune("tune_wrath_bonus"), "tune_wrath_bonus 已迁入 wrath_layers.csv")
a.false_(data.has_tune("tune_wrath_cost_base"), "tune_wrath_cost_base 已迁入 wrath_layers.csv")
a.false_(data.has_tune("tune_wrath_cost_exp"), "tune_wrath_cost_exp 已迁入 wrath_layers.csv")
a.false_(data.has_tune("tune_suihui_global_pct"), "tune_suihui_global_pct 已被渐近公式取代")
# W5 G-1:冤煞层表(22 行;m07/m08 联动)
a.eq(data.wrath_layers.size(), 22, "wrath_layers 22 行")
a.near(data.wrath_layers[0].effect, 0.15, 1e-9, "L1 effect 0.15")
a.near(data.wrath_layers[14].effect, 0.15, 1e-9, "L15 effect 0.15")
a.near(data.wrath_layers[15].effect, 0.0, 1e-9, "L16 effect 0(归零)")
a.eq(data.wrath_layers[0].cost, 8, "L1 成本 8")
a.eq(data.wrath_layers[21].cost, 2087, "L22 成本 2087")
var m07 := data.meta("meta_07")
a.near(m07.effect_param, 0.20, 1e-9, "m07 削减 40%→20%(W5 联动)")
a.eq(data.meta("meta_08").name_cn, "幽冥恩荫", "m08 更名幽冥恩荫(P-4 消歧)")
# W5 裁定 P-28:halls 到达目标列新值(H10 保持 180;殿门阈值不动)
var expect_targets := [10, 20, 36, 56, 80, 102, 122, 142, 164, 180]
for i in expect_targets.size():
a.eq(int(data.halls[i].target_min), expect_targets[i], "H%d 到达目标 %d min" % [i + 1, expect_targets[i]])
a.near(data.halls[0].gate_merit, 2000.0, 0.5, "H1 殿门阈值不动(2K)")
a.near(data.halls[9].gate_merit, 1.5e9, 0.5, "H10 殿门阈值不动(1.5B)")
# 跨表引用完整性(schema 管单表;这里查跨表)
a.true_(data.check_references().is_empty(), "跨表引用无悬挂(%s)" % str(data.check_references()))
# 每殿恰一场殿王战 + 色板