textmachine/eval/premise_review
2026-08-06 16:10:26 +03:00
..
.gitignore
dryrun_arms.py
final_run.log Land accepted diff-contract experiment 19 with review header pinning frozen-scorer numbers, premise-review verifiers and the falsification run log 2026-08-06 16:10:26 +03:00
glm_thinking_control.py Land accepted diff-contract experiment 19 with review header pinning frozen-scorer numbers, premise-review verifiers and the falsification run log 2026-08-06 16:10:26 +03:00
premise_batch_test.go.txt
README.md
recount.py
strict_defects.py
verify_run.py Land accepted diff-contract experiment 19 with review header pinning frozen-scorer numbers, premise-review verifiers and the falsification run log 2026-08-06 16:10:26 +03:00

Ревью ПОСЫЛКИ проб 18/C/19 (полигон, 05.08.2026)

Владелец 05.08: «важно ревьювить не только результат но и посылку». Здесь — харнесс, который проверяет вход экспериментов, а не их выводы: риг, промпты, метрики, константы. Всё $0, поверх персистированного сырья; ни одного платного вызова отсюда не делается.

Повод: два подряд дефекта посылки, невидимых в результатах — аппликатор диффов молча портил 6 из 36 выходов (рапортуя applied=ops_total, rejected=0), и арм zh→en поехал бы поверх РУССКИХ черновиков, потому что боевой zh-ru/translator.md параметризован только в первой строке.

Что чем доказано

Посылка Инструмент Итог
Риг пробы C воспроизводит движковые RenderBatch/Batch premise_batch_test.go.txt (overlay-тест по НАСТОЯЩЕМУ движку) 63/63 блока байт-в-байт; DetectSeries даёт те же 4 серии, что риг задал руками; состав батчей совпал [16,16,17,13,1], все под 6000 рун
Числа §C посчитаны верно recount.py (свой парсер, своя нормализация, свой знаменатель — ничего не импортируется из arbitrate.py) все 6 клеток воспроизвелись: glm-5 25/45 · mistral 23 · flash 20 · pro 16 · terra 18 · luna 18
Посадки дефектов пробы A корректны strict_defects.py 12/12 регексов валидны (fix_rx ловит оригинал, bad_rx — нет); канон черновиков 20/21 воспроизведён
Метрика посадок считала ИСЧЕЗНОВЕНИЕ, а не восстановление strict_defects.py дефект метрики реален (удаление фразы = «исправлено»), но вывод НЕ двигается: строго восстановлено 47/48 клеток, «выпало» 3
Запросы четырёх фальсификаций — то, что заявлено dryrun_arms.py инварианты И1И4/E5 держатся: блок закона и черновик одинаковы в diff/full, различается ТОЛЬКО контракт; плейсхолдеров нет; арм E английский
Аппликатор диффов ../editor_contract/selftest_apply.py 15/15, включая NFKC-классы, на которых прежняя версия ломалась
Константы длинной единицы сверка с internal/chunk/chunker.go EditCeilingOut=3200 · FertCJK=1.1978 · FertOther=0.3852 — совпали, формула та же

Найденные дефекты посылки

  1. Метрика посадок пробы A зачитывала дефект исправленным по исчезновению bad_rx; удаление фразы засчиталось бы как правка. Пере-считано строго — вывод устоял.
  2. Асимметрия режимов в §C: чемпион glm-5 ехал thinking:{disabled}, а претенденты — с разумом (v4-pro default, terra/luna low). В отчёте 18 §D это объявлено, но НЕ закрыто замером; закрывается контрольным прогоном glm-5 с мышлением.
  3. since_ch: 0 в риге против непустого значения в проде: блок короче на 12 руны на кандидата, а батч 2 стоит на 5967/6000 — в проде граница батча могла бы сдвинуться. На сравнение моделей не влияет (батчи у всех кандидатов одни и те же).
  4. long_units набирает абзацы ЗА потолок (3201 против 3200), движок же группирует ДО превышения (chunker.go:370). Разница в один токен, но направление противоположное.
  5. Английский черновик нельзя делать боевым zh-ru/translator.md — язык зашит прозой в строках 9/10/14. Заведено зеркало ../editor_contract/prompts/translator-en.md.

Ложные тревоги (проверено, дефекта нет)

  • parse_common.py «отсутствует» — живёт в eval/bank_autonomy/, путь добавляется в sys.path.
  • parse_common «теряет» aliases/related/since_ch — этих полей в bank-stop нет вообще (0 вхождений).
  • Знаменатель §A «21 вместо 27» — 元海 исключён из основной таблицы намеренно, он скорится отдельно (в A2 инъецирован неверной формой). 27 6 окон = 21.
  • Первая версия dryrun_arms.py ловила у fidelity-промпта «стиль-мандат» подстрочным регексом — на деле это ЗАПРЕТ («Стиль… НЕ ТРОГАЙ ВООБЩЕ»). Проверка исправлена на полярность.

Как воспроизвести

cd /home/ubuntu/projects/textmachine
# дамп ростера (НЕ коммитится: содержит KWIC-окна книги)
eval/.venv/bin/python -c "import sys;sys.path.insert(0,'eval/bank_arbitration');\
from consilium_probe import build_roster,batches_of,block_of,SERIES,BATCH_RUNES;import json;\
r=build_roster();json.dump({'roster':r,'blocks':{c['src']:block_of(c) for c in r},\
'batches':[[c['src'] for c in b] for b in batches_of(r)],'series':SERIES,'batch_runes':BATCH_RUNES},\
open('eval/premise_review/py_batching.json','w'),ensure_ascii=False,indent=1)"
# доказательство против движка (backend/ НЕ трогается — overlay)
cp eval/premise_review/premise_batch_test.go.txt /tmp/p_test.go
echo '{"Replace":{"'$PWD'/backend/internal/terminology/p_test.go":"/tmp/p_test.go"}}' > /tmp/ov.json
cd backend && go test -overlay=/tmp/ov.json -run TestPremisePythonRigMatchesEngine -v ./internal/terminology/
cd .. && eval/.venv/bin/python eval/premise_review/recount.py -v
eval/.venv/bin/python eval/premise_review/strict_defects.py edp-A0 edp-A1 edp-A2 edp-A5
eval/.venv/bin/python eval/premise_review/dryrun_arms.py