fix(tier2): 数据表加破产路 patience 可达性预检——经济/H/latch 门提前可修
spike feie-005 实证(F/G/tripleLink 全转绿后):H_progress/经济/latch 仍挂在「到不了终态」。 真因=数据表 patience 太长(M3 填了 45~65s),但破产路 driver 只跑约 16.8s(bankruptSteps 60×280ms)、 要连续 3 单流失才判 lose → 订单在有界 run 里耗不尽 → bankruptPathLose/bothReachedTerminal/H/latch 全挂 (金标用 16~20s 正为此)。M3 看 economy 反馈后能自己把 patience 调到 [8,8,8,8,12] 修这条, 但反馈不够直白时会绕弯。故 validate_datatable 加 patience 可达性预检:最小 streak 单订单的最大 patience 须落在有界 run 墙钟内(1.5× 余量),超了响亮提示「调小到金标 16~20s 量级」。 单测:金标(16-20s)PASS / feie-005式(45-65s)FAIL。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f64dcc6532
commit
8f2bbce5d5
@ -364,7 +364,27 @@ def validate_datatable(game_id: str) -> dict:
|
||||
unreachable.append(f"{o.get('id')}→{item_id}")
|
||||
if unreachable:
|
||||
errs.append(f"以下订单物品不可达(既非合成产出、又不在开局库存):{unreachable}。"
|
||||
"每个订单 requires 的物品必须能被某条 mergeChain 产出(to),或在 currencies.ingredients.initial 里。")
|
||||
"每个订单 requires 的物品必须能被某条 mergeChain 产出(到 to),或在 currencies.ingredients.initial 里。")
|
||||
|
||||
# ── ④ 经济线可达性:patience 太长会让破产路在有界 driver run 里耗不尽(spike feie-005 实证)──
|
||||
# 破产路 driver 跑约 bankruptSteps×stepMs ≈ 16.8s,需 consecutiveOrderFails 单连续流失才判 lose。
|
||||
# 若订单 patience 远大于这点墙钟,破产路永远跑不到 lose → 经济门 bankruptPathLose/bothReachedTerminal、
|
||||
# H_progress、latch hostReadsTerminal 全挂(feie-005 用了 45~65s patience 正是栽在此;金标用 16~20s)。
|
||||
# 这里给一个明确的上界提示(不是死规则,留余量):patience 应让破产路在有界 run 内能连续流失。
|
||||
BANKRUPT_BUDGET_S = 16.8 # bankruptSteps(60)×stepMs(280ms);与 run_engine default_business_sim_spec 同源
|
||||
streak = int((g.get("loseCondition") or {}).get("consecutiveOrderFails") or 3)
|
||||
patiences = [o.get("patience") for o in orders if isinstance(o.get("patience"), (int, float))]
|
||||
if patiences:
|
||||
# 破产路里订单并发倒计时、约同时耗尽(非排队累加),故判据 = 最小 streak 个订单的【最大】patience
|
||||
# 要落在有界 run 墙钟内(留较宽余量 1.5×,金标 16~20s 应通过、feie-005 的 45~65s 应拦下)。
|
||||
smallest = sorted(patiences)[:max(1, streak)]
|
||||
worst = max(smallest)
|
||||
if worst > BANKRUPT_BUDGET_S * 1.5: # 留 50% 余量(金标 ~18s < 25.2s 通过)
|
||||
errs.append(
|
||||
f"订单 patience 偏大(最小 {len(smallest)} 单耐心={smallest},单位秒;最大 {worst}s),"
|
||||
f"破产路在有界真玩 run(约 {BANKRUPT_BUDGET_S:.0f}s,连续 {streak} 单流失才判输)里耗不尽 → "
|
||||
"经济门 bankruptPathLose / H_progress / latch 会挂。把 patience 调小(参考金标 16~20s 量级),"
|
||||
"让破产路能在有界 run 内连续流失。")
|
||||
|
||||
return {"ok": not errs, "errors": errs, "expectedSchemaHint": schema_hint if errs else ""}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user