From 8be56538620dfe7fb4eda6c7d1dfbfdec6404792 Mon Sep 17 00:00:00 2001 From: heaven Date: Sat, 8 Aug 2026 00:53:16 +0300 Subject: [PATCH] Wire the phase 2b arms into the same judging rig so their contrasts stay comparable with phase 2a --- eval/role_topology/absjudge.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/eval/role_topology/absjudge.py b/eval/role_topology/absjudge.py index e33d25b5..feca4663 100644 --- a/eval/role_topology/absjudge.py +++ b/eval/role_topology/absjudge.py @@ -82,6 +82,17 @@ SALT = _salt(PASS) # D/D_ берутся из второй редакции СОЗНАТЕЛЬНО: однопроходки черновика не видят, их вход # (исходник + блок закона) в обеих редакциях побайтно один, и это проверяется в selfcheck. ARMS = ("F3", "A", "A_law", "B", "D", "D_") +# ⚠ Армы Ф2б (точечный ремонт C и обратная связка E) судятся ТЕМ ЖЕ ригом и теми же агентами. +# Иначе их числа несравнимы с Ф2а, и покупка обесценивается — это первое, что назвала +# верификация до траты. Тексты берутся из `phase2b`, всё остальное в риге не меняется. +ARMS_2B = ("C", "E") + + +def _text(arm, u): + if arm in ARMS_2B: + import phase2b as P2 # noqa: PLC0415 + return P2.text_of(arm, u["uid"]) + return BO.text3_of(arm, u) # СЕМЕЙСТВО КОНТРАСТОВ, объявленное ДО первого ответа судьи. Поправка Холма считается по всем # семи; сузить семейство после того, как увидены p-значения, — это и есть p-hacking, и именно @@ -119,8 +130,8 @@ def layout(uid: str, slots: list[str]) -> list[str]: def build_unit(u: dict) -> tuple[str, dict]: """Задание на одну единицу + ключ раскладки. Контроли подмешаны и неотличимы от боевых.""" - slots: dict[str, str] = {a: BO.text3_of(a, u) for a in ARMS} - kinds: dict[str, str] = {a: "боевой" for a in ARMS} + slots: dict[str, str] = {a: _text(a, u) for a in tuple(ARMS) + ARMS_2B} + kinds: dict[str, str] = {a: "боевой" for a in tuple(ARMS) + ARMS_2B} clean = slots["A"] planted, n = _plant(clean)