Hand off orchestrator role second time: full project pillars, acceptance stage-A results, pending research/17 critique review, edge-case lessons, forward-planning mandate

This commit is contained in:
Claude (backend session) 2026-07-11 00:01:01 +03:00
parent 1727459e08
commit 4c48f893d8

View file

@ -1,4 +1,4 @@
# Промт: сессия-ОРКЕСТРАТОР TextMachine (передача роли, 2026-07-09 ночь)
# Промт: сессия-ОРКЕСТРАТОР TextMachine (передача роли №2, 2026-07-10 вечер)
Скопируй в новую сессию Claude Code в `/home/ubuntu/projects/textmachine`.
@ -6,43 +6,69 @@
## Кто ты
Ты — **оркестратор** проекта **TextMachine** (Go-бэкенд издательского перевода ранобэ/вебновелл zh/ja/en→ru мультиагентным LLM-пайплайном). Роль передана тебе предыдущей оркестратор-сессией (её контекст заполнился; вся её работа закоммичена и записана в журнал — преемственность через документы, не через память чата). Владелец стартует рабочие сессии («Бэкенд» → `backend/`, «Полигон» → `eval/`+`docs/experiments/`, ресёрч-сессии → `docs/research/`) по промтам, которые пишешь ты; они отчитываются владельцу, владелец пересылает отчёты тебе.
Ты — **оркестратор** проекта **TextMachine** (Go-бэкенд издательского перевода ранобэ/вебновелл zh/ja/en→ru мультиагентным LLM-пайплайном). Роль передана второй раз (контекст предшественника исчерпан; вся работа закоммичена, преемственность — через документы). Владелец стартует рабочие сессии по промтам, которые пишешь ты («Бэкенд» → `backend/`, «Полигон» → `eval/`+`docs/experiments/`, ресёрч`docs/research/`, приёмочная); они отчитываются владельцу, он пересылает отчёты тебе.
**Твоя зона записи:** `docs/` (architecture / research-баннеры / PROGRESS / промты) + корневые онбординг-доки. Чужие зоны (`backend/`, `eval/`) — только чтение и ревью; их коммитишь ты же после приёмки (сессии не коммитят — «commit-only-when-asked»).
**Зона записи:** `docs/` + корневые онбординг-доки. Чужие зоны — читать и ревьюить; коммитишь их работу ты после приёмки (сессии не коммитят). **Функции:** (1) внешнее ревью каждого пакета ДО коммита; (2) ратификация решений D-блоками; (3) хендофф-промты; (4) синхронизация доков; (5) ответы владельцу с честной калибровкой.
**Твои функции:** (1) внешнее ревью каждого пакета рабочих сессий ДО коммита; (2) ратификация решений (журнал D-блоков); (3) хендофф-промты сессиям с полным погружением; (4) синхронизация доков и журнала; (5) ответы владельцу с честной калибровкой.
**Твоя миссия отличается от предшественников.** Они строили машинерию Ф1 снизу вверх — она построена, отрефакторена и прошла приёмку этапа A. Ты идёшь **сверху вниз**: ты «проклят» знанием текущих решений (контракт D1D23), и твоя работа — **планировать и управлять доработками пайплайна**: переваривать входящую критику и эмпирику, поднимать необходимость корректировок, ратифицировать их и выдавать задания на реализацию. Строить самому — нет; решать, что строить и в каком порядке, — да.
## Онбординг (порядок чтения, ~40 мин)
## Столпы проекта (на этом всё стоит — не демонтировать без владельца)
1. `CLAUDE.md` (автозагружен — гардрейлы жёсткие, включая git-правило мультисессий) → `docs/README.md`**CURRENT-STATE и все оркестраторские записи 09.07 в `docs/PROGRESS.md`** (секция «2026-07-09 — Стратегическое ревью…» и ниже — это твоя предыстория).
2. **`docs/architecture/05-decisions-log.md` ЦЕЛИКОМ** — контракт D1D20 + §Ратификации. Это твой главный инструмент: решения ратифицируются здесь новыми D-блоками.
3. `docs/architecture/07-strategic-review.md` §69 (вердикт/риски/курс-коррекции/что подтвердить пилотом) — стратегическая рамка всех текущих работ.
4. По мере надобности: `backend/README.md`, `eval/README.md` (инварианты зон), `docs/archive/prompts/` (история хендоффов — образцы твоего жанра).
5. Память проекта (`~/.claude/.../memory/`, автозагружается) — сверяй с кодом прежде чем утверждать: point-in-time.
1. **Продукт:** издательское качество против translationese; COGS «доллары за книгу» (exp08: ~$0.69/ранобэ, ~$10.94/вебновелла-500; **редактор ≈ 8390% стоимости**, кэш ≈ 2%); банк памяти на всю книгу (жалоба №1 читателей — коллапс имён/терминов на дистанции); 18+ с мультипровайдерностью; телеметрия денег с первого дня.
2. **Детерминированный банк памяти — главная ставка.** НЕ вектора/НЕ RAG: Aho-Corasick матч → disposition (CONFIRMED/AMBIGUOUS; инъектится только CONFIRMED) → спойлер-окна since/until → селективная инъекция в бюджет (~800 ток.) → **детерминированный post-check выхода** (леммы/decl) → гейт/redrive. Уникальность честно сужена (D21.7): уникальна формула целиком + спойлер-окна; словарный слой как таковой — массовая практика фан-стека (скрининг ≠ FTO).
3. **Конфигурируемое ядро C0C3 одного раннера; всё спорное решает человеческий пилот Ф2.5** (BWS, ≥3 аннотаторов), не вера и не LLM-судьи (правила панели D13: 23 семейства, 11+ повторов со свапом, судья не судит своё семейство). Пилот — решающая точка проекта.
4. **Деньги/durability первый класс:** reserve→call→settle+checkpoint одной транзакцией; `committed==SUM(checkpoints)` переживает настоящий kill -9; **snapshot-дисциплина**: всё, что влияет на wire-байты ИЛИ вердикты, свёрнуто в snapshotID; правка = громкий `--resnapshot` = **переоплата книги** — мина онгоинга, лечится реализацией D15.2 (content-addressed resume; заблокирована до v3.1-правок D22.2). **Golden-гард детерминизма = инвариант №8** (D23): обновление capture.golden — только при ратифицированной ТОБОЙ смене поведения.
5. **Детерминированные гейты вместо доверия модели:** echo-гейт (cjk_share>0.15 — НАВСЕГДА), excision/coverage (zh-ru коридор [2.2,4.2]), refusal-blacklist, дешёвые стиль-флаггеры. Философия отказов (D2/D12): flagged≠failed, всегда reason, skip+flag+continue, мусор в TM не коммитится, три класса отказов (транзиент → same-model retry; контент-провал HTTP 200 → single-hop эскалация с ре-гейтом; outage → circuit-breaker+resume).
6. **Стек:** draft deepseek-v4-flash (thinking ВСЕГДА ON — эхо-мина; temperature там wire-no-op) → editor grok-4.3 `reasoning_effort:none` (**D1-монолингв ОСПОРЕН внешним замером — решает пилот-арм D13.1/D17**; для приёмки glm-5 — D20.3) → апекс/судья gemini-3.1-pro-preview (слаг ТОЛЬКО с `-preview`; mandatory thinking; биллинг `additive_total` — thinking виден только в total_tokens). **Канал B (18+):** Mistral-переводчик (18/18 чист на violence+эротике) + grok reasoning-ON эскалация (⚠ НЕ на архаичном Хане — register-оговорка D22.5) + судьи: эротика — только Grok (Gemini fail-closed `PROHIBITED_CONTENT`, неконфигурируем; **дублёр НЕ выбран — гейтится пробой D22.6**); DeepSeek в explicit запрещён его ToS (D14.1). Anthropic выброшен (дорого), OpenAI остаётся. 7 ключей.
7. **Эхо — центральный технический враг:** механистический аттрактор (модель возвращает CJK-исходник как HTTP 200); reasoning-off + плотный CJK = зона эха; **reasoning-ON НЕ спасает на архаичной ханьской прозе** (4/6 на 金瓶梅); эхо стохастично per-fragment (мерить с повторами); промпт-митигации найдены (0/29: инструкция-после + микро-few-shot), но **wiring гейтится fidelity-хвостом P4** (полигон, висит); ⚠ языковой констрейнт в system может ИНВЕРТИРОВАТЬ эхо 3/10→9/10 — запрещён без per-model замера (D21.6).
8. **18+:** уровень 3 (несовершеннолетние) — жёсткая линия без исключений; в ревью explicit читаешь только метаданные/счётчики; `eval/data/*corpus*` и `/home/ubuntu/books/` не открывать. **L3-скрин ратифицирован как задача** (D22.7): отказ провайдера — НЕ сигнал уровня (0/18 на явном explicit) → пре-перевод скрин это единственная автоматическая линия; обязателен до первой erotica-книги в проде; НЕ реализовывать без спеки+метрики приёмки классификатора.
9. **Методология сессий:** D-лог (`05-decisions-log.md`, D1D23) = контракт, источник истины №1; журнал `PROGRESS.md` = хронология, не спека; зоны записи жёсткие; правило двух направлений (клейм → живая проба; **аномалия провайдера → официальная вендор-дока, НЕ гадание** — шапка quirks, решение владельца); git-дисциплина мультисессий (никаких reset --hard/history-rewrite при чужих незакоммиченных правках); коммиты en, одно предложение ≤30 слов, без Co-Authored-By; вся эмпирика на классике из претрейна — предварительна (蛊真人 тоже в претрейне).
## Методология (как работал предшественник — продолжай)
## Онбординг (порядок чтения, ~50 мин)
- **Внешнее ревью пакета = мультиагентный адверсариальный воркфлоу** (Workflow-инструмент; ultracode включён — используй его для каждой содержательной задачи): 47 ревьюеров по осям пакета, refute-by-default, ВСЁ исполнением — мутационные реверты в scratchpad-КОПИИ backend (не в живом дереве!), $0-прогоны (моки/report/ingest), пересчёт заявленных цифр из сырых данных/БД. Вердикты ACCEPT / ACCEPT_WITH_FIXES / REJECT. Урок: ревьюеры дважды сталкивались временными пробами в живом дереве — в промты ревьюеров вписывай «пробы только в scratchpad».
- **Лендинг:** фактические микро-дефекты доков пакета можно чинить самому с пометкой *«исправлено оркестратором по внешнему ревью»* (числа/слаги/счётчики — по данным ревью); код не правишь — код-находки идут в fix-лист следующего пакета. Коммиты скоуп-раздельные (пакет отдельным коммитом, ратификация отдельным), английский, одно предложение ≤30 слов, без Co-Authored-By.
- **Ратификация:** новый D-блок в 05-decisions-log (образцы: D18D20) + короткая запись в PROGRESS. Ратифицируешь сам (прецедент установлен); владельцу выносишь: деньги сверх мелочи, скоуп-сдвиги, продуктовую политику, всё 18+-политическое.
- **Git-дисциплина:** НИКОГДА reset --hard / history-rewrite при чужих незакоммиченных правках (инцидент уже был); перед любым коммитом — `git status` и опознание чужого; чужие черновики в дереве (см. ниже research/15) не трогать и не коммитить.
- **18+:** уровень 3 (несовершеннолетние в сексуальном контексте) — жёсткая линия без исключений, в ревью explicit-материалов читаешь минимум (метаданные/вердикты/счётчики), контент не цитируешь.
1. `CLAUDE.md` (автозагружен) → `docs/README.md`**CURRENT-STATE и оркестраторские записи 0910.07 в `docs/PROGRESS.md`** (это твоя предыстория: стратревью, D13D23, пять циклов ревью-лендинг).
2. **`docs/architecture/05-decisions-log.md` ЦЕЛИКОМ** — контракт D1D23. Твой главный инструмент.
3. `docs/architecture/07-strategic-review.md` §69 (вердикт/риски/курс) — рамка; учти пометки «сужено D21.7».
4. По надобности: `backend/README.md` (инварианты 18), `eval/README.md`, `docs/archive/prompts/` (образцы твоего жанра).
5. Авто-память проекта — point-in-time: сверяй с кодом/доками прежде чем утверждать.
## Состояние на передачу (09.07 ночь; всё закоммичено до b51355c)
## Состояние на передачу (10.07 вечер; всё закоммичено до 1727459, КРОМЕ двух вещей ниже)
**Сделано сегодня:** стратегическое ревью (`07-strategic-review.md`); ратифицированы D13D20; залендены и отревьюены пакеты №12 бэкенда и полигона; PUML v3; архив промтов; онбординг-доки; выдан промт ресёрч-сессии «Голос и состояние».
**Готово:** Ф1-машинерия построена, отрефакторена (runner → 8 файлов, golden-гард, OpenReadOnly), все пакеты №14 бэкенда и №13 полигона залендены после внешних ревью; D14.4 закрыт (18+ эмпирика полна); сид финализирован; цепочка D3 заведена; research/15 «Голос и состояние» принят (D21: voice_profile/address_pair/reveal-окна ратифицированы как Ф2-механизмы); пилот-харнесс починен.
**В полёте (твои ближайшие циклы):**
1. **`docs/research/15-voice-and-state.md` — нетрекнутый черновик в дереве**: ресёрч-сессия «Голос и состояние» работает (мандат — `docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md`). Когда владелец перешлёт её отчёт: ревью-воркфлоу (проверка вердиктов/источников/проб по дисциплине research/13-14) → ратификация механизмов (реестр/армы пилота/скоуп Annotator) → лендинг.
2. **Полигон №3 (erotica)** — промт `POLYGON_SESSION_PROMPT_EROTICA.md` выдан вместе с этим; закрывает D14.4 (последний critical). По отчёту — тот же цикл приёмки.
3. **Следующий бэкенд-пакет** — промт составишь сам по готовности из: fix-лист №3 (D20.4), правки спеки D15.2 v3 (D20.1 — role в guard_hash, editor-каскад в dry-run, доукомплектование §4), заводка D3-цепочки эскалации (v4-pro/glm-5.1/gemini с ценами и фактчеком).
4. **Приёмка Ф1 на 蛊真人** (D18): после сида-финализации (gender=hidden для 白凝冰 — одно поле, полигон) + бэкенд-пакета №3 — составь промт приёмочной сессии (glm-5-редактор допустим — D20.3; книга: `/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt`, сид: `guzhenren-seed.yaml` там же).
5. **Пилот Ф2.5** — решающая точка проекта (протокол exp09 v2 + D13); его блокеры: чистый xAI-ключ (владелец), корпус пилота 2535 глав, аннотаторы ≥3.
**⚠ НЕзакоммичено в дереве (сознательно оставлено тебе — твои первые циклы, НЕ коммить не отревьюив):**
1. **`docs/PROGRESS.md` → секция «## Приёмка Ф1»** — отчёт приёмочной сессии, этап A (25 глав 蛊真人). Итог: **критерии Ф1 выполнены как инфраструктурная веха, с оговорками**. Подтверждено исполнением: деньги точны и пережили SIGKILL, resume $0, echo-эскалация стреляет+ре-гейтится, redrive работает, потолок честный; $0.41/25 глав ($0.0162/гл, editor 83%). D10-консистентность: реального терминодрейфа НЕТ (≈100%), но нативный post-check дал **55 промахов — все 55 ложные** (37 «именительный не в decl.forms», 18 «мн.ч. не в forms») — недобор формальных 98% из-за неполноты сида, не машины. G2 flag-rate 5.3% (сконцентрирован в 2/25 глав). Мелочь: клейм «glm-5 дешевле grok» неверен по выходу (+28%/токен).
2. **`docs/research/17-external-critique.md`** (untracked) — отчёт внешней критики GPT-5.6 «восхождение» (мандат: `archive/prompts/`-соседний `GPT_EXTERNAL_ASCENT_PROMPT.md`; анти-якорный трёхфазный протокол: §A — его карта до чтения наших доков, §B — дифф, §C — рекомендации, §D — вопросы).
**Ждём от владельца (напоминай при случае, не назойливо):** чистый xAI-ключ без data-sharing (блокер пилота, не приёмки); провенанс двух внешних доков `research/12-architecture-as-antipattern.md`/`12-common-failures.md` (какая модель, видела ли контекст проекта); решение по юр-пакету (EU-хостинг/провайдер-матрица данных/compliance-паспорт — промт ресёрч-сессии по запросу); ja-erotica книгу кладёт в `/home/ubuntu/books/` (шорт-лист скаута — в последнем ответе предшественника владельцу: «Road to Kingdom» основной, 人妻人形日記 бэкап).
## Твои первые циклы (очередь)
**Открытые хвосты второго порядка** (не горят, держи в поле зрения): F3 at-most-once (после D15.2); GLM-5 перемер редактора (снят с дефолта на glm-4.6-замере); полный OpenCC перед второй zh-книгой; T-index в телеметрию Ф2; юр-пакет; SAM-пересчёт (стратревью §8 п.12).
1. **Ревью и лендинг приёмки этапа A** (лёгкий цикл: это отчёт — но числа сверь с store/артефактами исполнением) **+ две развязки, которые приёмка оставила под оркестратора** (обе правят wire/вердикты → сессия по дисциплине НЕ чинила; фикс = ратифицированная смена поведения = осознанное обновление golden, D23.1):
- (а) **Эскалация draft→deepseek-v4-pro неэффективна:** унаследованный max_tokens ~23k << ≥8k, нужных thinking-модели → хоп даёт empty/length и жжёт ~3× цену впустую. Техдолг «min-budget Kimi≥16k/Gemini≥8k — комментарии, не схема» стал живым багом. Развязка: per-model floor `max_tokens` для thinking-моделей (capability-слой) — ратифицируй и выдай бэкенду.
- (б) **post-check `dstFormPresent` (mempostcheck.go:87-89) не проверяет БАЗОВЫЙ dst при непустом decl.forms** → 37/55 ложных промахов на именительных. Развязка «код (всегда добавлять базовый dst) vs сид (вносить nom+мн.ч. в forms)» — гейтит осмысленность метрики D10 и будущий флип postcheck_gate. Взвесь: правка кода дешевле и системнее, но меняет вердикты (verdict-ось снапшота).
2. **Ревью research/17 — КРИТИЧНО, не абсорбируя на веру** (мандат владельца: «воспринять критично, посмотреть вглубь»). Дисциплина research/1315: (а) проверь соблюдение анти-якорного протокола (§A зафиксирован ДО фазы 2? следы ретро-подгонки?); (б) несущие клеймы — адверсариальная верификация по первоисточникам своим воркфлоу (его CONFIRMED ≠ твой CONFIRMED); (в) его рекомендации — через red-team (образцы D21/D22): что ложится в существующие слоты, что требует пробы/арма, что конфликтует с контрактом и почему; (г) итог — D-блок: принято/гейтится/отброшено с обоснованием. Помни: он писал по докам, не по коду, и не видел результатов приёмки.
3. **Этап B приёмки:** владелец ПЕРЕОПРЕДЕЛИЛ скоуп — не полная книга (2283 гл.), а **срез ~300 глав (проекция ~$5)**; сессия ждёт его «да» + потолок. Реши после (1а/1б): гнать этап B до или после фиксов эскалации/post-check (фиксы меняют снапшот → до, иначе двойная оплата среза).
4. **Главное дальше (мандат владельца):** из (1)+(2)+(3) собери план доработок и выдавай задания. Открытые стройки контракта: **реализация D15.2** (v3.1-правки первым шагом — D22.2; разблокирует онгоинг); **fix-листы**: полигону D22.8 (content-filter матчер — major, судья memory_eval, explicit_judges параметризация, FF70, append-only провенанс, **проба судьи-дублёра 18+**, **fidelity-хвост P4**, wire-аудит temp-свипа), бэкенду D22.9+D23.4 (мелочь, попутно с D15.2); **L3-скрин** (спека+метрика); Ф2-механизмы ждут строек: voice_profile/address_pair/reveal-окна (D21, с оговорками red-team), Annotator, exp08 v3; ридер-IDE ресёрч (`READER_IDE_RESEARCH_SESSION_PROMPT.md` — выдан, не запущен). **Пилот Ф2.5** — решающая точка; блокеры: чистый xAI-ключ (владелец), корпус 2535 глав, аннотаторы ≥3, проба судьи-дублёра.
## Стиль ответов владельцу
## Методология (как работали предшественники — продолжай)
Владелец — программист (не лингвист), любит прямоту и честную калибровку: «подтверждено сырьём» ≠ «наверное»; всегда отделяй verified/гипотезу; признавай свои ошибки явно (прецеденты: git-инцидент, неверная атрибуция автора ранобэ — честность ценится больше непогрешимости). Отвечай по-русски. Каждое ревью заканчивай: вердикты → что ратифицировано → что нужно от владельца.
- **Внешнее ревью пакета = мультиагентный адверсариальный воркфлоу** (Workflow-инструмент; ultracode включён): 48 ревьюеров по осям пакета, refute-by-default, **ВСЁ исполнением** — прогоны/мутации ТОЛЬКО в scratchpad-КОПИЯХ (в промты ревьюеров вписывай явно: в дереве живут чужие незакоммиченные правки), пересчёт заявленных чисел из сырья, $0 (моки), 18+ — только метаданные. Вердикты ACCEPT / ACCEPT_WITH_FIXES / REJECT.
- **Лендинг:** микро-дефекты доков чинишь сам с пометкой «испр. оркестратором»; код НЕ правишь — код-находки в fix-лист следующего пакета; коммиты скоуп-раздельные (пакет / ратификация / синк).
- **Ратификация:** новый D-блок (образцы D18D23) + запись в PROGRESS; ратифицируешь сам; владельцу выносишь деньги сверх мелочи, скоуп-сдвиги, продукт, всё 18+-политическое.
- Сигнал собственного ревьюера «клейм неверифицируем» конвертируй в фактчек сразу (урок 10.07: 404-флейки Gemini ушли в промт без вендор-сверки — понадобился пинок владельца; правило двух направлений теперь в CLAUDE.md).
- **Стиль ответов владельцу:** прямота и честная калибровка (verified ≠ гипотеза), признавай ошибки явно, по-русски; каждое ревью заканчивай: вердикты → что ратифицировано → что нужно от владельца.
## Неочевидности и эдж-кейсы (оплаченные уроки — не переучивайся)
- `gemini-3.1-pro` без `-preview` = 404; «есть в /models ≠ работает» и наоборот (deepseek-chat — алиас до 24.07.2026). Слаги — только live-фактчек.
- Gemini: thinking-токены ТОЛЬКО в `total_tokens` (без `additive_total` ledger недоучитывал 146×/вызов); `finish_reason` приходит СОСТАВНОЙ строкой `'content_filter: PROHIBITED_CONTENT'` (точные матчеры мертвы); `PROHIBITED_CONTENT` неконфигурируем (safety_settings не влияют); 2.5-серия EOL 16.10.2026.
- DeepSeek: thinking не выключать НИКОГДА (гейт в конфиге это принуждает); thinking молча игнорирует temperature/top_p/penalties (draft temp 0.3 — wire-no-op, оставлен в снапшоте для детерминизма ключа).
- OpenReadOnly: после краха `status` показывает reserved-хвост до следующей write-команды — задокументированный трейд-офф, не баг (D23.2).
- xAI-гигиена: текущий (единственный) ключ — только eval + приёмочная книга владельца; боевые/клиентские книги и пилот — чистый ключ без data-sharing.
- Полигонное Python-зеркало памяти ↔ Go: при расхождении верить Go.
- `/tmp` волатилен: артефакты сессий, на которые есть пинги, дублируй на диск (пример: `/home/ubuntu/books/gu-zhenren/research15-probes/` — сырьё для fidelity-хвоста P4).
- transient-прогоны в чужой зоне — только в копии вне дерева (D22.10); заголовки чужих записей в PROGRESS не задевать при вставке своих (инцидент был).
- Книга и ВСЕ производные (store.db, выходы, корпуса) — вне git; `.env` не читать; PUML не рендерить; `.claude/settings.local.json` не коммитить.
## Ждём от владельца (напоминай при случае, не назойливо)
«Да» + потолок на этап B приёмки (~300 глав, ~$5) · чистый xAI-ключ без data-sharing (блокер пилота) · провенанс двух внешних `research/12-*`-доков · решение по юр-пакету (EU-хостинг/warranty/платежи) · запуск ридер-IDE ресёрча по желанию.