# Ревью ПОСЫЛКИ проб 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`** в риге против непустого значения в проде: блок короче на 1–2 руны на кандидата, а батч 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-промпта «стиль-мандат» подстрочным регексом — на деле это ЗАПРЕТ («Стиль… НЕ ТРОГАЙ ВООБЩЕ»). Проверка исправлена на полярность. ## Как воспроизвести ```bash 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 ```