# Промт: полигон-сессия «Контролируемая проба редактора по четырём осям» > Составлен полигон-сессией фазы Д 02.09 по слову владельца. Исполнитель — ОТДЕЛЬНАЯ сессия, > онбординг у неё СВОЙ. Форма — по `docs/ORCHESTRATOR_SESSION_PROMPT.md` §«Пишешь промт сессии?» > (12 обязательных блоков). ## 1. Какая проблема и что решит твой результат Проект переводит художественные книги zh→ru мультиагентным LLM-конвейером. **Самая дорогая стадия — редактор**, и платим мы там в основном не за выданный текст, а за «размышление» модели перед ответом: у этого поставщика оно тарифицируется внутри выходных токенов и составляет большую часть счёта. **Проблема:** мы не знаем, чем управляется эта цена. На книге в 2283 главы редактор стоит порядка полусотни долларов, и мы не можем сказать, платим ли за то, что модель много думает, или за то, что она много пишет. **Что решит твой результат:** контролируемая проба разделит рычаги. Если снижение усилия режет расход и текст не портится — книга дешевеет вдвое по самой дорогой статье. Если не режет — мы перестаём искать там, где нет. ⚠ **Повод, который ты обязана не повторить.** Предыдущая сессия за четверо суток одиннадцать раз утверждала или предлагала то, что уже сделано либо опровергнуто в репозитории. Класс один: **показания инструмента, собственной памяти или своей ветки принимались за факт о мире**. Реестр — §8 плана и §Д52.5 отчёта фазы. ## 2. Зона записи и git **Зона:** `eval/` + `docs/experiments/` + секция «Полигон» в `docs/PROGRESS.md`. Ветка `polygon`. Артефакты прогона — в `~/books/gu-zhenren/probe-4axes/` (это ОТДЕЛЬНЫЙ git-репозиторий `books/`, видимый обоим рабочим деревьям). ⛔ **Ты НЕ коммитишь ничего, КРОМЕ пре-рег-фриза** — это единственное исключение канона, и он объявляется владельцу вслух ДО коммита. Форма коммита — только с явным списком путей (`git commit -- <путь>`); `git add -A`, `git add .`, `git commit -a` запрещены. ⛔ Никогда не читать `.env`. ⛔ Никаких `reset --hard`, перезаписи истории, `checkout` поверх грязного дерева: рядом работают параллельные сессии. ## 3. Карта чтения (≤5 позиций; дальше — только по её ссылкам) 1. **`CLAUDE.md`** — канон: цели, роли, зоны, гардрейлы, дисциплина чтения. 2. ⭐ **`eval/dovodka/PLAN-01-09.md` — ЗАКОН этой сессии.** Читать целиком; **§9 «ПРОЦЕДУРА» — первым**, там команды, коды выхода и три места, где домысливание стоит денег. 3. **`eval/dovodka/SESSION-30-08.md` §0-ЧЕТЫРЕ** — состояние фазы и реестр ошибок. Остальное в файле исторично; ⛔ §5 «КОМАНДЫ» — команды АВГУСТОВСКОГО РИГА, не твои, там есть помеченная «не запускать никогда». 4. **`~/books/gu-zhenren/coldrun-v16/`** — образец стенда: `book.yaml`, `pipeline.yaml`, `pairs/zh-ru.yaml`, и `REPORT.md` §14 «Форма следующего замера» (⚠ в файле ДВА раздела «## 14», нужен второй). ⛔ Каталог — образец, а не рабочее место. 5. **`docs/experiments/00-provider-quirks.md`** — провайдерские ловушки. Канон требует читать ПЕРЕД правкой вызовов; здесь особо записи про ручку размышления и эхо-мину. ## 4. Жёсткий контур — **делай РОВНО так**, отступление = пинг владельцу 1. ✅ **Санкция владельца: вариант A — 17 глав, потолок $9.5 в ПИКОВЫХ терминах** (01.09 дано $9.5; 02.09 поднято до $9.5, когда в дизайн вошла референсная клетка `glm-5`). ⛔ Потолок сессией не поднимается. Срабатывание гарда = **стоп и вопрос владельцу**; добор после просмотра чисел запрещён. К владельцу за этим решением ходить не надо — оно принято. 2. **Замер ратифицирован** (D39.184 п.5 — ⚠ нота есть только в ветке `main`, в `polygon` реестр обрывается на D39.170). Дизайн менять нельзя: четыре оси с РАЗНЫМИ ролями — трудность чанка блокировать, длину входа контролировать, промпт брать по SHA, усилие `off` против `low`. 3. **Пре-рег фризится коммитом ДО первой платной клетки.** Фриз объявляется владельцу вслух. 4. **Правило решения записано в §4 плана и НЕ пересматривается после просмотра чисел.** 5. **Стенд смотрит в `/home/ubuntu/projects/textmachine-main/`** для `models`, `langpack_root`, `prompts_root`: в `polygon` нет `backend/configs/langpacks/ru`, а загрузчик молча подставляет умолчания — русский слой читателя потеряется тихо. ## 4-БИС. ⭐ МОДЕЛИ — ФИКСИРОВАНЫ, МЕНЯТЬ НЕЛЬЗЯ ⛔ **Предыдущая редакция этого промта и план не называли моделей ВООБЩЕ** (ноль упоминаний, поймано владельцем 02.09). Ниже — состав, снятый с реально отработавшего конфига `coldrun-v16` и с его леджера; **это часть жёсткого контура: смена модели убивает сопоставимость с холодным прогоном, на котором стоит вся смета.** | стадия / роль | модель | усилие размышления | зачем | |---|---|---|---| | **редактор** (стадия `edit`) | **`deepseek-v4-pro`** | ⭐ **ЭТО И ЕСТЬ ПРЕДМЕТ ЗАМЕРА**: `off` против `low` | боевой редактор, ратифицированный интерим-жилец | | черновик (стадия `draft`) | `deepseek-v4-flash` | `low` | боевой черновик; в пробе — константа | | хоп эскалации черновика | `deepseek-v4-pro` | наследует эффорт стадии (`low`) | ловит эхо-чанки; в базовом прогоне обязателен | | терминолог (`gates.terminology`) | `deepseek-v4-flash` | `low` | консолидация банка; в пробе — константа | | классификатор типов | `deepseek-v4-flash` | `low` | подфаза терминолога | | ⭐ **референс** (пятая клетка) | **`glm-5`** | `off` = thinking ВЫКЛЮЧЕН, `few_shot: false` | ценовой контроль «тот же день, те же юниты»; **не фактор креста** | | **судья** | ⛔ **НЕ НУЖЕН И НЕ ВЫЗЫВАЕТСЯ** | — | качество при сниженном усилии ВНЕ скоупа (§12) | **Цепочка эскалации базового прогона** — как в образце: `default: [deepseek-v4-pro, glm-5.1, gemini-3.1-pro-preview]`. ⚠ В ЧЕТЫРЁХ РУКАХ `escalation.budget_usd: 0` (эскалации нет), **в базовом прогоне он обязан быть > 0**, иначе эхо-черновики останутся флагнутыми. ⚠ **Ключ `ZAI_API_KEY` обязателен** — без него проверка ключей упадёт громко на старте (референс идёт к другому поставщику). ⚠ **Единственная модель, чей расход в пробе НЕИЗВЕСТЕН, — редактор на `low`:** таких вызовов у движка не делали ни разу. Смета стоит на предположении; проверяет пред-полёт (§5.3). **Модели для ТВОИХ субагентов самопроверки** — это другое и на счёт замера не влияет: рекомендация канона `claude-fable-5`, ⚠ норма владельца 01.09 — **один `fable` на самое тяжёлое, остальные дешевле**; модель агенту задавать ЯВНО. ## 5. Что делать ### 5.1 Собрать стенд. **Делай РОВНО так** — §9.1 плана. Резалка исходника — `eval/dovodka/narezka.py` (её не существовало до 02.09; формат GB18030 + CRLF + первая строка обязана быть заголовком). Вариант A = главы книги **26–42**. ⚠ **Мина нумерации:** движок не умеет смещение глав — срез пронумеруется как 1–17. Соответствие держится ТОЛЬКО записью в пре-реге. ### 5.2 Написать недостающее. **Реши сам и аргументируй** — форма твоя, требования ниже. Не существует и нужно тебе: * **`chetyre.py`** — скрипт эндпойнта. Требования: ключ юнита (в `request_log` нет колонки `attempt`, она в `checkpoints` — реконструкцию назови явно) · операциональное определение «доставлено» · восстановление размышления по формуле §3 плана · правило цензуры §4 (обе стороны) · Вилкоксон с `zero_method='pratt'` · ⚠ **медиану и доверительный интервал Ходжеса–Лемана писать руками:** `scipy 1.18.0` установлен и `pratt` поддерживает, но интервала у `wilcoxon` не отдаёт (проверено). ⛔ **Гейт против зелени на пустоте обязателен:** нулевой знаменатель ⇒ прибор ОТКАЗЫВАЕТ кодом 2, а не печатает «в пределах». * **`poryadok.py`** — порядок рук от сида (сид объявлен в плане: `20260902`). * ⚠ Ковариатная модель §4 требует `statsmodels`, которого в `eval/.venv` нет. Решить: ставить или объявить эту проверку неисполненной. **Молча пропустить нельзя.** ### 5.3 Пред-полёт. **Делай РОВНО так** — §5.1 плана. Один юнит × ПЯТЬ клеток (четыре руки креста + референс `glm-5`, ~$0.27): сигнатура разницы входных токенов СНИМАЕТСЯ и пинится коммитом · пять разных отпечатков снапшота (иначе ось промпта схлопнулась — см. §9.0 п.2) · кириллица ≥0.99 · эхо 0. **Только после этого — пачка.** ⚠ **Клетка с `low` — предположение, а не замер:** движковых редакторских вызовов на `low` не существует вовсе, и смета стоит на нём. Если пред-полёт даст цену заметно выше ожидания — **стоп и пересчёт с владельцем ДО основной покупки**, не после. ### 5.4 Пачка и счёт. **Делай РОВНО так** по §9.3, **аргументируй сам** только форму отчёта. ## 6. Оси ревью твоей работы (приёмка пойдёт по ним; вправе заменить с аргументом) 1. **Деньги** — сошёлся ли расход с агрегатом §9.5, не пробит ли потолок, объявлен ли фриз до покупки. 2. **Дизайн** — не схлопнулась ли ось промпта, одинаков ли потолок вывода во всех руках, воспроизвелась ли сигнатура. 3. **Интерпретируемость** — можно ли из твоих чисел вынести вывод при ЛЮБОМ исходе, включая «ниже разрешения замера». ## 7. Мандат самопроверки ИСПОЛНЕНИЕМ (обязателен; самоотчёт не принимается) Самоотчёт «проверено» в этом проекте регулярно оказывался ложным и стоил денег. 1. **Ревью собственного кода и собственных запросов к моделям** — до первой платной клетки: прочитай вслух тело запроса каждой руки и убедись, что оно отличается ровно тем, чем должно. 2. **Ревью полученных результатов** — числа пересними командой, не глазами. 3. **Адверсариальный проход по СВОЕЙ ГОТОВОЙ работе.** ⭐ **Субагенты разрешены явно** — иначе дефолт-запрет харнесса тихо победит. **Модель агенту задавай ЯВНО и знай, сколько их работает** (норма CLAUDE.md; рекомендация — `claude-fable-5`, ⚠ норма владельца 01.09: **один `fable` на самое тяжёлое, остальные дешевле**). Направление: (а) не схлопнулась ли ось; (б) не подогнан ли порог под результат; (в) верна ли арифметика денег; (г) что в отчёте утверждается без улики. 4. **Тест на вырожденность:** если букву пункта удовлетворяет пустое исполнение («перечитал сам») — пункт не выполнен. Нужен артефакт: вывод команды, вердикт агента, лог. 5. Каждую пойманную собой ошибку **запиши в отчёт с классом**. ## 8. Записка-план и комплектность После эхо (§10) выложи ≤15 строк: что собираешь, что пишешь, когда фризишь, когда покупаешь. **И сверь план с §9 процедуры МЕХАНИЧЕСКИ** — таблицей «шаг §9 → делаю/не делаю → почему». Непокрытый шаг либо планируется, либо его пропуск подписывается словом. ## 8-БИС. Отчёт: обязательные секции Отчёт сдаётся секцией в `docs/experiments/23-editor-tier.md` (зона полигона). Обязательны: 1. **Результат по эндпойнтам** — с командами получения каждого числа. 2. ⛔ **«ЧТО НЕ УДАЛОСЬ И ЧТО НЕ ПРОВЕРЕНО»** — обязательная секция, не косметика. Сюда: что не успела, что не смогла снять, какие проверки объявлены неисполненными и почему (например, ковариатная модель без `statsmodels`). **Пустая пробы не бывает; отсутствие этой секции читается как непроверенная работа.** 3. **«ЧТО Я НАПУТАЛА»** — результат §7, с классом каждой ошибки. 4. **Деньги** — фактический расход против потолка, агрегатом по §9.5 плана. ## 9. Заявление = команда Любое число в отчёте несёт команду, которой читатель его получит. Приёмка пере-снимет выборочно. Не верь заголовкам: вывод грунтуется `file:line`, выводом команды или замером — либо помечается «мнение». **Отрицательный результат предъявляется с ПОЛОЖИТЕЛЬНЫМ КОНТРОЛЕМ** (покажи, что команда вообще что-то находит) — это лекарство от одиннадцати ошибок предыдущей сессии. ## 10. Эхо-протокол старта (первое действие, ДО работы) Выложи ≤10 строк: **скоуп** · **инварианты** (§4 своими словами) · **не-делать** (§12). ## 11. Канал вопросов и право возразить Конфликт промта с кодом или доками ⇒ **пинг владельцу, НЕ интерпретация**. Считаешь, что задача поставлена неверно или её не надо делать — **скажи с аргументом**, это ожидаемое поведение. ⛔ Отдельно: **увидела требование `--resnapshot` — СТОП, флаг не давать**: он перекупит все уже оплаченные клетки. Предупреждение планировщика о будущем `--resnapshot` — не требование, оно печатается на каждом ограниченном прогоне и ожидаемо. ## 12. Чего НЕ делать * Не менять дизайн, правило решения и потолок. * Не поднимать потолки и не добирать юниты после просмотра чисел. * Не править `models.yaml`, capabilities, Go, боевой `pipeline-c1.yaml`. * Не судить качество: качество при сниженном усилии вне скоупа, только $0-гейты и ось безопасности. * Не калибровать ставку платформы — гейчено отдельно. * Не коммитить ничего, кроме пре-рег-фриза. ## 13. Прямой канал между сессиями Механизм — `CLAUDE.md` §«Связь между сессиями». От тебя: **впиши свой блок в `/tmp/textmachine-channel` первым делом** (`role=` `session=` `ref=` `written=` `note=`; имя — из `ListAgents`), дописывая в конец и не трогая чужие блоки. Эхо (§10) отправь первым действием по адресу оркестратора, если он в файле есть. ⚠ **Адрес из файла — НЕ доказательство, что сессия жива:** файл переживает смерть сессии, а `ListAgents` — нет. И дословно: **нужной роли в файле нет, файла нет или имя не отвечает ⇒ КАНАЛА НЕТ, и это НОРМАЛЬНЫЙ случай — НЕ опрашивай сессии подряд.** Вопрос тогда — секцией в отчёт.