From 7d0f133247c6b337ac34a1c21cb50faf10bc03ff Mon Sep 17 00:00:00 2001 From: heaven Date: Fri, 14 Aug 2026 21:08:25 +0300 Subject: [PATCH] Let the floor fall back to deterministic places when an axis has no semantic critic so the reconnaissance axis gets a threshold instead of silently buying nothing --- eval/dovodka/contour.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/eval/dovodka/contour.py b/eval/dovodka/contour.py index 0ef9fd75..f99372a6 100644 --- a/eval/dovodka/contour.py +++ b/eval/dovodka/contour.py @@ -749,8 +749,14 @@ def cmd_floor() -> None: # у текущей пары. Прежняя редакция звала `ФД-A` и `units_zh()` безусловно, то есть на # английской оси купила бы китайский пол в китайскую кассу — и порог оси считался бы по # чужому шуму. Критик-арм передаётся, потому что у осей он называется по-разному. - crit_arm = "A3" if pair().key == "zh-ru" else "E3" - led = MONEY.Guarded(phase_of(crit_arm)) + # ⚠ Источник мест зависит от того, ЕСТЬ ли у оси смысловой критик. У японской разведки его + # нет (панель — связка и однопроходка), и `critic_places` там возвращает пусто на КАЖДОЙ + # единице: пол молча не покупается, а прогон завершается успехом. Проверено исполнением + # 14.08 — японский пол вышел 0 из 18, и это выглядело как «купили», а не как «нечего купить». + P = pair() + crit_arm = {"zh-ru": "A3", "en-ru": "E3"}.get(P.key) + ref_arm = crit_arm or {"ja-ru": "J2"}[P.key] + led = MONEY.Guarded(phase_of(ref_arm)) src_units = ([u for u in P22.M.units_zh() if u["uid"] not in EXCLUDED] if pair().key == "zh-ru" else units_ok()) for u in src_units: @@ -758,12 +764,12 @@ def cmd_floor() -> None: draft = base_draft(uid) if not draft.strip(): continue - places, _ = critic_places(crit_arm, uid) + places = (critic_places(crit_arm, uid)[0] if crit_arm else flags_of(u, draft)) if not places: print(f" {uid}: мест нет — единица в пол не идёт") continue for half in ("flo1", "flo2"): - tg = f"dv-{phase_letter(crit_arm)}-{half}-{uid}" + tg = f"dv-{phase_letter(ref_arm)}-{half}-{uid}" if (OUT / f"{tg}.json").exists(): continue _buy(led, tg, fix_msgs(src, draft, places),