From 0ef049f492ba30d70d5e7eeb9916d3f9a9c5e6d8 Mon Sep 17 00:00:00 2001 From: "Claude (backend session)" Date: Mon, 17 Aug 2026 02:05:39 +0300 Subject: [PATCH] Pick blind-reading units only where the panel is complete, then emit the judging pass --- eval/dovodka/chtenie.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/eval/dovodka/chtenie.py b/eval/dovodka/chtenie.py index b9584ad2..853a9d27 100644 --- a/eval/dovodka/chtenie.py +++ b/eval/dovodka/chtenie.py @@ -119,8 +119,16 @@ HEAD = """# Слепое чтение — {pair}, задание {k} def pick(pair: str) -> list[str]: """N_UNITS единиц из ОТСУЖЕННОГО набора — чтобы порядки читателя и счётчика сравнивались - на одних и тех же текстах. Отбор детерминирован своей солью.""" - uids = sorted(u["uid"] for u in Z.chosen(pair)) + на одних и тех же текстах. Отбор детерминирован своей солью. + + ⚠ ОТБОР ИДЁТ ТОЛЬКО ПО ЕДИНИЦАМ С ПОЛНОЙ ПАНЕЛЬЮ. На китайской оси четыре обогащённых + черновика забракованы эхо-гейтом, значит арма «обогащённый черновик + перепис» на них нет + вовсе. Прежняя редакция брала восемь единиц из всех отсуженных и одна приходила неполной — + а ранги, снятые на панелях разной ширины, между собой несравнимы. Это сужение ВЫБОРКИ ЧТЕНИЯ, + а не панели: сама панель не режется, просто читаются те главы, где она есть целиком. + """ + tx_all = ZS.texts_of(pair) + uids = sorted(u for u in tx_all if all(tx_all[u].get(a, "").strip() for a in PANEL)) return sorted(uids, key=lambda u: hashlib.sha256(f"{SALT}|{pair}|{u}".encode()).hexdigest() )[:N_UNITS]