| .. | ||
| .gitignore | ||
| dryrun_arms.py | ||
| final_run.log | ||
| glm_thinking_control.py | ||
| premise_batch_test.go.txt | ||
| README.md | ||
| recount.py | ||
| strict_defects.py | ||
| verify_run.py | ||
Ревью ПОСЫЛКИ проб 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 — совпали, формула та же |
Найденные дефекты посылки
- Метрика посадок пробы A зачитывала дефект исправленным по исчезновению
bad_rx; удаление фразы засчиталось бы как правка. Пере-считано строго — вывод устоял. - Асимметрия режимов в §C: чемпион
glm-5ехалthinking:{disabled}, а претенденты — с разумом (v4-prodefault,terra/lunalow). В отчёте 18 §D это объявлено, но НЕ закрыто замером; закрывается контрольным прогоном glm-5 с мышлением. since_ch: 0в риге против непустого значения в проде: блок короче на 1–2 руны на кандидата, а батч 2 стоит на 5967/6000 — в проде граница батча могла бы сдвинуться. На сравнение моделей не влияет (батчи у всех кандидатов одни и те же).long_unitsнабирает абзацы ЗА потолок (3201 против 3200), движок же группирует ДО превышения (chunker.go:370). Разница в один токен, но направление противоположное.- Английский черновик нельзя делать боевым
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