Pick blind-reading units only where the panel is complete, then emit the judging pass

This commit is contained in:
Claude (backend session) 2026-08-17 02:05:39 +03:00
parent 6d0759d331
commit 0ef049f492

View file

@ -119,8 +119,16 @@ HEAD = """# Слепое чтение — {pair}, задание {k}
def pick(pair: str) -> list[str]: def pick(pair: str) -> list[str]:
"""N_UNITS единиц из ОТСУЖЕННОГО набора — чтобы порядки читателя и счётчика сравнивались """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() return sorted(uids, key=lambda u: hashlib.sha256(f"{SALT}|{pair}|{u}".encode()).hexdigest()
)[:N_UNITS] )[:N_UNITS]