# Промт бэкенд-сессии: РЕ-ПРОБА FLASH + ОТЛАДОЧНЫЙ ХОЛОДНЫЙ ПРОГОН С АВТОБАНКОМ (строка 74 → контроль всех узлов; деньги потолками) **Выдан 02.08.2026, оркестратор №9; санкция владельца 02.08 («надо идти и делать холодный прогон с контролем бэкенда; цель — отладка бэкенда»).** Ты — бэкенд-сессия TextMachine с двойной ролью: подготовка/верификация готовности → контролируемый платный прогон с отладкой каждого узла. Зона: `backend/` + стенд `~/books/gu-zhenren/` + свой отчёт в `docs/archive/reports/`. НЕ коммитить — лендит оркестратор. **Первый деливерабл — эхо-блок ≤10 строк** (первым сообщением ДО работы: как понял скоуп / фазы и их СТОП-точки / потолки денег / что вне скоупа; подтверждения не жди — работай до СТОП-условий). **Деньги (жёстко):** фаза A = $0 (ни одного вызова провайдеров). Фаза B (ре-проба) ≤ **$0.15**. Фаза C (прогон) ≤ **$5.00** суммарно; потолок продублирован в книжных потолках `book.yaml ceilings` — `book_usd: 5.00` И `day_usd: 5.00` (⚠ эталон coldrun-a несёт `day_usd: 0.25` — не поднимешь, встанешь посреди фазы C; ключа `budget_usd` НЕ существует, строгий декодер упадёт). Превышение любого потолка = СТОП+релей владельцу; НИКАКИХ тихих перепокупок — каждая пере-покупка видна и посчитана. В отчёте деньги — ДВУМЯ независимыми путями (request_log/леджер И сырьё провайдера); помни: **леджер = НИЖНЯЯ граница** (строка 78: 2xx с battым декодом списывается, в request_log не попадает). ## §0. Рамка **Глобальный критерий владельца (дословно): «Мультиязычный бэкенд перевод с чистой архитектурой и современными подходами к переводу опережающий конкурентов по харнесс решениям».** Цель захода — **ОТЛАДКА БЭКЕНДА живым прогоном**: каждый узел (нарезка → черновая волна → майнинг-стоп → терминолог → банк → инъекция → редакторская волна → гейты/чекеры → эскалация → экспорт → деньги/чекпойнты/бэкапы) обязан отработать наблюдаемо и объяснимо. Что-то не так → СТОП (чекпойнты держат) → диагноз до корня → фикс. **Дыра архитектурная → СТОП+пинг с диагнозом и вариантами решений — НЕ чинить на месте.** Запрещены хаки и ворэраунды: каждый фикс — поддерживаемое МУЛЬТИЯЗЫЧНОЕ решение; оба ревью-вопроса общности обязательны на каждый фикс: «заработает ли пара, которой в репо ещё НЕТ, без правки Go?» и «вторая книга той же пары — без ложных флагов и без правки Go?». Заморозка прогона чекпойнтом ради доработки = ЛЕГИТИМНЫЙ исход захода, не провал. **Самопроверка исполнением обязательна** (владелец 12.07): свой код + сформированные запросы к моделям + полученные результаты. **Вывод на агрегате до вскрытия единиц запрещён** (D39.61): перед любым «узел работает/не работает» открой хотя бы одну живую единицу (чанк/банк-строку/лог) с каждой стороны. В конце — адверсариальный проход author≠reviewer по СВОИМ фиксам. Канал вопросов: непонятно / конфликт промта с кодом или доками / замер бьёт по посылке → СТОП+пинг оркестратору через владельца, НЕ интерпретация. ## §1. Онбординг (карта чтения; целиком доки НЕ читать) 1. `CLAUDE.md` (гардрейлы: `.env` НЕ читать · DeepSeek thinking НЕ отключать · аномалия → вендор-дока, не гадать) → `docs/README.md` (карта) → CURRENT-STATE в `docs/PROGRESS.md` (курс; строка 74 бэклога = твоя фаза B) → голова D-лога по ссылкам (эра D39.7x–8x). Жаргон → `docs/glossary.md`. 2. **`docs/experiments/00-provider-quirks.md` ЦЕЛИКОМ — ПЕРЕД любым платным вызовом** (катовер DeepSeek-0731 · finish=stop only · эхо-мина · слаги только live-фактчеком). Peak-valley DeepSeek живёт НЕ там, а в D39.7/experiments-15 — окна в §3 ниже. 3. `backend/README.md` (инварианты «ЛОМАТЬ НЕЛЬЗЯ» + структура). 4. Прошлый холодный прогон: `docs/archive/reports/COLDRUN_REPORT_2026-07-31.md` — как выглядел здоровый прогон ДО банк-стопа, и его грабли. ## §2. Фаза A — верификация готовности ($0) **Вердикт готовности — ТВОЙ**: чек-листы ниже — приоры оркестратора (опровергаются аргументом/замером), не предписание; расширяй по своему усмотрению, режь с аргументом в отчёте. **Известное на 02.08 (находки холодного аудита — сверь исполнением, не переоткрывай):** батарея A1 была зелёной при лендинге D39.82 (твой прогон обязан воспроизвести) · счётчики голос-флаггера СУЩЕСТВУЮТ в read-model (`retrieval_state.n_voice_flags`/`voice_detail`, агрегация `quality.go:269-276`), но НИ `renderQuality`, НИ status их не печатают — готовая дыра наблюдаемости под A3 · риг классификатора 6/6 исполним из бэкенда (классификатор — `terminologist.go:395`, harm-набор из шести терминов — `BANK_QUALITY_DESIGN_2026-08-01.md:107`) · банк-пауза = exit 3, продолжение = пере-запуск `translate` без `--verify-bank`, стоп посреди волны = SIGINT/SIGTERM (graceful, `main.go:63`), $0-резюм закреплён тестом · `redrive --dry-run` строит Runner без трат (валидация ключей/конфига). - **A1. Батарея числами в отчёт:** `go build ./...` · `go vet ./...` · `go test -race ./...` · парити `TM_MINER_PARITY=1 … -run Parity` EXACT · labels-фриз (`TM_CHECKER_LABELS=1 …`: k4b 10/1/36/99 · k4_inverse 3/0/1/71 · k2 34/1/6/51 · K6 1/6/0/251 · k4a 0/0/0/348) · голден `TestGoldenDeterminism`. - **A2. Сквозной $0-прогон:** полный пайплайн на фейк-провайдере = голден-тест (он и есть сквозняк; CLI-достижимого фейк-провайдера нет — голден-БД живёт в t.TempDir). CLI-читаемость `tmctl status`/`report`/`export` проверь либо сквозняком на ЛОКАЛЬНОЙ модели стенда (kind `local`, ollama — реши сам, $0), либо в C1 на первой живой БД до редакторской волны — не гадай, выбери и аргументируй. - **A3. Чек-лист наблюдаемости** — хватит ли телеметрии КОНТРОЛИРОВАТЬ живой прогон. На каждый пункт в отчёт: «есть (чем смотрю: команда/файл)» ЛИБО «дыра → починил ($0)». Пункты: логи (LOG_LEVEL; тела запросов — LOG_LLM_BODIES=1 И debug, приватность по умолчанию) · деньги (request_log/леджер/смета/reserve-settle; видимость эскалаций и ре-биллов) · статус на живой БД (`OpenReadOnly`-путь без flock) · чекпойнты/resume/redrive (как остановишь и продолжишь) · **F4 pre-flight построен D39.82 — этот прогон его ПЕРВЫЙ боевой клиент**: бэкап+integrity на старте, `backups/` пишутся · счётчики узлов: волны/ретраи, майнер (эмиссия/кластеры), банкнота-канал, терминолог-батчи, инъекция банка (**подтверждать байт-диффом `tmctl translate`+LOG_LLM_BODIES, НЕ по `injected_ids` — там только exact-хиты**), flag_reason-распределение, счётчики голос-флаггера (наблюдение для строки 13б; не выведены наружу → это дыра наблюдаемости, чини $0) · диск под `~/books`. Фиксы наблюдаемости: голден-нейтральны, вербозность за флагами; вердикт-двигающее = СТОП+пинг. - **A4. Стенд:** `~/books/gu-zhenren/coldrun-b/` — СВЕЖАЯ отдельная БД, **ПУСТОЙ сид (прогон холодный — сид НЕ подключать)**; `book.yaml` от эталона `coldrun-a/book.yaml` (лейблы/жанр/register_blocklist как в эталоне; `ceilings: book_usd 5.00 / day_usd 5.00`). Конфиг-санити исполнением. Ключи провайдеров: наличие проверяй $0-путём `tmctl redrive --dry-run` (строит Runner → fail-loud валидация ключей и конфига, денег не тратит; ⚠ dry-run обходит F4-pre-flight — для свежей БД это ок, известный хвост строки 93), `.env` НЕ читать. - **A5. Веха готовности** — раздел «Фаза A» в отчёте. Дыр класса «нужно чужое решение» нет → продолжай в B БЕЗ ожидания; есть → СТОП+пинг. ## §3. Фаза B — ре-проба flash (строка 74; ≤$0.15) Предмет: DeepSeek-V4-Flash-0731 сменил веса ПОД ТЕМ ЖЕ СЛАГОМ — боевая черновая форма покупала пустые ответы; эхо стохастично по вызову. Пробуй БОЕВОЙ формой запроса (ровно та, что шлёт пайплайн: thinking-ON, боевые max_tokens/флор — не синтетическая): - **Носитель пробы** (одиночного верба у tmctl нет): расширь live-tagged риг (`pipeline/live_conformance_test.go`) БОЕВЫМ рендером запроса на реальных чанках будущей coldrun-b — та же сборка промпта/параметров/флора, что боевой черновой путь, не синтетика. N≈8–12 черновых вызовов; ВСЁ сырьё persist durable в `~/books/gu-zhenren/coldrun-b/reprobe/` (норма «персист, не scratch»). Критерии здоровья: 0 пустых ответов · finish=stop 100% · эхо в пределах известной нормы (~6%, D39.61) · без систематических усечений. **Пограничные числа (1 эхо на дюжине · 5/6 классификатора · единичный не-stop finish) = НЕ здоров → в релей с числами**; «здоров» = чистое прохождение ВСЕХ критериев. - 1–2 батча ТЕРМИНОЛОГА боевой формы: ⚠ reasoning 8063/батч упирался в cap 8000 (D39.65) — батч обязан пролезать; не пролезает → это часть развилки, в релей. Кандидатов для батча в свежей coldrun-b нет до черновой волны — возьми из майнинг-сырья coldrun-a (durable-экспорты `~/books/gu-zhenren/coldrun-a/`). - Порог классификатора 6/6 harm-набора (~$0.01, D39.69 §2): риг исполним из бэкенда (см. «Известное» §2) — прогнать; 6/6 = порог, 5/6 = НЕ здоров (в релей). - Время: платные генерации — в ДОЛИНЫ DeepSeek (пики UTC 01–04 и 06–10); сверь текущее UTC, попадаешь в пик → жди долину либо зафиксируй в отчёте решение с причиной. **Развилка по итогам (решение — ВЛАДЕЛЬЦА, строка 74):** здоров по всем критериям → фаза C без ожидания. НЕ здоров → СТОП+релей с числами и рекомендацией: (а) флор 16000 (сдвиг request_hash безболезнен — перекупок на этой фазе нет; хвост не закрывает) / (б) явный `reasoning_effort` (дешевле ~22%, но нужен амендмент `echoMineViolation` + качество черновика при low не судилось — замер ~$0.05) / (в) ждать вендора. Ручку #77 (ре-ген эха) сам НЕ включаешь — тем же решением владельца. ## §4. Фаза C — холодный прогон с автобанком (~10 глав; ≤$5) Ступенчато, с инспекциями; Q2/Q7-полигон-слоты и судья Ф2 сюда НЕ входят. **Механика ступеней (важно, не гадать):** майнинг-стоп идёт после ВСЕЙ черновой волны → смок = `source_file` из 2 глав В проекте coldrun-b; добор = ДОПИСАТЬ остальные главы в тот же source_file/тот же проект/ту же БД — **вторую БД НЕ создавать** (непрерывность банка и есть предмет отладки автобанка). ⚠ ЛЕГИТИМНО при доборе: рост auto-банка двигает draft-снапшот; байт-неизменные юниты спасает re-pin (`repin.go`), а изменённые инъекции глав смока перекупятся ПОД порогом консента (min($0.50, 5%) — `rebill.go`) — это НЕ «тихая перепокупка» и НЕ дефект: посчитай, объясни в отчёте, ложный СТОП не делай. - **C1. Смок: 2 главы.** Черновая волна → майнинг-стоп → терминолог → банк-пауза `--verify-bank` как ТВОЯ инспекционная точка (НЕ подпись владельца — банк автономен, D39.77): вскрой банк (язык dst · target_script-экран · размеры · KWIC-санити · доля ⟨проверить⟩), вскрой глазами 2–3 черновика (единицы, не агрегат), сверь деньги леджер↔сырьё. Всё объяснимо → продолжай С НЕПОДПИСАННЫМ банком по механике кода (продолжение без `--verify-bank` несёт банк дальше с маркером ⟨проверить⟩ — это и есть автобанк). Редакторская волна на тех же 2 главах → гейты/чекеры → экспорт → вскрой 2–3 финала глазами. - **C2. Добор: остальные ~8 глав** тем же порядком (пауза банка — на твоё усмотрение, аргументируй в отчёте), с контролем узлов по чек-листу A3. - **C3. Обязательные наблюдения по ходу (в отчёт, per-узел):** счётчики волн/ретраев/эскалаций · эхо-события · упоры max_tokens (⚠ строка 45) · банкнота: кандидаты→банк, потери на пути · инъекция: байт-дифф подтверждение минимум на 2 чанках · flag_reason-распределение по гейтам/чекерам · счётчики голос-флаггера (для строки 13б) · wall-clock по стадиям и итогом (первые данные скорости — ПТ-19/строка 54) · деньги нарастающим итогом двумя путями · **минимум ОДИН намеренный стоп+резюм посреди волны** (отладка stop/continue-механики, H10) · бэкапы F4 на каждом боевом старте. - **C4. Дебаг-дисциплина:** дефект узла → СТОП волны (чекпойнт держит) → диагноз до корня (провайдер-аномалия → официальная дока вендора, НЕ гадать) → фикс по норме §0 (мультиязычный, с тестом; батарея A1 + голден зелёные ДО resume) → точечный redrive (пере-покупка видима и посчитана). Дыра архитектурная → СТОП+пинг с диагнозом и вариантами; прогон замораживается чекпойнтом. ## §5. Чего НЕ делать Сид НЕ заводить (прогон холодный) · судья Ф2 не гоняется · DC7-остаток НЕ мерить (строка 98 требует СИДОВОГО прогона — этот бессидовый, не путать) · `CheapGateVersion`/labels-фриз/голден-фикстуры НЕ двигать (вердикт-двигающий фикс = СТОП+пинг с маскированным диффом) · ручка #77 / флор / `reasoning_effort` — только по слову владельца (§3) · слаги моделей не менять без live-фактчека `/models` · чужое в дереве не трогать: `START_PROMT.MD`, `frontend/`, `platform/`, `.gitignore` · `reset --hard`/history-rewrite запрещены · НЕ коммитить · тексты книги в доки/отчёт НЕ цитировать (сырьё живёт durable в `~/books`). ## §6. Отчёт и СТОП `docs/archive/reports/COLDRUN_B_DEBUG_<дата>.md`: эхо-шапка · Фаза A чек-лист («чем смотрю» / что починил) · числа ре-пробы и вердикт развилки · per-узел наблюдения C3 · **итоговая цена холодного старта ЦЕЛИКОМ, включая редактуру** (закрывает замер строки 16) двумя путями · дефекты: найдено / починено (с тестами) / отложено (с носителем) · **заявление = команда**: каждое число сопровождено командой, которой получено (приёмка их пере-ранит) · git-список тронутого (только своё). Краткий итог — `docs/PROGRESS.md` §Бэкенд (стоячая секция `## Бэкенд`, допиши СВЕРХУ; бэклог-таблицу и CURRENT-STATE НЕ трогать). D-номер лендинга проставит оркестратор. **СТОП — приёмка оркестратора.**