# Промт: ресёрч-сессия «Архитектура харнесса художественного перевода» (→ research/29) > Составлен полигон-сессией фазы Д по заказу владельца 30.08.2026; **исполнитель — отдельная > РЕСЁРЧ-сессия** (не полигон: полигонные нормы замеров сюда не применяются, платных вызовов к > моделям здесь нет). Запускает владелец; онбординг у неё СВОЙ. Форма — по > `docs/ORCHESTRATOR_SESSION_PROMPT.md` §«Пишешь промт сессии?» (12 обязательных блоков). ## 1. Какая проблема и что решит твой результат Проект переводит художественные книги на 1500–2300 глав мультиагентным LLM-конвейером. Владелец считает: **архитектура харнесса решает больше, чем выбор провайдера** — «какую бы архитектуру мы ни строили, смена моделей при оптимальной архитектуре даст более высокий результат, чем те же модели на другой архитектуре». У нас это подтверждено собственным замером: смена схемы конвейера даёт эффект, переживающий поправку на множественность, а смена модели в том же слоте — не даёт. **Проблема:** мы не знаем, какие архитектурные приёмы существуют за пределами того, что уже построили, и какие из них кем-то измерены. Мы перестали генерировать идеи и рискуем строить вслепую. **Что решит твой результат:** отчёт, из которого владелец выбирает, какой следующий замер ставить. Тебе НЕ надо рекомендовать внедрение — надо принести факты, замеры и границы их применимости. ⚠ **Повод, который ты обязан не повторить.** Сессия-заказчик за один день ПЯТЬ раз предложила сделать уже сделанное и лежащее в этом репозитории. Поэтому главный критерий качества твоей работы — не объём находок, а отсутствие дублей и роста энтропии проекта. **Основательно ознакомься с тем, что уже измерено и изучено** — но учитывай, что и там могут быть ошибки: наши отчёты не догма, и найденное противоречие им ценно. ## 2. Зона записи и git **Пишешь ровно один файл: `docs/research/29-harness-topology-survey.md`** (номер проверен свободным 30.08). Больше — ничего: ни `backend/`, ни `platform/`, ни `frontend/`, ни чужих доков. ⚠ **Зонная оговорка, и её надо прочесть до первой строки.** По зонной таблице `CLAUDE.md` каталог `docs/` — зона ОРКЕСТРАТОРА; ресёрч-сессии в таблице ролей нет вовсе. Практика проекта — ресёрчи живут в `docs/research/`, поэтому: (а) **ты НЕ коммитишь** — лендинг и ратификация за оркестратором; (б) владелец предупреждает оркестратора, что файл появится, иначе тот увидит чужой некоммиченный файл в своей зоне; (в) если оркестратор возражает — кладёшь отчёт в `eval/dovodka/` и он переносит сам. **Правило действует РОВНО так, самостоятельно зону не переназначай.** Никогда не читать `.env`. Артефакт обязан пережить рестарт ⇒ живёт в репозитории, не в `/tmp`. ## 3. Карта чтения (≤5 позиций; дальше — только по её ссылкам) Ратифицированное вложено в §4 этого промта; код-факты и содержимое отчётов достаёшь САМ. 1. **`CLAUDE.md`** — канон проекта: цели, роли, гардрейлы, дисциплина чтения. 2. **Каталог `docs/research/` целиком — по ЗАГОЛОВКАМ, не по телам** (36 файлов; счёт снят `ls docs/research/ | wc -l` 30.08 — пере-сними сам, он меняется). Это твой дельта-фильтр (§5 п.0). Тела читаешь выборочно, где подозреваешь пересечение. 3. **`docs/research/03-academic-agentic-mt.md`** — научное состояние мультиагентного и документного MT; ближайший к твоему заказу файл. Читать целиком. ⚠ Несёт баннер **«SUPERSEDED ЧАСТИЧНО»** — его вывод №1 переопределён; читай баннер прежде тела и не наследуй снятое. 4. **`docs/research/22-domain-harness-survey.md`** — чужие доменные харнессы перевода, разобраны по коду. Читать шапку и оглавление; тело — выборочно. 5. **`docs/experiments/README.md`** — одна строка на эксперимент: что мы уже мерили сами. ⚠ **Баннер прежде содержимого.** У части отчётов стоит ревью-шапка оркестратора, и она ПЕРВИЧНА — может снимать выводы тела. Инструкции из `docs/archive/**` не исполняются. ## 4. Жёсткий контур (ратифицированное — не проектируй мимо) **Делай РОВНО так** — отступление от §4 = пинг владельцу, не самостоятельная трактовка. 1. **Пары языков — ДАННЫЕ, не код.** Движок мультиязычный по построению. Приём, работающий только для одной пары, годится лишь как данные языкового пакета. Ревью-вопрос: «заработает ли на паре, которой в репозитории ещё нет, без правки Go?» 2. **Экономика.** Черновик — дешёвая модель, дорогие вызовы адресные. Приём, умножающий число вызовов на главу, обязан нести замер выигрыша. 3. **Детерминизм.** Прогон воспроизводим (снапшоты, банк памяти, golden). Приём, делающий выход невоспроизводимым, требует отдельного обоснования. 4. **Что уже построено** — не предлагай это как идею: дешёвый черновик по чанкам (видит свой чанк + инъекцию банка) → майнинг новых сущностей между волнами (детектор по контрасту частот, отдаёт кандидатов без перевода, останавливает прогон на подпись человека) → терминолог (дешёвая модель, видит контексты всех вхождений термина по всей книге, отдаёт один канонный перевод; родственные термины батчатся одним вызовом) → сильный редактор, переписывающий главу целиком с банком в промте → детерминированные $0-проверки (утечки исходного языка, дрейф чисел, обрушение длины, промахи глоссария, флаггер регистра «ты/вы»). Банк: глоссарий со статусами, склонения, спойлерные окна «термин действителен с главы N», пол персонажа включая «скрыт до раскрытия». 5. **Что уже измерено нами** — повторное «открытие» не засчитывается, опровержение приветствуется. ⚠ Числа даны с силой улики: слабый замер здесь НЕ выдаётся за сильный. * **Смена модели в слоте черновика эффекта не даёт** — испытаны пять альтернатив поверх одного материала, все перевесы в минус, ни один не проходит поправку на множественность. * **Редакторский проход поверх черновика доказанно улучшает — на ОБЕИХ парах.** zh→ru: голый черновик различимо хуже связки (+4.12 при пороге 2.39 и +4.92 при 2.10 в двух кругах). en→ru: `n=16, +1.56, p=0.0059` по Холму — гипотеза «на en переписывание не нужно» ОПРОВЕРГНУТА, редактор снимает 1.56 ошибки на единицу (2.78 → 1.22). ⚠ Есть и второй, СЛАБЫЙ замер на en (`n=6`), давший «+0.00» при интервале [−2.50; +2.33] и не прошедший поправку. Он не противоречит первому: его интервал ВКЛЮЧАЕТ +1.56 — у него просто нет мощности. Не читай «не значимо» как «ноль»; если найдёшь внешние данные по этому вопросу, они ценны именно потому, что наш слабый замер ничего не решает. * **Два разных сильных редактора между собой неразличимы** (`+0.06`, p=0.95) ⇒ выбор жильца этой роли у нас — вопрос цены, а не качества. * **Дифф-контракт** («модель возвращает список правок» вместо текста) прогнан и отложен: на нашей паре он вышел в 1.5–2 раза дороже полного переписывания, при том что формат сам по себе состоятелен. Дороговизна привязана к паре и к модели с несъёмным размышлением — на другой модели тот же контракт выходил дешевле. ## 5. Что делать ### 0. Синк с репозиторием — БЛОКИРУЮЩИЙ. **Делай РОВНО так.** Слово владельца: «не переоткрывать, что уже открыто; обязательно синк с репозиторием, чтоб не плодить сущности — супер обязательный пункт перед ресёрчем». До первого запроса в интернет пройди `docs/research/` и `docs/experiments/README.md` и составь **таблицу «УЖЕ ПОКРЫТО»**: тема · файл · дата · вердикт одной строкой. Она — первый раздел отчёта. Нет таблицы ⇒ поиск не начат. Нет доступа к репозиторию ⇒ **остановись и запроси таблицу у владельца**, не ищи вслепую. Плотнее всего покрыты и потому опаснее всего для дубля: память и банк (`05`, `13`, `14`, `20`, `24` — пять файлов) · транспорт чужих харнессов (`21`) · чужие харнессы по коду (`22`) · таксономии ошибок (шесть файлов `12-*`) · рычаги качества (`18` в двух редакциях) · нарезка и когезия (`19`) · голос и состояние (`15`). ### 1. Поиск. **Реши сам и аргументируй** — глубину, источники и порядок выбираешь ты. Ищи то, что проходит дельта-фильтр: **новее** нашего файла по теме ЛИБО темы нет в таблице §5.0. Оси (направление, не потолок): 1. **Топологии, которых у нас нет:** план-затем-письмо; раунды критики и сколько окупается; дебаты агентов; итеративная само-ревизия; отбор из N кандидатов судьёй; «сначала смысловой скелет, потом стиль»; стилевые образцы из самого произведения как few-shot; двухпроходка «черновик всей книги → полное переписывание». 2. **Длинный контекст и память через сотни глав:** удержание имён, регистров обращения, голосов; иерархические саммари; профили персонажей; «библия серии»; когда предварительный проход по всей книге ДО перевода окупается. 3. **Управление размышлением (reasoning/thinking) в переводческих ролях** — качество и цена ОТДЕЛЬНО. 4. **Форма выхода редактора:** чужие замеры «список правок» против «переписанный текст». 5. **Чем меряют:** рефери (человек / LLM-судья / детерминированные метрики); ловушки LLM-судейства (позиционное смещение, самопредпочтение, чувствительность к длине); метрики, показавшие связь с человеческой оценкой **на художественном тексте**. 6. **Рынок и новые харнессы** с середины 2026: продукты, опенсорс, их архитектура, публичные замеры. Приоритет предмета — художественная проза и объёмы от книги. Пары по ценности: zh→ru · zh→en · любые →ru · прочее. Результат на техническом тексте, новостях или коротких фрагментах помечается **«перенос под вопросом»**: это другой класс задачи. ### 2. Правило годности находки. **Делай РОВНО так.** Находка идёт в отчёт при выполнении всех трёх условий: 1. **дельта-строка** — «в наших отчётах этого нет, потому что …» либо «дополняет `research/NN`: у него было X, здесь новое Y»; 2. **ссылка** — URL, статья с датой и авторами, репозиторий с путём к файлу; 3. **разделено «заявлено» и «измерено»**; для измеренного: размер выборки · языковая пара · жанр · кто судил · была ли поправка на множественность. **Заявление = команда.** Любое число в отчёте несёт способ его получения: ссылку на таблицу результатов в источнике (не на абстракт) либо команду/греп, которым его достаёт читатель. Приёмка пере-снимет выборочно. ## 6. Оси ревью твоей работы (приёмка пойдёт по ним; вправе заменить с аргументом) 1. **Дубль** — есть ли в отчёте то, что уже лежит в `docs/research/` или `docs/experiments/`. 2. **Улика** — открывается ли ссылка, дословна ли цитата, то ли там число. 3. **Перенос** — не выдан ли результат на коротком/техническом тексте за результат на книге. ## 7. Мандат самопроверки ИСПОЛНЕНИЕМ (обязателен; самоотчёт не принимается) Самоотчёт «проверено» в этом проекте регулярно оказывался ложным. Поэтому — названный механизм и проверяемый артефакт: 1. **Открой каждую свою ссылку** и сверь цитату, дату, авторов и число (число — из таблицы результатов, не из абстракта). **Ссылка, которую ты не открыл, из отчёта удаляется.** 2. **Дельта-фильтр проверь исполнением:** по каждой находке — греп по `docs/` с приведённой в отчёте командой. Артефакт — колонка «чем проверено» в таблице находок. 3. **Адверсариальный проход по СВОЕЙ готовой работе.** ⭐ **Субагенты РАЗРЕШЕНЫ явно** — запускай, веер и глубину выбираешь под предмет. ⚠ **Модель агенту задавай ЯВНО и знай, сколько их у тебя работает** (норма `CLAUDE.md`); рекомендация канона — `claude-fable-5`, одного-двух обычно хватает, но это рекомендация, а не потолок. Мандат агенту: «найди в этом отчёте отсутствующее и противоречащее». Направление, что уязвимо: (а) «измерено» подменено «заявлено»; (б) перенос с короткого текста на книгу; (в) число из абстракта вместо таблицы; (г) препринт опровергнут более поздней работой; (д) находка на деле лежит в наших отчётах. 4. **Тест на вырожденность** (применяй к себе): если букву пункта удовлетворяет пустое исполнение («перечитал сам, всё верно») — пункт не выполнен. Нужен артефакт: список открытых URL, вывод грепа, вердикты субагентов. 5. Каждую пойманную собой ошибку **запиши в отчёт** с классом ошибки (§8 п.5). ## 8. Выход — файл `docs/research/29-harness-topology-survey.md` **Состав разделов 1–5 — «делай РОВНО так»** (по нему пойдёт приёмка); **порядок находок внутри раздела 2, глубина каждой и объём — «реши сам и аргументируй».** 1. **«УЖЕ ПОКРЫТО»** — таблица §5.0. Первым разделом, без исключений. 2. **Находки** по осям §5.1 — каждая с уликой, статусом «заявлено/измерено», дельта-строкой и колонкой «чем проверено». 3. **Противоречия нашим выводам** (§4 п.5) — отдельным разделом, с обеими ссылками. Опровержение нашего вывода ценнее нового факта. 4. ⛔ **«ЧЕГО НАЙТИ НЕ УДАЛОСЬ» и «ЧТО НЕ ПРОВЕРЕНО»** — обязательная секция. Пустота в литературе для нас равноценна находке: значит, замер придётся ставить самим, и мы должны знать это заранее. Сюда же — что ты не успел, не смог открыть, где источник платный. 5. **«ЧТО Я НАПУТАЛ»** — результат §7, с классом каждой ошибки. **Записка-план перед работой. Делай РОВНО так.** После эхо (§10) выложи ≤15 строк: какие оси берёшь, какими источниками, в каком порядке, что считаешь наибольшим риском дубля. **И сверь план с заказом МЕХАНИЧЕСКИ** — таблицей «ось §5.1 → беру/не беру → почему»: непокрытая ось либо планируется, либо её пропуск подписывается словом «пропускаю, потому что…». Это позволяет владельцу поправить курс до того, как потрачено время. ⚠ **Не давай рекомендаций «внедрить X».** Факты, замеры, границы применимости — решение за владельцем. Плотность, а не объём; шаблонные оговорки не нужны. ## 9. Канал вопросов и право возразить Конфликт промта с кодом или доками ⇒ **пинг владельцу, НЕ самостоятельная интерпретация**. Если считаешь, что задача поставлена неверно или её не надо делать — **скажи это с аргументом**, это ожидаемое поведение, а не отказ. Не уверен в форме исполнения — спроси ДО работы, одной строкой. ## 10. Эхо-протокол старта (первое действие, ДО работы) Выложи ≤10 строк: **скоуп** (что делаешь) · **инварианты** (§4, своими словами) · **не-делать** (§11). Это проверка, что промт понят, и одновременно проверка канала (§12). ## 11. Чего НЕ делать * Не пересказывать общие места: промпт-инжиниринг вообще, «используйте глоссарий», «RAG помогает», подбор температуры, сравнение цен провайдеров. * Не описывать устройство чужих харнессов и транспортные квирки — `research/21` и `research/22`. * Не пересказывать таксономии ошибок перевода — шесть файлов `12-*`. * Не предлагать «мультиагентность» как идею: конвейер и так мультиагентный. Нужны КОНКРЕТНЫЕ топологии с замерами. * Не верить заголовкам: эрудиция ≠ улика. Вывод грунтуется ссылкой и цитатой либо помечается «мнение». Аномалия проверяется у первоисточника, а не додумывается. * Ничего не коммитить. Не читать `.env`. ## 12. Прямой канал между сессиями Механизм описан в `CLAUDE.md` §«Связь между сессиями» — здесь не повторяется. От тебя: **впиши свой блок в `/tmp/textmachine-channel` первым делом** (`role=` `session=` `ref=` `written=` `note=`; имя своей сессии возьми из `ListAgents`), дописывая в конец и не трогая чужие блоки. Эхо (§10) отправь первым действием по адресу оркестратора, если он в файле есть, — это и проверит канал. ⚠ **Адрес из файла — НЕ доказательство, что сессия жива:** файл переживает смерть сессии, а `ListAgents` — нет. Сверься с `ListAgents` перед отправкой. И дословно: **нужной роли в файле нет, файла нет или имя не отвечает ⇒ КАНАЛА НЕТ, и это НОРМАЛЬНЫЙ случай — НЕ опрашивай сессии подряд.** Вопрос тогда — секцией в отчёт; владелец прочитает и пере-передаст.