Emit the narrow fourth judging pass for the re-measured phase 2b arms against their bases

This commit is contained in:
heaven 2026-08-08 01:18:23 +03:00
parent d654036b5d
commit f9986d9ddf

View file

@ -85,7 +85,7 @@ ARMS = ("F3", "A", "A_law", "B", "D", "D_")
# ⚠ Армы Ф2б (точечный ремонт C и обратная связка E) судятся ТЕМ ЖЕ ригом и теми же агентами.
# Иначе их числа несравнимы с Ф2а, и покупка обесценивается — это первое, что назвала
# верификация до траты. Тексты берутся из `phase2b`, всё остальное в риге не меняется.
ARMS_2B = ("C", "E")
ARMS_2B = ("C2", "E2")
def _text(arm, u):
@ -130,10 +130,13 @@ def layout(uid: str, slots: list[str]) -> list[str]:
def build_unit(u: dict) -> tuple[str, dict]:
"""Задание на одну единицу + ключ раскладки. Контроли подмешаны и неотличимы от боевых."""
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}
# ⚠ Проход 4 узкий: только армы объявленных контрастов Ф2б плюс база сравнения. Судить
# заново все одиннадцать меток незачем — числа Ф2а уже сняты дважды и воспроизвелись.
arms = ("F3", "A_law", "D_") + ARMS_2B if PASS == "abs4" else tuple(ARMS) + ARMS_2B
slots: dict[str, str] = {a: _text(a, u) for a in arms}
kinds: dict[str, str] = {a: "боевой" for a in arms}
clean = slots["A"]
clean = slots.get("A") or slots["A_law"]
planted, n = _plant(clean)
if n >= 2:
slots["CTRLdecoy"], kinds["CTRLdecoy"] = planted, "контроль-декой"
@ -726,6 +729,9 @@ def selfcheck() -> int:
if __name__ == "__main__":
a = sys.argv[1:] or ["--selfcheck"]
if a[0][-1] in "34":
globals()["PASS"] = "abs" + a[0][-1]
a[0] = a[0][:-1]
if a[0] in ("--emit2", "--ingest2", "--score2", "--controls2", "--position2", "--judges2",
"--axes2", "--agree"):
PASS = "abs2" # noqa: PLW0127