textmachine/docs/architecture/05-decisions-log.md

1386 lines
746 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Журнал решений оркестратора — контракт D1D39.91 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)
> **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Читая контракт целиком, держи под рукой, что чем перекрыто:
> ⚠ **Навигация (актуализация 01.08):** карта ниже детально покрывает D1D39.28; решения D39.29+ живут хронологически в теле файла, **свежая голова — С ХВОСТА** (новые ноты аппендятся вниз). Сводка текущей головы и очередь — CURRENT-STATE в `../PROGRESS.md`.
> - **Полностью superseded:** **D1 (моно-редактор) → D17 → D30.1 (редактор БИЛИНГВ)** · D9 (ja-приёмка) → D18 (蛊真人 zh→ru; ja — второй прогон) · D17 → D30.1 · скобка D19.4 «ключ без data-sharing» и D20.3 «чистый ключ = блокер пилота» → **D27** (единый ключ С data-sharing, отключение перед продом) · exp04-дефолт «editor grok-4.3» (D3) → D30.1 (grok reasoning-off из редакторских ролей СНЯТ — no-op; кандидат glm-5-билингв; gemini — премиум-эскалация только за санитайзером D30.3).
> - **Частично амендировано:** D3 (канал B → D14.1/D19.1 + оговорки D22.5/D22.6; апекс-слаг `-preview` — D22.4; draft под вопросом exp13 — D30.6) · D6 («off/minimal для draft/edit» эродирован: draft thinking-ON принудительно, editor-off снят D30.1; живы per-роль принцип и D6.2-буфер) · D10 (+D24.2 alias-слепое пятно, истинная консистентность ≈99.5%) · D11-числа → exp08 → **D30.4** (флип D1 = +1525%, ~$0.85/ранобэ; «$1.52» = неподписанная опция Б) · D12 (+D24.3 флоры max_tokens; +D29.1в rollup — амендмент вердикт-правила) · D13.1-арм из решающего → ПОДТВЕРЖДАЮЩИЙ (D30.1); +D25.3 prefix-анализ судьи · D14.2 закрыт D19.1/D22.4; D14.4 закрыт D22.1 · D15.3 исполнен; спека D15.2: v2→v3→v3.1 (D22.2), реализация = текущий пакет (D30.9) · D24.4 +D28.1 (precision/recall-трейдофф; hard-gate требует пере-замера) · порядок D24.5 отложен D26.1 (этап B — после читаемых 25 глав).
> - **Живое ядро без изменений:** D2 (+новый гейт-класс D30.3), D4, D5, D7, D8, D10-механизм, D12-таксономия отказов, D16, D18, D19.119.2, D21 (Ф2-механизмы voice/address/reveal), D22.522.7, D23 (golden = инвариант №8), D24D39.28 — действующая голова контракта (**D39.28 = ПАК-17 ЗАКРЫТ ЦЕЛИКОМ: третье действие `allow` (assert-only) построено ⇒ ратифицированная ПАРА `violence`/`sexually-explicit` выразима ДАННЫМИ; тройка `route|allow|terminal` несёт ОДИН инвариант и различается остальным; `accepts_labels` пусты = верное fail-closed до ФАКТОВ ToS по первоисточникам (пер-лейблу, зона полигона)**; **D39.27 = пак-17 фаза 2 ПРИНЯТ и залендён [механизм построен по всем 15 «ровно так»; golden байт-в-байт, парити EXACT, `-race`, ценз 433→451 диффом имён; мои три мутации пойманы именованными тестами]; форма добора B = гейт над резолвнутой моделью НЕЗАВИСИМО от `off` + generic-предупреждение `sourceEchoExposure`; **вокабуляр владельца = ПАРА `violence`/`sexually-explicit`** (сохраняет D14 п.1 и dspro-редактора) ⇒ обязательная дельта: третье значение `action` assert-only; Q2 редактор ОТЛОЖЕН с записью (связывает только explicit-книги); новая петля: лейбл НЕ доезжает до промпта — промпт-слой решается отдельно**; **D39.26 = дизайн пака-17 «generic content-labels × provider-capabilities» ратифицирован В РЕДАКЦИИ §14 отчёта [лейблы НЕ входят ни в один хеш — назначенный слой D20.2-Q3 = резолвнутая модель стадии пер-стадийно/пер-волново · резолв ДО валидации, «достижимое» лейбл-зависимо · один хоп `chain[0]`, `len>1` громко, `budget_usd>0` обязателен · Q1 = книга по аргументу ГАРАНТИИ · вокабуляр `content_labels`(книга)/`accepts_labels`(модель, `*[]string` только сужает) · `permissive`+`Stage.Channel`+enum+блок D4.1 отставляются ОДНИМ диффом · `failover.go` удаляется · отказы за `forWrite`, резолв всегда]; добор оркестратора: единый лейбл «adult» схлопывает violence-развязку D14 п.1 → вокабуляр владельцу · `reasoning:"off"` — тихий выход из аддитивного И эхо-гейта на xai (обобщение D19.1 п.2 в данные не доехало) · рейт-гард деградирует молча; НА ВЛАДЕЛЬЦЕ: вокабуляр лейблов + Q2 редактор; D22.7 паком НЕ снимается**; **D39.25 = в движке НЕТ понятия 18+ [generic content-labels × provider-capabilities, refusal причино-агностичен, «adult» = значение данных; §0 п.6]**; **D39.24 = дизайн пака-16 diff-редактора ратифицирован с перестановкой: $0-части (позиционная детекция · read-only скан · фиксы ru_hours_re/半个时辰) строим, платная машинерия §D3D5+§15.2 под enabled:false, включение = решение владельца по замеру остатка пост-профилактики; поправки §15.2 (позитивный ре-гейт+анти-удаление · счётчики из role='repair' без миграции · отбрасывание пересечений · reserve-деградация · classify-гард); ru-target-долг = ограничение**; **D39.23 = пак-15 «структура+форма» ратифицирован [хойст text/value-базы → сплит miner/checks/membank/chunk по ИЗМЕРЕННОЙ связности (прил. A пака-14 с поправкой ревью-шапки) · форм-фиксы Export/RequestHash/resolveChunkState · конфиг-слой пары (пар-калибровки из ран-конфигов, промпт-резолв конвенцией) · overlay-хвосты, unionStringMap-коллизия = громкая ошибка; §1 12-go-style амендирован; байт-точность+парити EXACT; crush-масштаб НЕ эмулируем]**; **D39.22 = эксп пере-прогона ЗАКРЫТ решением владельца; итерация №2 ОТЛОЖЕНА [её вопросы — довесок следующего платного прогона]; редактор = deepseek-v4-pro ИНТЕРИМ [судья №1 · проза/глоссарий · дефекты чинибельны · ×2 дешевле], glm-резерв, дефолт-конфиг при лендинге пака-13; курс = разработка бэкенда [масштаб книги · канал B · Ф2-механизмы · ja→ru §B5]**; **D39.21 = стайл-решения владельца: меры → единицы языка читателя [时辰=2ч] · generic-«гу» СРЕДНИЙ род, именные — по-термово из банка · стихи СМЫСЛОМ · 资质=«талант»; + директива аудита полноты банк-инъекции**; **D39.20 = ПЕРЕ-ПРОГОН исполнен+прочитан [операционка вся живьём: $0-резюм драфта ×3 арма · echo 0 · $6.63<$15; судья dspro 0.679>glm 0.589>>mistral 0.232 при floor-шуме 0; слепые чтения ×2: сводные выборы разошлись, чисто-художественные ИДЕНТИЧНЫ = mistral 4/5 → анти-корреляция гладкость↔верность доказана трижды]; планка ≤2 НЕ пройдена → пилот не открыт; mistral ИСКЛЮЧЁН как несущий редактор [критические смысловые вне гейтов; голос = north-star промпта]; dspro-vs-glm НЕ ратифицирован [зазор ~шум] → итерация №2 после механизации [драфт $0]; дефект-классы→механика: 时辰-юнит-чекер · число-масштабы · broken-word/latin · заголовок-шаблон · банк-дельта 元/资质/赤城 · mined_delta-крэш-фикс [пак-13]; решения владельца: род «гу»/меры/стихи/春秋蝉; полигон: авто-QA ключевать слепыми метками**; **D39.19 = пере-прогон-преп ЗАЛЕНДЕН [6 фиксов: R1-FL-A CLI-exit-3 · R1-FL-B reject-set-livelock-закрыт · R1-FL-C x/text-в-Ш-2 · echo-сплит · read-model-naming · ниты]; golden version-only [masked=0]; парити EXACT; §8-манифест полон; gender-signoff закрыт; бэкенд готов к пере-прогону**; **D39.18 = blast-radius edit-единицы: c-lite (редактура чистого остатка вместо бланка всей единицы; вариант владельца (c)+fallback (b)) залендён `488c8d4`, no-flag путь байт-идентичен; + 4 read-модель-фикса пост-лендинг-ревью [quality-echo/status-first-flagged/export-pairs/detail], открытое решение владельцу = echo-метрика семантика; R1-FL-A/B/C deferred в пере-прогон-преп**; **D39.17-errata = runWave parent-cancellation баг [мой рубеж-2 пропустил, 2-я сессия поймала], фикс `5fc4860`**; **D39.17 = R1 драйвер-свитч ЗАЛЕНДЕН [волновой исполнитель черновик∥→банк-майнинг-стоп→редактура∥; редактор не пере-рендерит draft; Ш-1/Ш-2; golden-рерайт; read-модели per-unit]; полный рубеж-2 [5 линз вкл. синк-с-ресёрчем] = clean bill по несущим осям, 3 MINOR/NOTE-фикса (R1-FL-A CLI-exit-код · R1-FL-B mining-стоп-reject · R1-FL-C x/text-версия) в стенд-only mining-пути → пере-прогон-преп; ПАК-11 ЗАВЕРШЁН**; **D39.16 = арх-проход ЗАЛЕНДЕН: майнер-данные (百家姓/Палладий/частицы/суффиксы) вынесены в `internal/lang`+`configs/langpacks/` [граница компиль-enforced, байт-точно — парити EXACT, golden байт-идентичен]; FL-1/2/3+тест-путь; РАТИФИЦИРОВАНЫ 3 дивергенции: language.Tag ОТВЕРГНУТ [CLDR-инстабильность в вердиктах], DC-чекеры+снапшот-фолд DEFER [майнер offline/нейтральность]; общность структурно доказана; промт отработан→архив**; **D39.15 = директива владельца: изоляция языковых данных из `pipeline/` [движок общий · `internal/lang/`+`configs/langpacks/` данными-файлами · `x/text/language.Tag` вместо `isRuTarget` · снапшот-folded как промпты · алгоритмы не трогать]; архитектурный проход ПЕРЕД R1 [ре-секвенс]; поведенчески нейтрально zh→ru [golden байт-стабилен]; не минор-хант/не rewrite-ради-rewrite; промт `BACKEND_ARCH_CLEANUP_SESSION_PROMPT.md` 5-фазный [ресёрч→синтез→фикс-лист→исполнение→ревью]; ja→ru = тест общности §B5 позже**; **D39.14 = пак-11 continuation ПРИНЯТ и залендён [R2 майнер паритет-EXACT · R3 банкнота 12-точек · R4 DC-чекеры+export--pairs · R5 арм-конфиги · R1-аддитив; рубеж-2 D39.13-долга погашен: 3 MINOR/PARTIAL-находки [FL-1 bankTokenBudget-фолд · FL-2 banknote-телеметрия-резюм · FL-3 emission-top-N-кап], все латентны → R1-продолжение; R1 драйвер-свитч резидуал; clean bill по деньгам/wire/порту]**; **D39.13 = пак-11 Block A ПРИНЯТ и залендён [WS2 целиком (вкл. src→dst-блок редактора = закрытие D30.1) + WS1a/b/c-инфра + WS4-ядро; 2 девиации ратифицированы; резидуал R1R5 в PACK11_REPORT; промт остаётся активным; рубеж-2 приёмки — долг]**; **D39.12 = план `architecture/11-implementation-plan.md` РАТИФИЦИРОВАН [три рубежа: ревью-2 F1F11 → 7-агентный адверсариал → подтверждающий пас; пер-волновой снапшот + инвариант секвенирования = «переоплата ОДНА»; EditCeilingOut=3200; лемматизатор дефолт B; 4 гейтнутых арма]; бэкенд-пак ЕДИНОЙ сессией — `BACKEND_PLAN11_SESSION_PROMPT.md`**; **D39.11 = директива владельца: стройка ТОЛЬКО после дизайн-синтез сессии с верифицированными алгоритмами; хендофф №5**; **D39.10 = exp16: WHICH подтверждена [V-C recall 0.97, $0] / WHAT→банкнота+Палладий [canon-recovery <70%], 9B-споттер не нужен, Z1→облако, ре-аудит exp14b чист [errata не требуется]; исследовательская программа ЗАВЕРШЕНА → бэкенд-пак слоёв 1+4**; **D39.9 = Q4a: верность НЕ на translate-стадии [flash уже верен, pro ×3.67 не ратифицирован], смысл ломает glm-РЕДАКТОР [свап-арм приоритетен], DET-пол 0.261; exp14b-правила дефектны → $0-ре-аудит в exp16**; **D39.8 = слепое чтение: планка не пройдена никем, дефекты распределены [читатель подтвердил floor-null], битва качества → дефект-классы [时辰-юниты, числа, gender-enforce, стих, регистр]**; **D39.7 = exp15 залендён REV.2: «граница вредит» отозван [артефакт окна судьи], все когезия-эффекты под floor 0.126, «sequential нигде не лучше» LOO-stable [не ратифицированный зелёный свет], фертильность 1.20/0.39, $12.79/$15; гейт = слепое чтение владельца**; **D39.6 = research/20 банк-майнинг залендён [детектор-лестница V-A/B/C, алиас-ярусы, banknote-v1 с 12 гейт-точками, §B5 плагины P1P6, §D-пре-рег]; полигон-стадия после exp15**; **D39.5 = пак-1.5+F1F9 залендены [tmctl export с manifest/drift-гардами · fold-first санитайзер · bounded глосс · пример zh-ru]; экстракция полигона впредь через tmctl export**; **D39.4 = адверсариал-долг ПОГАШЕН [8 осей: 0 CRIT/1 HIGH/6 MED], пак-1.5 придержан под фикс-лист F1F9 в §T4**; **D39.3 = пакет банк-майнинга W1.5 [диспозиция H15/V4-п4] ратифицирован, research/20-промт с HOLD до фриза exp15**; **D39.2 = трек-A пак-1 залендён `d3f6b34`: trust-gated suppressor [терм-дрейф закрыт в КОДЕ] + export-contract нормализация + pair-сеам + реестры + quality-report; адверсариал-долг за 529**; **D39.1 = research/19 залендён: конфликт exp14↔research/18 разрешён [эмиссия≠окно≠связность], Go-спека чанкера+когезии, волновая архитектура W0W3 [вводная владельца: параллелизм], пре-рег эмпирики Q0Q5; оркестратор-ревью снято владельцем**; **D39 = АРХ-РЕСЕТ: синк-аудит сломанного телефона [65 находок, 0 refuted, `08-sync-audit-ledger.md`] + целевая 7-слойная архитектура [`09-target-architecture.md`] + фазовый план [трек A build-now ∥ трек B ресёрч, пере-прогон после]; формализует фантомный «D35.7» как цель слоя 1; терм-дрейф код-корень жив [сид-воркэраунд]; редактор 4-мандата-full-regen = причина инверсий**; D35 = пивот качество-первым; D36 = приёмка research/18; D37 = приёмка exp14: претензия-1=промпт-рычаг; D38 = приёмка exp14b: «только gpt-5.4» ОПРОВЕРГНУТО [mistral/deepseek-pro чинят], фронтир в дефолт НЕ нужен, корень терм-дрейфа = статус-draft сида; **D38.1 = слепой h2h P1a↔F-disc залендён [ChatGPT «фронтир сильнее» / Claude «near-parity» расходятся, СХОДЯТСЯ: дефекты = инфра] → РАЗВОРОТ «мерить→строить», выдан BACKEND_INFRA_PACK; D38.2 = консолидация/док-гигиена: спент exp-скрипты в `eval/exp12|13|14|14b/`, статус-доки+.puml актуализированы; D38.3 = инфра-пак читаемости залендён (санитайзер-классы strip+export + число/omission-гард), верифицирован исполнением [build/vet/test зелёные, 3 span-дефекта запинены]; D38.4 = аудит полноты exp14/14b: чэнъюй-рычаг забыт near-term→дописан в дискурс-промпт; inversion-гард D37 §2г не строился (число/omission ≠ полярность)→editor-swap = защита от инверсий (приоритет↑); нарезка = re-run-арм; гард-тумблер вкл. при resnapshot; D38.5 = компоненты resnapshot залендены+верифицированы [reseed-сид eb409f2 · дискурс+чэнъюй editor v3 0ac5f7a с few_shot-тумблером] → следующий шаг единый resnapshot + пере-прогон**).
Ответ на вопросы бэкенд-сессии (PROGRESS §«Вопросы от бэкенда», §«[НУЖНО РЕШЕНИЕ] перед Фазой 1» — с ревизии D31 в `archive/PROGRESS-2026-07-04-10.md`) и полигона (think-режим). Каждое решение прошло адверсариальную панель из 3 критиков (research / экономика / исполнимость в коде Фазы 0); ни одно не отклонено, все уточнены. Это **контракт Фазы 1** — бэкенд исполняет отсюда; при конфликте с буквой 01-decisions/02-mvp-plan — источник истины здесь (потом сольём в основные доки).
Статусы: ✅ принято · ✅+ принято с уточнением панели.
---
## D12. Модель устойчивости к отказам (веха coverage-гейта, 04.07) — заземлена на durable-execution prior-art
4 вопроса бэкенда + большой вопрос владельца «падать ли / фолбечиться / как не терять книгу». Заземлено ресёрчем (Temporal / Step Functions / Airflow / River / Stripe idempotency / OpenRouter/LiteLLM fallback; проверено по первоисточникам).
**4 вопроса — все A:**
- **Q1 (сегментация): порт 1:1 наивного split.** `refusal_bench.py::split_sentences` = **источник истины** (он же приёмочный оракул); Go зеркалит бит-в-бит; любое изменение — Python-first, лок-степ. §3.7 «поглощение кавычек» → v1.1 (координированно). Иначе Go-гейт и Python-оракул разъедутся.
- **Q2 (эскалация): минимальный single-hop.** НЕ противоречит D4: D4 запрещал массовый outage-своп, а это точечная эскалация ОДНОГО чанка на детерминированном контент-провале. Нужна сейчас (DeepSeek-эхо воспроизводим). Минимально: 1 хоп → флаг; полные цепочки — шаг 7.
- **Q3 (детект): только excision_suspect (нижняя граница).** Верхняя аномалия-дописывание ложно флагает (ru-выход 1.41.9× исходника) — нужен entity-счёт+судья (Ф2); coverage_fail/D10 блокирован памятью v2.
- **Q4 (активация): opt-in (`enabled:false`), тестами.** Боевой флип — после валидации precision владельцем на реальных чанках (порог N флагов — за владельцем); до починки диалоговой сегментации флип ложно флагал бы диалого-плотные главы. **[exp07, коммит 3911baf]: precision гейта = 0 ложных/57 на реальных чанках; вердикт главы — ≥2 флага→fail, 1→attention; `finish_reason=content_filter` не эмитит ни один из 5 провайдеров (ветка эмпирически мертва). Флип `enabled:true` всё ещё за подписью владельца.**
**Таксономия отказа — ТРИ класса (не бинар «фолбэк vs пауза» — это мис-фрейминг):**
| Класс | Триггер | Реакция |
|---|---|---|
| Транзиентный / бюджетный | 429/5xx/timeout; `finish=length`/пустой | same-model retry (ось `attempt`, бо́льший max_tokens); ретраятся только `{length, empty}` |
| **Детерминированный контент-провал** | echo / cjk_artifact / excision / refusal — **HTTP 200!** детектит app-слой post-settle, НЕ транспорт | **single-hop escalation** на ДРУГУЮ модель (same-model retry бессмыслен); 1 хоп → флаг; отдельная ось модели в request_hash (не `attempt`); `escalation.budget_usd`; результат **ре-гейтится**; канал B изолирован ТИПОМ (permissive/nil-guard в failover.go), пишет новую TM-запись (model_id в ключе) |
| Outage / системный | 503-storm, 429-исчерпание, terminal-4xx, ceiling — **не per-chunk** | circuit-breaker (Azure Closed/Open/Half-Open, ~30с health-окно) → **пауза джобы + resume** (НЕ mass-swap: D4, стиль поплывёт + TM-инвалидация); супервизор рестартит `tmctl` |
**F3 фикс (оплаченный неидемпотентный вызов):**
- Provider idempotency-key = **существующий `request_hash`**, заморожен на входе (константа через транспорт-ретраи и resume), в заголовке `Idempotency-Key` где поддержано. ⚠ **Матрица (проверено по первоисточникам): OpenAI поддерживает; DeepSeek / xAI / Gemini / Kimi — НЕТ.** Центральный стек (draft-DeepSeek, editor-grok, judge-Gemini) provider-dedup не имеет → **не архитектурить F3 вокруг него.** Capability-флаг `supports_idempotency_key` в models.yaml (в готовый capability-слой).
- Для непокрытого стека — **at-most-once cap**: класс «billed-but-unconfirmed» (2xx с нечитаемым НЕусечённым телом / чистый timeout после отправки) получает бюджет **≤1 доп. вызова**, не `MaxAttempts1` (Temporal «maxAttempts=1 для non-idempotent»). Восстанавливает приёмку «≤1 вызов». + **консервативный settle оценки (не Release)** на post-send-timeout, чтобы потолок не был слеп (расширить существующий `BilledDecodeError`-путь); ledger-состояние AMBIGUOUS-BILLED. Честная модель — **«at-most-once billed, replay бесплатен»**, не exactly-once (saga/exactly-once на оплаченный вызов не мапятся).
**Consistency-aware fallback by stage:** draft-фолбэк свободно (editor ре-нормализует стиль — 2605.13368); **editor pinned per book** (на отказе editor — пауза / same-family, не чужая модель); model-per-chunk логировать для последующего uniformity-пасса. **Global call-budget guard:** суммарные попытки на чанк = `retries_on_primary + 1 fallback hop`, **НЕ сбрасывается на фолбэке** (иначе retry×fallback = 30+ оплаченных вызовов — LiteLLM #19985).
**Прогресс — единственный реальный пробел (ответ на «подсвечивать прогресс»):**
- `tmctl status --config book.yaml`**READ-ONLY** проекция `chunk_status`+`jobs`+`spend`+`request_log` (Temporal query-handler аналог; 0 LLM, 0 replay); `--json` (стабильные disposition/flag_reason enum как контракт) для CI/IDE. `chunk_status` бэкенд УЖЕ построил — read-model есть; нет только команды и знаменателя.
- **Book manifest на snapshot** (всего глав/чанков-на-главу) — иначе честный N/M невозможен. Вести **unit-счётом** (done/in-progress/flagged/skipped/pending), % только из N/M; **никакого синтетического time-бара** (fictional-bar анти-паттерн, Cloud Four).
- Словарь статусов (Airflow/Step-Functions): flagged≠failed (`jobs.status.failed` = infra-only), skipped с upstream-reason; **всегда REASON** (GitLab «explain why skipped»).
- **Паспорт качества главы** (JUnit `<testsuite>` + SonarQube gate): chunks total/ok/flagged/skipped, worst flag_reason, coverage-вердикт (pass|attention|fail по 5002500-char порогам), $, версия — против «проклятия 300-й главы» (04-unhappy §10).
- ETA от **сглаженного throughput** (EWMA α≈2/(n+1)), не present-state; unit-счёт ведущий, ETA вторично. Деньги в status: committed/reserved/ceiling%, F3-честный кумулятив, projected book cost = (cost/done-chunk)×remaining. Re-drivable флагнутые (Step Functions redrive), не трогать DispOK.
**Не строить (cautions верификатора):** distributed-движок (Temporal/Step Functions инфра — мы single-node/один файл, брать паттерны не инфру и не их HA-числа); прозрачный cross-provider fallback главного пути (D4); детектор контент-провала в транспорте (обязан быть app-слой post-settle — транспорт видит 200); real-time SSE-прогресс (Ф3, IDE вне MVP); наивный параллелизм чанков (гонка `Runner.clients` + «коммит терминов только на границе джоб»).
---
## Вторая волна развязок Фазы 1 (04.07, вопросы бэкенда после survey) — D8D11
Онбординг-поправки бэкенда **ратифицированы**: (1) дефолт-редактор grok-4.3 @ temp 0.4 thinking-OFF (не Kimi — «Kimi-editor 400» как повод для capability-слоя снят; живые 400 дают Gemini/gpt-5); (2) `deepseek-v4-pro` нигде не подтверждён → слаг канала A резолвить через `/models`, не хардкодить (deepseek-chat депрекейт **2026-07-24, ~3 недели** — миграция черновика срочная); (3) Gemini wire-слаг `gemini-3.1-pro-preview` (суффикс несущий, голый → 404); (4) models.yaml на диске отстаёт — бэкенд обновляет сам (его зона); (5) F4 (усечённый length течёт в edit как OK) чинить в A, F3 (retryable-but-paid переоплата) учесть явно. A/B/C-план бэкенда принят как есть.
### D8 (Q1) — memory-компонент snapshotID: **content-hash материализации** (не version-counter). ✅
Хэшировать детерминированно ORDER-BY-материализованное **полное состояние инъектируемой памяти на старте джобы** (approved-глоссарий + резюме + series-bible-lite — тот пул, из которого per-chunk селективная инъекция потом выбирает; сам per-chunk выбор детерминирован и уже покрыт request_hash через rendered messages). **Drift-proof — решающий довод:** version-counter (буква §3.2/D5.2) молча дрейфует, если забыли бампнуть, и переоткрывает ровно тот баг тихой переоплаты, который D5.2 закрывает. Content-hash забыть нельзя. Стоимость (хэш пула раз на джобу, не на чанк) — ничтожна, не горячий путь. Правит §3.2: memory-компонент снапшота = content-hash, не счётчик.
### D9 (Q2) — приёмочная книга Фазы 1 = **ja→ru ранобэ** (~150k токенов). ✅+
Причины: соответствует флагманскому «ранобэ»; COGS-запас (R5 ~$3.1 стандарт vs потолок); **ставит ruby/фуригану на критический путь импорта** — форсирует закрытие известной дыры (04-unhappy §4), иначе отложат и забудут. **Уточнение (границы ruby):** извлекать чтения фуриганы при первом появлении → **глоссарий-лок имени**, НЕ сохранять ruby в выходной вёрстке (это остаётся ограничением epub-v1, план:25). Хедж: если полное ruby-извлечение окажется тайм-синком, блокирующим веху — принять на ранобэ, где чтения имён капчатся из первого появления обычным путём, а полный ruby-лок — fast-follow внутри Фазы 1. CJK-echo (zh) тестируется CJK-гейтом отдельно (не требует zh-приёмочной книги). Все три пары строятся; коммерческая проверка пар — пилот Ф2.5.
### D10 (Q3) — знаменатель глоссарной консистентности = **ВСЕ approved-термины** (имена + выдуманные термины/титулы). ✅
Матчит букву R7 («гейт считает approved-термины») и — важнее — **бьёт по реальной жалобе №1 читателей**: коллапс терминосистемы рангов/титулов («Immortal, immortal or immortal», 04-unhappy §1) страшнее скачущих имён. Гейт параметризовать (знаменатель = вхождения src/алиасов, числитель = лемма dst по `decl`), **names-only — как под-метрика для диагностики**. Порог 98% — на детерминированном слое (pre-replace+инъекция+post-check) достижим (механизм не модель-зависим); если приёмка покажет систематическую недостижимость — ревизуем порог, НЕ знаменатель (не геймить метрику сужением).
### D11 (Q4) — премиум-микс: **конфиг-потолок, не гейт приёмки** ✅+ — но ОБА cost-числа устарели, не только премиум.
budget_usd = R5-clamp; дефолты **под селективный apex (пересчёт ВЫПОЛНЕН — [exp08](../experiments/08-cost-model-v2.md)):** ранобэ/роман ~$2, вебновелла — потолок-на-главу/`apex_fraction`; полный apex вебновеллы (~$82) не дефолт. Приёмка держится на резюмируемости + гейтах + **точности телеметрии денег**, а не на конкретном премиум-числе (exp01 намерял ~$49/$26 на Sonnet-апексе — заменено exp08 на Gemini-апексе с reasoning-as-output).
**Расширение за рамки вопроса бэкенда: порог стандарт-микса $0.6 ТОЖЕ устарел** — он считался с дешёвым редактором (GLM/DeepSeek), а дефолт-редактор теперь **grok-4.3 ($2.50/M output ≈ 10× дороже draft)**. Пересчёт ja→ru ранобэ: draft ~$0.065 + grok-editor ~$0.67 = **~$0.73 стандарт-микс** (выше $0.6). Экономика при этом здоровая (том <$1 против якоря $100 — маржа огромна), но **конкретные приёмочные числа ($0.6 стандарт, $5 премиум) оба устарели после смены редактора на grok**. → Приёмка Фазы 1 по стоимости = (а) escalation уважает конфигурируемый budget_usd (тест механизма); (б) телеметрия денег точна (ledger корректно биллит grok/gemini с их квирками — grok reasoning=0 при thinking-OFF через ЯВНЫЙ `reasoning_effort:none` — дефолт grok = low, gemini reasoning-as-output); мягкий sanity-check ~$0.69/ранобэ ([exp08](../experiments/08-cost-model-v2.md)), жёсткий гейт $0.6/$5 СНЯТ. Числа пересчитаны — exp08 (draft DeepSeek + editor grok + премиум Gemini).
### Ре-флаг (grok как центральная модель — усилилось с D8): гигиена аккаунтов xAI критична
grok-4.3 теперь дефолт-редактор → **каждый чанк каждой книги идёт через xAI**. Значит: (1) дефолт-редактор продакшна — **чистый xAI-аккаунт БЕЗ data-sharing** (промо-$150-аккаунт с data-sharing — только eval/NSFW, реальные книги через него нельзя, research/08); (2) концентрация трёх ролей (редактор+канал B+судья 18+) на xAI — риск доступности (Р10 №6): провайдер лёг → пауза/resume (D4), премиум-редактор gemini как валидированная замена под рукой.
---
## D1. Редактор C1 — монолингвальный. ✅+
**Решение:** редактор Фазы 1 видит только черновик + одобренный глоссарий (dst-термины как target-констрейнты), **не** исходник. Убрать `{{text}}` из `prompts/editor.md`.
**Обоснование:** издательская норма (редактор не знает язык оригинала — research/07); билингвальный редактор в zh→ru якорится к исходнику и плодит кальки (главная translationese-болезнь); монолингвальный редактор к тому же дешевле (исходник не сидит на входе каждого edit-вызова).
**Уточнения панели (обязательны):**
1. **Честно: coverage-гейт НЕ контролирует верность.** Он ловит только omission/дописывание по длине; same-length mistranslation (свап рода, «кто кого», неверная полисемия) проходит насквозь. Значит в Фазе 1 верность после черновика **не контролирует ничто** до билингвального судьи Фазы 2. Это допустимо (Фаза 1 — инфраструктурная веха), но записать прямо: **приёмка Фазы 1 не содержит критерия верности** — не маскировать это coverage-гейтом.
2. Пилот Ф2.5: плечо C1 (draft→editor) меряется на win-rate **только вместе с живым билингвальным судьёй** — иначе C1 по собственному признанию полирует неверное в «гладко-неверное».
3. **Код:** убрать `{{text}}` меняет SHA256 шаблона → resnapshot-гейт сработает громко (хорошо), но `prompt_version: "v0-draft"` в `pipeline-c1.yaml` станет врать (тот же лейбл на двух SHA). **Поднять edit `prompt_version` при этой правке.**
## D2. Диспозиция плохого чанка — skip+flag+continue. ✅+
**Решение:** `finish=length` → ретрай с бо́льшим max_tokens до капа, потом флаг; hard refusal/`content_filter` → флаг+продолжить; пустой оплаченный → skip+flag (не падение прогона); soft refusal (blacklist) → флаг. Флагнутый чанк не коммитит мусор/пустоту в TM.
**Уточнения панели (обязательны):**
1. **`attempt` этого НЕ несёт** (переоценка в моём ответе). В коде Фазы 0 нет ни цикла по чанкам (chapter=1/chunk=0 захардкожены, `runner.go:235`), ни хранилища флагов, ни статуса «skipped/flagged»; любой ненормальный путь сейчас = `SetJobStatus(failed)+return`. Механика skip+flag+continue — **net-new работа Фазы 1** (цикл + таблица флагов + колонка disposition, читаемая resume-путём). `attempt` — необходим, но не достаточен.
2. **Тегировать `flag_reason`.** `retry-flagged` переатакует **только** `length`/`empty` на той же модели; `content_filter`/refusal детерминирован per-модель/канал — повтор на том же SFW-канале снова откажет и снова спишет деньги. В Фазе 1 refusal-флаги просто **не переатаковать** (деньги на гарантированный отказ не жечь); маршрутизация в канал B/эскалацию — Фаза 2.
3. **Детектор вырождения перед удвоением max_tokens.** У дешёвого черновика `finish=length` чаще всего — repetition-loop; бо́льший max_tokens лишь оплачивает больше повтора (усугубляется неидемпотентными ретраями F3). Дешёвый n-gram-loop чек ПЕРЕД удвоением → при вырождении сразу флаг, без оплаты цикла.
4. **`content_filter` ненадёжен как ветка:** OpenAI-совместимый адаптер отдаёт `finish_reason` сырым (`httpllm.go`), пробрасывают ли его DeepSeek/GLM/Kimi — не проверено. Реальная страховка — **refusal-blacklist гейт**, а не ветка по finish_reason. Полигону: замерить, эмитят ли провайдеры `content_filter`. **[exp07: НЕ эмитит ни один из 5 — ветка эмпирически мертва, страховка = refusal-blacklist гейт.]**
5. **Edit `max_tokens` считать от длины ЧЕРНОВИКА, не исходника** (`runner.go:283-287` сейчас от source). Для монолингвального редактора (D1), чей вход/выход ≈ русский черновик (~1.9× токенов исходника zh→ru), оценка от source мис-сайзит бюджет и ложно триггерит length-ретрай.
## D3. Эскалация. ✅+
**Решение:** канал A — DeepSeek V4 Pro → GLM-5.1 → апекс Gemini 3.1 Pro (wire-слаг ТОЛЬКО `gemini-3.1-pro-preview`, голый → 404 — испр. оркестратором по пингу пакета №3/D22; квирк ратифицирован 04.07, см. преамбулу D8D11); канал B (18+) — **Grok 4.3 основной пермиссивный тир** + DeepSeek офиц. + локальная abliterated. Sonnet удалён (Anthropic — дорого); OpenAI остаётся (ключ есть) — GPT-5 nano альт черновика, GPT-5 mini кандидат в редакторы/second-opinion судьи.
**Правка по xAI (04.07, вопрос владельца — xAI НЕ выведен):** ретайрнулся только дешёвый Grok 4.1 Fast; сам провайдер жив, ключ есть. grok-4.3 ($1.25/$2.50) — средний тир, не «дорогой крайний». Роли Grok: (а) **переводчик канала B** (самый пермиссивный крупный API — стандарт R-rated); (б) **судья/QA 18+ контента** — не отказывается оценивать explicit, в отличие от Gemini (нужен нативный safety-off) и Claude (отказ). Ограничения: reasoning xAI **аддитивный** → канал B с thinking OFF, а think-ON на Grok — только после reasoning-буфера в `EstimateUSD` (D6.2). Промо xAI **$150 за data-sharing**: брать на выделенный NSFW/eval-аккаунт для PD/тест-корпуса и refusal/18+-бенчмарка (разблокирует висящую 18+ часть эксп.02) — но **не гнать через data-sharing реальные/конфиденциальные клиентские книги** (конфликт с ToS-гарантией и zero-retention режимом B2B, research/08).
**Правка редактора (04.07, эксп.04 полигона — бейк-офф): дефолт-редактор Фазы 1 = `grok-4.3`.** Слепой бейк-офф glm-4.6 / kimi-k2.6 / gemini-3.1-pro / grok-4.3 на 4 фрагментах (2 фронтир-судьи, сверка с каноническими ru-переводами, согласие независимо): **grok-4.3** — ранг-1 верность, ранг-2 стиль, самый дешёвый+быстрый (~13с без reasoning) → лучший value «одной модели на роль». **gemini-3.1-pro-preview** — лучшая проза → премиум-эскалация редактора. **GLM-4.6 слабейший** (опровергает допущение Р4 «редактор=GLM»; перемерить при GLM-5), **Kimi худший value** (~11k reasoning-ток./абзац, ранг-последний по верности) → оба сняты с дефолта редактора. Это **закрывает вопрос бэкенда №2** (дефолт редактора). Оговорка: LLM-судьи на коротких фрагментах — провизорный дефолт Фазы 1; **эксп.04 кормил редактор БИЛИНГВАЛЬНО (исходник+черновик), а боевой редактор D1 — МОНОЯЗЫЧНЫЙ (только черновик) → рейтинг grok на моноредактуре строго не перенесён (exp08 §Ограничения, Quality-transfer риск), проверяется в пилоте**; финальный выбор редактора/ядра — человеческий пилот Ф2.5. Р4 обновлён. Следствие: grok-4.3 стал центральной моделью (редактор SFW + канал B + судья 18+) — гигиена аккаунтов xAI на три использования (Р4), редактор с thinking OFF через ЯВНЫЙ `reasoning_effort:none` (дефолт grok = `low`; ledger чист).
**Уточнения панели (обязательны):**
1. **Часть моделей ОТСУТСТВУЕТ в конфиге (частично закрыто на 05.07).** Заведены с тех пор: `grok-4.3` + провайдер `xai` (commit 636919c); `deepseek-v4-pro` подтверждён живьём и по цене ($0.435/$0.87). Ещё НЕ заведены: провайдеры `gemini`/`openai`, модели `deepseek-v4-pro`/`glm-5.1`/`gemini-3.1-pro-preview` в `models.yaml`; цепочки эскалации всё ещё `[kimi-k2.6]`-заглушки; редактор всё ещё `glm-5`. Задача бэкенда (см. промт консолидации): завести недостающие провайдеры+модели+цены и заменить заглушки цепочкой D3.
- **ПОПРАВКА (принял корректировку бэкенда): «без новых адаптеров» было оптимистично.** Провайдеры OpenAI-совместимы по эндпоинту, но не по телу запроса: текущий `openAIRequest` всегда шлёт `temperature` + `max_tokens`, а Kimi требует `temperature: 1` (иначе 400), gpt-5-mini — `max_completion_tokens` без temperature + `reasoning_effort: minimal`, Gemini 3.1 Pro — обязательный thinking (`thinking_budget: 0` → 400). Это **не строчка в yaml, а per-model capability-слой** в адаптере, и он нужен **раньше D3**: Kimi — уже альтернативный редактор Р4, edit-стадия на temp 0.4 даст 400 на первом вызове. → Capability-слой — фундаментальный элемент Фазы 1. Форма (согласована с принципом «модели/цены только в конфиге», Р4): каждая модель в `models.yaml` декларирует возможности — `budget_field: max_tokens|max_completion_tokens`, `temperature: send|omit|locked:1`, `reasoning_control: none|extra_body_disable|effort_minimal|mandatory`; адаптер строит тело запроса по ним. `experiments/00-provider-quirks.md` — эталонная таблица квирков.
2. **Премиум-бюджет $5/$30 УСТАРЕЛ** — выведен из калибровки на Sonnet $3/$15. Апекс теперь Gemini 3.1 Pro ($2/$12 ≤200k) с **обязательным thinking** (reasoning биллится как output $12/M — тот же класс недоучёта, что сжёг vojo 3044%). Плюс `batch 50%` к inline-эскалации неприменим (последовательна из-за STM), только к судье/QA. Плюс Gemini = и апекс, и судья → эскалированный чанк платит Gemini дважды (перевод+ре-джадж), оба с форсированным reasoning. **Полигону: пересчитать бюджет на фактическом Sonnet-free стеке с reasoning-as-output, batch только на судью.** До пересчёта — $-потолок конфигурируемый (D-эконом ниже), дефолты $5/$30 держим как консервативную заглушку.
## D4. Provider-fallback — НЕ добавлять для облачных draft/edit. ✅+
**Решение:** авто-кросс-провайдерного фоллбека для облачных ролей нет (фоллбек драфта = разный стиль/термины по чанкам + `model_id` в ключе TM обнулит хиты на ре-ране). Провайдер лёг → durable pause → resume. Локальный→облако failover из vojo — только для local-ролей, channel-aware. Ночь — супервизор перезапускает `tmctl`.
**Уточнения панели (обязательны):**
1. **Channel-aware изоляция в коде НЕ обеспечена** (дыра). `FailoverConfig` не имеет поля канала/пермиссивности — изоляция сейчас лишь doc-comment для вызывающего; сам failover в Фазе 0 не подключён. Хуже: ветка «fallback отсутствует → fail loud» **сделает nil-panic** (нет nil-guard, `c.fallback.Complete` разыменует nil), а путь «пустой local-контент → облако» — ровно тот сайлент-шип, о котором предупреждает заголовок, без guard. **При подключении failover (Фаза 2): изоляцию канала B делать типом (поле permissive/channel) или явной fail-loud веткой на nil-fallback, а не комментарием.**
2. Формулировка «resume бесплатен» переусилена: техдолг F3 — retryable-но-оплаченные вызовы не идемпотентны, resume может переплатить прерванный in-flight (до `MaxAttempts1`). Точнее: «resume переоплачивает максимум прерванный in-flight, всё равно кратно дешевле mixed-model failover».
3. Local→cloud failover для local-ролей канала A (экстракция глоссария, дешёвый судья-гейт) при OOM 8GB GPU молча превращает $0-вызовы в платные облачные — **un-budgeted; пометить** (телеметрия должна показывать, когда local-роль ушла в облако).
## D5. Онгоинг Analyst — инкрементально. ✅+
**Решение:** book-brief заморожен; новые главы — Analyst инкрементально расширяет резюме и ищет новые термины; approved-глоссарий/series-bible наследуются read-only, новые термины append, approved не ревизуются молча (research/07); разрешение gender=hidden-твиста — ручное событие.
**Уточнения панели (обязательны):**
1. **Проактивная эвристика `gender=hidden`.** Онгоинг структурно теряет преимущество «книга целиком видит твист заранее»: инкрементальный Analyst не видит ещё не загруженных глав, поздний реверс-трап (女扮男装) → уже вмороженные главы закоммитили род. Митигация: когда Analyst в **загруженных** главах видит намеренную неоднозначность (омофонное ta / pro-drop без дизамбигуации), ставить `gender=hidden` и гнать безродовые конструкции (гайд ООН) **до** раскрытия, а не дефолтить в мужской (TACL-биас). Плюс ретро-патч-протокол «с тома N — так» с показом стоимости пере-перевода вмороженных глав, которые твист фальсифицировал.
2. **КРИТИЧНО (impl): `snapshotID` не покрывает память и сборку контекста.** Сейчас хэширует только brief_hash + план стадий + defaults, **не** context-assembly (`glossary_injection`/`stm_depth`/`overlap`) и **не** инъектированный глоссарий/резюме/series-bible. Как только Фаза 1 начнёт инъектить память в `msgs`: изменённая память меняет `request_hash` (msgs в нём), но `snapshotID` не меняется → resnapshot-гейт **не сработает**ре-ран старой главы молча промахивается мимо чекпоинта и переоплачивает **расходящимся** переводом — ломается сам инвариант Р6, на который D5 опирается. **Свернуть memory-state + context-assembly hash в `snapshotID` ДО того, как приедет инъекция Фазы 1.** Это общий гейт Фазы 1 — держит и D1 (глоссарий редактору), и D5.
## D6. Think-режим — не глобальный дефолт, но пилотить на переводчике. ✅+ (существенно переписано)
**Решение:** `reasoning_effort` per-роль, дефолт **off/minimal** для draft/edit — но **по операционным причинам** (эмпирика полигона: GLM ×3 таймауты, Gemini жрёт max_tokens, gpt-5-mini выжигает бюджет — `00-provider-quirks`), НЕ потому что «reasoning вредит переводу».
**Переписанное обоснование (панель отозвала мою посылку):** прежняя «think ломает роль переводчика — пустой вывод» — **отозванная находка**: запись «Сессия 2 полигона» (04.07, ныне `archive/PROGRESS-2026-07-04-10.md`) исправляет её («пустота — артефакт тесного контекста, не зависание; с ctx 16k think завершается и реально чинит реалии: 羅生門→Радзёмон, чтение 朱雀»). DRT (research/03, arXiv:2412.17498) независимо показывает: long-CoT над метафорами/сравнениями **поднимает литперевод** — это роль ПЕРЕВОДЧИКА. Владелец был прав в гипотезе.
**Уточнения (обязательны):**
1. **Пилот Ф2.5 think-ON vs OFF по качеству включает draft/translator и editor** (не только Terminologist+эскалацию, как я ошибочно сузил) — именно туда указывают и полигон, и DRT. Дефолт-off остаётся до результатов пилота.
2. **Скоуп think-ON эскалации — только subset-billing провайдеры** (deepseek/zai/kimi, где reasoning ⊆ completion ≤ maxTokens, `EstimateUSD` покрывает). **xAI/Grok исключить из think-ON** пока `EstimateUSD` не резервирует явный reasoning-бюджет (additive reasoning xAI → «потолок пробьётся» ровно на премиум-пути канала B).
3. **Gemini-апекс/судья — форсированный think-ON** (не чтит `reasoning='off'` → HTTP 400). Заложить его в бюджет как reasoning-as-output ($12/M), а не как opt-in. `runner.go` шлёт `st.Reasoning` — адаптеру Gemini `off` придётся молча глотать; этот кейс назвать явно.
4. «×23 COGS» занижает многословных ризонеров: Kimi-k2.6 ~11k reasoning-ток./абзац = ×4…×20 на output этой роли — учесть в бюджете эскалации.
---
## D7. Схема банка памяти v1 — скоуп. ✅+
**Решение (подтверждаю рекомендацию бэкенда с двумя правками):**
- **v1 (store v2-миграция):** база Р3 (`src, dst, type, aliases, gender, speech, decl, since_ch/until_ch, status, note`) + **alias-граф** (типы: имя/цзы/хао/прозвище/титул) + `gender=hidden(until_ch)` + `translit_policy` (западные имена через катакану — `04-unhappy §9`) + `first_person` + **series-bible-lite = gender + ты/вы**.
- **Правка 1 (панель D5):** ты/вы в series-bible-lite — **журнал событий переходов**, а не статичная матрица пар (переход ты↔вы — сюжетное событие, `12-ru-target §2`). Поле `gender`с проактивной установкой `hidden` Analyst-ом на неоднозначности (D5.1).
- **Правка 2:** `nickname_translation` **оставить в v1** (это одна колонка + лок «перевести раз навсегда», `04-unhappy §1` относит в Фазу 1); дорогая только логика первичного перевода сильной моделью — её можно отложить, но поле держать.
- **Отложить в v1.1:** `ranked-set` (инъективность ступеней), словарь эвфемизмов, число-словарь мер/разрядов (сам число-**гейт** — Фаза 1, а словарь конвертаций — v1.1).
- **Обязательно:** сверка с «Следствиями для плана» `04-unhappy-paths`; и `snapshotID` покрывает состояние памяти (D5.2) — иначе схема памяти без хеша в снапшоте молча ломает resume.
## Q3/Q4 бэкенда — прямые ответы
- **Q3 (эскалационный дефолт RU-контура):** см. D3 — не-Anthropic, дёшево-первым (DeepSeek Pro/GLM-5.1), апекс Gemini; Sonnet не дефолт (удалён). В будущем зарубежном контуре премиум-эскалация опциональна, но не сейчас.
- **Q4 (per-role provider-fallback):** см. D4 — **нет** для облачных draft/edit; pause/resume; local→cloud только для local-ролей, channel-aware типом.
## Требования Фазы 1, не покрытые 6 решениями (из «missed» панели) — в скоуп
1. **Runner без цикла по чанкам/главам — главный длинный шест** (chapter/chunk захардкожены). Цикл + хранилище флагов + disposition-колонка — фундамент, на который опираются D2, D5, гейты, эскалация. Строить первым.
2. **`snapshotID` расширить** memory-state + context-assembly hash ДО инъекции (см. D5.2) — общий гейт.
3. **ruby/фуригана-парсер в спеку импорта Фазы 1** (детерминированная часть, `04-unhappy-paths §4`). Противоречие с планом:25 («epub v1 фуригану не сохраняет») разрешить: для ja→ru фуригана несёт авторские чтения имён → глоссарий-лок; молчаливая потеря подрывает приёмку ≥98% консистентности ja-книг. Извлекать чтения на инжесте (не сохранять инлайн-разметку, а **выхватить ruby в глоссарий**).
4. **Дешёвые детерминированные гейты Фазы 1** (были в `04-unhappy-paths §6/§9`, но выпали из плана): линтер тире-диалогов (Розенталь §4752), ёфикатор, блок-лист транслит-междометий, число-гейт разрядов 万/億. Самый дешёвый и заметный читателю класс — «максимум воспринимаемого качества за минимум денег». Морфозависимые (канцелярит) остаются Фазой 2 (Python-сайдкар); эти четыре — детерминированные, Go, Фаза 1.
5. **Экономика инвалидации TM** (`[НУЖНО РЕШЕНИЕ] п.2в`): смена параметров чанкера = полная инвалидация «как смена brief» с показом стоимости — **да, подтверждаю** (ключ TM от src-чанка, перечанкование by design инвалидирует; пользователю показывать $ пере-перевода). prompt_version и model_id в ключе (уже зафиксировано Р6) означают: правка промпта обнуляет TM-библиотеку, эскалация пишет новую запись — это осознанная плата за корректность, не баг.
## Экономические открытые пункты (полигону, гейтят достоверность бюджета)
- Пересчёт премиум-бюджета на Sonnet-free стеке с reasoning-as-output (D3.2), апекс Gemini 3.1 Pro (форсированный thinking).
- ~~Проброс cache-hit/batch RU-агрегаторами~~ — **СНЯТО** (коррекция владельца 04.07: EU-SaaS, прямые ключи, BYOK отменён; см. Р5). Вся cache/batch-экономика теперь по прямым ключам без оговорок — это канон.
- `budget_usd: 0` в `pipeline-c1.yaml` — заглушка; $-потолок владелец задаёт по ценовому намерению, дефолты $5/$30 держим до пересчёта.
---
# Пост-ревью решения D13D17 + D18D21 (2026-07-09, оркестратор)
Ратификация выводов стратегического ревью [`07-strategic-review.md`](../archive/architecture/07-strategic-review.md) (метод: 14 сборщиков + 9 адверсариальных верификаторов, 8 CONFIRMED / 1 PARTIAL). Владелец подтвердил курс 09.07 (вкл. «Rust — нет, не сейчас»: Р1/Go остаётся; вопрос закрыт до пост-пилота и требует конкретного триггера, где Go упирается). Каждое решение ниже — контракт для следующих сессий «Бэкенд»/«Полигон»; хендофф-промты выдаёт оркестратор.
## D13. Пилот Ф2.5 — поправки протокола (гейтят валидность главного решения). ✅
Дополнения к `experiments/09-pilot-protocol.md` (полигон вносит в док и харнесс ДО пре-регистрации):
1. **Новый арм: «моно vs билингв редактор на ОДНОЙ модели, простой general-промпт»** — прямой тест D1. Основание (верифицировано по PDF arXiv:2605.13368, вкл. en→ru): monolingual-рефайнмент теряет accuracy с ПЕРВОГО прохода (2.2…5.6 MQM у всех 6 моделей), general-рефайнмент С исходником даёт тот же fluency при accuracy ~flat и лучшем overall. Существующий 7-bis (моно-бейкофф МОДЕЛЕЙ) сохраняется — это другой вопрос.
2. **C2 — только с ГЕТЕРОГЕННЫМИ кандидатами** (draft-кандидаты от разных моделей, не N сэмплов одной): на гомогенных селекция ≈ монета (2603.20324: WR 0.512 homogeneous; LitMT 2606.05924: best-of-8+судья — последнее место). Иначе плечо C2 предрешено и жжёт бюджет впустую.
3. **Панель судей — переконфигурация**: (а) 23 семейства максимум — 9 судей ≈ 2 эффективных голоса (2605.29800), лучший одиночный ≥ панели; (б) **11+ повторов на вердикт со свапом позиций A/B** — одиночный прогон нестабилен (13.6% флипов, парафраз меняет исход в 25%; 2606.13685); (в) агрегация медианой/Bradley-Terry (JP-TL-Bench-паттерн), не средним; (г) **grok исключён из судейства grok-редактированных выходов** (нарушение собственного анти-self-preference правила §5); (д) валидация судьи — по κ против человеческого IAA + tie-rate/top-1 within-prompt (2603.12520), не по средней корреляции.
4. **Пре-регистрация расширена**: MDE/мощность (число BWS-наборов), N аннотаторов ≥3 (при «минимум владелец» κ неисчислим — тогда честно писать «безκ-режим»), развести имена: C0C3 = конфигурации ядра, **M0M3 = режимы терминологии memory-eval** (коллизия имён в exp09 устранена).
5. **Харнесс чинится ДО решающего прогона** (верифицированные дефекты): memory_eval — стрип/запрет эха глоссарий-преамбулы, сохранение ПОЛНЫХ выходов (не out[:160]), реализация fidelity-оси (без неё правило «M3 роняет vs M0» непроверяемо; текущий индикатив ЗАНИЖАЕТ вред неверной инъекции — chunk1-C3 надут эхом); оценочные артефакты — пере-рандомизация меток по фрагментам, ключ/цены ВНЕ артефакта (слепота exp04 была структурно сломана: ключ лежал в том же документе при LLM-оценке). Инструменты: Pearmut (2601.02933) вместо самописного BWS-тулинга — оценить перед постройкой своего.
6. **Think-арм grok-редактора требует reasoning-буфера в `EstimateUSD`** (D6.2) — иначе экономически главный think-вопрос пилот не ответит; бэкенду заложить до прогона.
## D14. Канал B (18+) — ревизия состава. ✅
1. **DeepSeek ВЫВЕДЕН из explicit-части канала B**: ToS DeepSeek (upd 2026-03-27) §3.4(5) прямо запрещает «pornographic, obscene, or sexually explicit (e.g., sexual chatbots)» — верифицировано по первоисточнику. Для violence-фрагментов (не sexually explicit) DeepSeek остаётся допустим. Интерим D3 «DeepSeek офиц. + локальная abliterated» сужается до «локальная abliterated + Grok».
2. **Mistral — кандидат-фолбэк канала B**: Usage Policy (eff. 2026-06-11) не содержит бланкетного запрета adult-текста (только CSAM/NCII/эксплуатация) — верифицировано по первоисточнику. Полигону: прогнать refusal/excision-пробу Mistral на explicit-корпусе, бэкенду — слот в конфиге при положительной пробе.
3. **Обоснование xAI поправлено**: «цитата Маска про R-rated текст» — на деле про Grok Imagine (картинки); опора — сам AUP xAI (нет бланкетного запрета adult-текста; запрещены CSAM и порно реальных лиц). Позиция стабильна на 09.07, но политика xAI волатильна — мониторинг остаётся.
4. **18+ эмпирика — единственный critical ревью**: refusal/excision на explicit-корпусе (Grok/Mistral/abliterated) + качество Grok-судьи 18+ + поведение Gemini-судьи на explicit — обязательная рука exp02/пилота. Гейтится фрагментами от владельца.
## D15. Resume-экономика и онгоинг. ✅
Верифицировано исполнением: `snapshotID` вшит в `RequestHash` → любой `--resnapshot` (флип гейта, append approved-терминов, бамп версии классификатора) переоплачивает ВСЮ книгу, включая байт-идентичные запросы; redrive флагнутых нет. Решения:
1. **Текущий all-or-nothing ПРИЕМЛЕМ для статичной приёмочной книги Ф1** (гейт громкий, расхождений не бывает) — НЕ чинить до приёмки.
2. **Онгоинг-режим (`add-chapters`, сегмент «ИИ-фабрик») ГЕЙТИТСЯ** одним из двух: content-addressed переиспользование чекпоинтов (`msgsContentHash` уже существует — `render.go:233-249`) ИЛИ селективный redrive. Бэкенду: спека-дизайн (не код) в ближайший пакет; реализация — Ф1.5.
3. **Немедленно (в ближайший бэкенд-пакет)**: исправить лгущие комментарии `runner.go:156-160` / `coverage.go:29-33` («re-classify for FREE» верно только внутри неизменного снапшота); `tmctl status` + redrive флагнутых — приоритет D12-хвостов подтверждён (status → redrive → F3); бампнуть edit `prompt_version` (D1-уточнение №3 не исполнено — один лейбл `v0-draft` на два SHA).
## D16. Банк памяти — фиксы границ доверия (4 верифицированных дыры). ✅
Ядро (F1/нормализация/спойлер/детерминизм/инъекция) ревью подтвердило чистым; все находки — на границах доверия, каждая воспроизведена временным Go-тестом:
1. **Полисемия same-src**: две approved-записи (один src, разные sense/dst, пересекающиеся окна) инжектятся ОБЕ как CONFIRMED + post-check даёт гарантированный confirmed-miss (с гейтом ON — детерминированный livelock чанка). Фикс: fail-loud на пересекающихся окнах разных sense в `loadGlossarySeed` ИЛИ даунгрейд обоих совпадений в AMBIGUOUS. (`memory.go:198-204,299-306`; `memseed.go:155-163`)
2. **Sticky-апгрейд**: collision-prone AMBIGUOUS попадает в activeIDs без disposition (`memory.go:323`) → в следующем чанке sticky даёт status-based CONFIRMED, минуя post-check, прямо в редакторские констрейнты. Фикс: наследовать disposition исходного матча в sticky-кэрри (или не класть не-CONFIRMED в activeIDs). ⚠ Это был **ложно-негативный отсев 44-агентного ревью (0/3)** — рациональ «sticky несёт установленный в сцене термин» не проверялась на коллизионном входе; бэкенду выборочно перепроверить остальные отсевы того ревью.
3. **Source-граница для фонетических ключей ≥4**: `rose` (approved) фаерится CONFIRMED внутри `roseanne` — collision-даунгрейд покрывает только ≤3, Aho-Corasick границ не знает, target-сторона границу имеет (асимметрия). Фикс: script/word-граница на source-стороне для фонетических скриптов.
4. **Ruby-чтение не матчится**: для ручных терминов чтение выбрасывается (`memseed.go:217-220`), у auto-кандидатов surfaces строятся только при непустом dst → ja-чанк с именем каной даёт 0 матчей. До реализации B6: ruby-reading → auto-alias ручного термина; интерим — **обязательный пункт чек-листа подготовки ja-книги: kana-написания сид-имён вносить als aliases руками**.
Плюс: kana-precision замер (minKeyLenPhonetic=3 — «консервативный дефолт до замера») — полигону, расширение E1-протокола; C4-автозаполнение `decl` остаётся Ф2, но признаётся условием реалистичности жёсткого postcheck-гейта.
## D17. D1 (монолингвальный редактор) — статус понижен до «дефолт Ф1, оспорен внешним замером». ✅
D1 остаётся дефолтом Фазы 1 (менять конфигурацию до пилота не будем — kalki-риск не опровергнут, а вакуум верности Ф1 уже признан D1.1). Но: (а) сильная форма обоснования («исходник в контексте редактора ⇒ кальки») понижена до гипотезы — подтверждений в литературе 202526 нет, кальки документированы как болезнь ДРАФТА; (б) экономический довод слаб (билингв-редактор = +1520% стандарт-микса ≈ +$0.100.14/ранобэ); (в) решает пилот-арм D13.1. Если арм покажет паритет верности при моно — D1 подтверждается дёшево; если налог на верность воспроизведётся — флип на «редактор с исходником, простой промпт» дешевле любой альтернативной митигции.
## Ратификации по итогам внешнего ревью двух пакетов (09.07 вечер, оркестратор)
Оба пакета (бэкенд D15/D16, полигон D13-харнесс) прошли внешнее ревью оркестратора (7 ревьюеров, всё исполнением: моки, мутационные реверты, CLI-прогоны $0, пересчёт данных). Вердикты: **оба ACCEPT_WITH_FIXES, залендены** (153277e, 9afea37) — блокеров на дефолтном конфиге нет, деньги/корректность целы. Решения:
1. **D16.3-дивергенция бэкенда (kana/Han без source-границы) — РАТИФИЦИРОВАНА.** Кана-граница рушит recall (すずきは-класс: TP 15→1 — независимая эмпирика полигона, exp09 §6-bis), homograph-класс длино-инвариантен и границей не лечится. Митигация kana-омографов — POS/known-word-гейтинг или ruby-якорь → **скоуп B6** (вместе с Палладий/Поливанов-валидатором). **MIN=3 для фонетических ключей ратифицирован как дефолт** (kana-замер полигона; precision там trap-set-относительная — не продовая метрика).
2. **Спека D15.2 — направление ратифицировано, реализация ЗАБЛОКИРОВАНА до доработки** (3 дизайн-дыры ревью): (а) fast-path-гард обязан покрывать ВЕСЬ wire stage-план (текущий драфт теряет model/temp/reasoning/maxTokens-деривацию → смена temperature или reasoning low→none тихо отдаёт stale-текст — ре-открытие F1); (б) расщепление memory_version (wire vs verdict) — ОБЯЗАТЕЛЬНО, не «опционально» (иначе append-термина/toggle гейта = переоплата книги, главный сценарий не материализуется; подсказка ревью: postcheck пересчитывается вживую и в chunk_status не хранится — memory_version можно целиком убрать из ключа вызова); (в) замена loud-гейта согласия — pre-flight dry-run «N чанков, ~$X» с порогом явного флага (Р6-класс согласия на трату не демонтируется без замены). Плюс: полевой маппинг всего снапшота (wire/verdict/dropped), судьба chunk_status.snapshot_id/status-ридеров, sequencing миграции ДО первой онгоинг-книги, blast-radius append-а моделировать со sticky+eviction+каскадом стадий.
3. **D14.2 Mistral: refusal-часть ПРИНЯТА** (11/11 ok, провенанс на месте), **fidelity-числа (8595) НЕ приняты** — сырых выходов и судейских вердиктов в репо нет (провенанс-обещание не выполнено); пере-прогнать с персистом до финализации D14.2. Explicit-часть — ждёт фрагменты владельца.
4. **Pearmut — отказ ратифицирован** (нет BWS); инструмент пилота = тонкий свой + Potato-фронт + attention-checks.
5. **Новые задачи бэкенду (следующий пакет):** (а) GB18030-детект/конверсия в ingest (реальные zh .txt — не UTF-8; укусит на первой живой книге); (б) **homophone first-wins** — major ревью: при двух ручных омофонах (разные dst, чтение ≥4 каны) алфавитно-первый получает авторитетный kana-алиас CONFIRMED (attachRubyAliasesToManual видит коллизию только вторым проходом; группировать чтения по нормализованному ключу МЕЖДУ базами до аттача); (в) закрепить мутационно инвариант redrive «DispOK-стадии не сбрасываются» (тест с флагом на ПОСЛЕДНЕЙ стадии; сейчас мутант выживает) + тест --reason-селектора; (г) snapshot-чек ДО ResetChunkStages (сейчас громкий отказ redrive уничтожает флаг-телеметрию); (д) minors: --json exit-код при флагах, developer-подсказка для gate-промоченного glossary_miss (redrive-тупик), README «миграции v1v6», ETA→EWMA или пометка отступления.
6. **Новые задачи полигону (следующий пакет):** (а) зеркало ↔ Go: дозеркалить suppressUnboundedPhonetic (D16.3) и апостроф-фолд memnorm-v3 (оба продемонстрированы расхождением; критично для en→ru руки пилота); (б) эхо-детектор — ловить хвостовой/встроенный эхо-глоссарий, не только преамбулу; (в) Mistral-переснятие с персистом (п.3); (г) байт-синк заголовка инъекции с Go (⟨проверить⟩-пояснение); (д) minors: ts в refusal-записи, «508→500» trad2simp-дедуп/пометка, in-file карантин старых C-меточных данных.
7. **Гигиена:** `*.key.json` добавлен в .gitignore (остаточный риск утечки ключа слепоты); правило git-координации мультисессий внесено в CLAUDE.md (инцидент: перезапись истории оркестратором при грязном дереве полигона — недопустимо без сверки чужих правок).
## D18. Приёмочная книга Фазы 1 — 蛊真人 (zh→ru); ja→ru прогон отложен. ✅ (амендмент D9, решение владельца 09.07)
**Решение:** приёмка Фазы 1 (end-to-end книга целиком) выполняется на **蛊真人 (Reverend Insanity, «Мастер Гу»)**, zh→ru — реальная вебновелла от владельца, уже на стенде (чистая вычитанная .txt, GB18030; 7 глав прогнаны вебновелл-срезом). ja→ru прогон (буква D9) понижен до «второй прогон при появлении ja-epub от владельца».
**Обоснование:** (1) форсирующая функция D9 — «ruby на критическом пути» — ВЫПОЛНЕНА (ruby-захват/сид реализованы и покрыты тестами, шаги 3a/4); (2) zh→ru вебновелла — коммерчески флагманский сегмент («ИИ-фабрики», Р9), а ja-книги на стенде нет; (3) терминологическая плотность 蛊真人 (ранги/титулы гу, рекуррентные имена) — идеальный стресс банка памяти по жалобе №1 читателей; (4) deepseek-эхо 25% на этом тексте (замер полигона 09.07) — боевой тест echo-гейта и single-hop эскалации черновика.
**Следствия:** GB18030-детект/конверсия в ingest обязательны ДО прогона (пакет №2 бэкенда); сид-глоссарий 蛊真人 (имена/ранги, dst по Палладию, decl) готовит полигон с владельцем — сам текст и производные **вне git** (Р8: приватная обработка легальна, нарушение — при распространении); OpenCC-полнота trad2simp некритична (текст в упрощённых); Поливанов/Палладий-валидатор — B6/Ф2 как и был; epub-путь остаётся на юнитах до первой epub-книги. Приёмочные критерии 02-mvp-plan v3 не меняются, кроме пары (zh→ru) и cost-sanity (пропорция вебновеллы exp08). Эскалация draft при эхе требует заведённого `escalate_to` — минимум одна фолбэк-модель черновика в конфиге до прогона.
## D19. Канал B v2 + развязки сида (амендмент D3/D14; по exp10 и внешнему ревью полигон-пакета №2, 09.07 поздний вечер). ✅
Внешнее ревью пакета (4 ревьюера, всё исполнением): mirror ACCEPT, остальные ACCEPT_WITH_FIXES; микро-дефекты доков исправлены оркестратором при лендинге (слаг переводчика в exp07-Task5 = `grok-4.20-0309-non-reasoning`, не grok-4.3; Mistral overall = ≈93.8, не 95.4 — баг агрегации median=max при 2 судьях; счётчики 8b 8/10). Ключевая эмпирика D19 подтверждена сырьём: эхо grok-off — реальный zh verbatim при `reasoning_tokens=0`, контроль reasoning-ON честный (`reasoning_tokens>0`, те же фрагменты).
1. **Состав канала B (18+):** **переводчик-дефолт = Mistral** (`mistral-large-2512`: 10/10 чисто на violence, честная fidelity ≈93.8 двумя кросс-семейными судьями, policy 11.06.2026 без запрета adult); **эскалация = grok-4.3 reasoning-ON** (10/10 чисто; биллинг через additive-буфер D13.6); **local abliterated 8b** — скрининг/дешёвый фолбэк (8/10 ok); **судьи 18+ = Grok-4.3 + Gemini-3.1-pro** (оба 10/10 без отказов — замена не нужна, D14.4-вопрос судей закрыт). **grok reasoning-OFF как CJK-переводчик непригоден** (5/10 провалов: 4 эха + 1 дегенеративный луп) — «канал B thinking-OFF» из D3/D6.2 в части переводчика ОТМЕНЁН. DeepSeek в explicit остаётся исключён (ToS; на violence переводит — контроль 9/10). Оговорки: N=10, violence-only; **erotica не мерена** — ждёт второй источник владельца (единственный остаток D14.4); **цена Mistral перепроверяется** до wiring экономики (комментарий $0.5/$1.5 при $2/$6 на маркетинг-странице — 4×).
2. **Эхо-класс обобщён:** «reasoning-off + плотный CJK-вход = зона эха» — свойство класса моделей (DeepSeek, оба grok-слага), не квирк вендора. Полигону: обобщающая строка в `00-provider-quirks.md`. Митигации промптом — мандат voice-state ресёрча (3-bis). Echo-гейт вниз по потоку — обязателен навсегда, промпт-митигции его не заменяют.
3. **Сид-развязки ратифицированы:** (а) значащие имена гу — ПЕРЕВОД (пиньинь в note; исключения через `translit_policy`); (б) 古月 = «Гуюэ» слитно (составная клановая фамилия, аналогия Сыма/Оуян); (в) **白凝冰 → `gender=hidden`**, НЕ female/draft — это хрестоматийный кейс механизма D5.1 (первые главы 他/«он», канон female): безродовые конструкции до раскрытия; `until_ch` выставить при определении главы раскрытия (полигону при следующей курации сида — правка одного поля).
4. **Гигиена xAI пост-фактум:** прогон exp10 на текущем (единственном, платном, без data-sharing) xAI-ключе — ратифицирован; категория «приёмочная книга владельца (копирайт, не клиентская)» — допустима для eval-обработки (Р8, приватная обработка); data-sharing промо-аккаунт — по-прежнему только PD. **До пилота: завести выделенный NSFW/eval-ключ xAI**, разделение ключей зафиксировать.
5. **Fix-лист полигону (микро, со следующим пакетом):** агрегация `mistral_fidelity.py` (mean при n=2); перепроверка цены Mistral по офиц. прайсу; провенанс-нота `ahq_final` (прогнан до-Task-1 зеркалом — для zh no-op); токен-корзина ゛゜/々/halfwidth-кана (info); line-start-FP эхо-детектора задокументировать.
6. **Пинг бэкенду (СРОЧНО, до их коммита):** внешний ревьюер заметил в их незакоммиченном `memseed.go:463-466` отладочную заглушку `if true { return false }`, **отключающую contested()-проверку омофонов** (их же фикс 1a!), + временный `zz_probe_test.go` в дереве. Убрать до коммита пакета.
## D20. Приёмка бэкенд-пакета №2 + ратификация D15.2 v2 с правками + развязки §13 (09.07 ночь). ✅
Внешнее ревью (5 ревьюеров, всё исполнением и мутациями; smoke-деньги сверены по артефактам БД до микроцента): fixlist/spec-v2 — ACCEPT_WITH_FIXES, ingest/gates/smoke-coord — ACCEPT. **Пакет залендён (b51ac4c).** Заглушка contested() из D19.6 убрана и мутационно защищена (проверено реинжекцией мутанта). Ingest-клеймы воспроизведены точно (2283 главы / 5088 чанков / 0 U+FFFD на реальном GB18030-файле); Shift-JIS/EUC-JP-ловушка отсекается zh-скоупом (mutation-verified).
1. **Спека D15.2: направление и 90% деталей РАТИФИЦИРОВАНЫ; реализация разблокируется после v3-правок** (обе маленькие, бэкенду со следующим пакетом): (а) **role + имя стадии в guard_hash** — без них формула не суперсет текущей защиты (конструируемый stale-VERDICT fast-path hit при флипе роли; заявление «строго сильнее» пока ложно); (б) **аналитическое правило editor-каскада в dry-run §7**: любая стадия ниже re-bill-юнита того же чанка считается re-bill (иначе консент-проекция занижает ~2× на самом дорогом классе правок — temp/reasoning/model translator'а); (в) доукомплектовать маппинг §4: `style_check_version`, слой YoPolicy/StyleAllowlist («dropped: live-recomputed, класс post-check»), memoryNormVersion (target-часть) — и в postcheck-версию, судьба `jobs.snapshot_id` одним предложением, verdict-фолд конфига гейтов только при enabled (дисциплина coverageSnap).
2. **Ответы на §13:** **Q1 — пер-стадийная гранулярность wireSnapshotID, ДА** (живой довод: вероятная смена редактора glm-5→grok-4.3 при book-global пере-оплатила бы весь translator-бэклог; поверхность мала — snapshotID уже итерирует стадии). **Q2 — порог `min($0.50, 5%×ProjectedBookUSD)` и флаг `--accept-rebill[=usd]` — ПРИНЯТЫ** с поправками: сначала фикс каскада (п.1б), форма флага с опциональным потолком суммы (Р6 = согласие на КОНКРЕТНУЮ трату), fallback-флор при ProjectedBookUSD=0. **Q3 — `Adult` остаётся wire/verdict-нейтральным, слой не назначать**; вместо хеша — load-time линт консистентности (adult:true без единой channel:adult-стадии → громко); первый рантайм-потребитель Adult обязан явно назначить слой.
3. **Редактор приёмки Ф1:** приёмка — инфраструктурная веха (деньги/resume/гейты/консистентность; качество меряет пилот) → **glm-5-редактор ДОПУСТИМ для приёмки**, если чистый xAI-ключ не появится к её старту; **пилот Ф2.5 требует боевой grok-4.3-редактор** → чистый xAI-ключ (без data-sharing) от владельца — блокер пилота, не приёмки. ja-путь: Shift-JIS сознательно fail-loud (ja-книги UTF-8/epub) — ратифицировано.
4. **Fix-лист бэкенду №3 (не блокирует приёмку):** README «миграции v1v7» (устарел в том же пакете); **cheap-gates v2** (3 ложных срабатывания адверсариального ревью: «-цитата с начала строки как «смешение стилей»; 万 в составе имени + постороннее число в выводе; перефраз магнитуды + год — правка правил = громкий bump cheapGateVersion; + note про дефисные редупликации мимо блок-листа); NUL-гард на GB18030/UTF-16-путях декода (сейчас только UTF-8); `tmctl redrive --resnapshot` молча игнорируется (ошибка или поддержка); style-колонка в human-таблице глав status (косметика); report без API-ключей для read-only аудита (опционально). Принятые трейд-оффы (задокументированы, не чинить): drift-гард redrive пере-сеет глоссарий на abort-пути (идемпотентно); нарратив «один redrive» в журнале сжал два раунда (материальные клеймы верны).
## D21. Приёмка research/15 «Голос и состояние» + ратификация механизмов Ф2 (09.07 ночь, оркестратор-преемник). ✅
Внешнее ревью (9 агентов: 5 спот-чеков несущих CONFIRMED-клеймов по первоисточникам, пересчёт проб из сырых артефактов, консистентность, red-team ратификации, аудит доков). Вердикт: **ACCEPT_WITH_FIXES, залендён (5953b37)**. Спот-чеки: DelTA — CONFIRMED точно (все 5 подклеймов, вкл. анти-клейм «+0.36 не существует»); RoleLLM / Voita / similarity-harm / WMT25 — CONFIRMED_WITH_NUANCE (числа верны, нюансы атрибуции/метрик вписаны в док пометками *(ревью)*; ни один не ломает выводов яруса-1). Пробы пересчитаны поштучно: P4-таблица сходится на 100% (вкл. кросс-чек пересечения эхо-фрагментов с exp10 полигона), wire-клейм reasoning_tokens подтверждён (v1 всегда >0, префилл всегда =0), бюджет $0.28 сведён по usage×прайс. Исправлены оркестратором: агрегат 0/26→0/29, «~35%»→«3067% по армам (пул ~44%)», три deepseek-эха rt 111/182/149 (не «оба 111/149»), пятый судья = gemini-2.5-flash (не 3.5), строгий пересчёт маркера 奴婢 (0/4→2/4→3/4→4/4 — порядок армов устойчив), знаменатель «$2.50» = кап probe_runner.py.
1. **Voice-профиль (схема research/15 §1.5) — механизм Ф2, ратифицирован с оговорками red-team:** (а) до лендинга D15.2 профиль **заморожен per-job** — самодозаполнение exemplars = mid-run append памяти = переоплата книги при D8/D15.1; (б) приоритет бюджета инъекции: CONFIRMED-глоссарий > address_pair > voice_profile > reveal-алиасы; кап voice-слоя ≤300 ток./чанк; (в) `brightness`/«серые голоса не инжектить» — гипотеза-под-пилот (T2, N=2 свапа), не жёсткое правило схемы; (г) драфт-слот — дефолт, editor-слот НЕ исключён до пилота (P3 = 4 вызова на чистых черновиках); (д) сид exemplars курирует владелец по СТИЛЕВОМУ критерию ru-стороны, верность реплики-экземпляра гейтится кросс-семейным судьёй (процесса «approved-перевод» в Ф1 нет — D1.1); (е) членство топ-героев в кэш-префиксе уважает окна профиля (смена манеры → миграция в селективный слот; «кэш почти бесплатен» — только при неизменном префиксе).
2. **Реестр обращений пар (address_pair, §2.1) — ратифицирован как МАТЕРИАЛИЗАЦИЯ журнала ты/вы D7-Правки-1** (один источник истины, не второе хранилище; бэкенду миграционная нота при заведении типа). Схема + детерминированный ты/вы-флаггер — безусловно; **инъекционная часть — условно** до полигон-эксперимента на ТРУДНЫХ парах (лифт на лёгких = 0; исход «только флаггер-ось» легитимен и дешевле).
3. **Reveal-окна (`reveal_ch` + pre/post-reveal алиасы, §2.2) — Ф2, ратифицированы с переобоснованием:** опора = (а) само-нанесённый риск банка (post-reveal dst инжектится до раскрытия — та же логика спойлер-окон) + (б) механический родовой канал zh→ru (2311.08836), НЕ «12-common §16» (провенанс дока не зафиксирован — числа не абсорбируем). Judge-вопрос «раскрыто ли X до гл. N» гонять и на вебновелл-срезе вне претрейна.
4. **Армы пилота — приняты С ТИРИНГОМ** (защита мощности первичных вопросов D13.4): первичные (ядро C0C3 / память / D13.1 / think) — полный N человеческого BWS; voice-A/B/C/D — на voice-маркированном подкорпусе; формат инъекции и «сэндвич» — судейские армы с echo/cjk_share как охранной метрикой (урок P4-инверсии); minimal-diff редактор — гейтится машинерией search/replace-апплая (спека бэкенду до пилота). НЕ ставить в решающий прогон: двухпроходность-в-одном-вызове (пост-пилотная проба допустима при флипе смежных выводов), min_p (не экспонирован нашими API).
5. **Скоуп Annotator Ф2 (§2.3) ратифицирован** (детерминированный пре-гейт 说/道 → LLM на implicit → disposition; CONFIRMED-only в инъекцию; отношения курировать как глоссарий; пространство/эмоции/эпистемику вне reveal не аннотировать). Ресурс gold-бенча назван честно: zh-читателя в проекте нет → якорь через en-фан-перевод (спикер-сверка мостом) либо LLM-консенсус двух семейств + выборочная человеческая проверка; «LLM-предразметка + ручная дочистка» в оригинальной форме неисполнима.
6. **Анти-эхо пакет: направление ПРИНЯТО, wiring ГЕЙТИТСЯ** fidelity-хвостом P4 (35 пар, пинг полигону стоит) И повторным echo-rate замером (эхо стохастично per-fragment). Скоуп wiring = **только deepseek-драфт**; Mistral/канал B без собственного замера не трогать (база чиста 10/10; P4: одна строка system инвертировала grok-none 3/10→9/10). Wiring только на границе `prompt_version` (правка промпта обнуляет TM — Р6). **Запрет: языковые констрейнты в промпты reasoning-off путей без per-model замера.** ⚠ Латентное: `translator.md:10` уже содержит языковую строку — сегодня едет только на thinking-ON DeepSeek (вне зоны инверсии); при заводке Mistral-канала B — прогнать P4-реплику на боевом промпте. Зафиксирован вендор-конфликт: few-shot в thinking-драфт противоречит «DeepSeek R1-классу few-shot вредит» (§3.1) и research/14 M1 — fidelity-хвост разрешает именно его, до него канал A не трогать.
7. **Клеймы уникальности сужены** (доки/память синхронизировать): «аналогов не найдено» → «не найдено при скрининге (границы — research/15 §5); патентная часть — скрининг, не FTO»; «первые с механизмом» → «механизм не раскрыт ни одним найденным конкурентом»; спойлер-окна: CONFIRMED-absence → PLAUSIBLE-absence.
8. **Экономика:** «+$0.20.3/вебновелла» — верхняя граница editor-side инъекции; при рекомендованном драфт-слоте ~+$0.020.05. Незакрытые статьи Ф2 — Annotator-пасс (~+10% к вебновелле) и курация сида → **exp08 v3** (полигону: строки annotator + voice/pair по стадиям) до фиксации budget_usd-дефолтов Ф2.
9. **Поручения полигону** (следующий пакет, после erotica): fidelity-хвост P4 (35 пар); пре-шаг wire-аудита ДО любого temp-свипа (thinking×sampling no-op DeepSeek, V4-маппинг, grok `none`+penalties); voice-A/B на трудных парах + вебновелл-срезе; эвал-база ru-детектора (IWSLT22-RU + mSynthSTEL + пертурбации); exp08 v3; **строка эхо-класса в 00-provider-quirks (поручение D19.2 — не выполнено и не потерять) + инверсия языкового констрейнта**; миграция судьи memory_eval с gemini-2.5-flash (интермиттентный 404; 3.1-flash-lite проверен пробой) + ревизия exp07-вывода: `content_filter` на Gemini 3.x ЖИВ (`PROHIBITED_CONTENT`).
10. **Поручения бэкенду** (пакет №3, БЕЗ кода памяти): резервирование места под voice_profile/address_pair/reveal_ch в схеме v2 (note, не реализация); wire-probe «пишется ли temperature в thinking-канале DeepSeek» — в бэклог; языковые констрейнты не вносить (п.6); спека minimal-diff апплая — по готовности.
Сопутствующее: сырые артефакты проб продублированы оркестратором в `/home/ubuntu/books/gu-zhenren/research15-probes/` (вне git; scratchpad /tmp волатилен); статус-доки (CURRENT-STATE, README, CLAUDE.md, quirks editor-строка по D19.1) — синхронизированы отдельным коммитом.
## D22. Приёмка пакетов «бэкенд №3» и «полигон-erotica» + развязки 18+/эха/L3 (10.07, оркестратор). ✅
Внешнее ревью обоих пакетов (8 ревьюеров, всё исполнением: go build/vet/test -race + 11 мутационных ревертов в scratchpad-копии; пересчёт exp11 из сырья поштучно независимой репликой классификатора; Fisher-статистика на клеймах; вендор-цены по официальным страницам с датами). Вердикты: **оба ACCEPT_WITH_FIXES, залендены (e1fcee4, 3551997)**; микро-дефекты журнала исправлены оркестратором (заголовок пакета-2 восстановлен; счёт диффа бэкенда 20 файлов +860/143).
1. **D14.4 ЗАКРЫТ — последний critical проекта.** 18+ эмпирика полна: violence (exp10) + erotica по трём парам/регистрам (exp11). Mistral-дефолт канала B подтверждён 18/18 на классике/вебновелле/романе; 0 content-отказов у всех переводчиков (0/18×5 армов).
2. **Спека D15.2: v3 принята с двумя ОБЯЗАТЕЛЬНЫМИ амендментами (v3.1) до реализации.** (а) `Book.SourceLang/TargetLang` → verdictSnapshotID: ревью сконструировало и ИСПОЛНИЛО stale-hit, который v3 пропускает (языки — вердикт-входы вне рендера: cjk-гейт/coverage-коридоры; `editor.md` не рендерит `{{target_lang}}` → content_hash их не ловит; на этой оси v3 была СЛАБЕЕ текущего snapshotID, клейм «нет ре-открытия stale-serve» опровергнут); правило §4 переформулировать: судьбу обязано получить ЛЮБОЕ brief-поле, потребляемое вне рендера. (б) cache_ttl-противоречие: `Context.CacheTTL` демотировать до advisory (wire-инертен — не доходит ни до одного клиента) либо честно признать полную переоплату; `prov.CacheTTL` — в маппинг §4. Плюс до реализации: axis-sensitivity-тест RequestHash (флип role/stage меняет хеш — сейчас мутация «удалить role» выживает весь сьют); абзац «паритетные не-цели» в §8 (classify-Source для editor-строк; Retries/Escal.BudgetUSD вне хешей; транспорт); line-refs обновить. Отклонение YoPolicy/StyleAllowlist → verdictSnapshotID (консервативнее подсказки D20.1c, цена $0) — **ратифицировано**. Узкий клейм §3.3 (guard ⊇ stageSnap wire-поля) подтверждён поле-за-полем.
3. **Деньги Gemini: `reasoning: additive_total` РАТИФИЦИРОВАН** — закрыт недоучёт 146×/вызов (thinking только в `total_tokens`; settle деривит totalpromptcompletion; mutation-hardened; кэш не задваивается). Условия до заводки Gemini-стадии в прод: $0.01-проба «thinking ⊆ max_tokens» на 3.1-pro-preview (резерв для additive_total сознательно 0 — допущение проверено только на 2.5-flash; пробой потолка ограничен одним вызовом), негативный кейс деривации (total<prompt+completion мутация гарда сейчас выживает), квирк-строка в exp00. Экспозиция Ф1 нулевая (gemini не на wire-пути дефолт-конфига).
4. **D3-текст исправлен:** апекс = `gemini-3.1-pro-preview` (голый 404; квирк был ратифицирован 04.07 синк живых доков по grep-списку ревью выполнен). **Цена Mistral $0.5/$1.5 (Large 3) закрыта** тройной сходимостью: полигон (зеркала) + бэкенд (/pricing/api) + ревью (вендор-страница); $2/$6 = legacy Large 2 (ретайр 31.05.2026). Вопрос 3 бэкенда закрыт.
5. **D19.1 — register-оговорка (амендмент):** «reasoning-ON снимает эхо grok» подтверждено для СОВРЕМЕННОЙ прозы (совр. zh-вебновелла 0/10 exp10; совр. ja 1/6; en 0/6), но на архаичной плотно-ханьской (金瓶梅, минский байхуа, упрощ. графика) НЕ спасает: **4/6 verbatim при reasoning_tokens 349847** (vs совр. zh p=0.008; vs ja p=0.12 не значимо; ON vs OFF на архаике неразличимы p=0.28; для OFF регистр-эффекта нет p=0.79). «Регистр входа» как общий закон рабочая гипотеза до контрольных ячеек (дешёвый PD-контроль: совр.-zh-эротика + violence-пассажи 水滸傳 полигону, не срочно). Следствия: echo-гейт обязателен на ВСЕХ конфигурациях включая reasoning-ON (D19.2 подтверждён); эскалация на grok-ON НЕ лекарство от эха на архаичных zh (echo-rate хопа ~2/3 жжёт бюджет на почти гарантированный ре-флаг); для приёмочной 蛊真人 (совр. вебновелла) D19.1 в силе. Квирк-строка дописана.
6. **Судьи 18+ (сужение exp10/D19.1):** формула «судьи 18+ = Grok+Gemini, замена не нужна» **ОТМЕНЕНА для эротики**: Gemini fail-closed на графичной эротике (8× `PROHIBITED_CONTENT` wire-verified; фильтр неконфигурируем native API не спасёт; на violence/SFW Gemini остаётся). **Grok — первичный судья эротики для НЕ-grok переводов.** Дублёр НЕ ратифицирован: gpt-5-mini на эротике не мерен (и ушёл с прайс-страницы), а D13.3-коллизия оставляет grok-эскалированные 18+ чанки вовсе без померенного судьи **проба-гейт (полигону, центы, материал уже в eval/data):** gpt-5-mini + минимум один не-Google/не-xAI кандидат (mistral-судья для grok-выходов; kimi/glm после ToS-чека) на 18 Mistral- и 13 чистых grok-ON-переводах; пре-регистрировать refusal-rate и agreement.
7. **L3-скрин РАТИФИЦИРОВАН как задача (рамка, не дизайн).** Ключевой факт exp11: отказ провайдера НЕ сигнал уровня (0/18 на L2-explicit; DeepSeek переводит против собственного ToS) пре-скрин не «глубина обороны», а единственная автоматическая линия L3 (сегодня линию держит только ручная дисциплина корпуса/сида). Рамка: (а) per-chunk скрин на ingest для `adult:true` книг ДО любого wire-вызова (детерминированный лексикон-префильтр + локальный классификатор); (б) чек перед эскалационным хопом; (в) fail-closed: неэскалируемый терминальный флаг + человек, redrive только с явным ack; (г) НЕ реализовывать без спеки+метрики приёмки классификатора (FN-rate на размеченной пробе; методику сидируют minor-marker-скрины corpus_build; закрывает дыру стратревью §4.69.12). Спека бэкенд-пакет после рефакторинга; ОБЯЗАТЕЛЕН до первой erotica-книги в проде (приёмку 蛊真人 не блокирует). Настройка «переводить L3» отклонена владельцем 10.07.
8. **Fix-лист полигону (пакет №4):** (а) major: матчер content-filter подстрокой + самотест на составной `'content_filter: PROHIBITED_CONTENT'` (сейчас 8/8 отказов лежат `behaviour='empty'` латентная мина классификации); (б) major: параметризовать язык/жанр судейского промпта `explicit_judges.py` (ja/en-fidelity сняты под zh-рамкой переснять при переиспользовании); (в) мигрировать судью `memory_eval.py` (инлайн 2.5-flash EOL 16.10 + двойной `extra_body` + нет 404-ретрая ружьё на стене пилота); (г) U+FF70 из kana-корзины + parity-кейс с ; (д) append-only провенанс: ретраи отдельным файлом/superseded-полем, error-записи не удалять; (е) judge-raw без `[:600]` или оговорка; (ж) проба судьи-дублёра (п.6) + fidelity-хвост P4 (висит) + wire-аудит пре-шаг temp-свипа (D21.9) + контрольные ячейки регистра (п.5, не срочно).
9. **Fix-лист бэкенду (в реализационный пакет D15.2, попутно):** v3.1-амендменты (п.2); CLI-тест проводки `redrive --resnapshot` (хедлайн-фикс без покрытия мутация `_ = resnapshot` выживает); axis-тест RequestHash; негативный кейс additive_total; комментарии `models.yaml` «native Gemini для судьи 18+ Ф2» устарели против exp11 (поправить при следующем касании); опц. smoke-тест LoadModels на боевом yaml.
10. **Кодифицировано:** transient-прогоны в ЧУЖОЙ зоне только в копии вне рабочего дерева (полигон гонял go test в живом backend/ при чужих незакоммиченных правках обошлось, но впредь запрещено).
11. **Приёмка Ф1 разблокирована полностью:** сид финализирован (白凝冰 gender=hidden, 49 записей чисто воспроизведено ревью боевым loader'ом), цепочка D3/escalate_to заведены, деньги Gemini честны, D14.4 закрыт. Приёмочная сессия ОБЯЗАНА выставить `escalation.budget_usd>0` (иначе echo-эскалация черновика D18 не стреляет). Очередь предложена: приёмка бэкенд-4 (рефакторинг, промт выдан) GPT-восхождение (промт выдан); порядок приёмкарефакторинг за владельцем.
## D23. Приёмка рефакторинг-пакета №4: golden-гард и OpenReadOnly (10.07, оркестратор). ✅
Внешнее ревью (5 ревьюеров, всё исполнением в scratchpad-копиях, $0): golden-эквивалентность / инварианты-деньги / дифф-аудит / OpenReadOnly / журнал-скоуп. Вердикты: invariants и diff **ACCEPT**, остальные **ACCEPT_WITH_FIXES**; **пакет залендён (296419c)**. Эквивалентность «форма, не поведение» доказана трижды независимо: (а) новый golden прогнан на ЧИСТОМ HEAD-коде PASS байт-в-байт (snapshotID, все 11 request_hash вкл. эскалационные, wire-тела, вердикты, resume с 0 вызовов; единственный шим аддитивный read-view); (б) чувствительность golden 5/5 кодовых мутаций (render / snapshotID-компонент / request_hash-домен / nil-гард injected_ids / порядок терминов) все валят тест громко; (в) AST-дифф 36 деклараций: 29 байт-идентичны, 7 изменены только заявленными способами, 0 потеряно; CLI-контракты сверены исполнением двух бинарей (exit-коды/stderr байт-идентичны). Инварианты 17: 9/9 мутаций убиты; go.mod, миграции, схема БД, боевые промпты и конфиги нетронуты (sha256).
1. **Golden-гард — постоянный инвариант №8 бэкенда.** Обновление `capture.golden` ТОЛЬКО при ратифицированной смене поведения (`TM_UPDATE_GOLDEN=1` вручную; при заводке CI переменную в раннеры не экспортировать сегодня «CI не перепишет» вакуумно, CI нет). Известные слепые пятна фикстуры задокументированы (attempt>1 regeneration-путь, STM, coverage/postcheck-гейты ON, AMBIGUOUS=0) — расширение опционально с реализационным пакетом D15.2.
2. **OpenReadOnly САНКЦИОНИРОВАН как изменение поведения** (боль воспроизведена исполнением; покрыт приоритетом-2 мандата): `status`/`report` без flock/миграций/recovery, работают ПРИ живом прогоне; запись гарантированно падает (`PRAGMA query_only` на каждом соединении — mutation-verified; барьер SQL-уровня, НЕ файловый); кросс-процессная конкурентность доказана (WAL-снимок, 1702 чтения под settle-штормом без busy). **Трейд-офф ратифицирован:** после краха reserved-хвост (≤1 резервации — раннер последователен) виден в status до следующей write-команды; read-команды НИКОГДА не чинят ledger (честнее старого поведения, где «read-only» status сам мутировал ledger — это и было причиной flock); schema-mismatch громкий в обе стороны; нет БД → fallback на создающий Open; read-only ФС/иммутабельные бэкапы не поддерживаются (WAL). Рекомендация, не блокер: staleness-маркер через неблокирующий flock-probe.
3. **Микро-дефекты исправлены оркестратором при лендинге:** diffstat +3317 (не +3295); фикстура фактически 4 главы/5 чанков/11 тел; line-refs старого runner.go починены в живых доках (06:71, 07:42/109/192, research/13:196/198 — по полной карте ревью); исторические цитаты (D-лог 04.07, журнал) не переписываются; refs D15.2-спеки (15 шт., зона бэкенда) — с v3.1-правками (уже в D22.2).
4. **Fix-лист бэкенду (попутно с реализационным пакетом D15.2):** тест errTail на границу руны (реверт фикса сейчас выживает сьют — против дисциплины mutation-verified); лог-ассерты retryLoop (retry_in / отсутствие «will retry» на последней попытке — unit-able через slog-capture); AMBIGUOUS>0 ячейка в фикстуру или смягчение коммента golden_test.go:32; опц.: компонент-тест snapshotID-payload (самопроверка fold'а без golden), kill9 rounds 3→5.
5. **Ф2-критерий выполнен:** канал B садится файлом в `escalation.go`, annotator/voice — в `chunkrun.go`; runner.go = 168 строк сетапа. Очередь размораживается: GPT-восхождение деблокировано (условие владельца «после рефакторинга» выполнено); промт приёмочной сессии Ф1 выдан (`ACCEPTANCE_SESSION_PROMPT.md`).
## D24. Приёмка Ф1 этапа A ратифицирована с оговорками + развязки floor max_tokens / post-check + порядок этапа B (11.07, оркестратор-преемник №3). ✅
Внешняя верификация отчёта приёмки (воркфлоу 5 осей — money / d10-recount / dispositions / lifecycle / red-team; ВСЁ исполнением по read-only копии store, phase-логам, экспортам, сиду, коду; $0): все хедлайны воспроизведены — деньги до float-epsilon (130 чекпоинтов пересчитаны из usage_json × models.yaml, SUM(request_log)=committed=$0.4080773152 ровно), классификация 55 промахов D10 реплицирована бит-в-бит независимой реализацией матчера, SIGKILL/honest-stop/resume сверены по логам (EXIT=137 в живом glm-5 вызове; killed call оставил 0 записей), конфиг-паритет с pipeline-c1 подтверждён diff'ом (ровно две санкционированные дельты D20.3/D22.11). Текстовые дефекты отчёта (денежная опечатка ×10, смешение двух resume, «==» после redrive, «0 дрейфа») исправлены при лендинге с пометками (7ca14c2). Решения:
1. **Вердикт ратифицирован: критерии Ф1 выполнены как инфраструктурная веха — с оговорками**, дополненными верификацией: (а) объём — срез 25/2283 глав, полный объём двигается в этап B; (б) recall-тест coverage-гейта «≥90% искусственных пропусков» не гонялся (гейт OFF) — **задача бэкенд-пакету №5** (синтетический мини-набор пропусков юнит/интеграционным тестом, без wire); (в) grok-биллинг не мерен (glm-5 по D20.3) — закроется пилотом/чистым ключом; (г) budget_usd эскалации проверен только в направлении «>0 → стреляет», отказ по исчерпанию — в тест-лист №5. Ни одна оговорка — не машинный отказ.
2. **Alias-слепое пятно post-check зафиксировано** (найдено red-team-ревью): 1 дрейф-вхождение вне видимости флаггера — гл.18/0 рендерит 古月方源 раздельно «гу юэ фан юань» (против «гуюэ»×154 в корпусе); longest-match поглощает вложенный алиас (古月) внутри полного имени, dst родителя (方源→Фан Юань) присутствует → промах не фаерится. Истинная консистентность этапа A ≈99.5%, не 100%. Класс редкий (~1/190 поверхностей клан-имени); фикс в Ф1 НЕ заказывается; полигону — пометка класса в `06-memory-risk-registry` при следующем касании + учесть в методике D10-пересчёта этапа B.
3. **Развязка (а) — per-model floor `min_max_tokens`: РАТИФИЦИРОВАН схемой** (capability-слой models.yaml, НЕ комментарий): применяется при деривации max_tokens ЛЮБОГО вызова модели — праймари-аттемпты И эскалационные хопы (`stagerun.go:89-92`; хоп наследует бюджет праймари — `maybeEscalate`), ДО request_hash (wire-видимо). Флоры по quirks: deepseek-v4-flash/pro **8000**, gemini-3.1-pro-preview **8000**, kimi-k2.6 **16000**; glm-5/5.1 (reasoning off) и grok-4.3 (`reasoning_effort:none`) — без флора. Основание: эмпирика этапа A — хопы deepseek-v4-pro получили унаследованные 2048/3291, вернули finish=length (один — 0 байт контента), ~3× цены draft впустую; при реализации прайора эха ~25% (exp10/D18) на полной книге это ≈$3.6 эскалаций-пустышек и ~25% глав без перевода → **флор = блокер этапа B**. Резерв-инфляция EstimateUSD тривиальна (≤$0.10/вызов на самом дорогом тарифе); committed не растёт (биллинг по факту). Изменение wire → снапшот → **golden update ратифицирован** (процедура инварианта №8, D23.1).
4. **Развязка (б) — post-check `dstFormPresent`: правка КОДА, сид — дополнительно.** Код: базовый dst ВСЕГДА в множестве проверяемых форм (union `declForms normalizeTargetForm(dst)`, `mempostcheck.go:85-96`) — закрывает 37/55 ложных промахов (nominative_gap). Рациональ кода-над-сидом: базовая форма — сама approved-форма; требовать её дублирования в decl — избыточный ввод, на который наступит каждая будущая книга; правка только снижает false positives *(уточнение D28.1, поймано самим пакетом №5: строго — precision/recall-трейдофф; узкий реальный класс ложных пропусков — нарицательная база рядом «не по делу» при дропнутом термине; на данных этапа A recall не пострадал; **флип `postcheck_gate` в hard-gate требует пере-замера recall на нарицательных терминах**)*. Сид (полигон): дописать мн.ч. в `decl.forms` счётных терминов (元石/凡人/蛊师-класс) — закрывает 18/55 (inflection_gap); C4-автозаполнение decl остаётся Ф2. Правка кода меняет вердикты (verdict-ось) → golden update тем же пакетом; правка сида меняет memory content-hash (D8) → тот же resnapshot.
5. **Порядок этапа B (ответ на развязку хендоффа «до или после фиксов»): ФИКСЫ — ДО.** (i) бэкенд-мини-пакет №5 (п.3+4 код, coverage-recall тест п.1б, budget_usd-отказ тест, golden re-capture, mutation-verified) ∥ сид-обогащение полигона; (ii) ЕДИНЫЙ resnapshot; (iii) этап B на новом снапшоте: **скоуп переопределён владельцем — срез ~300 глав, проекция ~$4.96** (нужен «да» + потолок; рекомендация `book_usd≈7`; editor glm-5 — сравнимость с этапом A и D20.3). Этап B дополнительно обязан: echo-rate чекпоинт против прайора ~25% (статистика на ~680 чанках vs 3.5% этапа A на 57); контроль эскалаций после флора (length-класс хопов должен начать проходить ре-гейт; cjk_artifact-класс гл.1 останется — интринсик); перегенерация parallel-экспорта (stale ch1/4); методика D10-пересчёта — скриптом в артефактах.
6. **Ответы на вопросы отчёта владельцу:** №1 — скоуп B изменён владельцем на ~300 глав, потолок за ним; №2 — glm-5 (grok ждёт чистого ключа и нужен пилоту, не приёмке); №3 — сид дописать ДО этапа B (тот же resnapshot, что и фиксы; D10-флаггер на B становится осмысленным).
## D25. Приёмка research/17 (внешняя критика GPT-5.6 «восхождение»): вердикт и абсорбция (11.07, оркестратор). ✅
Ревью по мандату владельца «воспринять критично» (воркфлоу 12 агентов: 19 первоисточников по живым URL — 0 несуществующих/чужих; протокол-аудит анти-якорения; аудит ~30 line-refs; red-team 11 строк §C против контракта; аудит §D/«Итога»): **ACCEPT_WITH_FIXES, залендено (a148f41) с ревью-шапкой** — правила чтения там: §B2/«Итог» переграждены в PLAUSIBLE (ценностные «чей сильнее» ≠ CONFIRMED по его же §1); конвергенция §A↔проект на осях, засеянных нашим мандатом, НЕ считается независимым подтверждением; анти-якорение критиком соблюдено (лексический аудит + errata-без-правки-§A); критик не видел ни кода, ни результатов этапа A. Решения по абсорбции:
1. **Release-state контракт (§C-R1) — ПРИНЯТ КАК ЗАДАЧА С ГЕЙТОМ** (единственный blocker-класс вопрос совсем без D-решения): лестница `run_complete / structurally_complete / quality_reviewed / publishable`; детерминированный fail-closed экспорт для структурных/policy-дыр; semantic-флаги — только через audited waiver. Ложится на disposition/паспорта D12 + Ф1-задачу экспорта. Ратифицировать при постройке читательского экспорта, ДО первого reader-facing артефакта (этап B не гейтит — его экспорт owner-facing). Семантика «publishable» и право подписи waiver — владельцу. Живой якорь уже есть: экспорт этапа A несёт флагнутые чанки маркированными zh-плейсхолдерами — «run complete» ≠ «publishable» продемонстрировано.
2. **Fidelity evidence cascade (R2) — ПРИНЯТ КАК Ф2-ЭКСПЕРИМЕНТ, SHADOW**: минимальные пары 100150 (естественные + контрфактуальные: отрицание, агент/пациенс, число, род, модальность), обязательная случайная выборка unflagged, метрики corrected recall/precision + review-minutes/error; в гейт — только после доказанного utility. **Гейт очерёдности: НЕ вперёд пилота Ф2.5** (D1.2 привязывает замер C1 к живому билингвальному судье пилота; каскад конкурирует за самый дефицитный ресурс — билингв-якорь). Подготовку пар совместить с корпус-подготовкой пилота (полигон).
3. **Sequential-repeat судьи (R7) — амендмент D13.3 ТОЛЬКО как вложенный анализ**: решающие вердикты пилота остаются полными 11+ со свапом (пре-регистрация не трогается); prefix-анализ 1/3/5 vs full-11 считается из ТЕХ ЖЕ данных (cluster bootstrap по айтемам, $0 сверху); sequential-stopping как протокол — только пост-пилот/production после этой валидации. Как замена решающего протокола — ОТКЛОНЁН.
4. **L3 (R5) — расширения в спеку D22.7; методика валидации — вопрос владельцу.** В спеку: versioned policy, book/entity-контекст (cross-chunk возраст/алиасы/отрицание/цитаты-бэкстори), тройной выход `adult/prohibited/uncertain`, terminal uncertainty, human-confirm всех релевантных сцен первых adult-книг. Требование «~300 positive cases для ≥99% sensitivity» СТАЛКИВАЕТСЯ с гардрейлом «L3 не обрабатывать/не анализировать»: допустимый путь валидации (синтетические маркер-прокси / внешние размеченные бенчи / human-only контроль первых книг) и численный FN-bound — решения владельца при приёмке спеки.
5. **Trust boundary (R10) — В КОНТРАКТ немедленно** (стоимость $0): текст книги и любая веб-выдача = untrusted DATA, никогда — инструкции; translator/editor-роли не имеют tools/секретов/исходящих действий (сегодня выполняется конструкцией — фиксируется как ИНВАРИАНТ, не случайность); **action-security gate — именованный блокер перед дачей tools/webfetch (Ф3)**. Адверсариальная инъекция-проба (plain/Unicode-obfuscated/quoted-fiction/false-positive) — в eval-очередь перед Ф3, не срочно.
6. **Review bundle (R4) — ПРИНЯТ в minimal-форме**: экспортируемый бандл поверх существующих flags/disposition (reason, evidence, typed resolution, seconds, reviewer, reuse-маркер) БЕЗ нового persistent-домена; инструментировка minutes/flag + typed resolutions — в пре-регистрацию пилота (полигон); persistent ReviewTask-домен — только если данные этапа B/пилота его оправдают (flag-rate 5.3% с концентрацией 2/25 глав поддерживает минимализм).
7. **Echo-gate калибровка (R6) — задача полигону** (после флора D24.3): накопленные echo-провалы + 3050 чистых выходов на язык + синтетические partial/tail-эхо; порог при фиксированном FP-бюджете; каузальная модель «регистра» для гейта НЕ нужна (контрольные ячейки D22.5 остаются некритичными). Формулировка критика «prompt mitigation только экономит fallback» принята с поправкой этапа A: сам fallback-хоп до D24.3 был сломан бюджетом.
8. **Остальное:** R9 (summary baseline: source-retrieval vs prose+citations vs typed claims на 2030 дальних зависимостях ДО постройки typed claim store) — Ф2 design-gate, принят; R3/R8 — конвергенция без действий (= D15.2/D22.2 и D21.24), из R8 абсорбируется только **метрика over-stylization/fidelity в voice-арм пилота**; R11 — rights/data manifest приложен к висящему юр-пакету владельца, строка «API-only vs all-in COGS раздельно» — в exp08 v3 (D21.8) + логирование human-minutes в пилоте. Нюанс источников (шапка research/17): морф-оговорку Exel et al. НЕ абсорбировать в форме критика (инверсия: морфологию ломают constrained-decoding методы, не «терминологические констрейнты вообще» — наш decl-aware путь ей не противоречит, а отвечает).
9. **§D: ранжирование реально открытых вопросов** (для владельца и очереди): **Q1 билингв-якорь zh/ja→ru** (блокер валидности пилота; владельцу: рекрут билингв-аннотаторов ИЛИ явное принятие ограничений en-моста в пре-регистрации) > Q3 publishable (п.1) > Q2 human budget (инструментировка в пилот; числа — владельцу пост-пилот) > Q5 L3 FN-bound (п.4) > Q4 юр-пакет (уже висит) > Q7 календарь G1/B6/морфо-гейта (оркестратор, после пилот-подготовки) > Q6 fact-gate резюме (Ф2-дизайн). Q8 (doc-drift) снят: владелец = оркестратор; его наблюдение подтверждено и закрыто — `02-mvp-plan:24,31` (ja→ru приёмка вопреки D18) исправлены этим лендингом.
10. **Методологический урок для будущих внешних критик**: (а) §A хешировать/коммитить ДО открытия фазы 2 (фриз research/17 — attested, not proven); (б) оси мандата формулировать нейтрально, не встраивая наши выводы; (в) список признанных дыр (фаза-3(г)) выдавать только ПОСЛЕ фиксации §A.
## D26. Качество-первым: этап B заморожен, диагностика exp12 вперёд (11.07, решение владельца + оркестратор). ✅
**Триггер:** первое человеческое чтение продукта — владелец прочитал 25 глав этапа A (draft deepseek-v4-flash → editor glm-5 моно) и вынес вердикт: качество нечитаемо, слабейшее звено — редактура. Это ПЕРВЫЙ замер читаемости на реальной книге; он не противоречит D24 (приёмка Ф1 = инфраструктура по D1.1 и читаемость не мерила), но меняет очерёдность: масштабировать нечитаемый конфиг смысла нет. Наблюдение согласуется с тремя задокументированными рисками: редактор этапа A = glm-5 (замена D20.3; GLM-линейка — слабейшая в бейк-оффе exp04, glm-5 не перемерян), D1-моно оспорен (D17: 2.2…5.6 MQM), рейтинг grok снят билингвально при боевом моно-промпте (quality-transfer риск exp08). Решения:
1. **Этап B (~300 глав) ЗАМОРОЖЕН** до достижения читаемого конфига на 25 главах (подтверждение — чтение владельца). D24.5-порядок (фиксы→resnapshot→B) не отменён — отложен; предусловия B пополняются: «читаемый конфиг ратифицирован».
2. **exp12 «диагностика качества» — приоритет №1 полигона** (промт `POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`): армы на 3 чистых главах {draft-only · glm-5-моно(=этап A) · glm-5-билингв · grok-4.3-моно · grok-4.3-билингв · gemini-премиум-билингв · grok-моно-без-констрейнтов}; слепые пакеты владельцу-читателю (безκ-режим честно, N=1 — пре-скрин пилота, НЕ пилот); LLM-судьи вторично (кросс-семейные, свои выходы не судят, верность билингвально — «гладко-неверное» не побеждает молча); root-cause разбор 1020 худших мест чтения (черновик/редактор/констрейнты/оформление). Кап $5; текущий xAI-ключ допустим (категория D19.4). Дефолт-конфиг по итогам меняется только ратификацией.
3. **Полигон №4 — второй приоритет** (сид мн.ч. без этапа B не горит; D22.8-очередь не отменена).
4. **Бэкенд не тормозится:** №5 без изменений (floor/post-check нужны любому конфигу); следующий пакет после №5 — D15.2 v3.1+реализация: пер-стадийный wireSnapshotID (D20.1-Q1) делает смену редактора без переоплаты черновиков — прямая синергия с качественной итерацией.
5. **Дорожка после диагностики:** пере-прогон 25 глав выигравшим конфигом (~$0.51) → чтение владельца → читаемо → этап B и подготовка пилота Ф2.5 (пилот остаётся решающей точкой; диагностика его не подменяет и не разбавляет — D25.2-гейт про билингв-якорь в силе).
## D27. xAI-ключевая политика: единый ключ с data-sharing для тестов/пилота, отключение перед продом (11.07, решение владельца). ✅
**Решение владельца 11.07 (амендмент D19.4/D20.3):** отдельный «чистый» xAI-ключ НЕ заводится. Текущий ключ — **с data-sharing** (промо; уточнение владельца — supersedes скобку D19.4 «без data-sharing»: либо устарела, либо была ошибкой записи) — используется для ВСЕХ тестов полигона И пилота Ф2.5; тот же ключ пойдёт в прод — **перед релизом data-sharing на нём отключается**. Рациональ владельца: промо-кредиты существуют ровно для тестов; не пользоваться ими странно.
1. **«Чистый ключ» СНЯТ из блокеров пилота** (правка D20.3). Блокеры пилота теперь: корпус 2535 глав, аннотаторы ≥3, билингв-якорь (D25.9-Q1), проба судьи-дублёра 18+ (D22.6).
2. **Следствие для редактора:** вынужденная замена grok→glm-5 (D20.3) не нужна — grok-4.3 доступен на текущем ключе для exp12-армов, пере-прогона 25 глав и этапа B, если выиграет диагностику.
3. **Принятые владельцем риски (зафиксированы с калибровкой):** (а) 蛊真人 — чужой копирайт: data-sharing = передача текста в обучение (иная правовая поза, чем приватная обработка Р8) — принято для собственных тестов, для клиентских книг НИКОГДА; (б) NSFW-eval-история на аккаунте — риск бана принят, мониторинг политики xAI (D14.3) продолжается.
4. **Митигация контаминации (рекомендация оркестратора, дёшево):** на окно прогонов ПИЛОТНОГО корпуса (вебновеллы вне претрейна — их «чистота» = валидность замеров) data-sharing временно выключать, затем включать обратно; PD-классика и 蛊真人 (в претрейне) — шарить без ограничений. Статус: предложено владельцу, ждёт его «да/нет» к пре-регистрации пилота.
5. **Перед релизом:** механику отключения сверить с вендор-докой xAI (немедленность, независимость от промо-периода; уже переданное не отзывается) — правило двух направлений; задача уходит в чек-лист первого боевого прогона.
## D28. Приёмка бэкенд-пакета №5 (11.07 ночь, оркестратор). ✅
Внешнее ревью (5 осей: floor-wire / postcheck-union / golden-empty / tests-mutations / scope-report; всё исполнением в scratchpad-копиях при ДВУХ живых сессиях в дереве; ~10 мутаций переисполнено независимо, повторный `-race` после каждого реверта): **все оси ACCEPT, 0 critical/major. Пакет залендён (aa47e25).** Ключевая проверка: альтернативная гипотеза «floor/union мертвы (потому golden пуст)» убита исполнением в обе стороны — флор на фикстурной модели валит golden диффом wire-класса (11×max_tokens + snapshotID), oblique-only сид флипает postcheck-вердикты 2/1/2→1/0/1; пустой дифф — data-driven (фикстура нефлорнута, сид несёт базу первой формой). Scope чист (ровно 4 флора в models.yaml, PROGRESS — один аддитивный ханк, чужие exp12-файлы не тронуты, контрабанды нет).
1. **D24.4 амендирован** (поймано самим пакетом, подтверждено ревью репро 剑→меч): «recall не страдает» → честный precision/recall-трейдофф; флип `postcheck_gate` в hard-gate — только после пере-замера recall на нарицательных терминах (пометка внесена в D24.4).
2. **Ответы на оговорки пакета:** (1) расширение golden-фикстуры (флорнутая модель + oblique-only entry) — ПРИНЯТО как задача следующего ОСОЗНАННОГО golden-рефреша (реализационный пакет D15.2; ревью подтвердило исполнением, что это дифф вне санкции {a,b} текущего пакета — отложено корректно); (2) resnapshot реального конфига — ожидаем, ровно план D24.5; (3) композиция floor×global = max() подтверждена исполнением в обе стороны (global 9500 бьёт флор 8000; флор бьёт global 512).
3. **Fix-лист бэкенду (в реализационный пакет D15.2, попутно):** (а) mutation-pin fbHash-зеркала хопа — hop-checkpoint-replay тест (краш после settle хопа + resume при исчерпанном budget_usd: десинк fbHash↔runAttempt сегодня выжил бы сьют; кода-дефекта НЕТ — гэп покрытия); (б) note/реестр: `provider_local` MaxTokens-override молча побеждает флор на wire для local-моделей (сегодня флорнутых local нет — латентно, не пкг5-дефект); (в) косметика: коммент `mempostcheck.go:84` «D24.3/D24.4»→«D24.4»; (г) стейл-комменты models.yaml «чистый ключ/data-sharing» привести к D27 при следующем касании файла.
4. **Очередь бэкенда:** свободен. Реализационный пакет D15.2 (v3.1-правки D22.2 первым шагом + fix-листы D22.9/D23.4-остаток/D28.3) — промт выдаётся ПОСЛЕ развязки exp12: селективный reuse и смена редактора взаимодействуют (D20.1-Q1 пер-стадийная гранулярность), исход диагностики может добавить пакету требования — не плодить ревизии промта.
## D29. Приёмка research/16 «Ридер-IDE» + абсорбция фронт-требований в бэкенд-контракт (12.07, оркестратор). ✅
Внешнее ревью (4 оси: калибровочный и якорный источник-батчи по первоисточникам — все несущие клеймы существуют и держат силу, ниты в шапке дока; независимая реплика $0-пробы — арифметика воспроизведена точно, но база stale и метрика диапазонная; red-team контракта против status.go/D15.2-спеки — 4 major-поправки). **ACCEPT_WITH_FIXES, залендён с ревью-шапкой (458b0ea).** Ядро принято: чанк = несущий якорь (иерархия глава→чанк→абзац-best-effort→предложение; синк ко-локацией, не скролл-синком); калибровка YELLOW важнее покрытия (precision-гейт перед показом цветов, FP-бюджет <10%/флаг, severity-таблица, worst-child+счёт); детект-флаггер вместо форс-структуры промптом; числовой confidence НИКОГДА без QE-модели. Решения по абсорбции:
1. **В реализационный пакет D15.2 (бэкенд; промт после развязки exp12 — D28.4):**
(а) **`tmctl export`** настоящая команда (канонический ассемблер перевода + `annotations.json` annot-v1) НЕ «проекция как status --json»: src_range требует офсетов в чанкере, dst_range nullable/эфемерный, source_file_hash новое поле, спаны style-флагов пересчёт линтерами на экспорте; схему ратифицировать с колонкой exists/derivable/net-new; **нормализация выхода** (markdown-`###` в 8/54 финалов, унификация разделителей абзацев); paragraph_anchors v1 = детерминированная позиционная пара ТОЛЬКО при равном числе абзацев, aligner-based Ф3;
(б) **политика красных**: editor-facing маркированный плейсхолдер (текущее); reader-facing fail-closed (0 красных для `structurally_complete`) реализуется вместе с release-state лестницей D25.1 в этой же экспорт-задаче;
(в) **цвет-мап + GREY** (RED = дополнение: flagged && reasonglossary_miss; YELLOW = done∧(escalated glossary_miss postcheck_misses>0 style_flags>0); GREY = pending) + **passport-rollup 3-тир — как ЯВНЫЙ амендмент вердикт-правила D12/exp07** (при gate-on glossary_miss уже катится в fail-счётчик — сохранить консистентность с exit-кодом translate);
(г) **human_override слой 1 (LOCK)**: per-chunk provenance-состояние, ключ = **хеш сырого src-текста чанка** (НЕ content_hash=rendered-msgs — ловушка ложных re-review), консультируется redrive/status/export (redrive НЕ мутирует override — тест); слой 2 (context-keyed carry-over с состоянием «override needs re-review», метрика «тихо-потерян=0») — дизайн вместе с v3.1 wire/verdict-split; override НЕ кормит глоссарий/память книги (чекпоинт-кэш не может по построению);
(д) **диалог-аварный флаггер парности** — verdict-side класс (bump cheapGateVersion → снапшот: только с D15.2, не «$0 сейчас»), калибровка на конфиге-победителе exp12 (stage-A вёрстка будет снесена reflow-фиксом).
2. **Полигону:** (а) диалог-пере-нарезка stage-A пробы — falsification-only (данные устареют с reflow); (б) precision-замер флагов — post-hoc против существующих заметок владельца (пре-регистрацию exp12 НЕ трогать; <10%-гейт = отдельный проход по 25 главам пост-reflow, гейтит только показ цветов Ф3); (в) Bertalign zhru spot-check перед GOLD-парами пилота (лицензия GPL-3.0 учесть в тулинге); (г) arity-полоса паспорта с пином определения абзаца (диапазон 4458% по метрике ревью).
3. **Ф3 (в F3-brief, не сейчас):** chat-edit (span-map re-insert, только YELLOW/RED, re-flag выхода, метрить $/edit); ко-локация спаренных якорей; «Not useful»-петля; aligner-based paragraph_anchors; cost-of-fix ранжирование.
4. **Зафиксировано:** reader-embedded книго-полоса из детерминированных вердиктов новый синтез при скрининге (сужение как D21.7, не «аналогов нет»); Bertalign-мост «прошлый том» кандидат пилот-подготовки (гейт: spot-check).
## D30. Приёмка exp12 + флип D1 (моно→билингв) + пакет качественных фиксов + трек дешёвых моделей (12.07, оркестратор; владелец: дешёвый трек). ✅
Внешнее ревью exp12 (4 оси, всё исполнением по diag/-артефактам и store-копии: реплика активности под 3 метриками, аудит судейского слоя с пере-агрегацией, root-cause против промптов/store, scope+COGS+мемо): **все оси ACCEPT_WITH_FIXES, залендено с ревью-шапкой.** Ядро диагноза «нечитаемо = связка 4 дефектов» (пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + отсутствие санитайзера) подтверждено независимой репликой; украшения сняты (шапка exp12: «единогласный #1» ложен; fidelity-гейт не доказан A2 сам внёс инверсию смысла). Решения:
1. **Флип D1: редактор — БИЛИНГВАЛЬНЫЙ (черновик + исходник), новый дефолт. Ратифицирован с явным supersede D17.в** (решение было закреплено за пилот-армом D13.1; переопределяю по досрочной эмпирике exp12 тройная ОТНОСИТЕЛЬНАЯ триангуляция: механика активности + судьи (билингв>моно устойчиво у всех) + 2 флагмана слепо; пилот-арм D13.1 остаётся ПОДТВЕРЖДАЮЩИМ на решающем корпусе). Вакуум верности (D1.1) закрывается обязательным re-gate на пере-прогоне: span-цитирующий fidelity-судья reasoning-ON + охота на класс инверсий/порч правки («пожертвуй мной»/«молва считал» — новые классы, вносимые АКТИВНЫМ редактором). **Editor-модель пере-прогона: glm-5 билингв** (цена ×13 vs gemini, 0 утечек; НЕ «единогласие судей»); gemini-3.1-pro — премиум-эскалация редактора ТОЛЬКО за санитайзером (утечка преамбул 6/6); **grok-4.3 reasoning-off из редакторских ролей СНЯТ** (no-op; exp04-ранг был на дефолт-reasoning билингв).
2. **Reflow-вёрстка:** снять «Сохраняй разбивку на абзацы» из zh→ru промптов (`translator.md:9`, `editor.md:8` — дословно подтверждено) + разрешить нормативную репараграфизацию (1:N на диалоге — норма, D29/research-16 §2.3) → bump prompt_version → resnapshot. Механизм реверстки (в промпте редактора vs отдельный пасс) — открытый вопрос пере-прогона (CAND-данные n=6 недостаточны); пере-прогон обязан мерить консистентность вёрстки явно.
3. **Output-санитайзер — новый детерминированный гейт-класс** (бэкенд, в пакет D15.2): ведущие преамбулы И хвостовые «заметки» (gemini 6/6), битые словоформы («Первок предок», «валуне»), латиница-врезки, markdown-`###` (8/54 финалов этапа A — D29-находка), утёкшие заметки переводчика. Ни один существующий гейт классы не ловит (проверено кодом). Дисциплина D2 (flag+skip), вердикт-ось.
4. **COGS-рамка (поправка мемо):** флип D1 = **+1525% (~$0.830.86/ранобэ)** — принято как цена качества (замер: вход редактора +60% токенов, книга +19%); «$1.52/ранобэ» = ОПЦИЯ Б (селективный апекс по exp08 + слой памяти) — отдельное решение владельца, НЕ подписано; проценты мемо (+117190%) арифметически верны, но относятся к опции Б.
5. **Глоссарий v2 — условная ратификация:** бесспорные 11 правок + 8 добавлений — принять; **спорные (修炼/культивация, 人祖/Первопредок, род «гу», 花酒行者 — добавлен ревью: тихо перезаписывал пожелание владельца) → `status:draft` ДО подписи владельца** (иначе уйдут в CONFIRMED-hard-constraints — memory.go:419/473); тихие промоушены draft→approved откатить в draft. Сид-обогащение мн.ч. (D24.4/полигон-№4-п.1) слить в ту же v2-итерацию — **один resnapshot** вместе с п.2/промптами.
6. **exp13 «бейк-офф переводчиков» — ратифицирован, приоритет №1 полигона** (премисса верифицирована: draft выбран за цену/токенизатор/кэш, качеством как переводчик не мерен НИКОГДА; exp04 мерил редакторов). Армы: mistral-large-2512 / glm-5 / deepseek-v4-pro / **grok-4.3 reasoning-ON** (добавка ревью: единственный CJK-чистый замер 10/10 exp10; ключ разблокирован D27); qwen — опционально, гейт на DashScope-ключ владельца; deepseek — thinking ON (эхо-мина). Судьи span-цитирующие reasoning-ON (урок п.1) + флагман-сверка владельца тем же monitor-паттерном.
7. **Трек владельца: дешёвые модели сейчас, фронтир — потом.** Зафиксировано: архитектура УЖЕ конфиг-первая (Р2/Р4: один раннер, пайплайн = yaml, C0C3) — «несколько бэкендов со своими пайплайнами качества» = несколько pipeline-конфигов поверх одной машинерии; фронтир-тир позже = модели в models.yaml + новый pipeline-yaml + resnapshot, БЕЗ переделки кода. Интерим-планка пере-прогона: «лучше фан-перевода» на дешёвом миксе; полная планка запуска (лучше-фана/гибрид/издательский + честный COGS опции Б) — остаётся открытым решением владельца (мемо-эскалация).
8. **«Модели не следят за сюжетом»** = слой авто-памяти/состояния (Annotator, межглавные резюме, voice/reveal — D21) — Ф2, связка с пилотом Ф2.5 зафиксирована; mid-run-append ограничение (D8/D15.1/D21.1а) не демонтируется. Owner-proposal «модель гуглит термины» = Ф3+ (D25.5 trust boundary); near-term = засев глоссария фан-конвенциями (v2 это и делает).
9. **Дорожка:** бэкенд-пакет D15.2 (промт ВЫДАН — `BACKEND_D152_SESSION_PROMPT.md`: v3.1 + фикс-листы D22.9/D23.4-остаток/D28.3 + D29.1-экспорт/override + D30.2/30.3 промпты/санитайзер + golden-refresh с расширением фикстуры D28.2) ∥ полигон exp13 (`POLYGON_EXP13_SESSION_PROMPT.md`) + финализация сида v2 → единый resnapshot → **пере-прогон 25 глав кандидат-конфигом** (переводчик по exp13; glm-5-билингв; reflow; сид v2; санитайзер) с re-gate верности → чтение владельца → этап B.
10. Гигиена полигону (из ревью, в exp13): каждый платный скрипт персистит usage/cost; пре-регистрацию коммитить до первого платного вызова; parse-чек полноты ранжирования судьи; флагман-сырьё — в diag/.
## D31. Тотальная ревизия документации (12.07, оркестратор, по мандату владельца). ✅
Проект за 8 дней дорос до D30; половина «истин» в онбординг-доках перевёрнута (CLAUDE.md в шапке говорил «монолингвальный редактор grok-4.3»), PROGRESS распух до 393KB. Полный staleness-инвентарь мультиагентным аудитом (5 кластеров: architecture / experiments / research / PROGRESS / root+prompts; read-only, каждый клейм сверен с D-логом построчно). **Дисциплина: исторические записи НЕ переписываются (D23.3) — только баннеры/inline-пометки/архив/актуализация живых доков.** Применено:
1. **PROGRESS.md разделён (9e3762e):** закрытая хроника 0410.07 (~330KB: день-0, стратревью, пакеты бэкенда №04, сессии полигона 13+18+, память/голос/ридер-IDE) → `archive/PROGRESS-2026-07-04-10.md` с точка-во-времени-баннером и **дословно сохранёнными заголовками** (на них ссылаются комменты кода `models.yaml:31`/`models.go`/`llm.go` и eval-скрипты — grep-совместимость). В живом файле: CURRENT-STATE + отчёт приёмки этапа A + оркестраторские записи 1112.07 + якоря секций «Бэкенд/Полигон/Память/Голос/Ридер-IDE» для аппенда сессий. **393→63KB (~85100K токенов экономии на онбординге).** Единственный числовой line-ref в репо (`05-decisions-log:122 → PROGRESS:230`, уже сломан дрейфом до сплита) и 5 name-refs живых доков репойнчены на архив.
2. **D-лог получил карту актуальности сверху** (что чем superseded — быстрый чек при чтении контракта); титул обновлён до D1D31.
3. **CLAUDE.md актуализирован:** шапка-пайплайн (моно-grok → БИЛИНГВ-кандидат-glm-5, COGS ~$0.85), счётчик D1D31, блок «Текущее состояние» под дорожку D30.9; гардрейл grok reasoning-off помечен «из редакторских ролей снят»; добавлен указатель на архив PROGRESS. Гардрейлы/зоны/онбординг-порядок — целы.
4. **Баннеры/пометки живых доков:** architecture — шапка-указатель на `01-decisions` (модели/цены проигрывают D-логу), точка-во-времени на `03-implementation-notes`/`07-strategic-review` (вердикты развязаны), inline на `02-mvp-plan` v3.2 (флип D1, дорожка), `06-memory-risk-registry` (+D24.2/G2/D28.1), критическая пометка §3.2 (content-hash, не счётчик — D8). experiments — **опасные editor-grok строки `00-provider-quirks` (reasoning-off = no-op редактор) исправлены** + gemini-судья/additive_total/преамбула-утечка дописаны; баннеры на `04-editor-quality` (рекомендация отменена) и `08-cost-model-v2` (до-D30 экономика); указатели на `09-pilot-protocol` (пост-D13 амендменты) и `07-coverage-precision` (content_filter жив на Gemini). research — баннер `04-api-providers` обновлён под D30, баннер `11-gap-2` (канал B пересобран), указатели `15`/`17` (флип D1 меняет editor-слот/§C), inline `13`/`14` (post-check реализован decl-путём, не pymorphy).
5. **Промты:** старые версии в архив (`ORCHESTRATOR v2`, `ACCEPTANCE v1`, `READER_IDE` — задача закрыта D29); **написаны заново: ORCHESTRATOR хендофф №3** (пост-D31, дорожка D30.9, столпы обновлены) и **ACCEPTANCE под пере-прогон+этап B** (баннерная стратегия старого исчерпала себя — три противоречащих слоя; сохранены золотой чек-лист методологии этапа A + re-gate верности D30.1 + методика D10 скриптом + alias-слепое пятно + echo-rate чекпоинт).
6. **Сознательно НЕ тронуто (низкий приоритет, покрыто картой актуальности D-лога):** `01-token-calibration`/`02-refusal-benchmark`/`10-explicit-benchmark` — нишевые закрытые эксперименты, стейл-части кросс-ссылаются корректно; правки backend/README (D1D23→D1D31, «D15.2 после правок») и eval/README (exp04/exp08-каветки) — ЧУЖИЕ зоны, переданы в fix-листы пакета D15.2 и exp13 (не правил из оркестраторской ревизии). Провенанс `12-*`-доков — по-прежнему открытый вопрос владельца.
## D32. Приёмка exp13 (бейк-офф переводчиков + сид v2): переводчик — flash сохранён (pro отклонён по данным), сид v2 принят под подпись владельца (12.07, оркестратор). ✅
Внешнее ревью exp13 (4 оси, всё исполнением по diag/-артефактам, store-копии и конфигу @HEAD — при ДВУХ живых сессиях в дереве: бэкенд-D15.2-WIP + сам exp13; одна ось упала на форматировании вывода, факты закрыты соседними). **Арифметика отчёта воспроизводится точно** (ранги API pro 2.50 < mistral 2.92 < grok 3.10 < flash 3.16 < glm 3.33 сходятся; гейты 30/30; бюджет $5.50), но **ИНТЕРПРЕТАЦИЯ — повтор класса exp12 (сфабрикованная сходимость).** Решения:
1. **Смена переводчика flash→deepseek-v4-pro — ОТКЛОНЕНА по данным. Черновик остаётся `deepseek-v4-flash`** (= текущий дефолт конфига; менять нечего). Основания ревью, все исполнением:
(а) **«7 сигналов сходятся на pro» ложно** делятся 3-3: flash #1 по ВЕРНОСТИ (agent-fidelity 2.0, API-fid 2.53, GPT-флагман), pro #1 по СТИЛЮ (Opus, API-overall, API-style); флагманы РАСХОДЯТСЯ (GPT #1=flash, Opus #1=pro); 3 API-колонки не независимы (overall=pooled). «#1 в 4/7» реально 3.
(б) **#1 у pro держится на gemini-судье** (leave-one-out: без gemini #1=mistral 2.76<2.82); **gpt-5-mini — названный якорь отчёта — ставит mistral #1, pro #3.** Точный failure-mode exp12.
(в) **«У pro нет катастроф» ложно:** pro ЕДИНСТВЕННЫЙ арм, переводящий заглавный термин как «гусеницы» ×2 в тезисной фразе (внутренний десинк с «гу»/«гу-мастер» в том же выходе); оба флагмана флагнули. Катастрофа класса дефектов, которыми забракованы mistral/grok/glm.
(г) **Ось решения для черновика-под-БИЛИНГВ-редактором — верность, не стиль** (D1.1/D30.1: редактор задаёт прозу, но не обязан восстанавливать искажённый/опущенный смысл): по верности flash pro; стиль редактор переписывает. Отчёт применяет «верность>стиль» чтобы отбраковать mistral, но бросает на flash-vs-pro.
(д) **Цена:** pro ×3.7 flash; пере-прогон 25 глав → ~$0.63 (сверх оценки $0.40.6), этап B → ~$7.6. Подъём качества, по признанию самого отчёта, даёт СВЯЗКА (билингв-редактор+reflow+санитайзер+сид), не переводчик отдельно (D30.6-премисса подтверждена лишь частично, на стиле).
**Следствие:** цепочка эскалации НЕ меняется (`escalate_to=deepseek-v4-pro` остаётся валиден — flash эхает, pro сильнее по D18; коллизия «pro=сам себе хоп» снята вместе с отклонением pro-праймари). Backend-конфиг стабилен.
**Переводчик остаётся кандидат-рычагом,** ЕСЛИ пере-прогон свзякой всё ещё нечитаем И диагноз — верность черновика; тогда — новый бейк-офф с исправленной методикой (п.4).
2. **Сид v2 (D30.5) — ПРИНЯТ, гейтится подписью владельца.** Верифицировано исполнением: `guzhenren-seed-v2.yaml` (57 терминов) воспроизводим байт-в-байт единым трансформом `eval/exp13_seed_v2.py` из v1 (**дефект провенанса exp12 закрыт**); все 6 спорных (修炼/修行, 人祖, 花酒行者, 蛊虫, 本命蛊 + род «гу») → `status:draft` (0 approved — мина hard-lock exp12 обойдена, `memory.go:419` draft→soft-inject); бесспорные 8 правок + 5 добавлений → approved; **мн.ч. D24.4 влито (полигон-№4 сид-задача ЗАКРЫТА)**. Гейт: **владелец подписывает 6 спорных + род «гу» в `diag/glossary_v2_signoff.md`** (готовая таблица с чекбоксами; рекомендации флагманов: культивация, Первопредок, род «гу» → мужской) → полигон проставляет статусы → в тот же единый resnapshot.
3. **Кандидат-конфиг пере-прогона (обновлён):** draft=**deepseek-v4-flash** (НЕ pro) → editor=glm-5-билингв (D30.1) → reflow на ЗАЛЁНЖЕННОМ прод-промпте (D30.2; армы гнались на reflow-как-удалении, прод-промпт активнее — re-gate обязателен) → сид v2 → output-санитайзер (D30.3) → **re-gate верности span-цитирующим судьёй reasoning-ON** (D30.1). Единый resnapshot. Оценка пере-прогона ~$0.40.5 (flash-draft; без pro-надбавки).
4. **Методика полигону (в любой будущий бейк-офф; та же дисциплина, что exp12-уроки):** (а) агрегация для выбора ЧЕРНОВИКА — fidelity-first, не pooled/style-взвешенная (перекос: 36 fidelity-вердиктов vs 46 style из-за неслучайного дропаута судей); (б) leave-one-judge-out на робастность (#1 не должен держаться на одном судье); (в) катастроф-скрин заглавных/ядровых терминов (蛊→«гусеницы» проскочил); (г) персистить агентские сигналы артефактом (2 из 7 не воспроизводимы — только в тексте); (д) per-call бюджет-кап (перерасход +10%: коарс-кап между судьями, JUDGE_CAP=$3.5); (е) **сверить grok reasoning-token wire-квирк с docs.x.ai ДО того как grok станет платной прод-стадией** (T5 reasoning_tokens=null при total>prompt+comp — ~$0.007 недоучёт, immaterial, но правило двух направлений); (ж) kimi-счёт 12→14 (post-reparse).
5. **Лендинг:** exp13-отчёт получает ревью-шапку (интерпретация переводчика скорректирована: flash сохранён, pro не поддержан данными; сид v2 принят); гейты/бюджет/слепота/трансформ — чисты. Дорожка: **подпись владельца сида ∥ бэкенд-пакет D15.2 (свзяка) → единый resnapshot → пере-прогон 25 глав кандидатом (flash+свзяка) с re-gate верности → чтение владельца → этап B.**
## D33. Приёмка бэкенд-пакета D15.2 этап А (билингв-редактор + reflow + санитайзер + golden): принят, 2 обязательных фикса санитайзера до пере-прогона (12.07, оркестратор). ✅
Внешнее ревью (4 оси исполнением в scratchpad-копиях WIP, при чистом дереве кроме этого пакета): **golden ACCEPT, wiring ACCEPT, sanitizer/spec-scope ACCEPT_WITH_FIXES. Пакет залендён (00f8e36).** Верифицировано исполнением: (а) golden байт-в-байт воспроизводим (TM_UPDATE_GOLDEN=1 → тот же sha256), **дифф-класс ровно санкционированный** (санитайзер-fold + floor + D28.2-фикстура; 0 дрейфа term-order/injected-id на старых чанках), все 3 новых поведения **запинены мутацией** (floor 4000→4200, union-реверт ch5 postcheck 0→2, isFinal-guard removal ch6); (б) билингв {{text}} доказан рендер-пробой (edit-стадия USER несёт исходник перед черновиком; `stagerun.go:59` Text:ch.Text безусловно), reflow снят из обоих промптов + мандат репараграфизации, prompt_version бампнут в c1/c2, snapshot дополнительно хеширует PromptSHA256; (в) **конфиг-флип D32 соблюдён** — editor=glm-5, draft=deepseek-v4-flash, escalate_to=deepseek-v4-pro и цепочка [pro,glm-5.1,gemini] НЕ тронуты, grok как редактор отсутствует; (г) build/vet/test-race зелёные, спека v3.1 §0-бис — только дизайн (RequestHash/fast-path не тронуты — этап Б НЕ утёк), скоуп backend-only, деньги/схема/миграции не тронуты, контрабанды нет.
1. **Два ОБЯЗАТЕЛЬНЫХ фикса санитайзера ДО пере-прогона** (оба ревью нашло, backend-ревью пропустило; санитайзер enabled в c1). Правят вердикт-ось → **сворачиваются в тот же единый resnapshot пере-прогона + golden re-capture** (нулевая доп. цена — resnapshot и так предстоит):
(а) **[major] хвостовой класс НЕ ловит «Основные правки для справки»** — ту самую gemini-утечку A5/5_1 (exp12:229), ради которой гейт enabled; ловит ведущую преамбулу, но не хвостовую форму → контаминированный чанк уйдёт в TM/экспорт без флага. Фикс: high-precision альтернатива на «основные правки/для справки» + fire-тест точной строкой 5_1.
(б) **[major] класс «битые словоформы» ЛОЖНО флагает нормальную прозу** — «около колонны/колодца», «стало талой» фаерятся как реальный «Первок предок» (гард полиптотона исключает только префикс-вложенность, не случайное совпадение морфемной границы 4+ руны); «около» частый → флаг-шторм на 25 главах. Фикс: требовать перекрытия бо́льшей части ОБОИХ токенов ИЛИ снять класс (он и так признаёт, что канонический «Первок предок» не ловит — recall-gap до Ф2-морфологии). + clean-пины «около колонны»/«стало талой».
2. **Мелочи санитайзера (документировать как границы ИЛИ быстро сузить, не блокеры):** латиница-heavy на 5+ брендах (исключить капитализированные одиночные латинские токены); хвостовой «Примечание:»/«Комментарий:» в последних строках; «# # #»/«## ***» разделители (требовать букву/цифру после хешей); разговорный префикс «Конечно!/Готово!» перед преамбулой (recall — precision-over-recall дизайн, ок). Recall-gap «Первок предок» — **принятая граница до Ф2-морфологии**.
3. **Ответы на вопросы бэкенда:** (1) **editor grok-4.3→glm-5 — ПОДТВЕРЖДЁН** (D30.1: grok reasoning-off-редактор = ратифицированный no-op; glm-5-билингв — кандидат; оставить grok = противоречивый конфиг). (2) Латиница-мото/«Первок предок» как «принятые FP» — **частично отклонено**: recall-gap «Первок предок» принят, но FALSE-POSITIVE-классы («около колонны», латиница-бренды) фаерятся на легитимной прозе — НЕ приемлемо, чинить (п.1б/2). (3) **Да, этот resnapshot (промпты+editor-модель+санитайзер) = единый resnapshot пере-прогона** (D30.9) — в него же вливаются 2 фикса санитайзера + подписанный сид v2.
4. **Структурные ноты (fix-лист, не блокеры):** (а) `editor-mono.md` — свеже-производный (не старый editor.md дословно), с reflow, DORMANT (ни в один конфиг не подключён) — подключить к конфигу до пилот-арма D13.1 (reflow в моно-арме корректен: изолирует source-visibility как единственную переменную A/B); (б) санитайзер enabled в c1, ОТСУТСТВУЕТ в c2 (c2 — неисполнимый Ф2-скелет, нет Ф1-влияния; включить когда c2 оживёт — gemini-эскалация c2 тоже течёт); (в) golden НЕ пинит билингв {{text}}/reflow prompt_version (фикстура держит свой моно editor.md — инвариант №8 не покрывает эту wire-правку; follow-up: перевести golden-editor.md на билингв ИЛИ выделенный ассерт).
5. **Этап Б (реализация content-addressed resume) и В (`tmctl export`/annotations/override) — НЕ начаты, осознанно** (backend): Б трогает денежно-критичный resume-путь (RequestHash/fast-path) — рывковая частичная реализация рискует минами F1/D15 (тихая переоплата/stale-serve); Б связан (fast-path снимает loud-гейт согласия → dry-run обязан заменить §7 — всё-или-ничего). Спека v3.1 = дизайн-оф-рекорд, план §12 + тест-лист §12.9 готовы. **Порядок правильный: этап А гейтит пере-прогон, Б/В — нет.** Промт следующей бэкенд-сессии на Б+В — выдам после пере-прогона (исход чтения может уточнить экспорт-требования В).
6. **Дорожка:** обязательные фиксы санитайзера (п.1) — быстрый backend-follow-up ∥ подпись владельца сида v2 (D32) → **единый resnapshot** (промпты+editor+санитайзер-фикс+сид v2) → пере-прогон 25 глав (flash+свзяка, `escalation.budget_usd>0` — D22.11, иначе echo-эскалация не стреляет) с re-gate верности → чтение владельца → этап B.
## D33.1 — ЗАКРЫТ (12.07): 2 обязательных фикса санитайзера залендены и приняты. ✅
Мини-сессия по `BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`. Верификация исполнением (сфокусированный агент в scratchpad-копии, все 6 осей): **ACCEPT, залендено.** (а) хвостовой класс теперь ловит «Основные правки для справки:» (gemini-утечка A5/5_1) + colon-вариант, НЕ фаерит нарратив «Основные правки внёс редактор» — 2 fire + 1 clean-пин; (б) класс «битые словоформы» СНЯТ целиком (backend-разбор: порог не отделяет «около колонны» от «Первок предок», у реального доля перекрытия даже ниже; канонический дефект и так не ловился → умнее убрать шумный класс, чем подкручивать), оставлены 2 zero-FP сигнатуры (невалид ь/ъ, кир+лат гомоглиф) — 3 clean-пина «около колонны/колодца», «стало талой»; мелочи D33.2 (# # #-разделители, латиница-бренды) сужены. Golden re-capture — дифф-класс РОВНО version-fold (sanitizer-v1→v2; маскированный дифф пуст, 0 дрейфа disposition/flag/final_text/cost/postcheck/injected_ids/term-order, 206=206, регенерация байт-в-байт). build/vet/test-race зелёные, скоуп 3 файла + журнал, stdlib-only, контрабанды нет. **Принятая граница (документируется рядом с recall-gap «Первок предок»):** строка-ОПЕНЕР абзаца «Основные правки … для справки предоставил …» ещё фаерит — редакторский регистр, не проза; неизбежная поверхность «для справки»-гейтящей сигнатуры (снять = потерять целевую gemini-утечку); precision-over-recall → редкий FP деградирует один чанк, не портит выход. **Санитайзер как блокер пере-прогона снят** (D33.6-предусловие №1 закрыто); остаётся сид v2-финализация (полигон) + единый resnapshot.
## D34. Сид v2 ПОДПИСАН владельцем + гейт repoint приёмочного конфига перед пере-прогоном (12.07, оркестратор). ✅
Полигон сдал сид v2 под подписью владельца (закрытие D32.2/D30.5). Сверено прямой проверкой файла (`guzhenren-seed-v2.yaml`): все спорные → approved с ФАКТИЧЕСКИМИ формами владельца (часть переопределена против sign-off-таблицы — решения владельца, в протокол):
1. **Владельческие формы (инвариант — в D-лог как факт):**
- 人祖 → **Жэнь Цзу** (НЕ «Первопредок»; транслит).
- 花酒行者 → **Монах Цветочного Вина** (НЕ «Странник Цветов и Вина»/«Винный Странник»).
- 本命蛊 → **гу Жизни** (возврат к v1; НЕ «жизненный гу»).
- 古月山寨 → **деревня Гуюэ** (+ выровнены 白家寨/熊家寨 → «деревня Бай/Сюн» ради консистентности 寨).
- 元石 → **первобытный камень** (+мн.ч.; НЕ «изначальный»/«первокамень»).
- Подтверждены без изменений: 蛊虫 гу-червь · 修炼/修行 культивация · 空窍 апертура · 元海 море истинной ци.
- Род свободного «гу» (蛊) → **мужской** (владелец принял; документарно — 蛊 инвариантен, НЕ на hot-path A3 → не hard-constraint, согласование мягкое).
Провенанс: `eval/exp13_seed_signoff.py` (воспроизводимый трансформ) + лог `diag/glossary_v2_signoff_applied.md`. 10 оставшихся draft — не-спорные v1-остатки (甲乙丙丁 разряд А–Г, 南疆 Наньцзян, 沈嬷嬷, пара гу-имён) — инъектятся ⟨проверить⟩ (soft), resnapshot не держат; смести отдельным проходом при желании владельца (не блокер).
2. **⚠ ГЕЙТ: приёмочный конфиг РАССИНХРОНЕН — repoint ОБЯЗАТЕЛЕН до пере-прогона** (поймал полигон, подтверждено прямой сверкой). `acceptance/book.yaml``glossary_seed: guzhenren-seed.yaml` (сид **V1**); `pipeline-acceptance.yaml``prompt_version: v0-draft/v1-monolingual` (**моно-редактор, БЕЗ reflow** — до-D30 состояние). Наивный `--resnapshot` на нём тихо заснапшотит СТАРЫЙ сломанный конфиг → весь пере-прогон впустую (класс «тихо неправильный снапшот», F1/D15). **Требование к пере-прогону (в ACCEPTANCE-промт, усилено):** первый шаг сессии — ПЕРЕСОБРАТЬ приёмочный конфиг из БОЕВОГО `pipeline-c1.yaml` @HEAD (post-D33: draft=deepseek-v4-flash `v1-reflow`, editor=glm-5 `v2-bilingual-reflow`, escalate_to=deepseek-v4-pro, sanitizer.enabled=true) + book-side дельты: `book.yaml glossary_seed → guzhenren-seed-v2.yaml`, `escalation.budget_usd>0` (D22.11). **Свежий store** (новая БД — избежать stale-чекпоинтов старого прогона; «единый resnapshot» = все правки в одном новом снапшоте, НЕ --resnapshot старого). Промпты/пороги НЕ трогать — брать из pipeline-c1.
3. **Fidelity re-gate (D30.1, закрытие вакуума D1.1) — НЕЗАВИСИМЫМ судьёй.** Пере-прогон переводит; **fidelity re-gate гонит ПОЛИГОН** (не сессия-переводчик — author≠reviewer): span-цитирующий судья верности reasoning-ON + охота на класс инверсий правки (exp12: билингв-редактор внёс «пожертвуй мной»). Без него пере-прогон НЕ засчитан.
4. **Гейт пере-прогона СНЯТ по всем блокерам:** санитайзер-фикс (D33.1) ✅, сид v2 подписан (D34.1) ✅, переводчик flash (D32) ✅, эскалация не тронута ✅. Осталось: repoint конфига (D34.2, делает сессия пере-прогона первым шагом) → пере-прогон 25 глав связкой с re-gate → **чтение владельца** (арбитр читаемости).
## D35. Пивот после пере-прогона: цикл прогонов закрыт (инфра ✅/читаемость ❌ = не провал), планка = 2 претензии владельца, «мерить→строить» (12.07, оркестратор). ✅
Владелец прочитал пере-прогон 25 глав связкой (flash `v1-reflow` → glm-5 `v2-bilingual-reflow` + сид v2 + reflow + санитайзер): **«лучше (из-за сида), но крайне слабо художественно»** — 2 претензии: (1) нет логической редактуры абзацев / конвенций русского; (2) места, где модель не понимает связей/смысла. Внешнее ревью (3 оси исполнением по копии re-run store + логам/выходам; одна ось упала на форматировании, факты закрыты соседними). **Конфиг-корректность подтверждена (снапшот несёт v1-reflow/v2-bilingual-reflow/сид-v2 — НЕ старая моно-мина D34.2 → вердикт валиден).** Решения:
1. **Диагноз ПОДТВЕРЖДЁН исполнением: «слабо» — настоящий недострой машинерии качества (Ф2) + near-term промпт/нарезка/глоссарий-рычаги, НЕ тихий баг.** Все баг-гипотезы опровергнуты: reflow ПРИМЕНЁН (блочные абзацы 1.6 предл./строка, не построчно этапа A — но ЗЕРКАЛИТ рубленость исходника, не сливает в русские абзацы = промпт-рычаг, фиксимо сейчас); билингв-редактор АКТИВЕН (draft→final sim 0.643, 34/55 сильно правлены — не пассивен как моно exp12); сид v2 инъектится (628 хитов; Монах Цветочного Вина/гу Жизни/первобытный камень в выходе). Различие полигона **внутри-чанк (промпт-фиксимо: чанк пакует ~34 абзаца) / кросс-чанк (~1.28 стыка/глава = Ф2)** — эмпирически верно. **Флор D24.3 валидирован в проде** (эхо-эскалация ch16/0 → pro@max_tokens=8000 → реальный результат 5966 симв., не пустышка/length — прод-подтверждение фикса пакета №5).
2. **РАТИФИЦИРОВАНО (а) закрытие цикла приёмочных прогонов** — инфра ✅ (деньги D15.3-направление, kill-9, echo-эскалация, санитайзер 2TP/0FP, spine 25/25) / читаемость ❌ (блок на непостроенной Ф2) = **НЕ провал** (инфра — переиспользуемая ценность); идентичный пере-прогон = 0 decision-relevant информации (потолок структурный, стохастичный ре-дро не двигает). **(б) планка приёмки впредь = 2 претензии владельца** — но **ЯВНО ИНТЕРИМ пре-скрин** («лучше фана», D30.7), НЕ вердикт пилота Ф2.5 (D25.2-гейт: диагностики не подменяют/не разбавляют пилот; ≥3 аннотатора + билингв-якорь по-прежнему гейтят настоящий вердикт). **(в) последовательность «ты→ресёрчер→полигон→бэкенд» (мерить→строить)** — Р2/эмпирика-первой; бэкенд строит только под доказанный полигоном ROI.
3. **Ключевой невыжатый рычаг подтверждён: ось «нарезка × промпт»** — (глава целиком | чанк) × (сильный дискурс-промпт | текущий) — exp04/12/13 её НЕ крутили (варьировали только МОДЕЛЬ в фикс-нарезке; reflow-промпт уже вшит). Дешёвая высокоценная проба. **Фронтир-арм (владелец согласовал трату)** — ДИАГНОСТИКА потолка (модели vs наша нарезка/промпт), D30.7-совместимо (не прод-обязательство).
4. **РЕАЛЬНЫЕ фиксы до качественной работы:** (а) **[major] экспорт-баг:** санитайзер-флагнутые чанки экспортятся ПУСТЫМИ (ch5/0, ch20/0 — ~44% зачина глав 5/20 молча выпали; текст правки цел, дефектен только ведущий `###`). Фикс: экспорт стрипает ведущий заголовок ИЛИ фолбэк на draft, НЕ дропает (бэкенд-fix-лист; связано с D29.1а export-нормализация). **Полигон ОБЯЗАН исключить/починить ch5/ch20 до слепых пакетов** (дыры спутают художественную оценку). (б) заголовок `###` рождается в ЧЕРНОВИКЕ deepseek (не glm-5 — атрибуция минор-бэклога исправлена) → фикс целить в translator.md/экспорт. (в) дешёвый глоссарий: засидить разряд 甲乙丙丁/资质 (raw-китайский в ch4/1 = видимый худ-дефект; часть претензии 2 глоссарий-адресуема, не Ф2). (г) **fidelity re-gate (D34.3) остаётся ЖЁСТКИМ гейтом** — не waived под «цикл закрыт»; квантифицирует претензию 2 + ловит инверсии активного редактора (ch11/0 аутлайер: редактор расширил 3009→4631 при draft finish=stop, sim 0.064 — вопрос верности).
5. **Промт ресёрчера — НЕЙТРАЛЬНЫЙ (анти-анкоринг D25.10):** ревью поймало, что §3 хендоффа встраивает наши выводы (лестница Ур.3 draft=чанк/edit=глава, рамка «без Ф2») при декларации анти-анкоринга — ровно D25.10-ловушка. Промт (`RESEARCHER_QUALITY_SESSION_PROMPT.md`) даёт только 2 претензии + сырьё/код, спрашивает ОТКРЫТО (на какой гранулярности/промпте работает дискурс-литперевод zh→ru, где потолок, что рекомендует фронтир/академия/MTL-прайор-арт для кросс-чанк переверстки + понимания связей); наши гипотезы (лестница, draft=чанк) — НЕ выдавать, ресёрчер фиксирует свою рамку ПЕРВЫМ.
6. **Промт полигона (после отчёта ресёрчера) — эмпирика:** ось нарезка×промпт (прямыми вызовами, чанк-арм воспроизводит прод-инъекцию как якорь), фронтир-арм (гарды: эхо-скрин/исключить grok на архаичной ch1 — D22.5; self-family exclusion для фронтир-мета-ревьюера; per-call кап + пре-регистрация — exp13 перерасход +10%), кривая размер-чанка↔качество↔биллинг↔ретраи, fidelity re-gate, слепые пакеты владельцу; методика-guard D32.4 (fidelity-first, leave-one-out, катастроф-скрин, per-call кап, независимость сигналов). Fidelity re-gate (`rerun/FIDELITY_REGATE_HANDOFF.md`) — независим от ресёрчера, полигон может гнать параллельно.
7. **Бэкенд (§5 хендоффа) — не сейчас, только под доказанный ROI.** Кандидаты: развязка `draft=чанк/edit=глава` (Ур.3 — **runner-уровень**: per-stage гранулярность + TM/resume-ключ, Р2/Р6), сильный дискурс-промпт, адаптив-к-главе размер, затем Ф2 (аннотатор/судья/reference-тома). Минор-бэклог: экспорт-`###`-нормализация (D29.1а), 修炼/修行→«культивация» (владелец подписал D34.1 — намеренно).
## Сопутствующие правки доков (оркестратор, 09.07)
`02-mvp-plan.md` → v3 (мёртвые пороги/интерим-18+/фазовые списки синхронизированы с D-логом); обе `*.puml` → v3 (убраны Opus/BYOK/«≤2×», дорисованы ре-гейт эскалации, три класса отказов D12, человек в петле, фазовые пометки); superseded-баннеры на `research/01, 02, 03, 04, 09`; провенанс-шапки на `research/12-architecture-as-antipattern.md` и `12-common-failures.md` (происхождение не зафиксировано — до уточнения владельцем числа оттуда не абсорбировать как факты); закрытые промты → `docs/archive/prompts/`; онбординг: корневой `CLAUDE.md` + `backend/README.md` + `eval/README.md`.
## D36. Приёмка research/18 (два независимых отчёта рычагов качества) + выдача промта полигон-эмпирики (12.07, оркестратор №4). ✅
Оба отчёта (`research/18-quality-levers.md` — сессия-ресёрчер Claude, анти-анкоринг; `research/18-quality-levers-chatgpt.md` — параллельный ChatGPT, запущен владельцем) отревьюированы и залендены с ревью-шапками. Внешнее ревью — мультиагентный воркфлоу 26 агентов ($0, refute-by-default, author≠reviewer; первоисточники через web + реплика сырья `rerun/records.json`+`rerun-ru.txt`; заморозка §A сверена крипто).
1. **ВЕРИФИКАЦИЯ (исполнением/первоисточники):** (а) **§A-заморозка Claude sha256 `44f90364…` воспроизведена побайтно из закоммиченных байтов BEGIN..END → MATCH** → §A доказуемо не редактировалась после заморозки (мой самый сильный анти-ретро-подгон контроль). (б) **57/57 несущих цитат СУЩЕСТВУЮТ — 0 сфабрикованных**, включая ВСЕ «2026»-препринты (2601.08070/2605.31056/2605.29800/2605.13596/2605.13368/2511.09796 — резолвятся к заявленным заголовкам; главный риск галлюцинации фан-аута снят). 50/57 claim-fidelity полная, 7 «частично» (источник реален, атрибуция переисчерпана). (в) **Эмпирика воспроизведена:** ch5.0 (5425→ПУСТ `sanitizer_defect`)+ch20.0 ТОЧНО; CJK-утечка 13 финалов точно (draft-«21» включает U+3000-отступ → настоящих 9); 41/51 ~1:1 в допуске; ChatGPT-«95.3% строк-абзацев» точно (но частично артефакт формата — метрика Claude «медиана 1 предл./абзац» проб́ивнее); gl.7-инверсия/gl.8-сплющивание фактически ЕСТЬ (тяжесть — на fidelity re-gate). (г) **Ван Цуй (несущий вклад) ПОДТВЕРЖДЁН по ТЕЛУ статьи** (скептик-агент декодировал CID/Identity-H шрифт PDF ~42к симв.: 5 техник + причастные/деепричастные обороты + подчинение + прескриптивная необходимость; Вестник МГУ Сер.22 2024№3 с.86105, рецензирован).
2. **ВЕРДИКТЫ. Claude — ACCEPT_WITH_FIXES** (5 поправок в ревью-шапке, §A заморожена → правки в шапке+§E: [цитата] DocRepair-числа принадлежат D19-1081/1909.01383 не P19-1116 — числа ВСЕ верны; TransAgents двойная-метка PP/TACL; Z5 автор Dingxu Shi не Li&Thompson; [рамка] Ван Цуй = прескрипция ТЕХНИКИ zh→ru, не «связующая норма языка» — норму держат Розенталь/Правила-1956; «пост-черновая регрессия > 2 претензий» пере-возвышена — ярчайший кейс ch5-void = экспорт-баг, не порча смысла). **ChatGPT — ACCEPT** (цитатно-чист на всех спот-чеках, хеджирование дисциплинировано, §C — самый прямо-исполнимый скелет полигона; оговорки: §A-заморозка НЕ воспроизводима из документа (плейсхолдер вместо байт-маркеров) = дисконт на вес сходимости; §C4-гейт не ссылается на мандатный re-gate D34.3).
3. **«Тройная сходимость» — калибрована (не разворот, D25.10 взята честно).** Оговорка про общую внешне-лит-ногу присутствует; уточнения оркестратора: (а) вторая необъявленная общая нога — оба §A читали одно сырьё/код (совпадение по «изоляция чанков/инертный reflow» тоже не независимо); (б) цитатные базы двух отчётов почти НЕ пересекаются (~3 общие статьи) → где литература расходится, совпадение вывода сильнее; (в) ChatGPT-заморозку класть с дисконтом. Итог: карта «строить» держится, но не как «3 независимых голоса» — как «2 внешние карты (с общими ногами) ⟂ эмпирика команды».
4. **АБСОРБЦИЯ.** (а) **Ван Цуй-контент (5 техник + причастно-деепричастный инструмент) → в дискурс-reflow-промпт полигона** — прямой zh→ru ответ на вопрос владельца «конвенция языка, не стиль автора» (апгрейд research/16 «слияние дискреционно» → «слияние — требуемая переводческая операция, и КАК»). (б) **Экспорт-баг ch5/ch20 подтверждён двумя независимыми репликами** → усиливает бэкенд-fix D35.4a (не новый). (в) **CJK-утечка в ФИНАЛ (13 строк, вкл. 特产 ch8, 资质乙等-разряды ch4.1)** — часть внесена редактурой → цель детерм. reflow-постпроцессора (§C#4 «CJK-глиф=0») + глоссарий-засид 甲乙丙丁 (D35.4в). (г) слой «пакет конвенций пары» — идея в бэклог архитектуры (зона оркестратора/бэкенда), стройка под ROI.
5. **ВЫДАН промт полигон-эмпирики `POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md`** (D36; ратифицирует §C обоих отчётов в исполнимый дизайн): скелет §C ChatGPT (P0-baseline → армы с фаза-тегами → пре-рег метрики/гейты → дерево решений) + графт из Claude (Ван Цуй-контент reflow-промпта, COGS-модель кириллица-фертильность/cache-ordering, привязка мандатного re-gate D34.3); **добавлены** недостающая ячейка `текущий-промпт × глава` (полный 2×2 нарезка×промпт — оба отчёта её не крутили) и явный чистый baseline; **ch5/ch20 исключены/чинятся до слепых пакетов** (дыры спутают худ-оценку). Гарды: fidelity-first, leave-one-out, катастроф-скрин, per-call кап (exp13 +10%), эхо-скрин/grok-off на архаичной ch1 (D22.5), self-family exclusion фронтир-мета-ревьюера, пре-регистрация до платных вызовов. Fidelity re-gate (D34.3) — параллельно, независимо.
6. **Курс не разворачивается.** research/18 — вход эмпирики, НЕ приговор; планка = 2 претензии владельца (ИНТЕРИМ пре-скрин, D35); пилот Ф2.5 остаётся решающей точкой и не разбавляется. Порядок: полигон-эмпирика → владелец читает результат → решение «дешёвый трек дотягивает / нужен фронтир / нужна Ф2» → бэкенд под доказанный ROI.
## D36.1 — Документационная гигиена + подтверждённые бюджеты ключей (12.07, оркестратор №4, по запросу владельца). ✅
1. **Заархивированы 5 спент/superseded промтов** в `docs/archive/prompts/` (git mv, история журнала/D-лога НЕ переписана — D23.3, только карта актуальности): ресёрчер research/18 (→D36), exp13 (→D32), санитайзер-фикс (→D33.1), **приёмка v2-пере-прогон** (цикл прогонов ЗАКРЫТ D35 — идентичный ре-прогон = 0 инфо), **D152-этап-А** (→D33; этап Б/В — СВЕЖИЙ промт после качественной развязки, дизайн-оф-рекорд = спека D15.2 v3.1). **НЕ архивирован `POLYGON_PACKAGE4_SESSION_PROMPT.md`** (проверка по запросу владельца): как сессия НЕ запускался; отработана только task-1 сид-мн.ч. (влита в exp13/D32); **residual ЖИВ и НЕ пуст — пилот/18+/echo-трек, ОРТОГОНАЛЬНО exp14:** D22.6 судья-дублёр (НАЗВАННЫЙ блокер пилота), D25.7 echo-калибровка, миграция `memory_eval` с gemini-2.5-flash (EOL 16.10), пилот-пре-рег (`09-pilot-protocol.md`), D21.9 P4 fidelity-хвост, D22.8-минорки. Оставлен активным как residual-трекер со статус-баннером; НЕ вносить в exp14 (разбавит SFW-пре-рег); переупакуется в пилот-преп-промт при активации пилота. **Активны:** `ORCHESTRATOR_*` + `POLYGON_QUALITY_EMPIRICS_*` (exp14) + `POLYGON_PACKAGE4_*` (пилот-residual, отложен). README-карта актуализирована; титул контракта D35→D36.
2. **Бюджеты ключей подтверждены владельцем (12.07):** OpenAI ~$9, Gemini ~€2.6, DeepSeek/ZAI(glm)/Kimi/xAI(grok)/Mistral ~$9 каждый; ДРУГИХ ключей нет; «полигон делает что нужно в этих рамках» → снимает блокер фронтир-`ceiling` из D36. **Импликация exp14:** Gemini-бюджет крошечный (€2.6, thinking = аддитив-биллинг) → фронтир-переводчик/редактор преим. **GPT-5** ($9); Gemini — экономно, лучше кросс-семейным мета-ревьюером (self-family exclusion); grok ($9) доступен, НЕ на архаичной ch1 (D22.5); Claude/Opus нет. Per-call predicted-cost кап + пре-рег остаются (exp13 +10% урок). Записано в промт полигона.
## D37. Приёмка exp14 (эмпирика рычагов качества: нарезка×промпт + фронтир 2×2 + fidelity re-gate + кривая) + слепое чтение владельца + схема разрядов (12.07, оркестратор №4). ✅
Полигон прогнал exp14 (P0/P1a/P1b/P1c + аблации layout/2pass/ref + фронтир 3-семейный F=gpt-5.4/G=gemini/X=grok × base/disc + кривая нарезки + fidelity re-gate + слепые финалисты). Владелец прочёл монитор (3 главы, слепо) + 2 внешние сессии (ChatGPT+Claude). Независимая верификация — 7-агентный воркфлоу (span-уровень, refute-by-default, реплика сырья, $0). **Отчёт был закоммичен инкрементально сессией (6 коммитов) — отклонение от «лендит оркестратор»; принято как есть (историю не переписываю), верификация пост-хок.**
1. **ВЕРДИКТ ACCEPT_WITH_FIXES (ИНТЕРИМ пре-скрин, НЕ пилот).** Лучший по дисциплине прогон: сам поправил переобобщение партии 1 (floor→model-specific), демотировал своего фаворита A-2pass на верифицированной катастрофе, отказался менять дефолт.
2. **РАТИФИЦИРОВАНО (несущее, верифицировано span-уровнем):** (а) **Претензия 1 (абзацы/конвенции РЯ) = рычаг ПРОМПТА/активации, НЕ модель** — F-base (gpt-5.4+текущий промпт) рубит ХУЖЕ P0 (пересчёт 1.75<1.95 spp); дискурс-промпт реверстает у всех семей; «сильнее модель» абзацы НЕ чинит. Ход: дешёвый дискурс-reflow-промпт (Ван Цуй, ОДИНАРНЫЙ пасс) + крупная edit-единица (кривая: крупнее чанк = дешевле И лучше абзацы, но на 2 главах/0 ретраев направленно). (б) **A-2pass НЕ рекомендован** (2-й пасс дрейфует span: 人上之人→«среди людей», одинарный P0 починил). (в) **Дрейф разрядов 甲乙丙 = реальный читательский дефект** (span ch9.1/ch18.1/ch16.0 + 2 внешние + владелец) **владелец зафиксировал схему: кириллица «класс А/Б/В/Г», развести с 转→«ранг», принудительная сверка** (D35. апгрейд в приоритет; курация сида полигон/бэкенд-глоссарий). (г) **Класс инверсий редактуры D34.3 РЕАЛЕН** ~56 верифицированных редактор-порч смысла (ch10.1 числа 10×; ch9.1/ch15.1 ранг; ch13.1 эмоция; ch16.0 иерархия+CJK-утечка; ch18.1 грейд) reflow-армам нужен omission/inversion-гард; пере-прогон засчитан НЕ полностью.
3. **ПОПРАВЛЕНО верификацией (НЕ абсорбировать как есть):** (а) **«13 катастроф» ЗАВЫШЕНО** 10/13 от kimi (ошибся 29/55 + оверфлаг); ~7 флагов = judge-FP/минор, вкл. **ch11.0 (аутлайер D34.3-хендоффа) — редактор его УЛУЧШИЛ** (полнее + починил инверсию черновика 瞳孔猛缩). Реальный хвост 56. (б) **§.3 «панель литерал-смещена P0 не вернее» = ПЕРЕ-НАТЯЖКА**: панель единогласно ставит P0 вернее на ch17/18/19; T1-катастрофа (ch7) ВНЕ ранг-выборки (категориальная ошибка); IN-SAMPLE спан ch17.0 ВЫГОРАЖИВАЕТ P0. На типовых главах верность дешёвой в порядке (= чтение владельца); превосходство F-disc по верности внутренне НЕ доказано. Не дисконтировать свою панель ради фронтира (мемо #2/#4). (в) **«0 ошибок» неточно** 36 вызовов ошиблись+билленулись ($0.89/~10%); капы соблюдены, деньги $8.67 (в 2%).
4. **ХОЛД — нога 2 (селективная эскалация смысл-риска на gpt-5.4) НЕДО-МОЩНА.** Факт (glm/grok/gemini инвертируют двойное отрицание T1, только gpt-5.4 чинит) ВЕРИФИЦИРОВАН, НО на 1 конструкции + одно-судейно на фронтире (gpt-5-mini self-excluded). Дорогое COGS-routing НЕ ратифицировать до батареи смысл-трапов. **Ответ «модели vs организация» расщепляется:** претензия-1 = организация (дёшево, ратифицировано); претензия-2 = типовые главы дешёвая тянет, но хвост жёстких смысл-трапов (двойн.отриц./числа/ранг) валит дешёвую И grok/gemini только gpt-5.4 мерить, потом коммитить.
5. **СЛЕДУЮЩИЙ ПОЛИГОН-ШАГ (свежий промт, exp14b):** батарея смысл-трапов (≥35 типов инверсий/чисел/ранга/кросс-граница, 2 кросс-семейных фронтир-судьи) для ноги-2 + **ранжирование P1a (рекомендованный near-term конфиг) head-to-head против F-disc** (финалисты его исключили прямых данных P1a-vs-фронтир НЕТ) + omission-гард. Дешёвые фиксы (промпт-глоссарий/санитайзер) параллельно.
6. **ПРОЦЕСС:** сессии фризят ТОЛЬКО пре-рег, батчи оркестратору на лендинг (exp14 закоммитил 6 батчей сам впредь тайтить). Курс не разворачивается; планка = 2 претензии ИНТЕРИМ; пилот Ф2.5 не разбавляется.
## D38. Приёмка exp14b (батарея смысл-трапов = нога-2 + ранг P1a↔F-disc): «только gpt-5.4» ОПРОВЕРГНУТО, фронтир в дефолт не нужен, корень терм-дрейфа = статус-draft сида (12.07, оркестратор №4). ✅
exp14b (D37-мандат) прогнал батарею DET-смысл-трапов (5 классов a/b/c/d) × 6 семей-редакторов (glm-5/gpt-5.4/grok-4.3/deepseek-pro/mistral/kimi, промпт-константа = дискурс) + SOFT (чэнъюй/кореф, 2 кросс-семейных судьи) + P1aF-disc. Сессия **НЕ коммитила батчи** (процесс-фикс D37 отработал; §1-пре-рег заморожен 48e3f39, §2 залендён мной). Независимая верификация 3 параллельных агента span-читкой сырья ($0). **Мандат самопроверки (CLAUDE.md 12.07) отработал: self-review сессии сам поймал+починил 2 бага до вывода.**
1. **ВЕРДИКТ ACCEPT_WITH_FIXES (ИНТЕРИМ пре-скрин).** Лучший по дисциплине прогон (self-review, 2 судьи, ручной DET span-read вместо брикнутого авто-скорера, честные 13 ошибок, 6 семей, дефолт не менял).
2. **РАТИФИЦИРОВАНО (span-верифицировано):** (а) **Нога-2 exp14 «только gpt-5.4 чинит смысл» ОПРОВЕРГНУТА** на крит-трапе a1 (двойн.отриц `没有一个不知道`) **deepseek-pro И mistral чинят** то, что glm-5 И grok ИНВЕРТИРУЮТ (в «ни один»); gpt-5.4 тоже чинит, но он «самый ровный», НЕ «единственный». **Дешёвый mistral ($0.5/$1.5) чинит то, что текущий дефолт glm-5 ($1/$3.2) инвертирует — и дешевле.** exp14-экстраполяция (n=1 фронтир, 1 судья) была артефактом. (б) **Провалы РАЗБРОСАНЫ по модель×конструкция** (a1: glm+grok; c1 人上之人: grok+deepseek; c3: glm+mistral) нет модели безупречной/безнадёжной, нет одной эскалации на всё **смысл-floor УЗКИЙ и РАЗБРОСАН**, не широкий. (в) **Фронтир (gpt-5.4) в дефолт НЕ нужен:** абзацы P1a(glm-дискурс) F-disc(gpt-5.4) по mean_spp (тай 2.56/2.65); смысл дешёвые mistral/deepseek-pro чинят крит-трапы. Дорогая gpt-5.4-эскалация пере-взвешена ВНИЗ. (г) **Soft: 0 катастроф ≥2-глазами** (все CAT-флаги одно-судейны, mistral-судья оверфлагает); чэнъюй-сплющивание (物是人非) универсально рычаг промпта/глоссария, не модель.
3. **КОРЕНЬ ТЕРМ-ДРЕЙФА НАЙДЕН (глоссарий-статус, НЕ непонимание модели) — верифицирован по коду:** важные термы в сиде `status:draft` `renderEditorConstraintBlock` (`memory.go:489`, CONFIRMED-only) их НЕ инъектит в editor-констрейнт; хуже `suppressContained` (longest-match A3) СЪЕДАЕТ верный approved `族长→«глава клана»` (вложен в draft-длинный `四代族长`), оставляя только approved-соседа `家老→«старейшина»` глоссарий-обедиентные glm/mistral подтянули «старейшину». **Draft-запись АКТИВНО ВРЕДНА.** **Фикс (владелец направил):** promote грейды `甲乙丙丁`(→dst «класс А/Б/В/Г», D37)+`四代族长` **draft→approved** (enforce) + reseed; owner-only (approved-инвариант). Это дешёвый ДЕТЕРМИНИРОВАННЫЙ фикс, не модель-проблема.
4. **ПОПРАВКИ верификации (в ревью-шапке):** `share_1sent`(0.381/0.427) НЕ воспроизводится (тай держится на mean_spp; направление флипает) сабметрику не абсорбировать как напечатана; «все CAT-флаги от mistral» 1 из 8 от gpt-5-mini (суть цела); c1-mistral = ✓«над толпой» (отчёт дал «?»→M имеет 0 способностных провалов). Деньги $1.36/13 ошибок точно.
5. **ХОЛД — кандидат СМЕНЫ дешёвого редактора glm-5 → deepseek-pro ИЛИ mistral** (оба дешевле glm И чинят a1, что glm валит). НЕ ратифицировать до **бейк-оффа их ПРОЗЫ + omission-гарда** (exp14b мерил верность, не стиль/полноту полностью урок exp13: не менять на частичном сигнале). Следующий полигон-шаг.
6. **Провайдер-квирк вынесен:** **gpt-5.4 `reasoning_effort:"medium"` обрезает длинный вывод** (223 out-ток вместо ~5000, finish=stop тихо) в роли редактора слать `low` (`00-provider-quirks.md`, верифицировано). kimi НЕПРИГОДЕН как редактор (8/10 обрезки/таймауты). **Ретро-аудит exp14:** «36 ошибок» = судейский слой (kimi-флейкость), скрытых обрезок арм-моделей (gpt/grok/glm/deepseek) НЕТ уточняет D37.
7. **Стратегически:** «потолок в моделях vs организации» **эмпирика сошлась на ОРГАНИЗАЦИИ**: обе претензии дешёвый трек закрывает (абзацы дискурс-промпт на glm=P1a; смысл лучший дешёвый редактор + глоссарий-статус-фикс). **Фронтир НЕ нужен.** D30.7-трек «дешёвые модели сейчас» подтверждён эмпирикой. Планка = 2 претензии ИНТЕРИМ; пилот Ф2.5 (BWS 3 аннотатора) остаётся решающей точкой, не разбавляется. Порядок: бейк-офф редактора (проза/omission) + reseed-глоссарий бэкенд под доказанный конфиг (дискурс-промпт, дешёвый редактор-кандидат, промоут-статусы, число/omission-гард, число/CJK-санитайзер).
## D38.1 — Слепой h2h P1a↔F-disc залендён + разворот к ИНФРА-паку (следующий шаг = «строить», не «мерить») (12.07, оркестратор №4). ✅
Владелец прогнал слепой h2h-пакет (`exp14b/monitor/h2h.md`, P1a=glm-дискурс F-disc=gpt-5.4, метки перемешаны) через 2 внешние сессии.
- **ChatGPTClaude РАСХОДЯТСЯ на заголовке (НЕ подгоняю сходимость):** ChatGPT фронтир заметно сильнее (победил все 3 главы; дешёвый провалил QA в 1718; потолок дешёвого в гл.19 ~8590%). Claude near-parity (у фронтира СВОИ дефекты: битая фраза 333, скачущие грейды; разрыв инфра, не способность). **СОГЛАСИЕ:** дефекты ИНФРА (глоссарий-согласованность + output-санитайзер), не понимание; **ни одна версия НЕ publishable без человека/редактора** фронтир «издательский» тоже не покупает (это даёт пилот).
- **Оркестратор span-проверил 3 дешёвых дефекта:** `却有` (CJK) в русском предложении (arms/C/17.0 санитайзер СЕЙЧАС не ловит Han-класс); `丙→«разряда Б»` (=статус-draft корень D38); «не брал» vs «не бил» (`没打过` точечная осечка, НЕ детерм.-ловима, есть и у фронтира). 2 из 3 = дешёвая инфра; 3-й точечный, общий для обеих моделей.
- **РАЗВОРОТ (уточняет D38 §5):** «ещё один editor-бейк-офф» даёт мало редакторов сравнивали 4× (exp04/12/14/14b: верность, проза, пассивность покрыты). **Следующий шаг = «строить» ИНФРА-пак под доказанный ROI, НЕ «мерить»:** бэкенд (san-класс CJK-в-выходе + экспорт-фикс флагнутого-в-пусто D35.4a + число/omission-гард) reseed-глоссарий (промоут грейды А/Б/В/Г + 四代族长 approved). **Смена редактора glm→mistral/deepseek-pro — НЕ отдельный эксп, а почти-бесплатный АРМ в пере-прогоне** (exp14b за них по смыслу; если проза не хуже бесплатный апгрейд). Промт выдан: `BACKEND_INFRA_PACK_SESSION_PROMPT.md`. Единый resnapshot (san+промпт+сид, D30.9) пере-прогон 310 глав чтение владельца. (Опц., для будущего дефолт-редактора: формальный подсчёт дефектов по рубрике решит «near-parity vs фронтир-лучше» инфра-пак не блокирует.)
## D38.2 — Консолидация репозитория и актуализация документации (док-гигиена, owner-directed) (12.07, оркестратор №5). ✅
Владелец: «апдейтнуть все доки + подрефакторить полигон-репозиторий чтоб синхронно жило; архивирование; удалять ничего не стоит; ссылки аккуратно проверить; бэкенд-сессию не нарушить». Исполнено оркестратором после read-only карты (5 агентов: число-лаг / целостность ссылок [1799 проверено] / .puml-дельта / граф цитирований eval / точность индекса полигона).
- **eval-код логическая группировка по папкам (НЕ «архив»: код-репо, поправка владельца mid-flight):** спент-семьи `eval/exp12|13|14|14b/` (30 скриптов). **Живой сид (`exp13_seed_v2`/`_signoff`) и оракулы (`refusal_bench` и пр.) ОСТАВЛЕНЫ в `eval/`** контракт (D-лог:400/437, D30.5) НЕ трогали. Импорты сохранены: 7 `refusal_bench`-импортёров дотянуты шимом `.parent.parent`; `exp14b``exp14_common`/`prompts` через `../exp14`. **Верифицировано `py_compile`(30/30) + `find_spec`(вся цепочка).** Path-цитаты (`experiments/12/13/14`, `eval/README §Карта`) починены.
- **Док-актуализация до головы D38.1:** статус-абзацы `CLAUDE.md`/`docs/README.md`/`PROGRESS` (были заморожены на D35 «research/18 UNCOMMITTED», эмпирика как «будущее»); число-лаг диапазонов «D1D35/D31»→«D1D38»; карта актуальности +D38.1/D38.2.
- **`.puml` синхронизированы D17D38.1** (targeted-patch, скелет цел): флагман моноБИЛИНГВ-редактор (D30.1); +узлы output-санитайзер (D30.3/D33) и диагностик-харнесс; канал-B v2, сид v2, роли провайдеров (glm=дефолт-редактор, grok/mistral/gemini переформулированы), ряд [Ф1*]→[OK]. Синтаксис активити выверен (внутренние `;` `·`, иначе рвут рендер).
- **Ссылки:** живой битый ref `research/17` архивный путь acceptance-промта; над-атрибуция индекса (exp04 «D30.1/D32/D38»→D30.1; exp12 «D30/D35»→D30 обе флагнуты владельцем/картой). **Историч. цитаты D-лога:87/91 (runner.go, D12 04.07) и link-rot frozen-архива НЕ переписаны** дисциплина D23.3 + прецедент D-лог:288 (историч. журнал не рерайтится; чинятся только ЖИВЫЕ доки).
- **Гигиена + мультисессия:** спент-промт `POLYGON_CLEANUP` заархивирован с баннером-исходом. **Бэкенд-сессия (infra-pack, 19 WIP-файлов) НЕ тронута** стейджинг строго пофайловый, коммиты path-scoped. **Контракт-РЕШЕНИЯ не менялись** чистая гигиена (код-структура + доки + ссылки), не пересмотр курса.
## D38.3 — Приёмка/лендинг инфра-пака читаемости (бэкенд, deliverable D38.1) + верификация ИСПОЛНЕНИЕМ (12.07, оркестратор №5). ✅
Бэкенд-сессия исполнила `BACKEND_INFRA_PACK` (4 задачи, зона `backend/` only, не коммитила лендит оркестратор). Оркестратор верифицировал ИСПОЛНЕНИЕМ (второй рубеж, не замена самопроверки бэкенда): `go build`/`go vet`/`go test -race ./...` зелёные; **3 span-дефекта отчёта запинены РЕАЛЬНЫМИ тестами** (не «0 ошибок» на веру): `却有`fire+strip+export (`TestSanitizerCJKLeak`/`TestStripCosmetic`/golden ch8); `### Глава`strip+export (golden ch7); `44`→«четыре десятых» number-drift fire (`TestRegressionGuardNumberDrift`).
1. **ВЕРДИКТ ACCEPT (код верифицирован исполнением; 3 дизайн-вопроса — владельцу).** Залендено `d5beefc` (19 файлов, path-scoped).
2. **Сделано (span-дефекты закрыты):** (а) **Экспорт флагнутого чанка (D35.4a):** дисп-по-классу КОСМЕТИКА (`### Глава`, CJK-утечка) `FlagSanitizerStripped`: `stripCosmetic` чистит, очищенный остаток = $0 derived-чекпоинт, штатный экспорт (`final_hash`) отдаёт текст (ch5/ch20 не пустые), чанк остаётся flagged; СУБСТАНЦИЯ skip+пусто; смешанный субстанция(drop). Resume-детерминизм (golden fresh==resume, $0). (б) **Класс `cjk_leak`:** `\p{Han}`+кана+полноширина+CJK-пункт (U+3000 исключён индент); content-bearing полноширина ФОЛДИТСЯ (``123, число цело), удалённый ранпробел (нет склейки). (в) **Число/omission-гард (opt-in `Gates.RegressionGuard`, НАБЛЮДАЕМОСТЬ не drop):** коллапс длины >40% (флор 200) + дрейф ≥2-значных чисел (ститчинг «10 000», одиночные искл.); не фолдится в снапшот (тумблер без resnapshot). (г) **Reseed-enforce верифицирован (не код):** `renderEditorConstraintBlock` (`memory.go:485`, CONFIRMED-only) + longest-match готовы enforce-ить промоут; сид не трогал.
3. **Самопроверка бэкенда (мандат отработал живьём):** 19-агентный адверсариал → 4 CONFIRMED+1 UNCERTAIN, все починены ДО отчёта: [MAJOR] полноширина удалялась как косметика (потеря числа)→фолд; [MINOR] tidy ел пробел «2 : 1»→убрал `:`; [MINOR] эскалация-фолбэк терял восстановимый перевод→stripped-фолбэк авторитетен-флагнут; [NIT] resume finish=""; [UNCERTAIN] Han-глосс оставлял «()»→чистка. Честная осечка: один `git checkout <file>` стёр незакоммиченную работу (нарушил гардрейл)→реконструировал, дальше только Edit.
4. **3 ДИЗАЙН-ВОПРОСА — владельцу (НЕ блокируют лендинг; пак opt-in/precision>recall):** (а) **Порог число-гарда** 40%/200/≥2-знака — принят revisable-дефолтом наблюдаемости. (б) **Легит CJK-глоссы:** класс стрипает намеренный source-глосс в скобках (`Кулак Ло Хань (羅漢拳)`→глосс теряется, precision>recall: strip+флаг, не drop). ВОПРОС: нужны ли издательские глоссы source-термов? да→сузить класс. (в) **Тяжёлая-но-под-эхо CJK-утечка** (~10% Han <15%) сейчас косметически стрипается (экспортит рвань-флагнут); альтернатива magnitude-кап (>X%→drop) НЕ реализована — нужен ли кап, за владельцем.
5. **Рычаг №1 (дискурс-промпт P1a→боевой editor) НЕ в этом паке** (промпт-зона) — единый resnapshot = **код(✅)+промпт(pending)+reseed(pending)**, координирует оркестратор (D30.9). Golden осознанно re-captured (маскир. дифф = ровно санкц. классы; ch16 без дрейфа).
## D38.4 — Аудит полноты exp14/14b (владелец: «не забыли ли полезные выводы?») → 4 незакрытых пункта + правки near-term-конфига (12.07, оркестратор №5). ✅
По запросу владельца — ledger ВСЕХ ратифицированных выводов exp14/14b → диспозиция (субагент + спот-верификация ИСПОЛНЕНИЕМ по коду/промптам/exp-докам, file:line). Большинство пристроено (D38.3 код / дискурс-промпт / reseed / re-run-армы / провайдер-квирки / refutation). **НЕ-отслежены 4 (+1 минор):**
1. **⚠ Чэнъюй-сплющивание — ЗАБЫТ near-term (главная находка; подозрение владельца подтверждено).** D38 §2г: `物是人非`→«всё изменилось» УНИВЕРСАЛЬНО у всех моделей = рычаг ПРОМПТА/глоссария. Отсутствовал в P1a-атом-листе (`eval/exp14/exp14_prompts.py:36` — участники/действия/числа/полярность/заголовки, идиом НЕТ), в `editor.md:5` (там ПРОТИВОПОЛОЖНОЕ — де-буквализация калек), в reseed. Долгосрочный дом ЕСТЬ (Ф2 Annotator чэнъюй-маски — `04-unhappy §124/§62`) — пробел в NEAR-TERM дешёвом рычаге. **Фикс:** атом «идиомы/чэнъюй — оба компонента» дописан в дискурс-промпт (окно открыто, in-flight); пере-прогон измерит (`物是人非` = вход fidelity re-gate). Глоссарий-сидинг чэнъюй НЕ делаем (dst контекст-зависим — риск over-constrain).
2. **⚠ Inversion-гард из D37 §2г НЕ построен — разрыв не был зафиксирован.** D38.3 = число/omission (длина/числа); инверсии полярности/ранга/эмоции by-design НЕ ловит (та же длина/числа). Полярные инверсии (a1 `没有一个不知道`) glm инвертирует НЕЗАВИСИМО от промпта (PROGRESS:66); детерминированного прод-бэкстопа НЕТ. **Диспозиция (фиксирую ЯВНО):** инверсии закрываются (а) fidelity re-gate = СКОРИНГ пере-прогона (не прод-гейт), (б) ВЫБОРОМ editor-модели. **Следствие:** editor-swap glm→mistral/deepseek-pro — НЕ «опция полировки», а ЕДИНСТВЕННАЯ near-term защита от полярных инверсий (glm демонстрируемо валит a1) → приоритет бейк-оффа свапа ПОДНЯТ, свап = сильный кандидат в ДЕФОЛТ.
3. **b1 word↔word число-дрейф покрыт ЧАСТИЧНО.** Гард ловит дрейф, только если черновик арабскими цифрами (`regressionguard.go:24-27` честно фиксирует дыру); точный glm-кейс (слова↔слова `四成四`→«четыре десятых») слеп. НЕ считать b1 «закрытым» — остаётся Ф2 / канон-глоссарий разрядов.
4. **Крупная edit-единица (нарезка / «умное чанкование») — явный re-run-АРМ.** Направленно (D37 §2а, оптимум ~3200c/глава, 2 главы/0 ретраев). Был только в оговорке дискурс-промпта. **Фиксирую как backlog-арм пере-прогона:** тест текущий-чанк vs крупная edit-единица на дискурс-промпте (почти бесплатно в пере-прогоне; подтверждает/опровергает направленный сигнал — прод-изменение нарезки НЕ строить до подтверждения).
5. **(минор) Число/omission-гард opt-in (off по умолчанию).** Оркестратор при сборке единого resnapshot ОБЯЗАН включить `Gates.RegressionGuard.Enabled`, иначе построенная наблюдаемость на пере-прогоне не сработает.
**Итог:** курс НЕ меняется; near-term конфиг пере-прогона УТОЧНЁН — P1a + чэнъюй-атом, editor-swap ПРИОРИТЕТ (защита от инверсий), нарезка-арм, гард-тумблер вкл. при resnapshot. Долгосрочно чэнъюй/инверсии → Ф2 (Annotator-маски / judge-C2). Все дисп-факты спот-верифицированы по коду/промптам.
## D38.5 — Компоненты единого resnapshot залендены (reseed-сид + дискурс-editor P1a+чэнъюй+few_shot-тумблер), верифицированы ИСПОЛНЕНИЕМ (12.07, оркестратор №5). ✅
Два параллельных deliverable (промпты выданы 12.07) исполнены сессиями, верифицированы оркестратором исполнением (второй рубеж), залендены:
1. **Reseed (полигон) — `eb409f2`:** трансформ `eval/exp14b/exp14b_reseed_promote.py` промоутит РОВНО 5 направленных термов (грейды `甲乙丙丁` dst «разряд»→«класс А/Б/В/Г» + draft→approved; `四代族长`→approved), остальные draft (`南疆/沈嬷嬷`/гу-имена) не тронуты (approved-инвариант). Идемпотентен, байт-стабилен (D30.5); стейл-хвост грейд-заметок вычищен детерминированно. Enforce-проба: `四代族长` (approved-длинный) выигрывает longest-match над `族长`, `家老`=«старейшина» легитимно цел. Сид на диске (ВНЕ git).
2. **Дискурс-editor (бэкенд) — `0ac5f7a`:** P1a-дискурс-reflow (Ван Цуй, репараграфизация 1:N, single-pass) в боевой `editor.md` = **APPEND к baseline** (=победитель exp14, SHA `b3b4f604`; clean-replace не делали — непротестированный новый промпт). + **чэнъюй-атом D38.4** (`物是人非` оба компонента; полный SHA сдвинулся РОВНО на эту строку `b3b4f604``95b1085`). + **few_shot-тумблер** (`---FEWSHOT---` + per-stage `Stage.FewShot *bool`, absent=ON): ON=ядро+примеры, OFF=ядро без примеров (deepseek-pro swap-арм — thinking, few-shot мешает CoT, exp14 §2а). Детерминизм тройной (флип=громкий resnapshot); golden байт-идентичен (стаб без FEWSHOT). Верификация: `go build/vet/gofmt/test -race ./...` зелёные; тесты snapshot-fold/wire-core-only/absent-noop/golden — пройдены; editor.md-дифф = ровно дискурс+чэнъюй+FEWSHOT (baseline цел). `prompt_version=v3` (ещё не гонялся).
**ИТОГ: все 3 компонента resnapshot ГОТОВЫ** — дискурс+чэнъюй editor (v3) · reseed-сид · инфра-пак (D38.3). **Следующий шаг = единый resnapshot** (D30.9, одна переоплата книги) + пере-прогон 310 глав: конфиг = glm=P1a-few-shot (дефолт) + армы {mistral few-shot · deepseek-pro `few_shot:false` = инверсия-защита D38.4 · крупная edit-единица = нарезка-арм D38.4} + `RegressionGuard` ON (D38.4). ПАРНО с чтением владельца (интерим-планка 2 претензии, D35). Крупная edit-единица — НЕ реализована (нарезка-арм, не промпт-порт). **[⟶ ПРИОСТАНОВЛЕНО D39: владелец остановил раунд для арх-ресета; пере-прогон гейтится треком B, см. D39.]**
## D39.17 — Приёмка R1 драйвер-свитч ЗАЛЕНДЕНА: волновой исполнитель (черновик∥→банк-майнинг-стоп→редактура∥); полный рубеж-2 — clean bill по несущим осям, 3 MINOR/NOTE-фикса в mining-wiring → пере-прогон-преп (19.07, оркестратор №7). ✅
Бэкенд-сессия сдала последний резидуал пака-11 — **волновой исполнитель** (`BACKEND_PLAN11` §R1; отчёт `docs/archive/reports/R1_DRIVER_SWITCH_REPORT_2026-07-19.md`, мой новый процесс соблюдён — не в `backend/`). **Залендено:** `translateBookWaves` заменил последовательный цикл — precompute($0)→**черновик-волна(∥ по чанкам, `snapshot_draft`=base-банк)**→**банк-майнинг-стоп**(подпись владельца или авто-continue)→**редактура-волна(∥ по edit-ЕДИНИЦАМ, `snapshot_edit`=enriched)**; редактор читает черновик как конкатенацию member-final по `final_hash`, **НИКОГДА не пере-рендерит draft** (несущий инвариант); `translateChunk` удалён. + wiring майнера в живой стоп (`loadLangPack` fail-loud/nil-and-run, `pack.Version()`-фолд omitempty, mined-write `Source:mined`) + **Ш-2** (`unicode.Version` в memnorm/classifier/style + chunker/estimator) + **Ш-1** (`goldenMaskedDiff`) + структурный golden-рерайт (8 глав→8 единиц, 19→18 вызовов) + read-модели per-unit + именование (директива: без W0/W1/W1.5/W2 в коде/логах → waveDraft/waveEdit/runBankMiningStop).
**Приёмка — ПРЯМАЯ верификация исполнением + ПОЛНЫЙ рубеж-2** (R1 = ре-архитектура исполнения, тяжёлый адверсариал оправдан; владелец явно просил сверку волновых алгоритмов против ресёрчей). Прямая: `build/vet/test -race` зелёные (сам, `pipeline` ~31с); **8 волновых пинов** вербозно вкл. **кусачий регресс-пин `TestWaveMinedSignDoesNotRebillDraft`** (подписывает mined-терм, ре-прогон с `--resnapshot`, ассертит draft-волна байт-стабильна [SnapshotID+ContentHash+FinalHash] / edit-снапшот двинулся — падает без фикса); **golden байт-стабилен** независимо; построчное чтение `waverun.go` (алгоритм = план §1 / research/19 §B3-бис) + `mining.go` + `seeding.go` (base/enriched: `hasMined=false``baseMemory==memory`, golden цел). **Рубеж-2 (5-агентный × 5 линз, вкл. явную линзу СВЕРКИ с research/19 §B3-бис + research/20 §C + план §1/§2, refute-by-default, $0): 4 находки, 1 refuted, 3 выжили — ВСЕ MINOR/NOTE, 0 CRITICAL/MAJOR. Все несущие линзы (деньги/durability/параллелизм · секвенирование · детерминизм · СИНК-С-РЕСЁРЧЕМ · снапшот/golden) — ПУСТЫ; синк-линза расхождений от ратифицированного волнового дизайна НЕ нашла.** Сессия сама поймала MAJOR в своём чекпойнте (инъекция черновика считалась над ENRICHED-банком, снапшот пинился к base → тихий re-bill при подписи mined; фикс `r.baseMemory` base-scoped + регресс-пин).
**Фикс-лист рубежа-2 (3, все в стенд-only mining-пути / трипваер — лендинг R1 НЕ блокируют; ГЕЙТ: закрыть до живого mining-раунда пере-прогона):**
- **R1-FL-A (MINOR, F1):** CLI не обрабатывает `WaveSignatureStop` → mining-стоп даёт exit 1 (генерик-крэш) вместо distinct exit-2 (как `CompletedWithFlags`); коммент/отчёт («CLI-сентинел», «carried up like CompletedWithFlags») ПЕРЕ-заявили несуществующую проводку. Человек-mitigated (stderr печатается), но exit-код-автоматику вводит в заблуждение. Фикс: distinct exit-код + рендер Terms/SignaturePath; поправить оверклейм-коммент.
- **R1-FL-B (MINOR, F2):** банк-майнинг-стоп очищается ТОЛЬКО при пустой дельте (`mining.go:56`); reject-механизма нет → терм, который владелец ОТКЛОНИЛ (опустил), ре-предлагается каждый ре-прогон → стоп фаерит вечно, edit-волна недостижима. escape (добавить как `status:auto`) не задокументирован в stop-сообщении. Связано с W1.5-UX (§10-1). Фикс: документировать escape / reject-механизм / clear-on-reviewed.
- **R1-FL-C (NOTE, F3):** `x/text/norm` несёт свою Unicode-редакцию независимо от stdlib `unicode.Version` (сессия сама пометила `memnorm.go:48`) → standalone `go get -u golang.org/x/text` мог бы тихо сдвинуть NFKC/NFC → пере-вердикт post-check без сдвига `memoryNormVersion`. Расширить Ш-2: фолдить x/text-версию / трипваер «не бампать x/text без resnapshot».
**Ратифицированные девиации/флаги (приняты):** пер-волновой `--resnapshot` СУРГИЧЕН (не all-or-nothing — прямое следствие пер-волнового снапшота §1(в); `TestRunnerSnapshotPinning` 4→3) · `escMu` сериализует эскалации через LLM-вызов (осознанный трейд: точность soft-cap > параллелизм редких эскалаций) · Ш-2 расширен на chunker/estimator (тот же silent-drift класс). **Пак-11 ЗАВЕРШЁН** (Block A + continuation + арх-проход + R1); промт `BACKEND_PLAN11` отработан → архив. **Очередь:** пере-прогон-преп (R1-FL-A/B/C mining-wiring + единый resnapshot §8 D30.9) → пере-прогон 310 глав (армы glm/mistral/deepseek-pro; live mining-раунд с подписью) → чтение владельца (планка 2 претензии).
## D39.19 — Пере-прогон-преп ЗАЛЕНДЕН: 6 целевых фиксов (R1-FL-A/B/C · echo-сплит · read-model naming · ниты) + §8-манифест полон; golden version-only; gender-signoff закрыт (19.07, оркестратор №7). ✅
Бэкенд-сессия исполнила `BACKEND_RERUN_PREP_SESSION_PROMPT` — все 6 пунктов + верификация §8-манифеста + свой 4-линзовый адверсариал (clean bill, 0 CRIT/MAJOR). **Залендено:** (1) **R1-FL-A** — CLI обрабатывает `WaveSignatureStop`**exit 3** (distinct от 2-flagged/1-крэш, переживает `%w`), рендер terms/signature-path/resume-guidance, оверклейм-комменты выправлены; (2) **R1-FL-B****reject-set** (`Book.MinedRejects` yaml, не в BriefHash → не снапшот-двигающ; `MineBank(rejects)` дропает отклонённый терм С кластером [`markEmitted` против representative-shift re-fire], nil = байт-идентичный no-op → парити цел); стоп очищается когда каждый терм промоутнут ИЛИ отклонён — **livelock/W1.5-UX §10-1 закрыт**; (3) **R1-FL-C**`xTextVersion="v0.38.0"` в `memoryNormAlgoVersion` (pin-константа: `ReadBuildInfo` пуст под `go test`; drift-чек `TestMemnormXTextVersionPin` против go.mod) — единственная снапшот-двигающая правка; (4) **echo-сплит** `echo_draft_rate`/`echo_edit_rate` (re-derive-костыль снят; edit-числитель gated `DispFlagged`); (5) **read-model naming** (chunk/total_chunks → unit-семантика Go+JSON; полигон-экстрактор читает per-record `chunk_idx`/`source`, не переименованные тоталы — не сломан); (6) **ниты** (мёртвый `minedToCandidates` снесён греп-подтверждённо; jobs.status advisory-note; escMu не тронут; HTTP-concurrency уже покрыт `TestWaveParallelWorkersMoneyConserved` через реальный транспорт).
**Приёмка — прямая верификация исполнением** (локальные целевые фиксы — тяжёлый воркфлоу не нужен; сессия сама прогнала 4-линзовый адверсариал): build/vet/test -race зелёные (сам); **независимый masked-golden = 0 изменённых строк после маскировки хешей** — golden сдвинулся ЧИСТО на хеш-значениях (x/text-версия в `memoryNormVersion`), wire-тела/вердикты/final_text БАЙТ-ИДЕНТИЧНЫ (сильнейшее подтверждение version-only; 180 «version-only» сессии = все хеш-строки); все пины проходят (exit-код-контракт · reject-suppress · x/text-drift-pin · echo-сплит [draft 0.5/edit 0 на dropped-echo] · **парити EXACT** [reject nil no-op] · mined-delta-base-stable · golden); спот-чтение несущих диффов (x/text pin+drift, reject cluster-touch+markEmitted, echo-сплит). **§8-манифест:** сессия сверила все live снапшот-фолды — полны (memmatch/reseed/mined/gender-данные/sanitizer/editor/segmentation/chunker-v5/src→dst/banknote/langpack/per-wave/**+x/text**); DEFER-строки (DC-пакет-данные, promote 甲乙丙丁/四代族长) корректно не-фолдятся (не построены). **Док-правка оркестратора:** x/text-строка добавлена в план §8 (сессия флагнула отсутствие — моя зона; выправлено). Дисциплина «не упарываться на миноры» соблюдена (ниты лёгкие, escMu не тронут, снос только греп-мёртвого).
**Gender-signoff карты exp16 ЗАКРЫТ (владелец «male ок», оркестратор проставил корректно):** male 10 name-персон (方源/古月/方正/人祖/花酒行者/古月-клан) · female 沈嬷嬷 (нянька) + 沈翠 (KWIC разрешил: служанка, дочь няньки — не бланк-male) · hidden 白凝冰 · n/a title/term/place + 困境 (имя стаи). Карта (dst-канон+пол) готова к сид-дельте.
**ПАК-11 + преп ЗАВЕРШЕНЫ; бэкенд-код готов к пере-прогону.** Промт препа отработан → архив. **Очередь:** **пере-прогон** (операционная сессия: ОДИН `--resnapshot` fresh-translate + langpack+contrast+подписанная карта+армы редактора glm/mistral/deepseek-pro; риг-стандарт D39.7; finish=stop) → чтение владельца (планка 2 претензии). **Гейт: ре-чек прайса DeepSeek у катовера слагов 24.07 ДО платных вызовов.**
## D39.18 — Blast-radius edit-единицы: c-lite (редактура чистого остатка) залендён (`488c8d4`); + 4 read-модель-фикса пост-лендинг-ревью (19.07, оркестратор №7). ✅
**Product-решение владельца по blast-radius (эскалировано D39.17-errata):** в волновой модели флаг одного черновик-члена бланкал ВСЮ edit-единицу (≈12 чанка ≈ глава для мелких глав), отбрасывая оплаченные драфты хороших соседей — регресс от per-chunk модели. Опции: (a) accept · (b) экспорт сырых хороших · (c) редактура чистого остатка. **Ратифицирован (c) с fallback (b)** (моя рекомендация: (c) не намного сложнее (b) — склейка хороших `draftParts` уже собиралась; деградирует до «потеряли один битый чанк» + сохранённая редактура хороших).
**Залендено (c-lite):** флагнутый член ДРОПАЕТСЯ, редактор бежит по `cleanSources`+`draftParts` (source+draft чистых членов), единица шипит отредактированный остаток флагнутой; только при ВСЕХ флагнутых → "". Ключевое для нейтральности: без флага `cleanSources join == unit.sourceText()` байт-в-байт → **golden/нормальный путь не тронут**. **Приёмка — прямая (пропорционально: локализованный flag-путь + read-модели, не конц-край):** build/vet/test -race зелёные (сам), golden байт-стабилен, c-lite пины (dropped-member · all-members-flagged · parent-cancel цел), деньги честны (`draftCost` по ВСЕМ членам до флаг-чека, редактура биллится 1×, нет задвоения), весь дифф прочитан построчно. Тяжёлый воркфлоу НЕ гонял — сессия сама прогнала 4-линзовый адверсариал.
**4 read-модель-фикса пост-лендинг-ревью сессии (все MINOR/NIT, впитаны):** (1) `quality.go` — echo дропнутого члена пропадал из `EchoRate` (метрика приёмки владельца) → пере-выведен per-unit из member-рядов [**ОТКРЫТОЕ решение владельцу:** сохранена pre-c-lite семантика «echo где угодно, вкл. дропнутых членов»; альтернатива «echo только в шипнутом тексте» — one-line, за владельцем]; (2) `status.go` `resolveChunkState` — FIRST-flagged reason (было тихо last-wins; коммент уже это заявлял) → выровнено с export/translate; (3) `export --pairs` source realign на чистый остаток (DC1/DC2-FP видит реальную пару); (4) export Detail дропнутого члена пропагируется. Отчёт — `docs/archive/reports/R1_POST_LANDING_REVIEW_2026-07-19.md`. **R1-FL-A/B/C — deferred в пере-прогон-преп** (live-mining-гейтнуты; R1-FL-B нужен W1.5-UX reject-set дизайн).
## D39.17-errata — MEDIUM-HIGH баг `runWave` (parent-cancellation), ПРОПУЩЕННЫЙ рубежом-2 оркестратора, пойман 2-й ревью-сессией и залендён фиксом (`5fc4860`) (19.07, оркестратор №7). ✅
**Честная фиксация промаха.** После лендинга R1 (D39.17) владелец запустил ВТОРУЮ независимую ревью-сессию (4 адверсариальных ревьюера + трейс) по волновой фиче. Она нашла **реальный MEDIUM-HIGH баг, который мой рубеж-2 дал clean bill и пропустил:** `runWave` (`waverun.go`) ставил `firstErr` ТОЛЬКО из ошибки воркера и возвращал его после `wg.Wait()`. При parent-cancellation (Ctrl-C/SIGTERM — CLI вешает `signal.NotifyContext`, `main.go:55`) фидер бросает оставшиеся items на `ctx.Done()`, НО воркер не обязан ошибиться, чтобы завершиться — **$0-resume-воркер резолвится через свой `opContext` store-ридами, не трогая cancellable ctx**, → `firstErr` остаётся nil при недоделанных items → `runWave` возвращает nil. Дальше: edit-пайплайн (прод C1 дефолт) → `unitOutcomes[i]==nil`**nil-deref паника** (`waverun.go:169`); draft-only → zero-value fake-`DispOK ""`**exit 0 на неполной книге** (скриптовый `translate && export` шипит усечённую книгу как успех). Надёжно бьёт на Ctrl-C'нутом резюме — первоклассный путь. Durable-store был ВСЕГДА корректен (недоделанные items не чекпойнтились → ре-прогон их резюмит) — потери денег/данных НЕТ; ущерб = крэш / ложный сигнал успеха.
**Фикс (session, залендён):** после `wg.Wait()` при `firstErr==nil` вернуть `parent.Err()` (nil на чистом прогоне, `context.Canceled` на прерванном — стандартная errgroup-дисциплина). **Верификация оркестратора — РЕД/ГРИН исполнением:** реверт `waverun.go` к залендённому HEAD → регресс-пин `TestRunWaveSurfacesParentCancellation` ПАДАЕТ («runWave returned nil on a cancelled parent ctx»); фикс восстановлен → PASS; полный suite -race зелёный, golden байт-стабилен, ровно 2 файла.
**Урок (честно):** мой рубеж-2 имел линзу «runWave race-safety: lost error / cancel-path» — но агенты не дотрейсили путь «$0-resume-воркер никогда не ошибается → firstErr nil при parent-cancel». 5-линзовый адверсариал МОЖЕТ пропустить тонкий concurrency-путь; вторая независимая сессия его поймала — это валидирует практику независимых ревью, но **мой clean bill на D39.17 был НЕПОЛОН**, фиксирую явно. Остальное R1-ядро подтверждено 3 ревьюерами+трейсом (деньги атомарны, переоплата-ОДНА на обоих уровнях, память immutable, снапшот-пиннинг) — держится. Прочие находки 2-й сессии: **product-решение владельцу** (edit-unit blast-radius: один флагнутый member-черновик бланкает ВСЮ единицу-главу, отбрасывая оплаченные драфты хороших соседей — опции accept / export-good-raw-flagged / split-on-bad → §пере-прогон-преп, эскалировано) + подтверждение R1-FL-A/B/C + ниты (jobs.status-трэш advisory, read-model naming-debt, escMu-throughput, minedToCandidates dead-code, HTTP-адаптер concurrency неотестирован — в фикс-лист/гигиену пере-прогон-препа).
## D39.16 — Приёмка арх-прохода D39.15 ЗАЛЕНДЕНА: язык-данные майнера вынесены в `internal/lang`+`configs/langpacks`, байт-точно (парити EXACT); три дивергенции от предложения оркестратора ратифицированы (19.07, оркестратор №7). ✅
Бэкенд-сессия исполнила `BACKEND_ARCH_CLEANUP_SESSION_PROMPT` (5 фаз-воркфлоу: ресёрч 2×3 → синтез → фикс-лист do/defer/don't → исполнение → ревью). **Залендено:** zh/Палладий-данные майнера (百家姓 single/compound, титул/топо/rank-инвентари, частицы `aliasParticle`, таблица Палладия) вынесены из Go-констант `internal/pipeline/` в **`configs/langpacks/zh|zh-ru/` (10 файлов)**, грузятся новым leaf-пакетом **`internal/lang`** (данные+загрузчик+`Version()` content-hash; **НЕ импортит pipeline → граница компиль-enforced**); движок читает резолвнутый `*lang.Pack` через DI (как `contrast`). Плюс риды-along: **FL-1** (`bankTokenBudget``banknoteSnap.TokenBudget`), **FL-2** (банкнота-телеметрия репопулируется на резюме из `prev.NBanknote*`, guard `FromResume && Enabled`), **FL-3** (`emitRankCap=200` перед emission-фильтрами, зеркало `a3[:200]`), тест-путь (env-override `TM_MINER_PARITY_{CONTRAST,RECORDS,SEED}`, skip-if-absent).
**Приёмка — ПРЯМАЯ верификация исполнением:** `go build/vet/test -race` зелёные вкл. новый `internal/lang` (сам); **golden БАЙТ-ИДЕНТИЧЕН** (нулевой дифф — сильнее допущенного «одно version-поле»; поведенческая нейтральность механически доказана); **байт-точность перемещения ДОКАЗАНА парити-тестом** — константы УДАЛЕНЫ (грепом нет), майнер читает langpack через DI, `TM_MINER_PARITY=1` даёт EXACT `n=13618 {方源:0,蛊:1,蛊师:2,古月:22} recall 0.9649` против замороженного Python-референса (сдвинься хоть руна данных — набор/ранги поехали бы; ручной регекс-парсинг констант ненадёжен из-за соседних многострочных инвентарей — парити строже); граница `internal/lang``pipeline` подтверждена грепом; FL-1/2/3+тест-путь спот-верифицированы построчно. Сессия сама прогнала Phase-5 ревью (3 минора пофикшены).
**Ратифицирую три дивергенции от стартового предложения оркестратора (пресс-тест сработал — сессия опровергла даже МОЙ буллет с доказательством):**
1. **`isRuTarget`/`isCJKTarget``x/text/language.Tag`: ОТВЕРГНУТО (держим точные строковые предикаты).** Ресёрч-опровержение: `language.Tag`-матч тянет CLDR «likely-subtags» (документированно «subject to change» — golang/go#24211); 6/18 расхождений; **CLDR-инстабильность попадала бы в снапшот-ВЕРДИКТЫ** (`isRuTarget` гейтит санитайзер → экспортный FinalText) → недетерминизм байт-воспроизводимости при апгрейде `x/text`. Мой стартовый буллет был наивен; отклонение ВЕРНО (детерминизм > идиоматика в вердикт-пути).
2. **Живые DC-чекеры (`checkers_zh_ru` 时辰/числительные/регистр — назван владельцем) в langpack: DEFER до ja→ru-реплики.** Они бегут ПАРА-АГНОСТИЧНО сегодня → пара-кеинг СЕЙЧАС = живая смена поведения (нарушает мандат нейтральности); `translitInterjections` (ара-ара/маа) — ЯПОНСКИЕ филлеры, мис-кей-ловушка. Два ресёрч-агента сошлись независимо. Поедут по тому же сеаму, когда реальная 2-я пара сделает их src/tgt/pair-ось тестируемой.
3. **Снапшот-фолд `pack.Version()`: DEFER до R1.** Майнер OFFLINE → его данные не wire/вердикт-определяющи → фолд СЕЙЧАС = преждевременный resnapshot (инвариант №2). `pack.Version()` построен и готов; R1 фолдит его при wiring майнера в живой W1.5 (один resnapshot тогда). Резкое и верное наблюдение (мой буллет «folded как промпты» не учёл, что майнер ещё не живой).
Плюс честные DEFER-2 (`sourceAbbrevs` — 28 англ-аббревиатур в chunker, единственный per-source инвентарь движка) / DEFER-4 (`isCJK/RuTarget` как langpack-атрибут — если реестр расширится). Дисциплина «не упарываться на миноры / не rewrite-ради-rewrite» соблюдена: один оправданный рефактор + реальные FL-фиксы, косметика не плодилась.
**Записка сессии (Ш-1/Ш-2) — диспозиция оркестратора (ратифицирую, обе → R1, НЕ в нейтральный пак):** сессия при пресс-тесте нашла две слепые зоны снапшот-гарда (не дефекты текущего кода — сейчас консистентно, go1.26.4, x/text Unicode 15.0.0, дрейфа нет; всплывут при след. смене поведения / первом бампе тулчейна). **Ш-2 (несущее):** снапшот-версии (`memoryNormVersion` `memnorm.go:56` + classifier/style) НЕ фолдят `unicode.Version`а `norm.NFKC` (парити майнера + матчер банка) и голые `unicode.Han/Cyrillic` (~10 файлов) привязаны к Unicode-версии тулчейна → **бамп до go1.27 (Unicode 15→17) сменил бы NFKC/классификацию БЕЗ сдвига снапшот-версии = тихая дивергенция** (тот же класс, что отвергнутый `language.Tag`). Фикс: вплести `unicode.Version` в norm/classifier/style-версии → любой Unicode-бамп = громкий resnapshot. **Едет в R1** (R1 и так делает resnapshot при фолде `pack.Version()` — один заход покрывает оба); **ТРИПВАЕР: обязательно ДО любого go1.27-бампа** (сейчас не горит — на 1.26.4, бампать ради свежести не рекомендовано). **Ш-1 (безопасность, низкая срочность):** masked structural diff при golden re-capture — ручная дисциплина ревью, не код; хелпер (на `TM_UPDATE_GOLDEN=1` маскировать хеш/версия-поля + печатать «N вердикт-изменений / M version-only» ДО записи) делает re-capture безопасным по построению. → R1/гигиена. Обе вписаны в фикс-лист R1.
**Процесс-правка (мандат владельца 19.07): сессии НЕ плодят персистентные `backend/*_REPORT.md`** — постоянный record = D-блоки + PROGRESS; детальный приёмочный артефакт (если нужен оркестратору) пишется в `docs/archive/reports/`, не в код-зону. Три существующих репорта (PACK11/PACK11_CONT/ARCH_CLEANUP) вынесены из `backend/` в `docs/archive/reports/` (архив-не-удаление).
**Общность доказана структурно:** синтетик-пара роутится через сеам, fail-loud на неизвестный/пустой пак. Полный тест §B5 — ja→ru-реплика (когда исполнится, DEFER-1 чекеры едут туда же). **Честная калибровка:** мульти-агентный рубеж-2 на этой приёмке не гонялся — golden байт-идентичен (механический пруф нейтральности) + парити EXACT (пруф байт-точности данных) делают correctness-риск рефактора близким к нулю; прямая верификация (граница/байт-точность/фиксы/дивергенции) пропорциональна. Промт арх-прохода ОТРАБОТАН → архив с баннером. **Очередь:** R1-продолжение (`BACKEND_PLAN11_SESSION_PROMPT.md` активен; R1 фолдит `pack.Version()` + грузит пак в раннере при wiring майнера) → resnapshot → пере-прогон → чтение.
## D39.15 — Директива владельца: изоляция языковых данных из `pipeline/` (архитектурный проход ПЕРЕД R1); промт выдан (19.07, оркестратор №7). ✅
**Триггер:** владелец при обзоре кода нашёл zh/ru-вставки внутри `internal/pipeline/` (百家姓 `surnamesSingleRaw`, таблица Палладия, `aliasParticle` 的了在是…, `checkers_zh_ru` 时辰/числительные/регистр, `isRuTarget` ручной). **Разбор оркестратора (по коду, честно):** §0.1-сеам РЕАЛЕН и соблюдён — язык-логика за централизованными гейтами (`isRuTarget`/`isCJKTarget` `disposition.go:294,307`; pair-keyed промпты `PromptPathFor` fail-loud; движок параметризован Source/TargetLang; фертильность CJK/other = per-pair конфиг, вырождается корректно на не-CJK; майнер не подключён в прод — R1-резидуал). en→es СЕГОДНЯ = **fail-loud на резолве промпта** (не крэш, не тихая порча). Хардкод-пути — ТОЛЬКО в `miner_parity_test.go` (тест, data-gated). `clusterAlias` — корректный union-find (не «мусор из циклов»). **НО настоящий зазор подтверждён:** язык-данные зашиты Go-КОНСТАНТАМИ внутри `pipeline/` (добавить пару = перекомпиляция), а §0.1-идеал = данные-файлом; `golang.org/x/text` (v0.38 уже в deps) недоиспользован (`language.Tag` не применён).
**Директива владельца (ратифицирую как курс):** язык-специфика — ВНЕ `pipeline/`, под сотни языков; библиотеки где уместно; данные-файлами не константами; чистый код + нормальные алгоритмы, стандарт «сеньор Google»; **но не упарываться на миноры, никакого rewrite-ради-rewrite**. **Секвенс (решение владельца):** вставить архитектурный проход ПЕРЕД R1-драйвер-свитчем (пока не накопился ещё язык-код и до того, как майнер станет живым в W1.5). ja→ru-реплика — приёмочный тест общности §B5 (позже).
**Целевая форма (стартовое предложение оркестратора — пресс-тест ресёрчем в промте, не догма):** движок общий; новый `internal/lang/` (интерфейсы `LangPack`/P1P6 + загрузчик + реестр, БЕЗ данных) + `configs/langpacks/<lang|pair>/*.yaml` (百家姓/суффиксы/частицы zh · Палладий zh-ru · регистр/числительные/гендер ru · единицы zh-ru); резолв по `Book.LangPair()`, снапшот-folded (как промпты — прецедент расширяем, не новый паттерн); `x/text/language.Tag` вместо `isRuTarget`. Добавить язык = каталог данных, без правок `pipeline/`. Правильные алгоритмы (union-find, детерм. сортировки, целочисленные пути) — НЕ трогать; из движка уходят ДАННЫЕ.
**Промт выдан: `BACKEND_ARCH_CLEANUP_SESSION_PROMPT.md`** — промежуточная бэкенд-сессия, 5 фаз-воркфлоу (ресёрч 2×3 независимый → синтез входов [ресёрч+оркестратор+владелец+фикс-лист] → вывод фикс-листа с диспозициями do/defer/don't → исполнение → мульти-линзовое ревью). Рефактор ПОВЕДЕНЧЕСКИ НЕЙТРАЛЕН zh→ru (golden байт-стабилен до одного version-поля, один resnapshot). Риды-along: фикс-лист FL-1/2/3 (D39.14) + тест-путь. Скоуп-барьер: НЕ R1, НЕ пере-прогон, НЕ смена поведения перевода, НЕ минор-хант. **Очередь пере-упорядочена:** этот пак → R1-продолжение (`BACKEND_PLAN11_SESSION_PROMPT.md`, остаётся активным) → resnapshot → пере-прогон → чтение.
## D39.14 — Приёмка пака-11 continuation (R2R5 + R1-аддитив) ЗАЛЕНДЕНА; рубеж-2 D39.13-долга погашен: clean bill по несущим осям, 3-пунктовый MINOR-фикс-лист → R1-продолжение (19.07, оркестратор №7). ✅
Бэкенд-сессия сдала continuation по санкционированному порядку (вариант 1: R2→R3→R4→R5, R1-аддитив, драйвер-свитч честным резидуалом). **Залендено** (`git`): **R2 WS3 Go-майнер** (порт frozen exp16, дефолт-B; паритет EXACT — 13618-СЕТ, катастроф {方源:0,蛊:1,蛊师:2,古月:22}, recall 0.9649; алиас-ярус-1, `MinedDeltaYAML`, `Source:mined`-путь, `tmctl seed-lint`) · **R3 WS4 банкнота 12 точек** (срез-до-classify fresh+resume, `tm-banknote-v1:` derived + re-point после эскалации, `banknoteSnap` omitempty, store v9-телеметрия, finish=stop-гейт) · **R4 WS5** (`export --pairs`, DC1/DC2/DC6 байт-верны референсу, DC3 gender-инъекция, 2 golden re-capture masked-чист) · **R5 WS6** (2 арм-конфига mistral/deepseek-pro + `echo_mine_test` под варианты + rate-guard связка) · **R1-аддитив** (`snapshotIDForWave` «переоплата ОДНА» + W0 sticky-precompute байт-идентично — golden доказал). **R1 драйвер-свитч (W1/W1.5/W2 dispatch + структурный golden-рерайт) — резидуал** (санкционированный исход; точный 6-шаговый дизайн `PACK11_CONT_REPORT.md §R1`).
**Приёмка — ПРЯМАЯ верификация исполнением:** `go build/vet/test -race` зелёные (сам); ~40 пинов свежим `-count=1` вербозно (майнер-паритет `TM_MINER_PARITY=1` EXACT, банкнота 12-точек, DC-чекеры, seed-lint, snapshotIDForWave, алиас-правила); **независимая masked-golden репликация** (18 строк, все объяснимы: render-format v1→v2 + cheapgate v2→v3 + gender-note в src→dst-блоке; **0 изменений final_text/disposition**); построчное чтение несущих диффов (stagerun деньги-путь: settle пишет `ResponseText: resp.Text` RAW, applyBanknote срез ПОСЛЕ durable settle, чекпоинт хранит raw, резюм re-slice детерминирован — деньги нетронуты; re-point зеркалит sanitizer-прецедент, стоит после резолва эскалации; W0-precompute байт-идентичен по построению; base≠enriched домен-сепарированы).
**Погашение долга рубежа-2 (D39.13):** мульти-агентный адверсариал по ОБОИМ кускам пака (Block A + continuation), 5 линз × refute-by-default, 8 агентов, $0 к провайдерам. **Итог: 3 находки, все MINOR/PARTIAL, 0 refuted; ВСЕ CRITICAL/MAJOR-линзы пусты** (деньги/durability · wire-детерминизм · порт майнера [инварианты EXACT] · banknote-резюм-в-редактор · инвариант base/enriched · честность residual — clean bill). Спот-верифицировал каждую находку сам против кода+референса. **Фикс-лист (→ R1-продолжение, все латентны/observability — лендинг НЕ блокируют; банкнота выключена по дефолту `BanknoteGate.Enabled=false`, майнер-эмиссия ещё не в живом прогоне за R1):**
- **FL-1 (MINOR, F1):** `bankTokenBudget` (144, wire-affecting via max_tokens∈RequestHash) НЕ свёрнут в `banknoteSnap{enabled,parser_version}` → правка конста `bankMaxLines` без бампа parser_version = тихий re-bill книги на резюме (loudness дисциплиной, не механизмом — единственный такой пропуск; снапшот фолдит MaxOutputRatio/MinMaxTokens/etc). Фикс: свернуть `bankMaxLines`/бюджет в `banknoteSnap`.
- **FL-2 (MINOR, F2, observability-only):** `resumeFromChunkStatus` (`resume.go:22`) не репопулирует `BankFlags` (ставится только fresh-путём `stagerun.go:234`) → `persistRetrievalState` обнуляет `n_banknote_lines/parse_fail/truncated` на КАЖДОМ резюме готовых чанков; коммент «self-heals on resume» ложен для этих 3 колонок (сырой блок — в непрочитанном attempt-чекпоинте, derived хранит очищенный). Фикс: re-derive из сырого чекпоинта ИЛИ не обнулять эти колонки на резюме ИЛИ поправить коммент.
- **FL-3 (PARTIAL, F3, порт-fidelity):** `miner_emit.go:68` идёт по полному `mr.ranked`, референс капит `a3[:200]` (alias-пул) / `[:30]` (precision-лист) ДО фильтров (`alias.py:165`, `emit_owner_sheets.py:143/162/169`) → эмитируемая сид-дельта/карта подписи шумнее референса (НЕ затрагивает WHICH-инварианты SET/recall/катастроф — только объём подписываемого владельцем). Фикс: добавить top-N кап перед emission-фильтрами. Гасить ДО живого W1.5-прогона (владелец подписывает эту карту).
**Ратифицированные девиации (обе с эскалация-нотой, приняты):** (1) `banknoteSnap` omitempty-указатель (не безусловное `{enabled:false}` зеркало sanitizerSnap) — добавление опц. фичи не инвалидирует banknote-OFF книги/golden, включение/бамп-парсера всё равно громкий сдвиг (несущая loudness §4а-п6 цела); (2) DC-пакет = код-консты за `isRuTarget`-гейтом (конфиг-форма — резидуал; §0.1-сеам защищает от неверного на новой паре, extraction-в-конфиг честно не доделан — открытый вопрос владельцу, увязать с ja→ru-репликой). **Промт `BACKEND_PLAN11_SESSION_PROMPT.md` остаётся АКТИВНЫМ** (R1 драйвер-свитч + FL-1/2/3); фикс-лист вписан в него. Очередь: R1-продолжение (драйвер-свитч + фикс-лист) → приёмка → единый resnapshot → пере-прогон 310 глав → чтение.
## D39 — Арх-ресет: синк-аудит «сломанного телефона» + целевая 7-слойная архитектура + фазовый план (13.07, оркестратор №6). ✅
Владелец остановил build-раунд: тактическое латание вместо архитектуры с первых принципов + «сломанный телефон» полигон(ресёрч)→оркестратор(выводы)→бэкенд(реализация) (триггер — чуть не потеряли «умное чанкование»). Хендофф `ORCHESTRATOR_ARCH_RESET_PROMPT.md` (5 концернов). **Проведён синк-аудит** (многоагентный воркфлоу, 42 агента, $0/только-чтение, адверсариальная верификация refute-by-default): **65 находок, 0 REFUTED, 25 CONFIRMED**`docs/architecture/08-sync-audit-ledger.md`. Целевая архитектура и дорожная карта — `docs/architecture/09-target-architecture.md`.
**Стратегический вывод (grounded):** потолок художественности — в НАШЕЙ организации пайплайна (нарезка + структура редакторских проходов + контракт переводчик/редактор + отсутствие меж-чанковой когезии), НЕ в моделях. Подтверждает D30.7; переопределяет источник следующего прироста качества = архитектурный. Рычаги **сцеплены** (редактор репараграфизует ВНУТРИ чанка → нарезка ограничивает потолок дискурс-переверстки) → концерны 1/2/4 проектируются вместе.
**Ратифицированные диспозиции несущих находок (все CONFIRMED по file:line):**
1. **Редактор = ОДНА full-regen с 4 мандатами** (верность/стиль/глоссарий/reflow) — DISTORTION research/07 («узкие мандаты + диффы»); причина хвоста инверсий D34.3. → слой 3 (узкие проходы / diff-editing).
2. **Верности нет владельца в дешёвом пути** — inversion-guard D37 §2г НЕ построен; до Ф2 смысл в проде не контролирует ничто. → слой 5 (детерм. inversion/omission-бэкстоп).
3. **Нарезка — потерянный рычаг:** размер = const в неверной единице (символы исходника, не выходные токены); границы бюджетные, не логические; edit-единица=draft-единица; меж-чанковой когезии нет (мёртвые заглушки `STMDepth`/`OverlapTokens`). → слой 1.
4. **«D35.7» — фантомный номер** (декаплинг draft=чанк/edit=глава цитируется как решение в PROGRESS/exp14/research18, записи в D-логе НЕТ; в контракте — лишь un-ratified кандидат D35 п.7, `05:471`). **Формализуется здесь:** декаплинг = ратифицированная ЦЕЛЬ слоя 1, реализация гейтится треком B; **фантомные цитаты `D35.7` подлежат вычистке/переуказанию на D39** (док-долг трека A).
5. **Терм-дрейф: код-корень жив** — D38.5-фикс = сид-воркэраунд (промоут 5 термов), `memory.go` не тронут; `suppressContained` disposition-слепой + editor-блок CONFIRMED-only → любой draft-длиннее-approved снова тихо (и НЕлогируемо) уронит верный термин. → слой 4 (disposition-gate suppressor + громкий лог).
6. **В контуре ноль сигнала качества** — запрос владельца (п.25/п.31) + research/18 §C1 #10 «СЕЙЧАС» молча спущен в Ф2. → слой 5.
7. **Слоя пар языков нет** — промты zh→ru-baked, `Book.LangPair()` мёртв, ja-пример едет через «китайский паратаксис»; язык промпта всегда русский (V4-п5 не закрыт). Сам версионируемый слой был осознанно отложен под ROI (`05:471`, НЕ телефон), но латентный баг + V4-п5 открыты. → слой 2.
8. **Чистота бьёт по грядущим расширениям:** readability-гейты target-слепы; role→инъекция = рукоправимый switch; strip-and-export размазан по 5 файлам; сироты-промпты; мёртвый `gatesEnabled()`. → слой 7.
Плюс подтверждено ВЕРНОЕ (не трогать): разделение переводчик/редактор осознанно (D30.2); few-shot редактора структурны (не «правильно-переводные» — претензия владельца тут мимо); техники Ван Цуй перенесены дословно; чэнъюй-атом корректен.
**Решения владельца по подходу (AskUserQuestion 13.07):** (1) **фазово** — трек A build-now (память-корень → детерм. quality-сигнал+inversion-бэкстоп → export-contract → гигиена-сеамы → слой-2-сеам → док-долг) ∥ трек B ресёрч (единая матрица `граница×edit-единица×когезия×где-reflow` + интернет-best-practices нарезки; ⚠ exp14 vs research/18 §A конфликтуют по размеру чанка — решает эмпирика); **пере-прогон — только после трека B** + приёмки ключевых build-now. (2) **Слой пар = СЕАМ сейчас, контент только zh→ru** (убирает латентный баг, разблокирует расширяемость; другие пары — под реальную книгу).
**Процесс (концерн 5):** постоянный findings-ledger как повторяющийся шаг оркестратора (этот аудит = экземпляр 1, `08-*`); вопросы research/18 §D «к бэкенду» маршрутизируются обратно; completeness-critic на границе фаз. Незакрытые владельческие идеи (input-limit V2-п3, abuse-prescreen V2-п1, user-stop V2-п2, parallelism/speed V4-п1, glossary-auto-build V4-п4, self-improvement V1/V3) — получают явную диспозицию в треке A (док-долг), даже если «Ф2/Ф3».
**Курс/столпы целы** (деньги/durability, snapshot, детерм. память, echo-гейт, 18+, дешёвый трек, конфиг-первое ядро); целевая арх = декомпозиция+достройка по сеамам, не переписывание. Планка пере-прогона — 2 претензии (интерим, не пилот Ф2.5). Следующее от оркестратора: хендофф-промты трека A (бэкенд) и трека B (полигон+ресёрч).
## D39.1 — Трек B: research/19 (нарезка+когезия+контракт t/e+пре-рег эмпирики) ЗАЛЕНДЕН (16.07, оркестратор №6). ✅
Сессия-ресёрчер исполнила `RESEARCHER_CHUNKING_COHESION_SESSION_PROMPT` (архив с баннером). Выход: **`docs/research/19-chunking-cohesion.md`** + приложение `-sources.md` (52 несущих клейма: 36 CONFIRMED / 16 OVERSTATED-с-внесёнными-коррекциями; 65-агентный веб-воркфлоу author≠reviewer + 5-линзовое пост-хок само-ревью, 8 MAJOR исправлены до сдачи; §A заморожен sha256 до чтения стека). **Оркестратор-ревью НЕ проводилось — прямое решение владельца 16.07** («сильное ревью уже было, сильная модель верифицировала») — фиксирую отступление от дисциплины research/1518 как владельческое, не прецедент по умолчанию.
**Ратифицирую содержание как дизайн-оф-рекорд трека B:**
1. **Конфликт exp14↔research/18 разрешён как ложная дихотомия:** «чанк» склеивал три параметра — **единица эмиссии** (деградация на 2k8k out; потери смещены в хвост), **окно чтения** (кэш делает префикс дешёвым, но качество падает на длинном входе — Context Rot/NoLiMa), **единица связности** (сцена/глава). Дизайн: мелко-средняя эмиссия + селективное read-only окно + когезия МЕХАНИЗМОМ (carryover/lookahead/детерм. стейт), не размером.
2. **Go-спека чанкера (слой 1):** снапшот-folded конфиг (strategy greedy|logical; бюджет в ВЫХОДНЫХ токенах через калиброванную фертильность); структурный профиль (шаг 0) → классы границ B0B5 → **DP-упаковка в целых числах** (Кнут-Пласс; никаких float в путевых суммах); фоллбек-веер (плоский текст/стихи/паратекст/мега-предложение); `Chunk` расширяется аддитивно. Анти-скоуп: НЕ LLM-сегментация, НЕ ML-сцены (F1≈2437%), НЕ эмбеддинг-границы, НЕ LLM-running-summary в проде, НЕ RAG-оверлап.
3. **Когезия (B3):** carryover K=23 (src ∥ невыровненный target-хвост) + lookahead M (катафора; параллелизм-безопасен; шов-дедуп-гард — coverage не проверяет верхний len_ratio) + детерминированный сцен-стейт (sticky ids + пол из сида). Новые кнобы `carryover_sentences`/`lookahead_sentences` (мёртвые `stm_depth`/`overlap_tokens` снести); байты — через messages→request_hash, кнобы — в снапшот.
4. **Волновая архитектура W0W3 (B3-бис, вводная владельца 16.07 = V4-п1):** параллелизм чанков в волнах (W1 черновики параллельно с src-контекстом → **W1.5 глобальная консолидация банка** [= V4-п4 glossary-auto-build; глобальная пост-хок сборка бьёт онлайн-замок — LTCR/BooookScore] → W2 редактура параллельно с draft-соседями → W2.5 швейный микро-пасс по Q5 → W3 reflow-план). Последовательность несут ВОЛНЫ, не чанки; ретрай изолирован (нет каскадной переоплаты). Цена параллелизма (draft-сосед vs final-сосед) — измеряется Q3a.
5. **§D = пре-рег дизайн эмпирики Q0Q5** (фриз коммитом до первого платного вызова, пинит хеши бэкенда/сида/промтов): корпус S1S4 (платные армы только zh→ru S1/S2; S3/S4 — $0 чанкер-профилирование, инвариант общности §0.1); маркированный трап-набор 8 типов (стратификация по дистанции антецедента, общий знаменатель контраста — анти-null); армы: Q1 граница (size-match!), Q2a edit=глава (draft приколочен — атрибуция), Q2b ре-атрибуция sizecurve ($0), Q2c широкое-окно/узкая-эмиссия (развязка §A.1), Q3a carryover×3 режима (= цена параллелизма), Q3b lookahead, Q4a сильный переводчик (+do-nothing суб-арм), Q4b diff-редактор, Q4c reflow-пасс, Q0 do-nothing эквивалентность (TOST); двойной якорь A0↔A0 = floor шума; reflow-инвариантный omission (длино-гарды смещены против крупных чанков); карта независимости сигналов (D32.4-гард); бюджет ~$815; человеческий эндпоинт гейтит.
6. **Открытые вопросы:** владельцу — §E.1 (гибрид при ненулевой цене параллелизма? человеческий гейт W1.5 в середине книги?), §E.2 (пол в схеме сида — подпись), §E.3 (транскрипция per-book), §E.4 (бюджет пакета); бэкенду — §E.58-бис (аддитивный `Chunk`, кнобы когезии, дифф-apply после Q4b, **⚠ чек слагов DeepSeek до 2026-07-24**, **⚠ вендор-чек префикс-кэша ZAI/GLM** — вся кэш-экономика W1/Q2c условна на нём).
**Дальше:** полигон-эмпирика по §D — отдельный промт оркестратора (после лендинга трека A пак-1); правки exp14↔research/18-цитат не требуются (оба остаются верными в своих осях — §A.1 их примиряет).
## D39.2 — Трек A пак-1 ЗАЛЕНДЕН (`d3f6b34`): trust-gate памяти + export-contract + pair-сеам + реестры + quality-report (16.07, оркестратор №6). ✅
Бэкенд-сессия исполнила `BACKEND_TRACKA_PACK1_SESSION_PROMPT` (T1T4, только `backend/`, не коммитила). **Верификация оркестратора — ПРЯМАЯ, исполнением:** `go build/vet/test -race ./...` зелёные (прогнал сам); golden-детерминизм fresh↔resume PASS; все пиновые тесты вербозно (4 suppressor-кейса, exportNormalize/stripCosmetic, sanitizer firing↔non-firing, pair fail-loud ja / resolve zh, quality-KPI); построчное чтение несущих диффов (`memory.go` trust-gate — семантика корректна вкл. «продолжай скан на ≥-trust контейнер» и «событие только если термин выжил»; `stagerun.go` — strip считается ОДИН раз, симметрично fresh/resume, эскалация консистентна, деньги не тронуты; `exportNormalize` — трассирован ephemeral: только FinalText-проекция + quality.go, НЕ wire/hash/чекпоинты); **golden re-capture воспроизведён независимо** — маскированный структурный дифф старого↔нового = 0 строк расхождения (менялись только хеши/версии + два новых пустых поля). Бэкенд-само-ревью: 13-агентный адверсариал (0 critical/high; поймал и починил EchoRate>100% и NFKC-регресс «…»→«...» → width.Fold). **⚠ Честная калибровка: мульти-агентный второй рубеж оркестратора 3× подряд упал на API-529 (перегруз, 0 токенов) — НЕ проведён; зарегистрирован ДОЛГОМ** (прогнать по восстановлении API; находки → фикс-лист пак-2 — штатный маршрут D37, лендинг не блокирует).
**Что залендено:** **T1** — disposition-gated `suppressContained` (`memmatch-v4`; draft-длиннее больше не съедает вложенный approved; отказ = громкий `retrieval_state.n_trust_gated_suppress`+detail, миграция store v8) + стейл-D1-комменты сняты (поведение CONFIRMED-only цело). **T2**`exportNormalize` на КАЖДЫЙ FinalText (width.Fold НЕ NFKC — NFKC калечит «…»/«№»; 、。-маппинг; стрип комбинирующего ударения с NFC-гардом на й/ё); санитайзер = чистый детектор (recoverable-глифы чинятся молча, флаг только на contentless-Han). **T3** — реестр `roleInjectionRenderers`; readability-гейты за `isRuTarget`; **pair-keyed промпт-сеам** (`Stage.Prompts{zh-ru:…}` + fail-loud, `Book.LangPair()` ожил; SHA-нейтрально для zh→ru); strip-resolver один (classifyOutput возвращает stripped); сироты `analyst/terminologist.md` снесены, `gatesEnabled()` снесён, `foldModelWire` извлечён. **T4**`tmctl report`: детерм. per-run quality-report (mean_spp, тире, CJK, глоссарий, дрейф, echo; rate-знаменатель bounded), наблюдаемость не гейт. Снапшот-сдвиги: memmatch-v4 + sanitizer-v5 → плановый единый `--resnapshot` (уже требовался D38.5).
**Открытые вопросы пак-1 (маршрутизация):** (1) **полигон-поверхность экспорта**`records.json`/сырые чекпоинты не видят export-normalize; фикс НЕ в Python-зеркале, а бэкенд-поверхностью (`tmctl`-экспорт / derived-checkpoint — пак-2; решить до пере-прогона). (2) билингв-редактор src→dst — открытый дизайн-вопрос D30.1 (в Q-очередь трека B/пак-2). (3) CJK-глоссы `(羅漢拳)` — решение владельца. (4) `example/book.yaml` (ja) теперь fail-loud — ja-ru пакет или переоформить пример (мелочь, пак-2). Плюс входящие из research/19 §E.58-бис (кнобы когезии, дифф-apply после Q4b, **DeepSeek-слаги до 24.07**, **вендор-чек кэша ZAI/GLM**).
## D39.3 — Пакет «банк-майнинг W1.5» ратифицирован: диспозиция H15/V4-п4, промт research/20 выдан с HOLD-гейтом (16.07, оркестратор №6). ✅
По записке ресёрчера-19 (передана владельцем; владелец хочет проработку авто-формирования банка из черновиков отдельным пакетом «ресёрч → полигон → бэкенд-дизайн»). Это штатная диспозиция док-долга D39: **H15 (NEVER_CLOSED) + V4-п4 → АКТИВНЫЙ пакет**; V4-п1-эскиз владельца (сноски переводчика → парсинг → банк) абсорбирован как арм (б). Ядро пакета: (а) потолок ЧИСТОГО КОДА — recall/precision детектора (частота × PMI × **разброс переводов в черновиках** — новый сигнал) против сида v2 как ground truth, ДО любого LLM; (б) канал «сноска переводчика» (строгий разделитель, срез кодом на границе волн, редактор не видит) vs код vs гибрид — по recall и цене (~$0.004/$0/~$0.02 на ранобэ — пере-верифицировать); ⚠ сноска затрагивает детерминированные гейты (sanitizer trailing-note, coverage-знаменатель, max_tokens, echo, request_hash) — интеграционные точки перечислить в дизайне; (в) консолидация W1.5 (канон по всем вхождениям, алиасы+пол, дисциплина сида НЕ меняется); (г) слепые зоны кода (консистентно-неверный перевод, 转-полисемия, редкие реалии) → где LLM/локальная-9B (exp06, спот=локаль/рендер=облако). **Гипотеза №1 владельца («код сам разметит всё») — проверяемая, не пресуппозиция.** Прайор-арт: exp06/research-06, G1-эскиз, память v2, сид v2; данные черновиков $0 (records.json + артефакты exp14/15). **Тайминг (условие ресёрчера-19, ратифицирую): промт `RESEARCHER_BANK_MINING_SESSION_PROMPT.md` ВЫДАН с HOLD-гейтом — запуск после пре-рег фриза exp15** (фокус полигона не разбавлять); полигон-стадия пакета — после завершения exp15; слой-1 пакетом не гейтится.
## D39.4 — Адверсариал-долг D39.2 ПОГАШЕН (8 осей, оба пака); лендинг пака-1.5 ПРИДЕРЖАН под фикс-лист F1F9 (17.07, оркестратор №6). ✅
API-529-долг закрыт: 8-осевой refute-by-default воркфлоу (деньги/resume · снапшот · trust-gate · export-normalize · pair-сеам/конфиг · quality-report · export-поверхность · глосс-whitelist), всё исполнением, ~1M токенов, $0 к провайдерам. **Итог: 0 CRITICAL · 1 HIGH · 6 MEDIUM · 14 LOW · 14 NOTE**; ядро обоих паков держится (деньги/resume/детерминизм/SHA-нейтральность/trust-gate-семантика — CONFIRMED-SAFE), находки — по краям новых поверхностей.
**Несущее:** (1) **HIGH — обход санитайзер-гейта, воспроизведён исполнением:** 5/6 классов детектят по сырому тексту, exportNormalize шипит свёрнутый → полноширинная вариация сигнатуры («перевод:», «###») обходит детектор, а нормализация изготавливает ASCII-дефект в экспорте; регресс vs v4-поведения. Фикс = fold-first детекция + инвариант `sanitizeOutput(exportNormalize(x))==0`. (2) **MED×2 (глосс):** isValidGloss не ограничивает латиницу — «(拳 the …)» проносит английскую фразу чистой (найдено НЕЗАВИСИМО осями 4 и 8). (3) **MED×2 (export):** gate-drift (гейт из текущего конфига, не снапшота) + нет manifest-сверки (частичная книга молча «полная» — класс D37-скью). (4) **MED×2 (quality):** gate-withheld чанки в KPI-популяции; `cjk_leak_rate` считает markdown-only strips. **Решение:** пак-1.5 НЕ лендится до F1F6 (+дешёвые F7F9); v6 не лендился → fold-first вливается в ТОТ ЖЕ бамп v5→v6 (один golden re-capture). Фикс-лист вписан в `BACKEND_TRACKA_PACK15_SESSION_PROMPT.md` §T4 (слот ровно для этого). LOW/NOTE-хвост — в ledger-очередь (Retries-снапшот pre-existing; pair-fail-loud-до-store; trustGateEvent первый-отказ; и пр.). Прямая верификация оркестратора (build/vet/race, 12 пиновых тестов, независимая репликация masked-golden-диффа = ПУСТО) — подтверждена воркфлоу без расхождений.
## D39.5 — Трек-A пак-1.5 + фикс-лист F1F9 ЗАЛЕНДЕНЫ одним пакетом (17.07, оркестратор №6). ✅
Бэкенд исполнил §T4-фикс-лист поверх T1T3; оркестратор верифицировал исполнением (свежий `-count=1 -race` весь зелёный; 16 пиновых тестов вербозно; независимая репликация masked-golden-диффа = ПУСТО — только хеши + sanitizer-v5→v6; спот-чтение fold-first: детекция по свёрнутому, strip/export по оригиналу, офсеты не пересекаются, fold идемпотентен) и залендил (`git log -1`).
**Что залендено:** **T1** `tmctl export` — read-only поверхность для полигонной экстракции (final_hash→checkpoint→exportNormalize; glossary-gate re-derive как status; +F3 ConfigDrift-поле/WARN при снапшот-дрейфе; +F4 manifest-join: `[]` не null, pending-строки, Total/Pending-счётчики, ghost-строки дропаются с WARN; +F9 fail-loud на DispOK без final_hash). **T2** глосс-whitelist v6 (голова+скобки, ≤6 CJK; +F2 бound не-CJK: ≤40 рун, пиньинь-токены ≤24 рун/≤cjk+1; +F1 **fold-first детекция всех 6 классов** — закрыт HIGH-обход полноширинными сигнатурами; инвариант-тест `sanitizeOutput(exportNormalize(x))==0`). **T3** пример zh→ru runnable (+F8 palladius). **F5/F6** quality: gate-withheld вне KPI-популяции; `cjk_leak_rate``cosmetic_strip_rate`. **F7** resume Model-атрибуция. Сессионный адверсариал (author≠reviewer) поймал+запинил 2 дефекта своих же фиксов (U+3000-глосс детекция↔strip дивергенция; joined-пиньинь кап 14→24).
**Решения по открытым вопросам:** капы `maxGlossCJKRunes=6`/`maxGlossLatinTokenRunes=24` — приняты как tunable-эвристики (residual = сохранённый глосс, не дроп чанка; ревизия по пере-прогону); F6-rename принят (CJK-специфичный сплит — дешёвый follow-up по надобности); F3-поза field+WARN (не fail-loud) — принята, зеркалит Status. **Ledger-очередь без изменений** (golden-глосс-ячейка, escalated+stripped тест, Retries-снапшот, пунктуационные огрызки и пр.). D39.2-open №1 (полигон-поверхность) — ЗАКРЫТ этим лендингом; полигонная экстракция пере-прогона обязана читать `tmctl export`, не сырые чекпоинты.
## D39.6 — research/20 (банк-майнинг W1.5) ЗАЛЕНДЕН с ревью-шапкой; §D-эмпирика гейтится exp15 (17.07, оркестратор №6). ✅
Ресёрчер-20 исполнил D39.3-промт (с амендментами ресёрчера-19: 3 варианта детектора V-A/V-B/V-C с trade-off-таблицей; алиас-кластеризация — явная подзадача с трёхъярусной границей код/LLM/человек). Верификация оркестратора: §A-хеш байт-в-байт MATCH; репо-клеймы спот-проверены file:line; **конфаунд глоссарий-инъекции в records.json corroborated** (черновики rerun генерились С сидом → спред-сигнал на GT подавлен → cold-start срез в §D несущий). Отклонение HOLD-гейта принято (запуск указанием владельца; exp15 не стартовал — фокус полигона не тронут). **Несущее из отчёта:** (1) внешний потолок ATE (ACTER F1 0.140.58) — floor-калибровка, наш таргет уже (салиентные сущности; гипотеза №1 правдоподобна из-за узости); (2) детектор-лестница V-A (частота×контраст×c-value с фиксом одночарной вырожденности) → V-B (+спред переводов, LTCR-стиль) → V-C (+паттерны 百家姓/титулы/форманты + Палладий-детектор ru-стороны + жанр-паки = детерминированный H15-рычаг); (3) алиасы: ярус-1 код R1R4 (вкл. негативные констрейнты: 族长⊂四代族长-урок D38 §3), ярус-2 = кореференция (LLM/9B, §D-A6b), ярус-3 подпись; ГТ алиасов тонкий (2 шт.) → мини-голд у владельца; (4) канал сноски banknote-v1: 12 интеграционных точек с гейтами перечислены (мандат D39.3), включая несущий re-point final_hash OK-пути на derived-чекпоинт при резюме; цена пере-верифицирована $0.010.1/ранобэ (оценка 19-го «$0.004» занижена, класс «копейки» подтверждён); (5) **§B5 инвариант общности слоя 4** (вводная владельца 17.07): движок языко-агностичен, 6 плагин-интерфейсов P1P6 (данные, не ветки кода), политика degrade-with-flag (кроме P1 fail-loud); (6) §C: консолидация = канон по ВСЕМ вхождениям × Палладий-конформность (не мажоритарность), майнер НИКОГДА не пишет approved; (7) §D: пре-рег с порог-дисциплиной 60/40, катастроф-скрин ядра, решающие правила гипотезы №1 (recall ≥85% f≥3 И canon-recovery ≥70% cold-start) и канала сноски (маржин ≥10 п.п. на f<3 И Δкачества0 И parse_fail<5%). **Тайминг без изменений:** полигон-стадия §D ОТДЕЛЬНЫМ промтом ПОСЛЕ exp15. §E-владельцу (мини-голд · ≤$5 · политика канона · жанр-паки · реплика jaru) вынесены. §E-бэкенду слоты, не строить до §D.
## D39.7 — exp15 (сегментация/когезия Q1/Q3/Q0+FLOOR) ЗАЛЕНДЕН в REV.2 после двухраундовой верификации; «граница вредит» ОТОЗВАН как артефакт рига (18.07, оркестратор №6). ✅
**Дуга:** платный блок exp15 сдан верификация оркестратора (6 осей по сырью) поймала **CRITICAL**: заголовок Q1b «оракул хуже слепого 0.564» был артефактом судейского окна `HEAD_CHARS=1100` (dependent оракул-арма сидел вне окна в 13/18 ячеек; 17/18 трапов оракул вообще не резал; T-ent-«size-контроль» пост-хок с тем же артефактом) + Q3a «цена параллелизма 0» не ратифицировалась (floor-гейт пропущен, подмена метрик, пост-хок T-ana-only, катастрофа победителя T-ell-43 не раскрыта) + Q0 «эквивалентность» не установлена (TOST fail). Полигон исполнил фикс-лист (харднинг ригов, per-vote персист, FLOOR-блок $1.24, пере-суд Q1b полными чанками $1.72, floor-относительный рерайт §7) **точечная пере-верификация (3 оси): CONFIRMED из per-vote сырья, 0 расхождений в числах**; остаточные док-дефекты (счётчик 556, список девиаций, T-ana-33/чанк-42, скоуп-метки) исправлены оркестратором при лендинге (`fe34a16`).
**Ратифицированные результаты (все floor-относительные; floor судейского шума = 0.126 per-cell, A0↔A0 matched full-chunk):**
1. **Q1b:** «граница вредит» ОТОЗВАН свинг +0.689 после полных окон (T-ana 0.564→+0.125; артефакт-сигнатура dep-in/dep-out +0.238/0.872 +0.176/+0.028 = чистое устранение). Исправленный вердикт: primary +0.072 CI90 [0.05,+0.20] на/под полом, LOO-хрупко (grok +0.31/mistral 0.03, судьи расходятся по знаку), пре-рег пин (≥+0.10 И p<0.05 Holm) не пройден **граница — НЕ рычаг на этом материале** (ни вред, ни польза). Q1a: статическая детекция сцен 0/7 = слепой greedy (STSS-класс). Единственный устойчивый хвост: слепые разрезы иногда рвут entity-кореференцию (T-ent катастрофы flat 15 vs oracle 1) control-класс, на полу.
2. **Q3a:** carryover все эффекты под полом (пре-рег primary src 0.005; fix-rate pooled 2/6 во всех режимах); T-ell-43 = катастрофа carryover-победителя (раскрыта). Выживает ТОЛЬКО: **«преимущества последовательного final-соседа нет нигде» (точка 0 в обеих метриках, все LOO-срезы)** волновое направление не опровергнуто, но «зелёный свет» НЕ ратифицирован D5-правила такой ветки не дают; мощность |cost|≲0.050.10).
3. **Q0:** редактор на когезия-трапах TOST fail «данных мало» (ветка §D5 «мандаты редактора пересматриваются» НЕ триггерится); при этом редактор режет катастроф-хвост 6652 (21%, vote-единицы). Стиль/reflow-ценность редактора здесь НЕ мерилась (exp14).
4. **Несущие $0-находки:** фертильность **est_out = 1.20·cjk + 0.39·other** (R²=0.96) вход фикса `L2-budget-wrong-unit` слоя-1; DeepSeek peak-valley официально (пики UTC 0104/0610 = ×2) scheduler-aware волны = прямой COGS-рычаг (бэклог слоя-1); baseline: пайплайн держит ~7377% адверсариальных кросс-граничных анафор (вклад глоссария не изолирован; возможна претрейн-инфляция).
**Следствия для слоя-1 (пред-варительно до слепого чтения владельца + чистовика на свежей новелле):** сцен-детекцию и carryover-машинерию для книг этого класса НЕ строить; приоритет размер/бюджет в выходных токенах (фертильность) + волновой параллелизм (направление чисто) + W1.5-банк (exp16). **Гейтящий эндпоинт — слепое чтение владельца** (пакет выдан; метрики номинируют, чтение ратифицирует). **Q4a** вынесен отдельной мини-сессией (~$2 вне капа, промт выдан). Деньги: **$12.79/$15, кап удержан**; спент верифицирован до цента, v1-леджер сохранён в провенансе без двойного счёта. **Процесс:** двухступенчатый мандат отработал образцово сессия поймала 9 багов до трат, рубеж-2 поймал артефакт до контракта (D37-класс), per-vote персист теперь стандарт судейских ригов.
## D39.8 — Слепое чтение exp15: планка НЕ пройдена ни одним армом; читатель подтвердил метрический null; битва качества переносится в дефект-классы (18.07, оркестратор №6). ✅
Гейтящий человеческий эндпоинт exp15 исполнен (владелец + 2 внешние слепые читки; un-blind ПОСЛЕ вердиктов; аддендум §7.9 `034660c`). **Ключ: V1=oracle · V2=q3a-src-carryover · V3=flat-A0=прод.** Вердикт: «≤2 претензии» не проходит никто; обе исторические претензии живы. **Несущее: дефекты РАСПРЕДЕЛЕНЫ по армам** (род верно только у прод-V3; «терем» избежал только carryover-V2; стих плоский у всех; ритм-спот худший у оракула-V1) читательский уровень подтверждает floor-null D39.7: армы различаются тем, ГДЕ ошиблись, не классом ошибок. Ранжирование читок (V1V3V2) объясняется НЕ рычагами когезии: V2-брак = eval-риг без прод-гейтов (санитайзер поймал бы 待遇/一步登天) + гипотеза «src-carryover больше исходника в контексте выше CJK-протечка» (к пере-прогону); V1-опознание = баг генератора пакета (хвост за границей референса).
**Ратифицировано:** (1) курс D39.7 подтверждён финально сцен-детекция/carryover-машинерия НЕ строятся для книг этого класса (оба уровня согласны: метрики + читатель); (2) **дефект-класс-леджер пере-прогона** (все пак/банк/гейт-уровня, НЕ нарезка): 时辰-юниты (НОВЫЙ класс: детерминированная конверсия единиц в пакет пары; «3 часа» вместо ~6 системно в 2/3 армов) · числа-масштабы 千万/数十万 (b1, свежая эмпирика) · gender-enforce полем сида (Бай Нинбин: hiddenmale-до-reveal, D19.3-класс пойман живьём) + род говорящего в диалоге (Ф2-annotator) · стих/аллюзии (пак-политика + сноски-lever) · регистр-лексикон (негатив-лист «терем»-класса); (3) **инструмент-фиксы слепых пакетов** (в промты будущих мониторов): авто-QA до человека, обрезка по общему финалу, 2-way для тонких контрастов, тир-структура претензий; (4) леджер Opus принят в сырьё. Чистовик всех exp15-выводов на вне-претрейн новелле (без изменений).
## D39.9 — Q4a «сильный переводчик» ЗАЛЕНДЕН: верность НЕ покупается на translate-стадии; слабое звено — редактор; pro-арм НЕ ратифицирован (18.07, оркестратор №6). ✅
Мини-сессия исполнила B-hybrid (санкция оркестратора: инструмент = детерминированные смысл-трапы exp14b-класса с исправленными правилами, floor-иммунный; парность байт-идентичная). Полный квадрат {flash, pro}×{сырой, +glm-редактор}×3 сида = 84 ячейки, 9 трапов. Верификация оркестратора: скорер пере-исполнен ($0) покрытие 26/27=26/27, COGS ×3.67, glm-ломки воспроизводятся; внутренний адверс-верификатор сессии поймал и отозвал ложный заголовок «pro омитит 6×» ДО сдачи (усечение finish=length + локатор-асимметрия HEAD_CHARS-класс, пойман рубежом authorreviewer).
**Ратифицировано:** (1) **flash-черновик уже верен на смысле** (25 fix/0 fail/27); pro не точнее (роняет d2-контрфактив), покрытие равное, цена ×3.67 **pro-арм НЕ ратифицирован**, «верность у переводчика» закрыта как направление для этой пары моделей; (2) **смысл-катастрофы рождает glm-РЕДАКТОР** (инвертирует →«разряд Б», 族长→«старейшина» из чистого черновика) путь D38 подтверждён третьим независимым способом: **слабое звено = редактор; свап glm→mistral/deepseek-pro — приоритетный арм пере-прогона**; (3) судейский пол на смысл-трапах 0.261 (>0.126 когезии) — выбор DET-primary валидирован: судьи на этот вопрос ответить не могли. Деньги $1.32/$2, вся траектория персистирована, pro — в долине; A-мини пропущен обоснованно.
**Дефекты инструментов (наследие exp14/14b, к $0-ре-аудиту):** (а) правила exp14b `rule_counterfactual`/`polarity_envy`/`b1` дефектны — исправленные оверрайды в `eval/exp15/q4a_traps.py`, при пере-чтении exp14/14b использовать ИХ; (б) **харнес `exp14_common.call` НЕ отклоняет `finish=length`** — усечённый выход проходит как валидный («0 ошибок» слеп к нему). **Диспозиция: платный пере-прогон exp14b НЕ нужен** (несущие вердикты D38 span-верифицированы независимо от правил при лендинге; Q4a-эмпирика бьёт в ту же точку), но заказан **$0-ре-аудит** (пре-задача exp16): пере-скорить сохранённые exp14b-выходы исправленными правилами + свип finish=length по exp14/14b-леджерам; флип любого D38-вердикта → errata-блок в D-лог. exp15-программа ЗАКРЫТА ПОЛНОСТЬЮ (D39.7 метрики · D39.8 чтение · D39.9 Q4a).
## D39.10 — exp16 (банк-майнинг W1.5) ЗАЛЕНДЕН: гипотеза №1 РАСЩЕПЛЕНА — код находит сущности (0.97), но канон-dst доставляет БАНКНОТА; ре-аудит exp14b чист (19.07, оркестратор №6). ✅
Программа §D research/20 исполнена полностью за **$0.0226/$10** (почти всё — детерминированный код + стенд). Верификация оркестратора: тюнинг-свипы пере-исполнены ($0, детерминированно — пороги/катастроф-скрин воспроизводятся); 6-осевой адверсариальный селф-ревью сессии (0 critical; MAJOR стоп-гейт пойман ДО спенда: truncation-гейт был length-only, а DeepSeek режет и с `insufficient_system_resource` → принимается только `finish=stop`).
**Ратифицировано:**
1. **WHICH — ПОДТВЕРЖДЕНА:** детектор V-C (паттерны+форманты+Палладий-канал) находит сущности банка за $0 детерминированно: **recall 0.97 (f≥3) / 0.965 overall на held-out** (ch1625), катастроф-скрин PASS, алиасы 2/2; паттерны закрывают частотно-слепое (f<3: 00.71). Спред-сигнал на инъектированных черновиках конфаунд (изолирован; на cold-start реален, но скромен).
2. **WHAT — ОПРОВЕРГНУТА для ко-оккуренции:** canon-recovery 0.200.68 < порога 70% chunk-Dice/PMI не извлекают dst из черновиков (вырождение на вездесущих/локализованных термах гранулярность, не базовая ставка). Имена доставляет Палладий; термы НЕТ. ** dst-канал = БАНКНОТА + облако+Палладий, НЕ ко-оккуренция** (вход бэкенд-дизайна слоя 4).
3. **Банкнота (идея владельца V4-п1) эмпирически оправдана в своей нише:** parse_fail 0%, переводчик сам эмитит dst (→«гу», blurb-термы, + не-сидовая 龙公); ниша = доставка dst, НЕ recall (код сильнее на f<3: 8/10 vs 5/10). Плюс показала Z2-дрейф без якоря (→«оборот»).
4. **Локальная 9B:** споттер на вебновеллах 0.895 (оговорка exp06 «0.98 на PD-классике» ПОДТВЕРЖДЕНА; код локаль локальный споттер не нужен); **Z1-верификатор слаб (wrong-catch 0.33**, принимает 族长→«старейшина») **Z1-адъюдикация в облако**, не локаль.
5. **Ре-аудит exp14b (§0): ядро D38 ДЕРЖИТСЯ** каждая локализуемая исправленным скорером ячейка совпала с ручной span-читкой D38 дословно; 2 расхождения = пустой span (`?`), не семантический флип. Свип 477 записей: 32 усечёнки, **ни одна не в несущей DET-ячейке** (gemini/kimi-армы дропнуты ещё в D38; новая находка D 2.1 = SOFT-усечёнка риг-гигиена, несущее не задето). **Errata к D38 НЕ требуется.** Errata coldstart_gen (stop-only) принята (само-ревью ДО спенда).
6. **Флаг (правило двух направлений):** пик-окно D39.7 (0104/0610 UTC, из офиц. сайта через владельца) vs документированный старый off-peak 16:3000:30 UTC сверить актуальную вендор-доку ДО следующих платных deepseek-прогонов (прогон exp16 шёл в дешёвом окне по обеим трактовкам; ни одну не абсорбировать без сверки).
**Итог: W1.5-дизайн для бэкенд-слоя 4 полностью подкреплён данными** детектор V-C (WHICH, $0) + банкнота (dst) + Палладий (имена) + консолидация §C2 + подпись владельца. Тачпойнты владельца (карта подписи/пол · мини-голд алиасов · precision@30) сайдкары готовы, не блокируют бэкенд-пак. **Исследовательская программа арх-ресета ЗАВЕРШЕНА** (exp15 D39.79 + exp16 D39.10) следующий шаг: бэкенд-пак слоёв 1+4 под доказанный конфиг.
## D39.11 — Директива владельца: стройке предшествует ДИЗАЙН-СИНТЕЗ с верифицированными алгоритмами; хендофф оркестратора №5; сессия №6 закрывается (19.07). ✅
**Процесс-решение владельца (ратифицирую дословно):** в бэкенд «просто так не бросаться». Между завершённой исследовательской программой (D39.1D39.10) и бэкенд-паком вставляется **проект-ресёрч сессия дизайн-синтеза**: синхронизировать ВСЕ находки (research/1920, exp15/16, аудит 08, дефект-классы слепого чтения) выработать чёткий план реализации «что и как меняем» с **разработанными и верифицированными алгоритмами** (self-проверки в каждом шаге) ратификация плана только затем промт бэкенда бэкенд реализует. Это финальное закрытие концерна «тактическое латание»: стройка только по ратифицированному плану.
**Хендофф:** оркестратор 6 закрывает сессию (арка D39D39.10 исполнена целиком: синк-аудит 7-слойная архитектура трек A построен трек B исследован exp15/exp16 закрыты с двухраундовой верификацией). Роль передаётся хендоффом 5 (`ORCHESTRATOR_SESSION_PROMPT.md` переписан начисто; 4 в архив). **Первый deliverable №5 — промт дизайн-синтез сессии.** Висящие тачпойнты владельца (карта подписи/пол · мини-голд алиасов · precision@30 · старые решения) и опция jaru-реплики в хендоффе.
## D39.12 — План реализации (`architecture/11-implementation-plan.md`) РАТИФИЦИРОВАН после трёх рубежей; бэкенд-пак — ЕДИНОЙ сессией (19.07, оркестратор №7). ✅
Дизайн-синтез сессия исполнила D39.11-промт (выдан `766a60e` после 20-находочного адверсариального ревью самого промта): **`docs/architecture/11-implementation-plan.md`** (1066 строк: WS1 волновой раннер · WS2 чанкер-бюджет+edit-единицы · WS3 Go-майнер W1.5 · WS4 банкнота×12 · WS5 дефект-чекеры+пакет-данные · WS6 армы; §7 порядок · §8 манифест единого resnapshot · §9 диспозиции L1L8+H5H19+парковки · §10 реестр 14 вопросов владельцу · §11 самопроверка · §12 quirks-заготовка) + `eval/design11/` (7 $0-скриптов, шесть верификаций PASS, детерминированы).
**Верификация трёхрубежная:** (1) **ревью-2 оркестратора** (соло по лимит-констрейнту владельца полное чтение + file:line-спот-чеки по HEAD исполнением): 8 находок [3 MAJOR: противоречие дефолтов `EditCeilingOut` 80003200 · скоуп подписи W1.5 не запинен · инъекция W2 для edit-единиц не специфицирована] + 2 замечания владельца [per-model rate-guard mistral (~48% retry-fails, exp15 §7.6 REV.2) · полы per-editor-model/per-материал] + Q9-провенанс [клейм D39.7 «официально» через владельца без пина; свежий чек 19.07: офиц. прайс ФЛЭТ ×2 остаётся риск-пином до ре-чека 24.07]. (2) **Пост-фикс 7-агентный адверсариал сессии** (мульти-агентный рубеж, которого ревью-2 не гоняло): все 11 фиксов подтверждены, 5 новых находок впитаны **F8 ПЕРЕПИСАН** (моя формулировка «сайзить от est_out» была неверна: `stagerun.go:87-90` уже сайзит редактора от черновика `prev`) · F1 пере-симулирован (**ратифицированный дефолт 3200 25 глав = 37 edit-единиц**, фикстура) · **mined-write-путь** (`loadGlossarySeed` хардкодит `Source:seed` дельта персистится отдельным путём со штампом `Source:mined`; промоут 甲乙丙丁/四代族长 = pre-run reseed, НЕ W1.5) · снапшот-loudness реконсилирован к выделенному `render-format-version` · F6 усилен (2-я DC3-сработка = narrative-coref на hidden довод к Ф2 сильнее). (3) **3-агентный подтверждающий пас:** 2 резидуала реконсиляции закрыты. Спот-чек внесения при лендинге исполнением (36 маркеров, все фиксы найдены grep'ом).
**Ратифицирую как дизайн-оф-рекорд:** пер-волновой снапшот (`base-bank` = approved `Source∈{seed,ruby}` / `enriched-bank` = все approved) + **инвариант секвенирования** (W2 никогда не пере-рендерит draft-стадию; черновик по `final_hash`) «переоплата ОДНА» доказуема при обоих состояниях PostcheckGate · `EditCeilingOut=3200` · srcdst-формат констрейнт-блока редактора (закрытие D30.1) · лемматизатор дефолт B (дроп Палладий-подканала, пере-пин 古月22, катастроф-скрин PASS) · банкнота 12 точек (`banknoteSnap`, re-point ПОСЛЕ резолва эскалации) · DC3-инъекция всех трёх состояний вкл. hidden-мандат (hidden-чекер Ф2) · DC5 пак-локусы (детерм. детекция 74%/42% FP не лендится) · mistral rate-guard (quirks-запись внесена из §12). **Гейтнутые армы (4, стройка сердцевины не ждёт):** крупная edit-единица >3200 (платный Q2a, объединить с полигон-прогоном) · качество свап-арма (платный полигон) · DC-чекеры landing ($0-FP на свежем прогоне) · mistral-арм (rate-guard). Развилки §10 — у владельца, стройку НЕ блокируют (дефолты консервативны; смена решения = конфиг/аддитив).
**Решение владельца (19.07): бэкенд-пак — ОДНОЙ сессией** (не паки 2/3/4 порознь), блоками A/B/C/D с чекпойнт-ревью между; свободы сессии: рефакторинг/перенос кода разрешён (архитектурная чистота, без велосипедов), временные тесты, багфиксы по пути со скоуп-пометкой; Go-каноны; неконсистентности — даблчек всеми тулзами + эскалация; $0 к провайдерам. **Промт выдан: `BACKEND_PLAN11_SESSION_PROMPT.md`.** Очередь после пака: приёмка оркестратора (рубеж-2) → единый resnapshot (§8) → пере-прогон 310 глав (армы редактора) → чтение владельца (планка 2 претензии). Спент-промт дизайн-синтеза архивирован с баннером.
## D39.13 — Приёмка пака-11 Block A: WS2 + WS1a/b/c-инфра + WS4-ядро ЗАЛЕНДЕНЫ; волновой исполнитель и WS3/WS5 — резидуал с дизайнами (19.07, оркестратор №7). ✅
Бэкенд-сессия исполнила `BACKEND_PLAN11_SESSION_PROMPT` частично — с ЧЕСТНЫМ резидуалом вместо сломанного суита (мандат промта): **сдано и залендено****WS2 целиком** (бюджет чанкера в ВЫХОДНЫХ токенах `est_out=1.1978·cjk+0.3852·other` на реальных `unicode.RangeTable`; edit-единицы; `Chunk`+`EstOut/OversizedSentence/EditUnitID` аддитивно; мега-предложение passthrough+флаг; снос `STMDepth`/`OverlapTokens`; **src→dst констрейнт-блок редактора** [закрытие D30.1] + выделенный `render-format-version`; `segmentationSnap`; `chunkerVersion` v4→v5; golden re-capture) · **WS1a** (eager-build клиентов + read-only `client()` — гонка `runner.go:171-181` закрыта) · **WS1b** (пер-модельный rate-guard `ratelimit.go`: семафор+пейсинг конфигом `models.yaml`, транспорт-ось, обёрнут вокруг единственного provider-вызова) · **WS1c-инфра** (base/enriched `MemoryVersion`-split: base = все approved КРОМЕ `Source:mined`, домен-сепарирован; enriched байт-идентичен прежнему фолду — текущий снапшот не двигается) · **WS4-core** (`banknote.go` — байт-верный порт `banknote.py`, 7 инвариант-тестов) · WS6-частично (mistral `rate_limit`-конфиг).
**Верификация оркестратора — ПРЯМАЯ, исполнением:** `go build/vet/test -race` зелёные (прогнал сам); пины свежим `-count=1 -race` вербозно (27 тестов PASS: чанкер/rate-guard/memory-split/render-блок/банкнота/golden); **независимая репликация masked-golden-диффа** — все категории объяснимы (chunker v4→v5 · снятые stm/overlap · новый `segmentation{1797,3200,1.1978,0.3852}` · `render_format_version` · src→dst-блок; 12-hex токены = хеш-производные эхо fake-модели); построчное чтение несущих диффов (memory/snapshot/models/stagerun/chunker + оба новых файла) — семантика соответствует плану. Сессионный 9-агентный чекпойнт-адверсариал Block A: 6 находок → 3 confirmed (пофикшены: 2 doc-коммента base/enriched + gofmt), 3 refuted обоснованно.
**Ратифицированные девиации (обес эскалация-нотой сессии, принимаю):** (1) **edit-единица = grouping ЦЕЛЫХ draft-чанков** (не независимый para-pack): эмпирически те же 37 единиц / 0 straddle на корпусе, а по построению — гарантия чистой W2-реконструкции (draft-границы и так абзацные — сильнее плановой формулировки, не слабее); (2) **base-bank = «все approved кроме mined»** (вкл. Source:auto/ruby) — точная реализация ИНТЕНТА §1(в) (стабильность W1 сквозь W1.5, которое только добавляет mined); домен-сепаратор base≠enriched (W1-джоба никогда не адресуется к W2-чекпоинту) — верное усиление.
**Честная калибровка: мульти-агентный рубеж-2 оркестратора при ЭТОЙ приёмке не гонялся (лимит-режим владельца) — регистрирую ДОЛГОМ** (прецедент D39.2); гасится при приёмке продолжения-пака вместе с его ревью. **Резидуал R1R5** (волновой ИСПОЛНИТЕЛЬ W1/W1.5/W2 + пер-волновой снапшот-wiring · WS3-майнер · WS4-12-точек · WS5-чекеры · арм-конфиги) — точные дизайны в `backend/PACK11_REPORT.md` §Резидуал; **промт BACKEND_PLAN11 остаётся АКТИВНЫМ со статус-баннером** (дисциплина частично-отработанных промтов) — продолжение-сессия стартует по нему + отчёту. Очередь без изменений: продолжение-пак (R1R5) → приёмка (с погашением долга рубежа-2) → единый resnapshot → пере-прогон → чтение.
## D39.20 — ПЕРЕ-ПРОГОН исполнен и прочитан: планка не пройдена, но дефект-классы механизируемы; mistral исключён как несущий редактор; итерация №2 дёшево (23.07, оркестратор №7). ✅
**Операционно — все несущие D39-инварианты подтверждены живыми деньгами** (`rerun2/RERUN_REPORT.md`): один `--resnapshot`; драфт оплачен один раз ($0.0109) и резюмлен за **$0.000000 на всех 3 армах** (0 flash-вызовов); echo=0; finish=stop 100%; майнинг-стоп→подпись→reject-set отработали (2 decline + 1 promote + 2 бонус-гу владельца); $6.63 &lt; $15 (судья $6.46 — доминирующая статья).
**Три независимых сигнала качества (НЕ слиты, по правилу несфабрикованной сходимости):**
1. **Судья-риг D39.7** (floor 14/14 tie = шум 0; 56 игр/арм): dspro **0.679** &gt; glm 0.589 &gt;&gt; mistral **0.232**; катастроф-скрин: mistral CRITICAL (пропуск абзаца о природе гу, числа 千万→«тысячи», перенос вины 4-1, потеря 蛊师), glm/dspro MAJOR (аварии выпуска).
2. **Слепое чтение №1 (ChatGPT, сводное):** A/B/B/A/A → dspro 2 · mistral 2 · glm 1; лучшая сборка ~7.8/10 «хороший редакторский черновик».
3. **Слепое чтение №2 (Fable, гигиена-первым):** C/B/B/A/C → mistral 2 · glm 2 · dspro 1; «планку ≤2 стабильно не проходит ни одна рука».
**Триангуляционная находка:** чисто-художественные выборы обоих читателей **ИДЕНТИЧНЫ** (A/A/B/C/A) и маппятся в **mistral 4/5** — тот самый арм, что у судьи-верности последний с критическими. **Анти-корреляция «гладкость↔верность» доказана трижды независимо.**
**РЕШЕНИЯ:** (а) **планка ≤2 претензии НЕ пройдена** — пилот Ф2.5 этим чтением не открывается; (б) **mistral ИСКЛЮЧЁН как несущий редактор** (критические смысловые аварии, которые детерминированные гейты принципиально не ловят); его голос — north-star дискурс-промпта, не рука; (в) **dspro-vs-glm НЕ ратифицируется** этим чтением (судейский зазор 17:11 близок к шуму; сводные выборы читателей разошлись; дефект-классы обоих механизируемы) → решается итерацией №2 ПОСЛЕ механизации, дёшево (драфт $0, edit ~$0.08/арм + судья).
**Дефект-классы → механизмы (маппинг полный, ложится в пак-13 «выпускной QA» + банк):** (1) 时辰=«час» — системный драфт-баг всех рук (гл.1: 三个时辰=6ч→«три часа») → промпт/глоссарий-строка + детерминированный юнит-чекер; (2) масштабы/проценты (千万, 数十万, 六成六=66%→«6,6») → расширение число-дрейф-чекера; (3) сломанные словоформы/латиница (again·«лять»·«войть»·«Вперди»·«глава клан») → broken-word/latin-residue чекеры; (4) заголовки-хаос (CJK-strip ест 第N节; огрызки « :») → заголовок-шаблон пайплайна + санитайзер-фикс; (5) терм-семейства (元-корень един, 资质=канон, 赤城 склонение, 学堂家老) → банк-дельта; род «гу» · меры (шичэнь-vs-часы) · политика стихов · 春秋蝉 — решения владельца; (6) крэш «карта→mined_delta» при терме-уже-в-сиде (UNIQUE без `source`, `store/migrate.go:202`) → бэкенд-фикс.
**Гигиена:** auto_qa.json был ключёван именем модели → частичная деанонимизация гл.1 для читателя №2 (зафиксировано им честно); полигону: авто-QA впредь ключевать слепыми метками. Floor-замер A0↔A0 interim ратифицирован. Читатель №2 зафиксировал посторонний policy-блок в своём транскрипте (инъекция-подобный) — на вердикт не повлиял, дисциплина «фиксировать, не исполнять» отработала.
**Очередь:** пак-12 транспорт-гигиена (гейт ОТКРЫТ — платный путь завершён) ∥ промт пака-13 → стайл-решения владельца → банк-дельта → **итерация №2** (edit dspro+glm на том же драфте + судья-lite) → чтение-lite → выбор редактора → пилот Ф2.5.
## D39.21 — Стайл-решения владельца пост-чтения + директива аудита банк-инъекции (23.07). ✅ [ТЕЛО ВЫНЕСЕНО 26.07]
**Содержание перенесено по гардрейлу «книго-каноны → данные книги» (урок 26.07: сессии запинались о книжный канон в контракте движка).** Книжные каноны (род «гу», 资质) — `books/gu-zhenren/CANON-NOTES.md` (вне git, живут с книгой); пара-политики (меры/时辰=2ч, стихи смыслом) — данные пары/промпты, исполнены паками 13/18 и мини-прогоном; директива аудита банк-инъекции — исполнена паком-13. В D-логе книжного канона больше нет.
## D39.22 — Решение владельца: эксперимент пере-прогона ЗАКРЫТ, итерация №2 ОТЛОЖЕНА, редактор = deepseek-v4-pro (интерим), курс — разработка бэкенда (23.07). ✅
**Решение владельца:** выделенную итерацию №2 не гонять; эксперимент считается пройденным; курс — дальше разрабатывать бэкенд. **Фиксация редактора (оркестратор, по совокупности):** слепое чтение №2 единой руки НЕ короновало (2/2/1 при перетасованных метках) → интерим-редактор = **deepseek-v4-pro**: судья №1 (0.679, floor-шум 0) · лучшая проза+глоссарий · дефекты чинибельного класса (заголовки/CJK-strip → пак-13) · ×2 дешевле glm. glm-5 — резервный арм (конфиг живёт), mistral — вон (D39.20). Выбор отменяем одним арм-конфигом. **Вопросы итерации №2 НЕ отменены — едут бесплатным довеском в следующий естественный платный прогон** (масштаб-прогон / пилот Ф2.5); отдельной петли нет. Планка ≤2 — на следующее чтение по ходу разработки. **Дефолт-редактор прод-конфига → deepseek-v4-pro при лендинге пака-13** (wire всё равно двигается — тот же resnapshot). **Курс бэкенда после паков 12/13:** масштаб целой книги (волны/майнинг-каденс/потолки/ETA на сотни глав) · канал B (18+) вживую в волновом стеке · Ф2-механизмы (голос/состояние D21 · native-Gemini судья) · ja→ru §B5. Решающая точка неизменна — пилот Ф2.5 (блокеры не бэкендовые: корпус · билингв-якорь D25.9-Q1 · судья-дублёр D22.6).
## D39.23 — Пак-15 «структура+форма» РАТИФИЦИРОВАН: пакетный сплит по измеренной связности, поправка §1 норматива, конфиг-слой пары (24.07, оркестратор №7). ✅
**Триггер:** харнес-сверка пака-14 (crush ~71 фокус-пакет / провайдеры-данные; GalTransl/AiNiee — data-мандат, но текут языком в тела чекеров = наша вылеченная утечка) + **ИЗМЕРЕННАЯ карта связности** `internal/pipeline` (отчёт пака-14, прил. A, с поправкой ревью-шапки: ведро «distinct/matches 8» — греп-артефакт; miner→membank = 32 вхождения / 14 кодовых = шаред-субстрат, не API). §1-эскейп-тест («отдельная подсистема с узким API») прогнан против фактуры — его проходят miner/checks/membank/chunk. Не гонка за индустрией: crush-масштаб НЕ эмулируется, сплит только по измеренному узкому API (4 подсистемы + база).
**Решения:** (а) **сплит**: порядок — хойст общего субстрата (`internal/text`: NormalizeSourceKey/RunesEqual/TokenizeCyrillic + пакет value-типов Chunk/MinerChunk/SegBudget/Document) → `internal/miner``internal/checks``internal/membank``internal/chunk`; драйвер+инфра остаются композит-корнем `internal/pipeline`; каждый этап лендится верифицированным (build/test/golden/парити) до следующего; экспорт-поверхности — прил. B отчёта пака-14 как отправная точка. (б) **§1 `12-go-style-notes.md` амендирован**: file-count не смелл — остаётся; предписан ратифицированный сплит. (в) **форм-фиксы тем же паком**: Export()-декомпозиция с ОБЩЕЙ derivation member-drop (сейчас байт-согласие по комменту) · sticky-сентинел → поле · RequestHash 13 позиционных → struct · resolveChunkState 5-кортеж → struct. (г) **конфиг-слой пары**: пар-калибровки (fertility/len_ratio_bounds) из ран-конфигов → `configs/pairs/<пара>`; промпт-резолв конвенцией `prompts/<пара>/<роль>.md` вместо перечисления `prompts:`-мап (fail-loud сохраняется; `prompt_override` для армов; wire-нейтрально — байты/SHA промптов не двигаются). (д) **остаток пака-14**: тесты Палладия (unknown-category/required-fail) · fail-loud оверлея уровнем выше (пропавший overlayRoot = ошибка — явный opt-in; чужие root-файлы; категория-опечатка в overlay) · **unionStringMap: коллизия ключа base↔overlay = громкая ошибка** (override не ратифицирован; пересмотр — когда книге реально понадобится) · empty-probe гард lintMagnitudeScale · терминаторы chunker/coverage → одна точка истины · `第` → cjk-section. **НЕ в паке:** diff-редактор (слой 3) · isRuTarget/таргет-тред (канал B) · translit-interj (DEFER D39.16). Инвариант — байт-точность (golden байт-идентичен · парити EXACT · wire нетронут). Промт: `BACKEND_PACK15_STRUCTURE_SESSION_PROMPT.md`.
## D39.24 — Дизайн пака-16 «слой-3 diff-редактор» РАТИФИЦИРОВАН с перестановкой §15.1: всё $0-е строим, платный вызов за `enabled: false` до замера остатка (25.07, оркестратор №7). ✅
**Отчёт:** `docs/archive/reports/PACK16_DESIGN_2026-07-25.md` (§014 дизайн + §15 пост-панельная ревизия отдельным слоем). Принят ЦЕЛИКОМ с поправками §15.2: (A) ре-гейт = ПОЗИТИВНЫЕ пост-условия по классам + анти-удаление (голое «отсутствие флага» удовлетворялось удалением спана); (B) счётчики починок — из durable-чекпойнтов `role='repair'` + namespace `final_hash` (миграция v11 ОТМЕНЕНА; self-healing на резюме); (C) пересекающиеся спаны отбрасываются + ассерт непересечения перед сплайсом; (D) `errReserveCeiling` в ремонте деградирует как опциональный хоп (иначе терялась строка оплаченной редактуры); (E) `classify` — шестой гард ответа ремонта (ловит soft_refusal, проходящий пять гардов).
**Замер §15.1 (реплицирован панелью и сессией независимо; таймлайн сверен оркестратором):** профилактика 时辰/成 (`2f91b04`, 24.07 03:19) легла ~3 ч ПОСЛЕ снятия цифр пере-прогона (24.07 00:09) → на прод-арме dspro всего 2 кандидата/7 юнитов, из них 1 — FP-гипербола (杀了千万人); поверхность `shichen_re` = 120/266 (半个时辰 — 32% — слеп); живой FP `ru_hours_re` («три части» → актуатор переписал бы в «шесть часов» И правка прошла бы ре-гейт). → **Порядок работ:** (1) `checks.RepairCandidates` — позиционная детекция, вердикт-нейтральная (`CheapGateVersion` НЕ бампится — доказательство исполнением: golden байт-идентичен + счётчики фикстур не сдвинулись); (2) read-only скан остатка по классам ($0 на любой прогнанной книге); (3) два пар-данных фикса — правая граница `ru_hours_re` + 半个时辰 в `shichen_re` (обязательны ДО актуатора; сдвиг версии пака = version-only, классифицировать при сдаче); (4) машинерия ремонта §D3D5 с §15.2 — под `enabled: false`; **ВКЛЮЧЕНИЕ платного пути = отдельное решение владельца по замеру остатка на пост-профилактическом прогоне** (открытая петля; заменяет mini-live гейт D6).
**Ратифицированные отклонения (§15.3):** промпты ремонта `prompts/<пара>/repair/<класс>.md` (ключ = класс дефекта, не роль стадии; fail-loud только для применимых классов пары) · тип ошибки доезжает ВЫБОРОМ файла промпта, не интерполяцией англ. диагностики (языковая утечка) · запрет additive-провайдера в repair-роли (least mechanism вместо нового кноба). **Унаследованный ru-target-долг** (isRuTarget-колл-сайты · TokenizeCyrillic · множитель ×2 в Go) зафиксирован ОГРАНИЧЕНИЕМ: класс работает на новой ПАРЕ данными, на новом ТАРГЕТЕ — нет; НЕ чинить этим паком (едет с канал-B/таргет-работой). Метод фазы 1 (эхо → 7 инвентаризаций → панель 6 линз → 13 скептиков «опровергни по коду» → §15-ревизия отдельным слоем, тело не переписано) — образец для будущих дизайн-фаз.
## D39.25 — Архитектурная директива владельца: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities; refusal-обработка причино-агностична (25.07, оркестратор №7). ✅
**Директива (владелец, 25.07, при ревью промта пака-17):** не городить 18+-костыль. Движок несёт ОДИН generic-механизм: **content-label** книги/глав (данные книги — «пометочка на фронте») × **capability провайдера** (данные models.yaml) × выбор цепочки/политика (конфиг). «adult» — ЗНАЧЕНИЕ данных; Go-идентификаторов/веток «18+/adult/канал B» в движке нет. Мысленный тест второго лейбла: archaic-register (D19.1-эхо grok на архаике — та же фигура «свойство контента × способность модели») обязан добавляться данными. **Проактивный роутинг по лейблу = ToS-гигиена, не оптимизация**: провайдер без способности не должен ПОЛУЧИТЬ контент (DeepSeek/Anthropic без adult-capability — строки данных), независимо от того, откажет ли. **Refusal-обработка generic**: D12-таксономия детектит ФАКТ отказа (hard/soft), причина (эротика/политика/прочее) — только операторская диагностика; путь один — регенерация → эскалация по цепочке лейбла → flag+skip (D2); параметризуется политика цепочки в конфиге, не код. **Честно 18+-специфичное (вне движка):** L3 = политика ВХОДА (человеческий уровень, спека D22.7 у владельца) · ToS-флаги = данные · пометка в экспорте/ридере = фронт. Продуктовое имя «канал B» остаётся в доках; инженерная форма — лейблы. Норматив: `12-go-style-notes.md` §0 п.6; промт пака-17 переписан под эту форму ДО запуска сессии.
## D39.26 — Дизайн пака-17 «generic content-labels × provider-capabilities» РАТИФИЦИРОВАН В РЕДАКЦИИ §14: лейблы ВНЕ хешей (wire-судьба = резолвнутая модель пер-стадийно), резолв ДО валидации, один хоп из цепочки лейбла; вокабуляр лейблов и редактор — владельцу (25.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/PACK17_DESIGN_2026-07-25.md` — §013 дизайн + **§14 пост-панельная ревизия отдельным слоем** (метод D39.24: эхо → 7 инвентаризаций → 11 адверсариальных агентов → ревизия, тело не переписано). Сессия сама отменила три своих решения и перевернула две рекомендации. **Принято в редакции §14: тело §013 читать ТОЛЬКО через неё** (при расхождении побеждает §14).
**Верификация приёмки (пропорциональная, инлайн-исполнением — всё пере-выведено мной, ни один клейм не принят с чужих слов):**
- **Денежный кейстоун M1 ре-деривирован независимо** (питон-канон по `book.go:214-228` против `testdata/golden/capture.golden:6`): все пять дайджестов совпали посимвольно — сегодня `c2021b1b…cab0df` · поле убрано `58883ff5…b39822` · `content_labels:null` `29a3031d…8c87b` · **omitempty-хвост при пустых лейблах = байт-в-байт `c2021b1b…`** · с `["adult"]` `0e2f3111…c9d2c`. Заморозка `"adult":false` на 7-й позиции канона — единственный путь без пере-оплаты стенда (Ф7: замер остатка пака-16 поедет на этих же книгах).
- **Фантом-гард D-ссылок (норма 9): ни одной фантомной** — существуют и говорят заявленное D2 · D3 · D4 п.1 · D6.2 · D12 · D13.6 · D14 п.1 · D15 п.2 (+спека `backend/docs/D15.2-*.md`) · D19 п.1 · D19.1 · D20.2-Q1/Q2 (`:245`) · D20.4 (`:247` — read-only аудит без ключей действительно в фикс-листе) · D22.5/D22.6/D22.7 (`:276`) · D25 п.4 (`:310`) · D30.1 · D39.20/22/24/25.
- **Спот-чеки несущих фактов (мои исполнения):** единственный `Complete` в проде `stagerun.go:442` + единственный `r.client(` `:410`, failover без вызывающих · `repair.go:384` синтетическая стадия теряет `Channel` (⇒ ассерт обязан ключеваться на данных книги) · `Stage.Channel` = НОЛЬ рантайм-читателей (только `pipeline.go:341,549,569`) · `Escal.Chains` = валидация `pipeline.go:578` + `CheckKeys` `models.go:508` · `BriefHash` в ОБЩЕМ билдере обеих волн при пер-стадийном `stageSnap` с волновым фильтром `waveStages`**§14.1 верна** · `reachableModels` = сырое `st.Model st.EscalateTo repair(ТОЛЬКО при `Gates.Repair.Enabled`)`**§14.2 верна** · `escMu` через `defer` + пин `waverun_test.go` «перерасход ≤ 1 хоп» (бюджет 0.001 < хоп 0.00182, `workers:4`), `Waves.Workers` дефолт 1 **§14.3-отмена лока-на-итерацию верна** · `chains.default[0]=deepseek-v4-pro` = `escalate_to` драфта (`pipeline-c1.yaml:109` vs `:51`) неограниченный дедуп упал бы на шиппинге · golden пинит `esc_model="fake-fallback"` на ОТКАЗАВШЕМ хопе (`capture.golden:24`) **§14.6.1-вынос верен** · `style_check_version` фолдится БЕЗУСЛОВНО (payload `capture.golden:3`) **§14.6.2-условие верно** · ровно 13 файлов вне git несут `adult:` + `example/book.yaml:9` терпимость отставки обязательна · порядок `runAttempt`: `GetCheckpoint:337` `Reserve:379` `client:410` `Complete:442` **§14.5.6 верна** (реплей ничего не отправляет; ассерт до резерва).
- **Неточности отчёта, выводов не меняющие:** манифест «`accept-rebill` грепом пусто» 9 попаданий, ВСЕ в `backend/docs/D15.2-*.md` (в коде/CLI действительно нет, клейм в силе); «23 сайта `LoadPipeline`» включает строку определения (1 прод + 21 тест).
**РАТИФИЦИРОВАНО (моё решение, редакция §14 целиком):**
1. **Лейблы НЕ входят ни в один хеш (§14.1) — и это разрядка D20.2-Q3** первый рантайм-потребитель `Adult` обязан ЯВНО назначить слой»): назначенный слой = **РЕЗОЛВНУТАЯ модель стадии + её wire-фолд, пер-стадийно и пер-волново** (`stageSnap`); лейбл, маршрутизирующий только редактора, двигает ТОЛЬКО edit-волну оплаченный драфт резюмится за $0. Провенанс набора лейблов шапка отчёта (B6.1), не хеш. Канон brief заморожен: `"adult":false` остаётся 7-м полем, omitempty-хвост НЕ нужен. Шестое условие байт-идентичности принято: `stageSnap.Escalate*` сохраняют имя/тег/позицию/правило заполнения, любой фолд хопов строго аддитивный указатель+omitempty.
2. **Порядок РЕЗОЛВ → ВАЛИДАЦИЯ → все читатели видят резолвнутое (§14.2).** Лейблы приходят в `LoadPipeline` тем же швом, что `pair`; резолвнутые поля `yaml:"-"` (конвенция `PromptPath`); «достижимое» лейбл-зависимо (`st.EscalateTo`/`chains.default` под лейблом НЕДОСТИЖИМЫ); дедуп применяется только к цепочкам активных лейблов ИСПОЛНЯЕМОГО конфига (поправка §14.8.4: `chains.adult` в 5 конфигах, `pipeline-c2.yaml:66` kimi, но C2 неисполняем `CheckRunnable`); резолв работает и на read-путях (`export.go` пере-считывает снапшот).
3. **Q4 = B3-A (переворот сессии принят): ОДИН хоп = `chain[0]`**, `len(chain)>1` = громкая ошибка «мульти-хоп не построен» (никакого тихого усечения), `escalation.budget_usd > 0` ОБЯЗАТЕЛЕН на загрузке для route-лейбла (иначе «гейт, который не может выстрелить»), `escMu` как сегодня. Полный обход цепочки остаётся спроектированным 5 + 6 добавленных форм) и ждёт данных.
4. **Q1 = КНИГА** по аргументу §14.4 (**гарантия против стоимости**): авто-скрина нет и не будет в этом паке, поэтому пер-главная разметка сводит ToS-гарантию к точности ручного чтения. `labelsFor()` объявляется БЕЗ аргумента с ассертом книго-константы форма не обещает того, чего механизм не держит. Диапазоны глав (идиома `until_ch` реальна) остаются данно-формным расширением и возвращаются только вместе с решением владельца принять ручной риск.
5. **Q3 = D12 сохраняется** (отказ РЕДАКТОРА под лейблом терминален, flag+skip без хопа дрейф стиля дороже потери юнита). **Q5 = `chains.default` остаётся мёртвым** в этом паке. **Q6 = механизм `terminal` строим, значение не заводим**; из примера реестра `prohibited` УБРАТЬ 14.8.2 два из трёх выходов будущего L3 не воспроизводить в примере), будущий L3-скрин подключается НАЗВАННЫМ пер-лейбловым хуком политики, а не через `terminal`.
6. **Вокабуляр и форма данных (§14.5):** книга `content_labels:`, провайдер/модель `accepts_labels:` (РАЗНЫЕ ключи: свойство контента разрешение получателя); пер-модельный оверрайд `*[]string`, только СУЖАЕТ (nil = наследовать, указатель на пустой = «ни одного», модельный провайдерского); реестр политик УПОРЯДОЧЕННЫЙ СПИСОК (map-порядок в Go не хранится), «первая политика, претендующая на стадию, выигрывает», равное притязание = громко; эффективный список хопов упорядоченное объединение с дедупом ПОСЛЕ резолва. Отставки `permissive` (громко при наличии) и `adult:` книги (громко только на `true`; `false`/отсутствие терпимо 13 файлов вне git) Go-идентификатор БЕЗ слова adult, тег = замороженный ключ данных.
7. **Отставка `Stage.Channel` — В ТОМ ЖЕ диффе (§14.8.1):** канал, его enum и блок изоляции D4.1 уходят вместе с `permissive`, иначе `providerPermissive` возвращает false ВСЕГДА и выживший `channel: adult` даёт операторский тупик; два существующих adult-теста перепи́сываются/удаляются тем же диффом (иначе семантически ложны).
8. **Рантайм-ассерт — в `runAttempt` ДО `Reserve`, через `clientFor(model, labels)`** (компиль-энфорс: ни один будущий путь на провод не получит клиента, не объявив контент). Место ассерта НЕ переносится до `GetCheckpoint` (реплей провайдеру ничего не отправляет ToS-экспозиции нет; перенос отнял бы $0-реплей); негативный тест обязан гонять СВЕЖИЙ вызов и ассертить идентичность ОШИБКИ, а не дельту `spend`.
9. **Отказы загрузки — за `forWrite`, резолв — всегда (§14.8.3):** книга, помеченная ПОСЛЕ оплаты, обязана остаться читаемой (`status`/`report`/`export` = $0, D20.4), иначе единственный выход снять лейбл, то есть тихий обход; на read-пути то же самое = громкое предупреждение + флаг в шапке отчёта.
10. **`failover.go` УДАЛИТЬ в этом паке** (моё решение, отклоняю рекомендацию §14.5.8 «дать конструктору лейблы»): вызывающих нет, файл несёт nil-panic-дыру D4 п.1 и пересылает тот же запрос другому провайдеру ровно то, что лейбл-механизм запрещает; если localcloud фолбэк когда-нибудь понадобится, он родится под лейблами с первой строки. Удаление тестов файла объявить в цензе `^func Test` исполнением. Гард-тест шва остаётся: `\.Complete(` вне `internal/llm` и вне `stagerun.go` пуст, с ИМЕНОВАННЫМ аллоулистом `live_conformance_test.go` (второй сем реален, §14.5.7).
**ДОБОР ОРКЕСТРАТОРА — три находки, которых нет ни в теле, ни у панели (все проверены моими исполнениями):**
- **(A) Один лейбл `adult` схлопывает ратифицированную развязку D14 п.1 (HIGH, данные+продукт).** D14 п.1: ToS DeepSeek §3.4(5) запрещает *sexually explicit*, а «для violence-фрагментов (не sexually explicit) DeepSeek остаётся допустим» верифицировано по первоисточнику. Единственное значение «adult» гонит violence-тяжёлую книгу (наш приёмочный класс) ЦЕЛИКОМ мимо DeepSeek: переводчик mistral, редактор не-dspro, то есть пак тихо пере-решает ратифицированного интерим-редактора (D39.22) и умножает выходную цену. Механизм это УЖЕ держит данными (упорядоченный реестр + `label_models` + две цепочки), поэтому вокабуляр (`violence` / `sexually-explicit` против единого `adult`) решение владельца, а не сессии; ратифицирую его как ОБЯЗАТЕЛЬНУЮ развилку перед заводкой первой лейблованной книги, но НЕ блокирую стройку (значение = строка данных).
- **(B) `reasoning:"off"` тихий выход из обоих гейтов на аддитивном провайдере (MED-HIGH).** Отчёт §4 утверждает, что grok-редактор «обязан объявить `reasoning_max_tokens>0`, иначе загрузка падает». Проверил: гейт `pipeline.go:541` внешним условием `st.Reasoning != "off"` а шиппинг-стадия edit объявляет ровно `reasoning: "off"` (`pipeline-c1.yaml`, no-op для dspro). Для grok это НЕ no-op: `capabilities.reasoning {control: effort, off_effort: none}` (`models.yaml:188-190`) шлёт явный `reasoning_effort:"none"` деньги как раз честны (`AdditiveReasoningTokens` = 0 законно), но мы попадаем в ратифицированную ЭХО-зону D19.1 п.2 reasoning-off + плотный CJK = свойство класса моделей, DeepSeek и ОБА grok-слага») при билингв-редакторе, который видит плотный исходник, а гейт `echoMineViolation` физически не может выстрелить: `echoes_when_thinking_off` стоит ТОЛЬКО у deepseek (`models.yaml:38`), обобщение D19.1 в данные не доехало. Итог: какую бы ветку ни выбрали для лейблованного редактора на аддитивном провайдере, ОДИН гейт молчит. **Закрытие обязательно** (форму выбирает сессия и аргументирует): либо `echoes_when_thinking_off: true` у xai как ДАННЫЕ тогда `off` становится громким, либо аддитивный гейт расширяется на резолвнутую модель независимо от `off`.
- **(C) Рейт-гард деградирует МОЛЧА в «неограниченно» (MED).** `rateGuard()` возвращает nil для модели вне `reachableModels`, а nil трактуется как без-лимита (`ratelimit.go:92-97`) в отличие от `r.client`, который падает громко. Лейблованный переводчик ровно `mistral-large-2512` с `rate_limit.max_concurrency: 2` (~48% retry-fails под N-∥). Расширение `reachableModels` (п.2) закрывает это механически, но приёмка обязана утверждать гарды ПОЗИТИВНО (тест, что резолвнутая лейблованная модель получила свой гард), а не выводить из общего фикса.
**НА ВЛАДЕЛЬЦЕ (деньги/продукт/18+ — стройку не блокируют, оба ответа = строки данных):** **вокабуляр лейблов** (единый `adult` против `violence`/`sexually-explicit` находка A: цена гарантии против цены прогона и сохранения dspro-редактора) · **Q2 редактор под лейблом** (кандидаты только из способных: grok-4.3 ИНТЕРИМ exp04 мерил его билингвально, ранг-1 верность, ратифицированный первичный судья эротики D22.6, но $1.25/$2.50 против $0.435/$0.87 + развилка (B); mistral отвергнут как несущий D39.20; local-8b скрининг; glm-5 = ОДНА строка данных, но только после сверки ToS/AUP Z.AI по первоисточнику угадывать ToS запрещено) · **Q1 денежное следствие книжной гранулярности** (лейблованная книга едет по цене permissive-тира целиком).
**СКОУП-ВЫНОСЫ (пинги сессии приняты — норма 5):** (1) `escalation_model` = ОТВЕТИВШАЯ модель ВНЕ пака-17: golden пинит `esc_model` на отказавшем хопе, маскировка это не скрывает вердикт-изменение, отдельная ратификация с санкционированным пере-капчером. (2) Два нита общности из петель (Detail-строки чекеров из данных · множитель ×2 `lintTimeUnits`) УСЛОВНО: только в БАЙТ-НЕЙТРАЛЬНОЙ форме (фолд лишь при отличии от дефолта) и с доказательством исполнением, иначе `CheapGateVersion`/`pack.Version()` двигают снапшот стендовых книг и убивают $0-резюм драфта под замер остатка пака-16; при недоказуемости отложить. (3) **D22.7 НЕ снимается этим паком:** ратифицированное «пер-чанковый L3-скрин ОБЯЗАТЕЛЕН до первой erotica-книги в проде» остаётся отдельным гейтом оптовая ратификация пака-17 разрешением на первую erotica-книгу НЕ является; `action: terminal` book-level отказ входа, механизм СЛАБЕЕ D22.7. (4) Ратифицированный D20.2-Q2 (`--accept-rebill[=usd]` с порогом `min($0.50, 5%×ProjectedBookUSD)`) в коде/CLI отсутствует (живёт только в спеке) открытая петля, не пак-17.
**Границы гарантии (в контракт, не в код):** инвариант формулируется как «egress прогонов ДВИЖКА»: механизм не утверждает ничего о НЕОБЪЯВЛЕННОМ контенте (лейблы данные владельца) и об eval-стороне (`eval/*.py` зовут провайдеров сами). Судья 18+ eval-сторона (проба-гейт D22.6), в пак не входит.
**Метод фазы 1 подтверждён как норма:** сессия принесла три отмены и два переворота СВОИХ решений с грунтовкой по коду это ровно поведение, которое приёмка поощряет (нормы 5/10); мой рубеж-2 добавил три находки и ноль опровержений её §14. **Фаза 2** размечена «ровно так»-списком в `docs/BACKEND_PACK17_CHANNEL_B_SESSION_PROMPT.md` (инварианты: golden байт-идентичен без пере-капчера · парити EXACT · `-race` · сэндбокс-репродукции через настоящий драйвер · дифф `^func Test` исполнением · сессия не коммитит).
## D39.27 — Пак-17 фаза 2 (generic content-labels × provider-capabilities) ПРИНЯТ и залендён; форма добора B зафиксирована; вокабуляр владельца = ПАРА `violence`/`sexually-explicit` → дельта: третье значение `action` (assert-only) (25.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/PACK17_CHANNEL_B_REPORT_2026-07-25.md` (с ревью-шапкой). Сессия исполнила все 15 «ровно так» D39.26 и провела собственное ревью ИСПОЛНЕНИЕМ (6 ревьюеров, мутации): 8 существенных дефектов найдено и исправлено ДО сдачи, каждый фикс проверен мутацией. Три пинга нормы 5 все по делу, диспозиции ниже.
**Моя приёмка — execute-first, каждый манифест-пункт ре-ранен мной:** `go build`/`go vet` чисты · **`go test -race -count=1 ./...` 12 пакетов ok, 0 FAIL** · **golden `f7641993…4f0020f8` БАЙТ-В-БАЙТ равен `HEAD`-версии фикстуры** (сверил с `git show HEAD:…capture.golden | sha256sum`), `git status` по `testdata/` пуст пере-капчера не было · **парити EXACT: `n=13618 catastrophe{方源:0 蛊:1 蛊师:2 古月:22} recall@proposed=0.9655 (56/58)`** тождественно пакам 15/16 · **ценз тестов проверен ДИФФОМ ИМЁН, не счётчиком: 433→451**, удалены ровно 8 (6 failover + `TestCheckAdultChannel` + `TestRunnerChannelBRequiresPermissive`), добавлены 26 · `-shuffle=on` зелёный · шов на провод `stagerun.go:447` + именованный аллоулист `live_conformance_test.go`.
**Рубеж-2: три СВОИХ мутации в копии дерева (не повторяют список сессии) — все пойманы именованными тестами:** (A) вернул лейблы в канон `BriefHash` (omitempty-хвост) красный `TestEditorOnlyLabelLeavesTheDraftWaveUntouched`; **инвариант D39.26 п.1 запинён СЛЕДСТВИЕМ (снапшот драфт-волны не двигается), что сильнее ассерта равенства хешей**; (B) отключил лейбл-проверку в `clientFor` красные `TestLabelledRuntimeAssertPrecedesMoney` + `TestClientForRefusesUnknownModel`; (C) сделал отказ маршрутизации безусловным красный `TestLabelledReadPathStaysAlive`. Сьюта несущая, не вакуумная.
**Структурные проверки (мои, по коду):** `ReachableModels()` строится из `ResolvedModel`/`ResolvedHop` достижимость действительно лейбл-зависима, `chains.default` под лейблом недостижим · `r.client(` в дереве больше НЕТ единственный вход `clientFor(model, labels)` (компиль-энфорс реален) · порядок в `runAttempt`: `GetCheckpoint:337` `clientFor:374` `Reserve:390` ассерт до денег и после $0-реплея, ровно как ратифицировано · **добор C закрыт именованным тестом** (`rateGuard(m) == nil` по всем достижимым; комментарий теста прямо ссылается на добор) · все поля отчётности `omitempty` · **шиппинг-конфиги: НИ ОДНОЙ поведенческой правки** (диффы = комменты + три снятых `permissive: true`) · **стенд чист** 0 файлов с `permissive:`/`channel:` вне git, все 5 стендовых книг ссылаются на репозиторный `configs/models.yaml` отставки операционку не ломают, а 13 файлов с `adult: false` терпимы и покрыты `TestRetiredAdultKeyForms` · вокабуляр нигде не прибит (`accepts_labels`/`content_policy` в шиппинге только комментарии с ДВУМЯ формами ответа).
**РЕШЕНИЯ:**
1. **Форма закрытия добора B — ФИКСИРУЮ ФОРМУ 2** (гейт над резолвнутой моделью НЕЗАВИСИМО от `reasoning: off`), как исполнила сессия; её аргумент проверен мной по коду: форма 1 (`echoes_when_thinking_off: true` у xai) валит загрузку `models.yaml`, потому что `echoMineViolation` бьёт по `control: effort` то есть требует снять у grok явный off-выключатель, запинённый денежным инвариантом. Цена формы 2 консервативное ПЕРЕ-резервирование (потолок ужимается, слепым не становится) плюс одна обязательная строка `reasoning_max_tokens` у любой аддитивной стадии. Эхо-ось закрыта НЕ гейтом, а generic-предупреждением `sourceEchoExposure` (CJK-исходник × стадия, реально отправляющая исходник × модель, чей ПРОВОД гасит thinking; без имён провайдеров и лейблов) принимаю: это ровно та неизмеренная экспозиция, которую отрицал устаревший коммент D30.1, и теперь она громкая, а не молчащая.
2. **Семантика хопа под лейблом** (подмена `escalate_to` ТОЛЬКО на пере-маршрутизированных стадиях) ратифицирую: это прямое следствие D39.26 п.1, а не девиация; стадия, которую лейбл не трогает, сохраняет свой фолбэк и падает по ИМЕНИ модели, если тот не вправе получить контент.
3. **`labelsFor()` подписью, а не рантайм-ассертом** принимаю: подпись без чанка СИЛЬНЕЕ проверки (пер-главная маршрутизация физически невыразима, а не отлавливается постфактум).
4. **Хвосты общности — «отложено-с-записью»**: причина проверена независимо (множитель версионируется `CheapGateVersion` и фолдится безусловно; langpack двигает `pack.Version()` стендовых книг `--resnapshot` и потеря $0-резюма драфта под замер остатка пака-16). Возвращаются только в байт-нейтральной форме с доказательством исполнением.
5. **ВОКАБУЛЯР — решение владельца (25.07): ПАРА `violence` / `sexually-explicit`.** Основание: D14 п.1 (ToS DeepSeek запрещает sexually explicit, violence оставляет допустимым) пара сохраняет dspro-редактора (D39.22) и цену на violence-тяжёлых книгах, единый `adult` терял их без нужды.
6. **ДЕЛЬТА, которую пара делает обязательной: третье значение `action` — assert-only (`allow`).** Проверено по коду: сегодня `route` требует `chain` + `escalation.budget_usd > 0` + хотя бы одну стадию с `label_models` (иначе отказ «routes nothing»), а `terminal` = не обрабатывать вовсе; для лейбла `violence` на канале A не подходит ни одно нужен ЧИСТЫЙ capability-ассерт БЕЗ пере-маршрутизации (ToS-гарантия: любая достижимая модель обязана принимать violence, но маршрут не меняется). `checkContentRouting` уже action-агностичен (кроме `terminal`), поэтому дельта мала: значение enum + ветка валидации allow не берёт chain/бюджет/`label_models`») + тесты + строка реестра. **Без неё пара невыразима данными, то есть механизм не проходит собственный тест «второй лейбл добавляется ДАННЫМИ».**
7. **Q2 (редактор под лейблом) — ОТЛОЖЕН С ЗАПИСЬЮ, а не «висит»:** при паре он связывает только `sexually-explicit`-книги, которых в проекте нет; на violence-книгах редактор остаётся `deepseek-v4-pro` (D39.22). Возвращается ВМЕСТЕ с предусловием D22.7 перед первой explicit-книгой не раньше.
8. **ToS-факты под заполнение `accepts_labels` — по первоисточникам, пер-провайдер и ПЕР-ЛЕЙБЛ** (violence и sexually-explicit разные ответы; правило двух направлений). Место фиксации фактов `experiments/00-provider-quirks.md` (зона полигона). Пока не заполнено механизм fail-closed, и это ВЕРНОЕ состояние: лейблованная книга падает громко, называя модель, провайдера и недостающий лейбл.
9. **Открытая петля (новая, вскрыта вопросом владельца): лейбл НЕ доезжает до промпта.** Сегодня content-label чистые данные маршрутизации и load-time гарантии: он не рендерится ни в system, ни в user, не входит ни в один хеш, не едет на провод; модель не знает, что книга помечена. Если промпт ДОЛЖЕН знать о свойстве контента (инструкция переводчику/редактору), это отдельное решение промпт-слоя (`prompts/<пара>/<роль>.md` + при нужде `prompt_override` под лейблом) не побочный эффект маршрутизации.
10. **Фикс-лист (не блокирует лендинг):** коммент поля `Stage.ReasoningMaxTokens` (`internal/config/pipeline.go:189-194`) всё ещё говорит «ignored for subset providers / reasoning-off» после формы 2 вторая половина неверна; поправить ближайшим касанием файла.
**Инварианты пака подтверждены моим исполнением:** golden байт-идентичен БЕЗ пере-капчера · парити EXACT · `-race` зелёный · ценз диффом имён · сессия не коммитила (лендинг мой). **Скоуп-выносы D39.26 чисты:** `escalation_model`-семантика не тронута, `--accept-rebill` не строился, D22.7 не снят, L3 не строился, live-вызовов с 18+ не было.
## D39.28 — Дельта пака-17 ПРИНЯТА и залендена: третье действие `allow` (assert-only) — ратифицированная ПАРА лейблов стала выразима ДАННЫМИ; пак-17 закрыт целиком (25.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/PACK17_DELTA_2026-07-25.md` (с ревью-шапкой). Закрывает единственную работу, которую открыл ответ владельца по вокабуляру (D39.27 п.56).
**Ратифицировано:** тройка `route | allow | terminal`, где **ВСЕ ТРИ несут ОДИН инвариант** (каждая достижимая модель обязана принимать все лейблы книги) и различаются остальным: `allow` не меняет маршрут и ЗАПРЕЩАЕТ `chain`/`label_models`/бюджет как бессмысленные (автор, написавший их, имел в виду то, чего движок не сделает дисциплина «громко, а не игнор»); `route` требует цепочку ровно из одного члена + `budget_usd > 0` + хотя бы одну стадию с `label_models`; `terminal` ни одного вызова. Имя `allow` принимаю (приор промта): читается тройкой, `assert` оператору ничего не говорит. `checkContentRouting` править не пришлось он уже был action-агностичен, что и предсказывал D39.27 п.6.
**Моя приёмка — execute-first:** build/vet чисты · `gofmt` чист (единственная жалоба `internal/llm/llm.go` воспроизводится на HEAD проверил `git show HEAD:… | gofmt -l`, сессия файл не трогала: честная оговорка) · **`-race` 12 пакетов ok, 0 FAIL** · **golden `f7641993…4f0020f8` = HEAD-версия байт-в-байт**, `testdata/` чист · **парити EXACT** `n=13618 … recall 0.9655 (56/58)` · **ценз диффом имён: 451→455, удалено 0**, добавлены ровно четыре названных. **Моя независимая мутация (не из списка сессии):** инвариант проверяет только ПЕРВЫЙ лейбл вместо объединения (`p.ContentLabels[:1]`) красный `TestRatifiedLabelPairIsDataOnly` то есть союзная семантика, на которой стоит ратифицированная ПАРА, запинена именно тем тестом, который кодирует форму ответа владельца. **Прочитал сквозняк `TestAssertOnlyLabelRunsWithoutMovingAnything`: не вакуумный** сверяет число вызовов, КАЖДОЕ тело запроса построчно, суммарную стоимость и ОБА волновых снапшота; и гоняется при `budget_usd = 0`, то есть заодно доказывает, что assert-only не требует бюджета.
**Данные:** `accepts_labels` осознанно ПУСТЫ (fail-closed) ратифицирую это как верное состояние. Значения = ФАКТЫ ToS/AUP: только по первоисточникам, **ПЕР-ЛЕЙБЛУ** (`violence` `sexually-explicit` у одного вендора на этом стоит D14 п.1), фиксация полигон (`experiments/00-provider-quirks.md`). Проверил диффы `models.yaml`/`pipeline-c1.yaml`: ни одного ToS-утверждения от сессии, вокабуляр в шиппинг не прибит, примеры синтетические. **Фикс-лист D39.27 п.10 закрыт** (коммент `Stage.ReasoningMaxTokens` приведён в соответствие с формой 2).
**Две объявленные правки фикстур принимаю** как отражение новой корректной семантики: кейс `terminal` больше не несёт `label_models` (они стали громкой ошибкой при не-route действии само по себе покрыто тестом), и подстрока сообщения о неизвестном действии стала `route|allow|terminal`.
**ПАК-17 ЗАКРЫТ ЦЕЛИКОМ** (D39.26 дизайн · D39.27 стройка · D39.28 дельта). Остаток не код: ToS-факты под `accepts_labels` (петля полигона) · Q2 редактор и D22.7 (перед первой explicit-книгой) · хвосты общности (отложено-с-записью) · `--accept-rebill` (D20.2-Q2, вне пака). **До заполнения фактов ни одна лейблованная книга не запускается — это не дефект, а спроектированное fail-closed поведение.**
## D39.29 — Пакет-5 полигона ПРИНЯТ: право по ToS/AUP добыто первоисточниками (8 вендоров × 2 лейбла); две строки данных ждут ПОДПИСИ владельца; по `violence` права нет ни у кого — развилка владельцу; errata к ссылке D14 п.1 (25.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/POLYGON_TOS_LABELS_REPORT_2026-07-25.md` (с ревью-шапкой); факты секция «Право по ToS/AUP: провайдер × content-label» в `docs/experiments/00-provider-quirks.md` (источник истины по цитатам). Метод сессии: три контура (добыча независимая перечитка с мандатом сломать собственный третий проход), 15 цитат с `grep -c -F` = 1 по своим копиям.
**Моя приёмка — не чтением, а СВОИМИ копиями первоисточников** (три клетки с наибольшей ставкой, все подтвердились):
- **mistral / sexually-explicit = ALLOWED ПОДТВЕРЖДЕНО.** `legal.mistral.ai/terms/usage-policy` HTTP 200, объявленная ревизия *Effective: June 11, 2026* совпадает; в сексуальной семье названы CSAM, NCII intimate images without the explicit consent»), sexual services/trafficking **взрослая художественная эротика не названа**; насилие `promotes, incites, threatens, or glorifies violence` (глагол-пропаганда, не изображение) `violence` UNCLEAR верно; **широкого контентного катч-олла в документе нет** (совпадения `otherwise` про права третьих лиц и безопасность) доктрина `contrastive-absence` применена законно.
- **xai / sexually-explicit = ALLOWED и xai / violence = UNCLEAR ПОДТВЕРЖДЕНО, включая самоопровержение сессии.** Прямой `x.ai` даёт **HTTP 403** (Cloudflare воспроизвёлся у меня буквально), снимок Wayback `id_` 200, *Effective: June 26, 2026* совпадает; **`grep -c -i violen` = 0 по МОЕЙ копии** то есть перевёрнутая сессией клетка (ALLOWEDUNCLEAR) перевёрнута правильно; в сексуальной семье названы только реальные лица (undressing/nudifying, порнографические изображения подобий) и дети узкие соседи есть, наш класс не назван. Остаточная оговорка (моя, не опровержение): стем перечня «don't use our Service or Outputs to promote or engage in illegal, harmful, or abusive activities, **including**:» при желании читается как самостоятельный широкий стандарт; он привязан к законности и вводит перечень, поэтому доктрину не ломает, но это единственное место, где встречное чтение существует.
- **zai = FORBIDDEN по обоим ПОДТВЕРЖДЕНО.** `docs.z.ai/legal-agreement/terms-of-use` HTTP 200, *Last Update: April 14, 2026*; п. f) «Creating or disseminating obscene, pornographic, **violent**, murderous, terroristic, or criminal incitement content» «violent **content**» ПЛОСКО, без глагола-пропаганды; п. g) «content that is sexually explicit, suggestive…». **Этим закрыт открытый вопрос D39.27 п.7:** сверка ToS Z.AI по первоисточнику сделана, glm-5 под любым из двух лейблов недоступен (для НЕпомеченных книг остаётся).
**РАТИФИЦИРОВАНО:**
1. **Вердикты приняты как ФАКТЫ** (8 вендоров × 2 лейбла; таблица в отчёте §2 и в quirks-секции). Доктрина сессии принимается целиком, включая два несущих правила: «молчание документа НЕ даёт ALLOWED» и «широкий катч-олл в применимом документе убивает `contrastive-absence`». Второе она применила ПРОТИВ своего же независимого контура (openai/violence: контур дал ALLOWED, она поставила UNCLEAR, потому что иначе доктрина стала бы подгонкой) **это правильный выбор**: последовательность правила дороже одной выигранной клетки, а цена низка (OpenAI вне боевой цепочки, клетка переворачивается одной правкой данных).
2. **Две строки данных — `xai: accepts_labels: [sexually-explicit]` и `mistral: accepts_labels: [sexually-explicit]` — ГОТОВЫ, но НЕ применяются без подписи владельца** (18+/юридическая ось). До подписи механизм fail-closed верное состояние.
3. **Errata к D14 п.1 (дисциплина D23.3: тело исторического блока НЕ переписываю, поправка живёт здесь).** Номер пункта верен дословно `§3.4(5)`: «is pornographic, obscene, or sexually explicit (e.g., sexual chatbots)», но живёт он в **DeepSeek Terms of Use** (*Last Update: March 27, 2026*), а не в «Open Platform Terms of Service», где §3.4 про оргтехмеры. На вывод не влияет (Open Platform ToS §3.1 втягивает ToU по ссылке), на воспроизводимость влияет: по названию документа пункт не находится. Класс дефекта ровно целевой для пакета (верная цитата у не того документа).
4. **Судья 18+: договорное подтверждение поведенческого решения.** Gemini PUP запрещает sexually-explicit grok-фолбэк D22.6 теперь обоснован не только `PROHIBITED_CONTENT`-поведением, но и текстом договора. Записано.
5. **Пинг-1 закрыт живым фактом:** катовер `deepseek-chat`/`-reasoner` ИСПОЛНЕН 404 не только в листинге, но и на пер-слаговом retrieve (сильнее прежнего алиас-урока «нет в /models не работает»); цены не изменились `prices_checked` в `models.yaml` можно продлить БЕЗ правки чисел (предложение бэкенду, не полигону чужая зона). Все 8 пингов блока B закрыты.
**НА ВЛАДЕЛЬЦЕ (§6 отчёта — семь вопросов; блокирующий один):**
- **`violence`: права нет ни у одного вендора, и причина структурная** все AUP регулируют ПРОПАГАНДУ насилия promotes/incites/glorifies/facilitates»), нейтральное художественное изображение не называет ни один документ; два исключения в «неудобную» сторону (zai плоский запрет; xai полное молчание). **Экономическая посылка D14 п.1 первоисточниками НЕ подтверждается.** Три варианта отчёта §5.1 в силе; **моя рекомендация — синтез варианта 2 с аудит-следом:** механически лейбл `violence` НЕ заводить (это ровно сегодняшний статус-кво, под которым уже прошли exp10 и rerun2 нового риска не появляется, а книга едет), а интерпретацию «нейтральное изображение пропаганда» зафиксировать письменно за подписью владельца ЗДЕСЬ, в контракте, не в данных: она даёт аудит-след «решение принято осознанно», ничего не блокируя. Вариант 1 (выдать `violence` вендорам с глаголами-пропагандами) остаётся доступен одной правкой данных в любой момент.
- **НОВОЕ, вскрыто фактами и не зависит от лейблов (мой добор; формулировку уточнил ПОСЛЕ проверки первая была мягче правды):** `zai` запрещает «violent content» ПЛОСКО, а **экспозиция уже СОСТОЯЛАСЬ**: glm-арм (`configs/pipeline-arm-glm.yaml`, `role: editor / model: glm-5`) гонялся живьём на 蛊真人 в пере-прогоне rerun2 (D39.20: судейские 0.589 по 56 играм на арм) то есть насильственная проза уже отправлялась на Z.AI, и вопрос про `violence` касается не будущих помеченных книг, а совершённого. Уточнение в другую сторону: `glm-5.1` в `chains.default` (`configs/pipeline-c1.yaml:109`) сегодня НЕдостижим (раннер исполняет single-hop через `stage.escalate_to` = `deepseek-v4-pro`, плюс `budget_usd: 0` гасит эскалацию целиком) вектор именно арм-конфиг, не цепочка. Решение владельца: снять glm с насильственных книг либо сознательно принять риск с записью; лейбл-механизм тут ни при чём.
- Остальные шесть вопросов §6: чтение Gemini-оговорки «for example, pornography or sexual gratification» (сужение или иллюстрация) · связывает ли нас OpenAI Sharing & publication policy 2022 (единственное, что держит обе клетки OpenAI в UNCLEAR) · применимость Ollama ToS §4 к локальному инференсу · различать ли в конфиге ПРИЧИНУ пустоты (FORBIDDEN vs UNCLEAR) · дата заведения аккаунта OpenAI 17 привязывает редакцию политик к дате договора) · нужен ли ре-чек политик по хешу перед платными прогонами (триггеры известны: головной Google ToS 30.07.2026, квартал 25.10.2026).
**Продуктовое, вне движка (в трекер):** Gemini API Additional ToS запрещает клиентов, «directed towards or likely to be accessed by individuals under the age of 18» обязательство на КОНЕЧНЫЙ продукт (ридер-IDE, публикация), действует независимо от лейблов; юрисдикционные annex'ы (австралийский у xAI) вводят депикт-запреты поверх общего AUP при выходе на новые рынки перепроверять annex'ы, а не только AUP.
## D39.30 — Решения владельца по итогам пакета-5: лейбл `violence` НЕ заводится (интерпретация зафиксирована письменно), риск Z.AI принят сознательно, две строки `accepts_labels` ПОДПИСАНЫ и применены (25.07, оркестратор №8). ✅
Три решения приняты владельцем 25.07 по фактам D39.29. Записаны здесь, потому что это ровно тот класс, который обязан иметь аудит-след: юридическая ось, 18+, принятый риск.
1. **`violence` лейбл механически НЕ заводится; интерпретация фиксируется письменно (вариант 2 + аудит-след).** Подписанное чтение владельца: **нейтральное художественное изображение насилия в вымысле не является «promoting / inciting / glorifying / facilitating violence»** то есть под глаголы-пропаганды, которыми оперируют все проверенные AUP, наши тексты не подпадают. Практика: лейбл `violence` в вокабуляре остаётся (механизм его держит), но книгам не назначается и `accepts_labels` им не заполняется это ровно статус-кво, под которым уже прошли exp10 и rerun2, поэтому нового риска решение не создаёт, а приёмочная 蛊真人 едет как ехала. **Обратимость:** вариант «выдать `violence` вендорам с глаголами-пропагандами» остаётся доступен одной правкой данных в любой момент; `zai` под ним не подпадает в любом случае (плоский запрет), `xai` тоже (чистое молчание). **Граница честности:** это интерпретация, а не право, выданное текстом; она защищает решение как обдуманное, но не заменяет разъяснения вендора.
2. **Риск Z.AI ПРИНЯТ сознательно, с записью.** Факт: Z.ai Terms of Use (Last Update 2026-04-14) п. f) запрещает «obscene, pornographic, **violent**, murderous, terroristic, or criminal incitement content» «violent content» плоско, без глагола-пропаганды, то есть в отличие от п.1 здесь интерпретация не спасает. Экспозиция УЖЕ состоялась: glm-арм (`configs/pipeline-arm-glm.yaml`, `role: editor / model: glm-5`) гонялся живьём на 蛊真人 в rerun2 (D39.20). **Решение владельца: риск принять** прогон исследовательский, на собственной книге, без публикации; glm-5 остаётся резервным армом редактора. **Условия, при которых решение пересматривается (записываю как часть принятия):** переход к публикации/клиентским книгам · использование glm на не-своём контенте · смена политики Z.AI (пере-проверка 2026-10-25). `glm-5.1` в `chains.default` (`configs/pipeline-c1.yaml:109`) остаётся недостижимым по построению (single-hop через `escalate_to`, `budget_usd: 0`), так что дополнительного вектора цепочка не даёт.
3. **Две строки `accepts_labels` ПОДПИСАНЫ и ПРИМЕНЕНЫ мной в `backend/configs/models.yaml`:** `xai: accepts_labels: [sexually-explicit]` (xAI AUP Effective 2026-06-26 + Enterprise ToS Last Updated 2026-05-12) и `mistral: accepts_labels: [sexually-explicit]` (Mistral Usage Policy Effective 2026-06-11, хост `legal.mistral.ai`). Обоснование в комментариях у строк, цитаты в `experiments/00-provider-quirks.md`. **Ни одна книга лейблов не несёт, поэтому применение строк НИЧЕГО не запускает и ничего не двигает** (проверено: `go test ./internal/config/` зелёный; строки данные провайдера, вне хешей и вне снапшотов). Механизм перестал быть пустым и готов к первой explicit-книге; для неё по-прежнему обязательны предусловие D22.7 (L3-скрин) и Q2 (выбор редактора под лейблом).
**Остались открытыми (не блокируют, у владельца):** чтение Gemini-оговорки «for example pornography or sexual gratification» (сужение vs иллюстрация) · связывает ли нас OpenAI Sharing & publication policy 2022 (единственное, что держит обе клетки OpenAI в UNCLEAR) · применимость Ollama ToS §4 к локальному инференсу · различать ли в конфиге причину пустоты (`FORBIDDEN` vs `UNCLEAR`) · дата заведения аккаунта OpenAI 17 привязывает редакцию политик к дате договора) · ре-чек политик по хешу перед платными прогонами (триггеры: головной Google ToS 30.07.2026, квартал 25.10.2026). **Продуктовое (Ф3, вне движка):** Gemini API Additional ToS запрещает клиентов, «likely to be accessed by individuals under 18» обязательство на конечный продукт (ридер/публикация).
## D39.31 — Пак-18 «долги контракта» ПРИНЯТ и залендён: `--accept-rebill` построен, семантика `escalation_model` исправлена под санкционированный пере-капчер (новый baseline `211c9013…089045d6`), два нита общности отложены ПО ЗАМЕРУ (25.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/PACK18_DEBTS_REPORT_2026-07-25.md` (с ревью-шапкой). Сессия закрыла два долга из трёх и отложила третий с измеренной причиной; 19 собственных мутаций, из них две сначала ВЫЖИЛИ и вскрыли дыры в её же тестах (включая регресс-класс D20.4 «распарсено, но не проведено в раннер») обе закрыты новыми тестами, а не списаны.
**Моя приёмка — execute-first, всё пере-ранено:** `go build`/`go vet` чисты · `gofmt` только `internal/llm/llm.go`, **воспроизводится на HEAD** (проверил: файл не трогали) · **`-race` 12 пакетов ok, 0 FAIL** · `-shuffle=on` по новым тестам зелёный · **парити EXACT** `n=13618 catastrophe{方源:0 蛊:1 蛊师:2 古月:22} recall 0.9655 (56/58)` · **ценз диффом ИМЁН: 455→475, удалено 0**, добавлены ровно 20 названных.
**Санкционированный пере-капчер golden — проверен МАШИННО, ровно в границах санкции D39.26/D39.30-дисциплины:** сдвинулись **4 строки**, все на `ch3/0 draft` (кейс «хоп тоже отказал»), значение `esc_model="fake-fallback"` `""`. Мой контроль: замаскировал `esc_model="…"` плейсхолдером в HEAD-версии и в рабочей **файлы стали БАЙТ-ИДЕНТИЧНЫ**; `brief_hash`, `snapshot_draft_payload`, `snapshot_edit_payload`, `memory_version` совпадают построчно **вердикт-изменение не утащило с собой ни одной другой оси, пере-оплаты нет**. **Новый baseline golden — `211c9013f5cfa31562857cc9518488393a647cce489d37113402b159089045d6`** (прежний `f7641993…4f0020f8` закрыт этим блоком).
**Мои независимые мутации (не из списка сессии) — обе пойманы именованными тестами:** (D1) ратифицированную формулу порога `min($0.50, 5%×Projected)` заменил на `max` красные `TestRebillConsentThresholdFormula` + пять смежных, включая оба CLI-провода; (D2) в проекцию пустил строки, которые резюмятся за $0 (завышение суммы, под которой просят подпись) красные `TestRebillProjectionExcludesSkippedAndUnchanged`, `…IsPerWave`, `…IgnoresRetiredStages`.
**РАТИФИЦИРОВАНО:**
1. **Развилка сессии «`--resnapshot` НЕ является согласием» — принята, и это даже не девиация:** ратифицированная спека прямо говорит «флаг `--accept-rebill[=usd]` (опциональный потолок суммы, **отдельный от `--resnapshot`-алиаса** (`backend/docs/D15.2-content-addressed-resume-spec.md:590`). Аргумент сессии сверх того верен: при алиас-прочтении порог D20.2-Q2 становится мёртвым кодом, потому что на пути `translate` `--resnapshot` требуется в любом случае и сам же был бы согласием то есть гейт, который не может выстрелить, класс, который загрузчик уже отвергает. Цена (4 существующих теста получили строку согласия) принята.
2. **Гранулярность подтверждена по коду сессией, развилки не возникло:** каждая оплаченная строка под чужим снапшотом действительно пере-оплачивается; каскад §7.1-бис зафиксирован ВЫРОЖДЕННЫМ (пере-оплачивается всё, дополнять нечего), `guard_hash` не строился ровно граница D39.31-предшественника (промт пака-18).
3. **Дефект честности, найденный сессией у себя, — правильного класса:** проекция считала строки-сироты (позиции, исчезнувшие из манифеста; снятые стадии) и **завышала сумму, под которой просят подпись**. Исправлено, запинено, отмутировано. Фиксирую как норму: сумма в запросе согласия это утверждение о деньгах, и завышение здесь так же недопустимо, как занижение.
4. **`escalation_model` = авторитетная модель.** Идентичность отказавшего хопа не теряется (живёт в его чекпойнте и строке `request_log`) и это запинено тестом; миграции нет, исторические строки не переписываются смешанная семантика в старых данных принята осознанно.
5. **Два нита общности — «отложено-с-записью», отсрочка ИЗМЕРЕНА, а не заявлена.** Одна новая строка в `configs/langpacks/zh-ru/dc-checkers.txt` двигает `pack.Version()` `a7d4be2c0465``133d71e8d132` и оба волновых снапшота, а стендовые книги объявляют `langpack_root` ровно на этот каталог (проверил: `/home/ubuntu/books/gu-zhenren/rerun2/book.yaml`) `--resnapshot` и потеря $0-резюма драфта под замер остатка пака-16. Отдельно принимаю ОПРЕДЕЛИТЕЛЬНЫЙ аргумент по Detail-строкам: дефолт шаблона обязан рендерить сегодняшнюю строку байт-в-байт, значит 时辰-литерал остаётся в Go при любой форме данных байт-нейтральной формы у этого нита не существует в принципе. **Оба нита едут на ближайший ПОЛНЫЙ `--resnapshot`** (план в отчёте); до тех пор ограничение зафиксировано, а не забыто.
**Координационная заметка (моя ошибка, фиксирую по норме «признавай явно»):** запись бэкенд-сессии в `docs/PROGRESS.md` уехала в мой предыдущий коммит `3bc9eb4` я собрал общий файл целиком (`git add docs/PROGRESS.md`), пока её текст лежал в рабочем дереве. Вреда нет (текст легитимный и остаётся), но правило уточняю для себя и преемников: **для ОБЩИХ файлов (`PROGRESS.md`, D-лог) при живой параллельной сессии смотреть `git diff --cached` ПО СОДЕРЖИМОМУ, а не по списку имён** списка имён недостаточно, он не показывает чужой абзац внутри моего файла.
**Очередь бэкенда после пака-18:** долгов контракта не осталось; открыты ru-target (слой 7, ждёт своего дизайн-пака) · два нита общности (на ближайший полный resnapshot) · масштаб целой книги · Ф2-механизмы (голос/состояние D21, native-Gemini судья) · извлечение дискурс-норм из тел промтов (слой 2).
## D39.32 — Ответы владельца по остатку ToS-вопросов: local = «политик нет, переводим всё» (строка применена) · Gemini-оговорка читается СУЖЕНИЕМ · ре-чек политик становится правилом; причина пустоты в конфиг НЕ выносится (25.07, оркестратор №8). ✅
1. **`local` решение владельца: вендорских контентных политик к локальному инференсу НЕ применяется, переводим всё.** Обоснование, которое кладу под решение: наружу ничего не уходит (инференс на стенде), веса `Qwen3-8B-abliterated` под Apache-2.0 без контентных ограничений, а Ollama ToS §4 Transmit harmful, offensive, or illegal content») признан неприменимым к локальному `ollama serve` «Service» там определён через софт, а не через нашу машину. **Строка применена:** `local: accepts_labels: [violence, sexually-explicit]`; `violence` сегодня инертен (лейбл книгам не назначается, D39.30 п.1) и стоит для полноты.
2. **Gemini: оговорка «-- for example, content created for the purpose of pornography or sexual gratification» читается СУЖЕНИЕМ** (владелец): запрет адресован контенту, СОЗДАННОМУ РАДИ порнографии/возбуждения, и сюжетная сцена внутри романа под него не подпадает. **Что это меняет и чего НЕ меняет:** вердикт перестаёт быть `FORBIDDEN`, но по нашей же доктрине (D39.29: молчание и «нас не запрещает» разрешение) он становится **UNCLEAR**, а не `ALLOWED` строки Gemini не получает, маршрут не меняется, grok остаётся судьёй 18+ (D22.6). Чтобы Gemini получил право, нужна ОТДЕЛЬНАЯ подпись владельца в форме D39.30 п.1 интерпретация как разрешение») **ждёт одного слова, ничего не блокирует**.
3. **Различать ли в конфиге ПРИЧИНУ пустоты (`FORBIDDEN` против `UNCLEAR`) — НЕТ.** Конфиг несёт ПРАВА (что можно отправить), а причина отсутствия права факт о документах, и живёт там, где живут факты: `experiments/00-provider-quirks.md`. Дублирование причины в конфиг создало бы вторую копию юридического суждения, которая устаревает молча.
4. **Ре-чек политик — ПРАВИЛО (владелец: «да»).** Перед каждым платным прогоном сверять применимые ToS/AUP по датам ревизий; безусловные триггеры: головной Google ToS **30.07.2026**, квартальный цикл **25.10.2026**, а также любая правка `accepts_labels`. Норму держит оркестратор в чек-листе лендинга; фиксация фактов полигон.
5. **Дата аккаунта OpenAI — открыта, приоритет низкий:** OpenAI в боевой цепочке не стоит, обе его клетки и так `UNCLEAR`. Смотреть в биллинге/настройках организации `platform.openai.com` (дата создания организации либо первый счёт в истории платежей).
**Замечание о судье (по вопросу владельца, факт из кода):** в ПРОДЕ судьи нет шиппинг-конфиг C1 несёт ровно две стадии, `draft` и `edit`. Судья существует только как ИНСТРУМЕНТ ПОЛИГОНА (риг D39.7: попарные игры между армами, оба порядка, per-vote персист, измеренный шум-пол) и как ПЛАНИРУЕМЫЙ механизм Ф2 (native-Gemini), которого ещё нет. В rerun2 он съел $6.46 из $6.63 97% прогона. Ратифицированный приоритет «детерминированный скорер > судьи, где возможен» (нормы оркестратора) при следующем прогоне применяется буквально: замер остатка ремонта — детерминированный read-only скан ($0), судья для него НЕ нужен.
## D39.33 — Директива владельца: МАСШТАБ — ПОСЛЕДНИМ, после достройки алгоритмического идеала; мини-прогоны ~10 глав = штатный инструмент доказательства эффективности (25.07, оркестратор №8). ✅
**Директива (владелец, 25.07):** «масштаб гонял бы уже при полностью построенном бэкенде — достроили весь идеал алгоритмический, который запланировали, и только тогда масштаб. Мини-прогоны на глав 10 можно делать, чтобы доказать эффективность крупных изменений».
**Что это меняет в контракте.** Ратифицированный курс D39.22 ставил «масштаб целой книги» ПЕРВЫМ после паков 12/13 («масштаб целой книги · канал B вживую · Ф2-механизмы · ja→ru §B5»). **Порядок амендируется: масштаб уходит в КОНЕЦ**, за достройку алгоритмического ядра. Обоснование владельца принимаю и усиливаю фактурой: приёмочная книга — 7,78 млн символов и ~2284 раздела (`第N节`), то есть масштаб-прогон стоит дорого не деньгами, а ВРЕМЕНЕМ и необратимостью решений, снятых на форме, которую мы всё равно собирались менять; а измерять эффект крупных правок на 510 главах мы уже умеем (rerun2: генерация всей книги-среза стоила центы, дорогая часть — судья, и он не обязателен).
**Мини-прогон становится штатным инструментом (норма, не разовое решение):** ~10 глав · детерминированные чекеры и read-only скан остатка первыми (ратифицированный приоритет «детерминированный скорер > судьи, где возможен») · судья зовётся ТОЛЬКО когда от его вердикта зависит решение · каждый мини-прогон отвечает на НАЗВАННЫЙ вопрос, иначе не запускается.
**Определение «алгоритмического идеала» (чтобы «достроено» было проверяемым, а не на глаз).** Свожу из ратифицированного корпуса; список — рабочий контур, уточняется ответами владельца ниже:
1. **Ф2-механизмы D21** — voice-профиль · реестр обращений (ты/вы) · reveal-окна. Ратифицированы 09.07, в коде отсутствуют. Промт пака-19 готов.
2. **Решение о петле ремонта (слой 3, D39.24)** — включение платного пути по замеру остатка; замер теперь едет мини-прогоном.
3. **Слой 2: извлечение дискурс-норм и few-shot из ТЕЛ промтов** (открытая строка шапки-таблицы `09-target-architecture.md`; форсинг — вторая пара).
4. **ru-target долг (слой 7)**`isRuTarget`×11 прод-сайтов · `TokenizeCyrillic`×6 · ключ «ru» в санитайзере; сегодня ограничение, а не дефект (кусает только не-русский таргет).
5. **Два нита общности** — едут первым же resnapshot (D39.31 п.5).
6. **native-Gemini судья** — механизм Ф2; нужен ли он В ДВИЖКЕ до пилота — вопрос ниже.
**ВОПРОСЫ ВЛАДЕЛЬЦУ (определяют границу «идеала», не блокируют старт п.1):**
- **Annotator-пре-пасс (D21 п.5)** — входит в идеал или остаётся опцией? Это LLM-проход (~+10% к вебновелле по D21 п.8), то есть деньги в COGS, а не только код.
- **Семантический span-судья / полярность** — D38.4 ратифицировал ОТКАЗ от него («защита = editor-swap»). Подтверждаем отказ как часть идеала или возвращаем в скоуп?
- **ja→ru §B5 (вторая пара)** — часть «идеала» (общность движка) или отдельная работа после?
- **ru-target долг** — до масштаба (то есть часть идеала) или можно после, раз таргет у нас один?
**Следствия, вступающие в силу сразу:** (а) пак-19 «голос и состояние» РАСПАРКОВЫВАЕТСЯ — под новым курсом он законно первый, и это уже не ре-ордеринг оркестратора, а исполнение директивы; (б) «следующий платный прогон» переопределяется из полного в МИНИ (~10 глав) и перестаёт быть гейтом чего-либо, кроме собственного вопроса; (в) «масштаб целой книги» уходит из ближайшей очереди в финальную позицию — перед пилотом Ф2.5.
**Честная запись о том, как это вскрылось (норма «признавай ошибки явно»):** позицию пака-19 я вчера предложил САМ, подав ре-ордеринг как исполнение плана; владелец усомнился, проверка дословными цитатами (D39.22 + CURRENT-STATE) подтвердила его сомнение, промт был запаркован (`16420c6`). Директива D39.33 делает ту позицию правильной ПО СУЩЕСТВУ — но она не задним числом оправдывает метод: вывод, совпавший с репликой собеседника, обязан быть проверен ПРОТИВ документов до выдачи, а не после.
## D39.34 — Сплошной аудит корпуса: 23 ратифицированные позиции БЕЗ диспозиции в трекере; подтверждён НЕИСПОЛНЕННЫЙ обязательный флип `RegressionGuard`; очередь и скоуп пака-19 исправлены по букве (25.07, оркестратор №8). ✅
**Метод:** 8-агентный аудит (6 читателей по срезам — D-лог · PROGRESS+3 архива · research · experiments · отчёты паков · арх-доки; синтез; критик с мандатом ОПРОВЕРГНУТЬ тезис оркестратора). 1.6M токенов. **Каждый несущий клейм я перепроверил исполнением сам** — ниже только подтверждённое.
**НАХОДКА №1 (HIGH, обязательство, не исполнено): `Gates.RegressionGuard.Enabled` так и не включён.** D38.4 п.5 (`:540`) ратифицировал: «Оркестратор при сборке единого resnapshot **ОБЯЗАН включить** `Gates.RegressionGuard.Enabled`, иначе построенная наблюдаемость на пере-прогоне не сработает». Проверил: ключ `regression_guard` **отсутствует во ВСЕХ шиппинг-конфигах** ⇒ гейт = zero-value `false`. То есть пере-прогон rerun2 прошёл БЕЗ той наблюдаемости, ради которой инфра-пак D38.3 строился. Обязательство остаётся в силе и переносится на ближайший resnapshot; вписано в промт пака, который его вызовет.
**НАХОДКА №2 (моя ошибка последовательности, принимаю).** Критик прав дважды: (а) **банк/сид-дельта стоит РАНЬШЕ** по ратифицированной очереди D39.20 (`:783`: «стайл-решения владельца → **банк-дельта** → итерация №2»), а я её из очереди уронил; (б) **аргумент про ниты у меня инвертирован**: D39.31 п.5 (`:934`) откладывал ниты именно ЧТОБЫ СОХРАНИТЬ $0-резюм драфта **под замер остатка**, — значит по той же логике замер обязан пройти ДО того, что вызывает resnapshot, а не после. Мой вчерашний вывод «прогон после пака-19» противоречит моей же ратификации суточной давности.
**НАХОДКА №3 (над-атрибуция, моя).** В промте пака-19 стояло «Ниты общности едут ЭТИМ паком. **Ратифицировано D39.31 п.5**». D39.31 п.5 ратифицировал «ближайший ПОЛНЫЙ `--resnapshot`», а не пак-19. Формулировка исправлена: ниты едут первым resnapshot, каким бы паком он ни был вызван.
**НАХОДКА №4 (скоуп пака-19 был шире ратификации).** D21 п.2 (`:254`) дословно: «Схема + детерминированный ты/вы-флаггер — **безусловно**; **инъекционная часть — условно** до полигон-эксперимента на ТРУДНЫХ парах (лифт на лёгких = 0; исход «только флаггер-ось» легитимен и дешевле)». Плюс `backend/internal/store/migrate.go:312`: механизмы «gated on the pilot and on D15.2 landing». ⇒ **пак-19 строит безусловную половину** (схема · детерминированный флаггер · reveal-окна), инъекция ПРОЕКТИРУЕТСЯ, но не проводится в прод до полигон-эксперимента. Промт исправлен.
**ИСПРАВЛЕННАЯ ОЧЕРЕДЬ (по букве, с учётом D39.33):**
1. **Мини-прогон-замер ~10 глав на ТЕКУЩЕМ стеке, пока жив $0-резюм драфта** — отвечает разом: остаток дефектов (решение о петле ремонта D39.24) · итерация №2 dspro-vs-glm, если владелец её хочет · живая проверка построенного (rebill-гейт, лейблы). Судья НЕ зовётся (детерминированный скан первым).
2. **Параллельно, $0: сид/банк-дельта** (元 · 赤城 · 学堂家老 · 春秋蝉) — она стоит раньше по D39.20 и без неё чтение любого прогона искажено.
3. **Затем пак-19** в урезанном скоупе (безусловная половина D21) — он и вызовет первый resnapshot, которым поедут ниты общности И обязательный флип `RegressionGuard`.
**23 позиции без диспозиции — приняты в трекер** (`PROGRESS.md`, блок «Найдено аудитом 25.07»), сгруппированы классами с явной диспозицией каждому. Три самые дорогие: неисполненный флип `RegressionGuard` (выше) · заморозка «этапа B ~300 глав» (D26 п.1) — **поглощена D39.33**, масштаб уходит в конец, отдельной петлёй больше не считается · этапы Б+В спеки D15.2 («промт выдам после пере-прогона», D33 п.5) — пере-прогон состоялся 23.07, промт не выдавался: остаётся открытым, но вне «идеала» (он про content-addressed resume, то есть про `guard_hash`, который D39.31 явно не строил).
**Норма, которую этот аудит подтвердил делом:** трекер «Открытые петли» ловит то, что попало в него РУКАМИ оркестратора, и систематически теряет обещания, зашитые в ТЕЛА ратификаций («ОБЯЗАН включить», «выдам после», «в бэклог»). **Сплошной аудит корпуса становится периодической процедурой** — не реже чем перед каждым платным прогоном и при передаче роли; дешевле, чем один потерянный обязательный гейт.
## D39.35 — ЗАМЕР: $0-резюм драфта на стенде УЖЕ МЁРТВ (снапшот разошёлся по трём осям) — аргумент «гнать, пока он жив» ОТМЕНЁН; порядок исправлен: ниты и обязательный флип берём ДО прогона (25.07, оркестратор №8). ✅
**Проверка исполнением (мой замер, read-only, $0):** прочитал таблицу `snapshots` копии стендовой БД `rerun2/guzhenren-rerun2.db` и сравнил с кодом сегодня.
| ось снапшота | стенд (23.07) | код сегодня | вердикт |
|---|---|---|---|
| `style_check_version` | `cheapgate-v3-dc-checkers+u15.0.0` | `cheapgate-v4-percent-latin-brokenword+u15.0.0` | **разошлась** |
| `render_format_version` | `renderfmt-v2-editor-src2dst+dc3-gender` | `renderfmt-v3-draft-gender+editor-src2dst+dc3-gender` | **разошлась** |
| `langpack_version` | `langpack-v1-09974d6cdac2` | `langpack-v1-a7d4be2c0465` | **разошлась** |
**Следствие, отменяющее вчерашний аргумент (мой и критика):** резюм внутри снапшота — инвариант, а снапшот стенда сместили ещё паки 1316 (профилактика чекеров, render-формат, langpack). Значит **«$0-резюм драфта» на стенде не существует уже двое суток**, и вся конструкция «мини-прогон срочно, пока он жив» была построена на предпосылке, которую никто не измерил. Признаю: я принял её от критика и не проверил, хотя проверка стоила одного SQL-запроса.
**Что из этого следует практически (и это ЛУЧШЕ, а не хуже):**
1. Прогон в любом случае пере-оплачивается целиком, поэтому **срочности нет** — и, наоборот, дешевле сначала доложить в стек то, что и так поедет первым resnapshot, а потом мерить. Порядок исправляется на: **(1) микро-пак «предпрогонная гигиена» — два нита общности + ОБЯЗАТЕЛЬНЫЙ флип `Gates.RegressionGuard.Enabled` (D38.4 п.5, невыполненное обязательство, D39.34) + опц. проекция пере-оплаты в `tmctl status`; всё $0-код → (2) мини-прогон-замер ~10 глав на этом стеке → (3) пак-19.**
2. Смысл прогона от этого только растёт: он мерит форму, которую мы собираемся оставить, и заодно проверяет живьём построенное (rebill-гейт, лейбл-путь как no-op, майнинг-стоп, чекеры).
3. **Ниты больше ничего не «убивают»** — терять нечего, а значит их условность (D39.31 п.5) снимается: берём в микро-пак.
**Деньги мини-прогона, по фактическим цифрам rerun2** (`rerun2/RERUN_REPORT.md`): срез 15 глав = 28 336 байт GB18030; драфт **$0.010931**, редактура за арм **$0.04010.0766**, судья $6.4617 (не зовём). Экстраполяция на ~10 глав: **драфт ≈ $0.02, редактура ≈ $0.080.15 за арм****один арм ≈ $0.100.17, два арма (итерация №2 dspro-vs-glm) ≈ $0.200.32.** Потолок книги $15 не приближается; судья остаётся невызванным по D39.32.
**Операционное (в промт прогона):** стендовая БД на схеме **v9**, бинарь ожидает **v10** — первая же write-команда мигрирует; **перед прогоном сделать резервную копию `rerun2/*.db`** (запись rerun2 — единственный носитель фактуры того прогона).
## D39.36 — ДЕФЕКТ ШВА, найден вопросом владельца: канал WHAT (банкнота) ПАРСИТСЯ И ВЫБРАСЫВАЕТСЯ — владелец подписывает термины БЕЗ предложенного перевода; плюс майнинг-стоп жёсткий там, где замышлялся выбор (25.07, оркестратор №8). ✅
**Как вскрылось:** владелец описал свою модель работы майнинга («термины набираются по драфту → попадают в банк → получают ПРЕДПОЛАГАЕМЫЙ ПЕРЕВОД → дальше опциональный ОК: не ок — правим, ок — идём дальше без оков») и сказал, что «что-то не то». Проверка по коду показала: **его модель совпадает с ратифицированным ЗАМЫСЛОМ, а не с построенным**.
**Замысел (в комментариях и в D39.10):** `internal/pipeline/mining.go:20` — «default B, WHICH-only — **the dst is the owner's to attach via the banknote at sign time**»; `internal/miner/miner.go:20` — «The dst (WHAT) is delivered by the banknote (WS4)»; D39.10 — «код находит сущности (0.97), но **канон-dst доставляет БАНКНОТА**».
**Что построено (проверено исполнением):**
1. **`internal/pipeline/banknote.go:177`: `_, flags = parseBanknote(block, false)`** — распарсенные записи (`bankEntry{Src, Dst, Type}`, где `Dst` = «the model's proposed translation») **отбрасываются в `_`**; сохраняются ТОЛЬКО счётчики телеметрии (`n_banknote_lines`, `parse_fail`, `truncated`). Вне тестов `bankEntry` не используется НИГДЕ (грep по `internal`): 5 упоминаний, все внутри самого парсера.
2. **Сырой блок банкноты срезается из драфта до хранения** (`applyBanknote``commitBanknoteExport` персистит ЧИСТЫЙ текст), то есть предложенный перевод не остаётся и в артефактах прогона.
3. **Подписная карта — WHICH-only:** `miner.DeltaYAML` (`miner_emit.go:177-194`) кладёт `Src`, `Type`, `Status: auto`, алиасы и evidence-заметку — **поля dst в ней нет**.
**На майнинг-стопе владелец получает голые исходные термины и обязан придумывать русский вариант сам**, хотя модель его уже предложила и мы его выбросили. Шов «WHICH × WHAT», ради которого разводились каналы, физически не соединён.
**Второе расхождение (флоу, не дефект — ратифицированный выбор, который владелец пересматривает):** непустая дельта ⇒ прогон **ЖЁСТКО останавливается** (`runBankMiningStop` → STOP перед edit-волной, `mining.go:36-87`), и стоп очищается, только когда КАЖДЫЙ терм либо промоутнут, либо отклонён. Владелец хочет **опциональный** ОК: идти дальше на предложенном банке, вмешиваясь лишь когда хочет поправить.
**Третья, несущая связка, которую надо решить ЯВНО:** сегодня в инъекцию идёт **только CONFIRMED** (trust-gate банка, D39.2; D21 п.5). Значит «идти дальше на предложенном банке без оков» **не эквивалентно** «просто не останавливаться»: если mined-термы остаются `auto`, они в инъекцию НЕ попадают, и продолжение без подписи даёт банк, который для этих терминов не работает. Либо trust-gate ослабляется для mined+dst (и тогда в перевод едет НЕподписанный канон — с риском закрепить ошибку на всю книгу), либо остаётся, и «без оков» означает лишь «не блокировать прогон», а не «использовать предложенное».
**Диспозиция:** дефект №1 (выброшенный dst) — чинить безусловно, он противоречит собственному замыслу и обесценивает канал WS4. Пункты 2 и 3 — **вопрос владельцу**, потому что это его продуктовый выбор между скоростью и риском закрепления неподписанного канона. До ответа мини-прогон ЗАМОРОЖЕН: он упрётся ровно в этот стоп и попросит подписать голые термины — то есть воспроизведёт трение, которое владелец только что назвал.
## D39.37 — Мини-прогон + фикс-пак + сквозная проверка ПРИНЯТЫ и залендены: операционка подтверждена живьём до цента, шов банкноты замкнут (но не запинён — фикс-лист), остаток = 0 в трёх классах петли; слабое место проекта — измерительный слой (26.07, оркестратор №8). ✅
**Отчёты:** `MINIRUN_REPORT_2026-07-25.md` (фактура, §0 пре-регистрация написана ДО первой траты с named-критериями ПРОВАЛА) · `MINIRUN_HANDOFF_2026-07-26.md` (веса чисел, самооценка фиксов, 8 хвостов) · `MINIRUN_NOTE_2026-07-26.md`. Сессия шла под живым надзором владельца (две подписи майнинг-стопа, диалог «школа/академия»); фикс-пак — с его санкцией в сессии («исследование → правки → ревью»). Сессия не коммитила; лендинг мой.
**Моя приёмка — execute-first, всё пере-ранено:** build/vet/gofmt чисты (`internal/llm/llm.go` — HEAD-состояние) · **`-race` 13 пакетов ok, 0 FAIL** (в дереве появился `internal/obs` с тестами) · **ценз диффом ИМЁН 475→492, удалено 0** · **golden `281d7025…dd9b99b4`: мой маскированный структурный дифф против HEAD ПУСТ** вне трёх заявленных осей (`CheapGateVersion` v4→v5 · `min_max_tokens` dspro 8000→16000 · `langpack_version` `a7d4be2c0465``a28ed743c99c`) · парити EXACT `n=13618 … 0.9655`.
**Деньги сверены по СЫРЫМ ЛЕДЖЕРАМ до цента:** главный прогон `spend.committed_usd = $0.114291` (совпал с проекцией rebill-гейта ТОЧНО — она суммирует хранимые `cost_usd`); проба банкноты $0.021688; микро-проект гейта $0.003081 (леджер несёт ОБЕ оплаты; my first sum читала chunk_status — текущее состояние — и потому недосчитывала); сквозная проверка $0.048855; **брак сессии $0.046668** (sed-сборка конфига по чужому `book.yaml` — честно отчитан, оригиналы целы, бэкап rerun2 проверен: схема v9, spend неизменен). Итог **$0.234583** — арифметика сходится побайтно с отчётом.
**Спот-чеки по сырью (мои):** банкнота **71 строка / 9 из 20 чанков / truncated 0** — совпало с БД; миграция **v11** реальна (`first_flag_reason`, `banknote_detail`); **шов замкнут вживую**`banknote_detail` несёт пары src→dst, включая «学堂家老 → старейшина школы», тот самый терм второй подписи; **`RegressionGuard` — первое живое срабатывание за историю проекта ПОДТВЕРЖДЕНО МОИМ ре-раном** `tmctl report` на verify2: `number_drift:1`, «draft numbers missing from the final: [66]»; главный прогон 34/34 строки ok. БД главного прогона на v10 — скан остатка принят по записанному выводу команды (артефакт эпохи до миграции; форсить миграцию фактуры не стал).
**НАХОДКА РУБЕЖА-2 (моя независимая мутация, ВЫЖИЛА):** отключение джойна WHAT в точке вызова (`miner.DeltaYAML(mined, пустая_карта)` вместо `proposals`) оставляет **всю сьюту зелёной** — несущий продуктовый фикс сессии доказан живым прогоном, но НЕ запинён ни одним тестом: регрессия была бы молчаливой. 9 мутаций сессии были красными, но ни одна не целила в этот колл-сайт. **Фикс-лист №1 следующего касания бэкенда: сквозной тест «намайненный терм с предложением банкноты → подписная карта несёт dst».**
**РАТИФИЦИРОВАНО:**
1. Гигиена: флип `RegressionGuard` в 5 конфигах (обязательство D38.4 п.5 ПОГАШЕНО) · оба нита общности в **fail-loud форме без Go-дефолта** — снимает моё возражение D39.31 п.5 (дефолта, обязанного рендерить сегодняшнюю строку, не существует) · проекция пере-оплаты в `status` тем же `projectRebill`.
2. Фикс-пак (санкция владельца в сессии): v11 · эхо-метрика через `first_flag_reason` · шов банкноты (dst как EVIDENCE, `status:auto` не трогается — подпись остаётся владельцу) · `dialogue_dash` · обрезка лога · флор 16000. **Две откаченные правки (`percent_scale`, `dc2`) фиксирую как ОБРАЗЕЦ:** обе маскировали бы настоящие ошибки; «написано → прогнано → откачено с причиной» — правильный исход, не потерянная работа.
3. **Хендофф-дисциплина «чего числа НЕ доказывают» — принимается как НОРМА отчётов** (вес каждого числа: «0 в трёх классах ≠ текст чистый» · «замер на обучающей выборке» · «доказано тестами, не прогоном»).
4. **Методические ошибки сессии №2/№3/№5** («рекомендация раньше фактуры», «польза фикса без проверки», «вывод быстрее обеспечения») — тот же класс, что мои D39.34-находки; в следующие промты идёт формула сессии: **«пере-мерь свой вывод ДРУГИМ способом, чем получил»**, вместо голого «самопроверься».
**НА ВЛАДЕЛЬЦЕ (открылось решение):** **включение платной петли ремонта (D39.24) — замер ЕСТЬ: остаток 0 в трёх классах, которые петля умеет чинить.** По этой цифре корректно решить «НЕ включать» (чинить нечего) — с оговоркой сессии: это узость набора классов, не чистота текста; расширение набора — прежде повторного замера. Рекомендация моя: не включать, петля остаётся построенной за `enabled:false`.
**ХВОСТЫ (в трекер, по убыванию веса):** (1) **размеченный набор для чекеров** — топ-выбор сессии и мой: без него каждая цифра качества держится на глазомере очередной сессии; (2) тест-пин джойна WHAT↔WHICH (моя выжившая мутация); (3) покрытие WHAT↔WHICH (замер: 0/2 и 1/2 — следующая работа шва не «замкнуть», а «покрыть») + майнинг-стоп очищается РАУНДАМИ (вход в развилку D39.36 п.2 — флаговый стоп, семантика владельцем озвучена, реализация открыта); (4) `dialogue_dash` подогнан под 蛊真人 — честный замер только на невиданном тексте; (5) **генеральность нарезки: кана и ханьцзи в одном классе** (`TokenizeClassCounts`) — на ja-книге `est_out` завышен ~1.7×, чанки вдвое мельче, вызовов вдвое больше, МОЛЧА; + `EstimateTokens` недосчитывает кириллицу → резервации занижены на русско-тяжёлых вызовах; (6) golden пинит только фолбэк-путь (без langpack) — нужна вторая фикстура; (7) `prompt_override` — легальный обход гарантии слоя-2, сформулировать честно; (8) майнер/банк не-CJK конструктивно не работают (манифест = китайская ономастика) — граница признана, едет с ja→ru; (9) `request_log` без скоупа/ретеншена + `first_flag_reason` = ТРЕТЬЕ представление истории попыток (корень — неразведённые скоупы) ; (10) флор-16000 — калиброванная константа без модели «thinking в completion»; (11) две единицы упёрлись в `max_tokens` — вернётся на en-книге. **Проверено исполнением сессии ($0): ja/en книги падают громко ДО цента; с обойдённым гейтом проходят ingest/чанкер/read-model без правки Go** — §0 держится на уровне кода, но калибровки фактически китайские.
## D39.38 — Санкции владельца (26.07): флаговый майнинг-стоп СТРОИМ (пак-20, двухфазный, ПЕРЕД паком-19); петля ремонта НЕ включается; полигону — размеченный набор чекеров; всем бэкенд-промтам — обязательный СИНК-шаг с ратифицированной базой. ✅
**Очередь ратифицирована владельцем:** пак-20 «банк: флаговый стоп + покрытие WHAT→WHICH» (двухфазный — синк → дизайн → ратификация → стройка) → пак-19 «голос/состояние» → свип «стартовый промт + гипотезы ресёрчей 0122 против построенного» (владелец спросил «прошлись ли по всем?» — честный ответ был «не уверен»; свип $0, аудит-воркфлоу класса D39.34) → добор идеала (4 вопроса границы D39.33 всё ещё у владельца) → МАСШТАБ → пилот. Параллельно полигон: пакет-6 «размеченный набор для чекеров» (200300 строк/класс, разметка до просмотра вердиктов, precision/recall текущих чекеров — линейки вместо глазомера).
**Петля ремонта: НЕ включается** — отложено-с-записью: замер D39.37 дал 0 кандидатов в её классах, чинить нечего; вернуться при расширении набора классов и ненулевом остатке. **Мандат владельца в нормы промтов:** сессия ОБЯЗАНА синковать свою имплементацию об ратифицированную документацию и окружающий код ДО дизайна — таблица «источник ↔ код ↔ вердикт» в отчёте (шаг 0 пака-20; переносится во все последующие кодинг-промты). Контекст мандата: вопросы владельца об алгоритме банка показали, что доверие держится на прослеживаемости «ресёрч → ратификация → код», и её надо ПОКАЗЫВАТЬ, а не подразумевать.
## D39.39 — Пакет-6 ПРИНЯТ: линейки чекеров впервые измерены против человеческой разметки (3015 позиций, 6 реальных прогонов, $0) — где линейка стреляет, она почти не врёт; но recall почти везде низкий, K5c инвертирован, K6 шумит 14:1; «остаток=0» D39.37 уточнён как «ноль в охвате узких детекторов», НЕ «финал чист» (26.07, оркестратор №8). ✅
**Приёмка исполнением:** `metrics.json` воспроизведён ПОБАЙТНО ре-раном харнесса (настоящие `internal/checks` через replace-модуль); разметка пересчитана независимо (3015 позиций: 70 дефектов, 21 спорная); баг U+0301 в `TokenizeCyrillic` воспроизведён живьём («бо́льшим» → «бо»+«льшим»); инверсия K5c подтверждена по сырому корпусу (`acceptance:10:0`: 10×-ошибки шкалы «один процент» для 一成 при слове «процент» в юните, глушащем подчекер целиком — `checkers.go:355`); код-якоря заявленных дефектов сверены. Протокол «разметка ДО вердиктов» соблюдён по конструкции сборки. Отчёт: `docs/archive/reports/POLYGON_CHECKER_LABELS_2026-07-26.md`; набор — на стенде `books/gu-zhenren/labels/` (текст книги, вне git), ре-ран детерминирован.
**Сводка первого честного замера** (полный разбор — в отчёте): K1 时辰 1.000/1.000 (N=15) · K2 латиница 1.000/0.75 как детектор и 0.50 в боевом охвате — заглавные («Cultivation» в ФИНАЛЕ), гомоглифы («гy») и короткие токены вне класса · K3 битые формы 1.000/0.100 — один шаблон «-йть» вместо класса · K4b смешение 0.833/0.109 — «8→0» подтверждено на мыслях (99/100 молчат), но 41/46 реплик ВСЛУХ не опознаны · K4a — 0 входов на 6863 строках, непроверяем · K5a магнитуда — 0 срабатываний на 149k знаков (предохранитель отсекает идиомы вместе со всеми реальными магнитудами) · K5b 1.000/1.000 (N=8) · K5c — 0.167 читательской меркой / 1.000 конвенцией кода (вопрос Р2) · K5d — precision 0.000 (4 срабатывания, все безобидные) · K6 глоссарий 0.067 — 14 ложных на 1 подлинный (7 — мн.число вне `decl.forms`, 6 — однознаковый ключ 转 на глаголах, 1 — кавычки в форме). 12 дефектов чекеров зафиксированы с file:line (не чинились — полигон не автор).
**Следствия.** (а) Чтение D39.37: «остаток=0» = ноль срабатываний детекторов, чьи recall теперь ИЗМЕРЕНЫ (петлевые классы по боевому дефолту `repair.go:117`: латиница 0.50 в охвате, битые формы 0.10). Решение «петлю не включать» НЕ пересматривается — петля видит теми же детекторами, чинить ей нечего; но «финал чист» из этой цифры не следует. (б) Набор = постоянный измерительный стенд: любой фикс чекеров теперь приёмуется против него за $0 — «глазомер сессий» в этом слое закрыт как класс. (в) Вход будущего фикс-пака «чекеры»: 12 дефектов file:line + supressor K5c пер-вхождением + атрибуция K4b + `inner_marker` на тире + предохранитель K5a + 两 в `cheng_re` + U+0301 + мн.число в сид-тулинге + однознаковые ключи пост-чека; место в очереди — решение владельца. (г) Четыре вопроса разметки Р1Р4 — владельцу (гипербола 千万 · что есть дефект в 成 · сокращённая форма термина · неразрешимая офлайн речь/мысль); от Р2 зависит целевая семантика K5c, от Р4 — потолок recall K4b by construction. (д) 38/40 дефектов латиницы живут в ЧЕРНОВИКАХ — вне охвата гейтов по сознательному контракту (`waverun.go:486`); в финалы доехало 2, поймано 1 — вопрос «гейт черновика» отдельный и не срочный (редактор черновик переписывает).
## D39.40 — Владелец (26.07): фикс-пак чекеров = ПАК-21; перед ним — мини-прогон ~10 глав на полностью построенном бэкенде (после лендинга паков 20 и 19). Очередь D39.38 амендирована этой вставкой. ✅
**Слова владельца:** фикс-пак чекеров — «в 21 промт»; «до этого промта попытался бы запуститься бэкендом на 10 глав — к тому времени мы будем алгоритмически иметь весь запланированный бэкенд (по большей части)». Очередь теперь: **пак-20 «банк» (идёт) → пак-19 «голос/состояние» → мини-прогон ~10 глав → пак-21 «чекеры» → свип гипотез → добор идеала → МАСШТАБ → пилот Ф2.5.**
**Мини-прогон — по норме D39.33 (именованные вопросы):** покрытие WHAT→WHICH живьём при непустом пересечении (обязательство D39.37) · оба режима флага (стоп с таблицей / auto→Ambiguous от начала до конца) · срабатывания голос-флаггера пака-19 · эхо-метрика на живом эхо. Ограничение: `dialogue_dash` на 蛊真人 загрязнён подгонкой (D39.37 п.4) — его цифры мини-прогона аргументом не считаются. Скан остатка пойдёт по линейкам с ИЗВЕСТНЫМИ слепыми зонами (D39.39) — приемлемо: зоны документированы, чтение «тишина ≠ чисто» уже в силе.
**Пак-21 «чекеры» (вход зафиксирован):** 12 дефектов D39.39 с file:line + переезд `translitInterjections` из Go в данные цели (улов владельца 26.07: захардкоженный словарь в `cheapgates.go:367` против нормы §0) + починки по ответам владельца на Р1Р4 (дизайн пака пишется ПОСЛЕ этих ответов). Приёмка = ре-ран против размеченного набора пакета-6: recall вверх, precision не ниже текущей, `metrics.json` — сравнение с базлайном D39.39.
## D39.41 — Пак-20 ФАЗА 1 ПРИНЯТА: синк вскрыл 18 расхождений «доктрина↔код» и 4 структурных тупика; корпус доков УЖЕ содержит непостроенные ратифицированные ответы (двухрежимная эмиссия §C2-7 · M2 · журнал ревизий); вердикт сессии «P1P5 в предъявленном виде не строятся» подтверждён верификацией 39 CONFIRMED / 7 PARTIAL / 0 REFUTED (26.07, оркестратор №8). ✅
**Приёмка исполнением (7 верификаторов, 46 клеймов, $0):** все несущие S-строки синка подтверждены кодом и исполнением (S1 — тест `TestRenderGlossaryBlock` PASS на `status:auto` + ⟨проверить⟩; S2 — вырез `Source:mined` из baseMemory + confirmed-only редактор = инертность на обоих проводах; S5 — срез банкноты не выполняется при выключенном гейте, ключа нет ни в одном конфиге; S8 — `contrast_path` не задан ни в одном тесте, тело майнинг-стопа `mining.go:40-102` не исполняется ни разу за сьюту, доказано подсчётом логов с позитивным контролем). Доктринальные цитаты Д1Д8 сверены с первоисточниками; деньги пересчитаны из БД стенда тремя способами (verify $0.0161 / verify2 $0.0328, +104%); теорема FOI и Следствие B выдержали атаку (девятый путь не найден). PARTIAL-поправки — в ревью-шапке отчёта `docs/archive/reports/PACK20_BANK_DESIGN_2026-07-26.md`; весомые: цитата-парафраз в Д5 (овер-атрибуция), блокер 7 не грунтован текстом, посылка блокера 3 не предъявлена в отчёте. **Новая находка приёмки: бюджет банкноты `bankTokenBudget=144` по честной формуле движка впритык/отрицателен (худший блок пробы 142.6/147.2 est-токенов) — фазе 2 пере-считать.**
**Статус: фаза 2 НЕ стартует** до решений владельца по блокирующим развилкам (следующий D-блок). Ключевое уточнение семантики от владельца (26.07, дословно по смыслу): флаг = ОПЦИОНАЛЬНАЯ ПОДПИСЬ — «можно запустить перевод так, чтоб сессия не останавливалась и не запрашивала верификацию банка, а просто как намайнит и закончит — шла в редактуру». Семантика D39.36 не пересматривается; сложность пака — не в стопе, а в том, ЧТО едет в провод, когда подпись пропущена (у большинства намайненных терминов нет dst — разъезд каналов 3% по построению; путь записи не существует; строки в проводе двигают хеши оплаченного).
## D39.42 — Решения владельца по фазе 2 пака-20 (26.07): ядро — новая роль ТЕРМИНОЛОГ (переводит весь смердженный банк по полным контекстам после черновой волны); флаг = опциональный аппрув поверх его выхода; редактор ест неподписанное С ПОМЕТКОЙ в авто-режиме; банкнота отдельным файлом; смена банка = ТОЧЕЧНАЯ ре-редактура по ключу со сметой и согласием; веб-фетч в v1 НЕ входит. ✅
**Архитектура — словами владельца:** «мы намайнить в банк можем весь контекст, потому что есть черновые переводы всей книги сразу … дальше отрабатывает модель, которая видит весь контекст и ПЕРЕВОДИТ весь банк памяти сразу, далее начинают работу редакторы и у них уже есть готовый весь переведённый банк. Если аппрув опционален — просто иди в перевод, который в банке; если обязателен — пайплайн останавливается и ждёт правок». Это ложится на волновую архитектуру без перестройки: draft-волна → майнер (из ИСХОДНИКА) + банкнота (варианты из черновиков) → **терминолог** (не построен — та самая дырка покрытия 3%) → стоп/авто → edit-волна. Направленная банкнота из ядра пака УХОДИТ (терминолог закрывает покрытие адреснее); банкнота остаётся evidence-каналом.
**Ратифицировано пунктами:** (1) **Терминолог** — роль в пар-паке; вход = смердженный банк (двусторонний $0-джойн майнер∪банкнота) + KWIC-контексты вхождений из исходника + варианты черновиков + Палладий + **жанровый словарь пары** (новые данные langpack: общепринятое индустрией — «культивация», не «совершенствование»; слова владельца: «не надо тащить чужой фан-канон, но надо тащить общепринятое»); выход = консолидированное dst на каждый терм (формула §C2 п.3, не мажоритарность) + провенанс + разброс; двухрежимная эмиссия §C2-7 (есть dst → `draft`, нет → `auto`); батчи, дешёвая модель, центы/книга. (2) **Веб-фетч в v1 НЕ входит** — полигону ресёрч-вопрос (улучшает ли, источники, провенанс); интерфейс роли закладывается расширяемым. (3) **Авто-режим**: неподписанные строки с dst едут редактору (и черновикам следующих прогонов) с маркером ⟨проверить⟩ (механизм D32/S1 готов); редакторский блок расширяется на не-Confirmed отдельной помеченной секцией; **ВСЕ строки банка фолдятся в версию памяти** ⇒ тихой пере-оплаты не существует как класса, **README-инвариант №2 НЕ трогается**, ось `lane`/P1 НЕ строится. (4) **Банкнота**: отдельный `translator-banknote.md` + `prompt_override` (книги без канала — $0, класс «таблица в экспорте» невозможен) + безусловный срез; бюджет 144 пере-считать (D39.41: впритык/отрицателен). (5) **Смена банка после оплаты** (поздняя подпись и любая правка) = пере-редактура ТОЛЬКО затронутых юнитов через `--resnapshot`-семантику (пере-пин $0 неизменных байт), со сметой «N юнитов, ~$X» ДО согласия — для честной сметы чинится P3 (проекция по contentHash + `sanitizer_stripped`); слова владельца: «если меняется банк — перезапускается редактура; вопрос насколько широко, на какие главы».
**Уточнения к записанному:** D39.36 п.3 «в инъекцию идёт только CONFIRMED» — верно ТОЛЬКО для редакторского блока; блок переводчика рендерит не-Confirmed с маркером (S1, тест). Моё объяснение владельцу «пометка нужна главам 450 того же прогона» было неверным для волновой архитектуры — взято назад (в волне черновики готовы до майнинга; пометка живёт на edit-волне авто-режима и в черновиках следующих частей). research/20 §C2 «не-мажоритарность» и §B3 «evidence-файл» — код расходится осознанно (S10/S11): §C2-формула уезжает в терминолога, артефакт кандидатов остаётся в сторе (спека амендирована этим блоком). Р7 «auto→approved автоматом» — superseded семантикой владельца D39.36/39.42.
**НЕ строить в фазе 2:** ось lane / durable-реестр P1 · ретирование `Gates.Banknote.Enabled` · направленная банкнота (вернуться по замеру покрытия терминолога) · неподвижная точка P5 · веб-фетч · M2-кэш (доктрина Д2 остаётся кандидатом на отдельную ратификацию).
## D39.43 — Пакет-7 фаза A ПРИНЯТА: recall боевого WHICH-канала впервые измерен (0.0690.103; term 0.040; ограничивает слой ЭМИССИИ, снимается до 0.911) — количественное основание терминолога; посылка «культивация = общепринятое» уликами НЕ подтверждена (вскрыта ложная сходимость: один английский глоссарий + один блогер); смета терминолога на полном банке = ЕДИНИЦЫ ДОЛЛАРОВ, не «центы» — амендмент D39.42 п.1 (26.07, оркестратор №8). ✅
**Приёмка исполнением (5 верификаторов, 26 проверок): 24 CONFIRMED / 1 PARTIAL / 1 UNVERIFIABLE / 0 REFUTED** — майнер-прогоны и проба рубрики воспроизведены побайтно на пине 996bade, веб-улики подтверждены дословно, арифметика пересчитана. Отчёт: `docs/archive/reports/POLYGON_TERM_RESEARCH_A_2026-07-26.md` (ревью-шапка с нитами); инструменты: `eval/pkg7/`; $0.
**Три следствия для контракта:** (1) **Амендмент D39.42 п.1:** «батчи, дешёвая модель, центы/книга» для терминолога верно ТОЛЬКО на выборках; на полном банке (13 246 кандидатов расширенной эмиссии × ~2.5k токенов контекстов ≈ 33 млн вх. токенов) — единицы долларов; смета фазы 2 пака-20 обязана считаться от реального объёма входа, и требование G7 (отделить «что показать владельцу» от «что отдать терминологу») получает денежное обоснование. (2) **Фактура в пак-20 и будущий пак generic-майнера:** требования G1G10 (алфавит кандидатов = данные пары · многословные кандидаты · нормализация не выводит строку за пределы книги · порог частоты на класс · разметка исходника = сигнал · контраст на пару · ось эмиссии G7 · кластер не глотает родовой титул G8 · квадратичность ⇒ 4.6 ч на приёмочной книге G9 · тихая пустая дельта G10); точечный дефект кластеризации с адресом (`族长`/`学堂家老` проглочены кластером `葛家` — стоил подписанного терма). (3) **Правило жанровости (предложение сессии, разумное):** жанровое = встречается в ≥2 книгах жанра без смены смысла; книжное живёт с книгой.
**Ресёрч:** 84 самопроверки источников (62C/14P/7MISQ/1OA/0 фабрикаций) + критик полноты, снявший собственные «сходимости» сессии (полтора слоя вместо трёх у «12 полей»; круговая валидация K3). Посылка D39.42 п.1 об индустрии НЕ подтверждена и НЕ опровергнута: издательская сторона стоит на маркетинговых аннотациях (систематически смещены против жаргона), фан-сторона — ложная сходимость из одного первоисточника; предложен V0 (не подписывать 修炼-строку до $0-добора: тела ISBN + НКРЯ/Ngram). Строки `genre-glossary.txt` (создан паком-20, куратор — владелец) 修炼/筑基/修士 — под этим же вопросом.
**Статус: фаза B НЕ стартует** до решений владельца Z1Z4 (рубрика K1K12 + Q1Q6 · вариант по 修炼 · смета B $1.202.60 с пре-регистрацией и критериями провала F1F4 · $0-добор улик перед B). Решения — следующим блоком.
## D39.44 — Решения владельца по Z-развилкам пакета-7 (26.07): рубрика K1K12 РАТИФИЦИРОВАНА (Q1Q6 закрыты); по 修炼 — V0 (не подписывать до добора); смета фазы B $1.202.60 САНКЦИОНИРОВАНА; $0-добор улик — ДА, ПЕРЕД фазой B. Обе записки (полигону и аддендум паку-20) выданы СЕЙЧАС — бэкенд полигона не ждёт. ✅
**Q-ответы (санкция владельца по рекомендациям оркестратора):** Q1 — веса НЕ выбираются до данных фазы B (оценка там BWS по-критерийно, весов не требует; выбор весов — по фактуре); Q2 (жанр против академии) — решается вместе с Z2 после V0-добора (вопрос регистра издания); Q3 — порог «хорошо» = ВСЕ критерии ≥1 + катастроф-экран (строже и проще защищать); Q4 — сокращённая форма терма = ПОЛЕ существующей записи, не отдельная строка (концепт-ориентация записи, A1.1 отчёта) — **это же частично закрывает Р3 из D39.39** (сокращённая форма легитимна, если записана принятой формой банка; пост-чек обязан её принимать — вход дизайна пака-21); Q5 — штраф ПЕРВОГО вхождения + отдельный счётчик распространённости ошибки; Q6 — «краткость» в рубрику НЕ входит (Суперанская: точность выше краткости; конфликт с K1/K6).
**Порядок работ полигона:** Z4-добор ($0, пять адресных заходов: тела ISBN · изданные русские переводы книг стенда → HUMAN-эталон · НКРЯ/Ngram · архивы + локальный парсинг (ГУГК/Концевич pdftotext, дамп БКРС) · GalTransl/SakuraLLM/AiNiee + JTF) → фаза B по пре-регистрации A5 (P0 случайный глоссарий · P0b без контекстов · HUMAN-арм · K2=н/д на ja/en · критерии провала F1F4; пре-регистрация после старта не правится).
**Секвенирование с паком-20 (вопрос владельца «не зря ли параллельно»):** параллель ОКУПИЛАСЬ — фаза A успела поправить смету терминолога, вход эмиссии и кластер-дефект ДО цементирования в коде. Аддендум-синк бэкенду уходит СЕЙЧАС (он зависит только от принятой фазы A): пп.15 фактура D39.43 + п.6 «промпт терминолога = ИНТЕРИМ v1, финальный текст выберет фаза B и ляжет дата-правкой; механизм обязан терпеть смену текста без правки кода» + п.7 «содержимое `genre-glossary.txt` = неподписанный драфт; строки 修炼/修士/筑基 спорны (V0), пометить/придержать, в golden не цементировать». Результаты фазы B лягут позже дата-правками — механизм бэкенда их не ждёт.
## D39.45 — Пак-20 ФАЗА 2 ПРИНЯТА И ЗАЛЕНДЕНА: терминолог (роль пар-пака, durable-деньги) + флаговый стоп `--verify-bank` (дефолт = авто) + авто-провод неподписанного с пометкой + точечная ре-редактура по ключу с $0-пере-пином + банкнота отдельным шиппинг-файлом — построено, живьём проверено на срезе 10 глав, деньги сходятся тремя путями до 9-го знака (26.07, оркестратор №8). ✅
**Приёмка исполнением (2 верификатора):** сьюта `-race` 14 пакетов ok · golden PASS · миграция v12 аддитивна · `bankTokenBudget` выведен (144→496, пересчитан вручную) · воронка эмиссии G10 на каждом вердикте стопа · синк-пункты аддендума исполнены дословно (промпт роли = интерим в файле; спорные строки словаря закомментированы с причиной; `TestGenreGlossaryEditDoesNotMoveThePackVersion` + обратная половина) · стенд: $0.047614504 (spend ≡ checkpoints ≡ request_log), 20 юнитов пере-пинены за $0 при bank-only-сдвиге, поздний сдвиг версии пака — платный (контраст верен). Ревью-шапка с нитами — на отчёте `docs/archive/reports/PACK20_BANK_BUILD_2026-07-26.md`.
**Ключевые факты стройки:** живой прогон подтвердил ЗАДАЧУ (терминолог переоткрыл подписи владельца: 学堂→«школа», 学堂家老→«старейшина школы»; дрейф показан колонкой spread) и поймал дефект класса «канон-ломание» (роль переписала согласованный с подписями перевод — закрыто якорями ⟦TM-CANON⟧ + детектором CanonConflicts, живьём 1 честный конфликт из 35). Сессия сама вскрыла и закрыла: самоподтверждающую выборку своих мутаций (независимая линза: 20/30 выживших → закрыты; итог 48+ красных), фолд жанрового словаря в версию пака (подпись строки пере-оплачивала бы книги пары целиком — выведен из хеша, правка бьёт только батчи роли), 14 дефектов аудита §8.2 (вкл. бюджет роли ПОСЛЕ факта → стал предварительным; деньги роли вне TOTAL → входят; ложное «cjk_artifact» на легитимно-двуязычном ответе роли). **Микро-проба $0.02 снята как перекрытая живым прогоном.** Кластер-дефект G8 воспроизведён и оказался хуже («глава клана» приписывался фамилии) — закрыт на границе сборки входа (Origin: alias + провенанс Via), кластеризация не чинилась (отдельное решение).
**Открытые решения владельца:** (1) `feed_cap` (ось G7) — предложен с деньгами (400 канд. ≈ $0.035, все 13 246 ≈ $1.10; бюджет-гейт режет хвост батча, не наименее ценное) — рекомендация оркестратора: строить малой дельтой; (2) жанровые метки `genre-glossary` — пар-широкие или выравнивание с `book.yaml`; (3) подпись содержимого словаря — после полигонской фазы B; (4) одноразовый `--resnapshot` книг с auto-строками (стендовые). **Хвосты в трекер:** `AttachKWIC` квадратичен (16.8 с / 2000 канд.) · смета молчит о пере-покупке прохода роли на каждой итерации подписи · S12 частичен (подмена слова разделителя не ловится) · `bankTokenBudget` worst-case зашит zh→ru (признанная утечка пары, §0) · ветка `dispositionFor`/S7 · gofmt-нит `llm.go` (до-паковый) · **вариативность банкноты 37↔14 строк между прогонами одной книги (n=2) — сигнал в полигонскую фазу B: бьёт премису «банк = детерминированный артефакт»** · веса формулы §C2-3 пере-мерены n=1 — пере-мер следующим живым касанием.
## D39.46 — Пакет-7 ЗАКРЫТ ЦЕЛИКОМ (фазы B + B приняты): «контексты — главный рычаг терминолога» РАТИФИЦИРОВАНО как измеренное (разрыв 6 термов при размахе 1); слепой LLM-судья = катастроф-экран, НЕ ранжировщик; жанровый словарь инертен до расширения эмиссии на класс term; три процессных правила полигона — В НОРМЫ ПРОМТОВ (26.07, оркестратор №8). ✅
**Приёмка исполнением: 7 CONFIRMED / 1 PARTIAL / 0 REFUTED** (деньги $0.31030+$0.14013 пересчитаны из usage всех 446 вызовов; замеры T/J/R фазы B воспроизведены из сырья; R1-неизмеримость контроля — независимым кодом). Ревью-шапка с нитами — на отчёте `POLYGON_TERM_RESEARCH_B_2026-07-26.md`; B`POLYGON_TERM_RESEARCH_B2_2026-07-26.md`. Итого пакет-7: **$0.45043 из коридора $1.202.60**. Самокоррекция сессии (ревизия §B6 нашла 4 материальные ошибки СВОЕГО судейского слоя, B проверил ревизию замером) — прецедент нормы author≠reviewer: единственная фаза без критика полноты = единственная с ошибками.
**Ратифицировано фактами:** (1) **контексты — главный рычаг качества терминолога** (Z-B8: арм без KWIC теряет 67/19 при внутриармовом размахе 1) — экономить на контекстах нельзя, kwic-настройки = главная ось качество↔цена; (2) **слепая оценка годна только как катастроф-экран с декоем** (H7: разрыв до декоя 1.271.42 против межарменного 0.20; ранговое согласие с объективным слоем ничтожно); (3) **жанровый словарь инертен (0/80), пока эмиссия/подача не расширены на класс term** — усиливает открытое решение feed_cap из D39.45; (4) отбраковка судей фазы B снята (Z-B7 — контроль был структурно неизмерим); (5) узкая формулировка правила транскрипции — поддержана замером как редакторская опция (широкая опровергнута: P2P5=+0.013<0.05).
**Три процессных правила — в нормы промтов сессий (стандарт, как синк-мандат D39.38):** (а) у каждого измеряемого фактора обязан быть арм БЕЗ него фактор во всех армах не измеряется ни одним; (б) в сравнительном протоколе: дедуп кандидатов + отбор только расходящихся позиций + контрольный ДЕКОЙ (без него «отличает ли оценщик годное» неизмеримо); (в) критик полноты на КАЖДУЮ фазу, не на пакет.
**На владельце (подписи, не блокируют очередь):** Z-B1 修炼 остаётся неподписанной (V0 не снят тел изданий нет) · Z-B2 подписать 17 строк словаря, закрытых БКРС (筑基 подтверждена; 修士культиватор спорна словарное «христ. монах») · Z-B3 узкая формулировка правила транскрипции как редакторское решение (цена: без правила ломаются 月光蛊/王婆) · Z-B4 веб-фетч в v2 роли НЕ вводить, офлайн-словарь как пар-данные (для zhru собран). Полигон-очередь пуста; кандидаты следующего пакета: **вариативность банкноты 37↔14 (сигнал пака-20)** · ёфикатор/санитайзер-разметка · dialogue_dash на невиданном тексте.
## D39.47 — Владелец (26.07): ЖАНРОВЫЙ СЛОВАРЬ ОТМЕНЁН КАК КЛАСС — решение о переводе принадлежит ПОДПИСИ владельца на банк КНИГИ; пар-словарь форсит один регистр как единственно верный. Амендмент D39.42 п.1 / D39.44 (Q2, Z2) / D39.46 (Z-B1/B2/B6, Z-B4 сужен). Главный открытый вопрос покрытия — расширение эмиссии на класс term. ✅
**Принцип (слова владельца):** одна книга законно хочет «культивацию», другая «совершенствование»; жанровый файл предписывал видение мимо подписи. Улики полигона это подтверждают: центральная строка 修炼 не подписывается В ПРИНЦИПЕ (выбор регистра, не факт итог Z4-добора); «общепринятого нет есть школы» (ложная сходимость: один английский глоссарий + один блогер); покрытие механизма 0/80, четыре строки из шести ноль вхождений в книге стенда; консистентность уже даёт фактор «согласие с ПОДПИСАННЫМ соседом» факт о книге», не предписание). **Честная запись о провенансе посылки:** «жанровый словарь» вошёл в контракт через оркестратора (D39.42 п.1 из реплики владельца о «общепринятом», без улик), полигон затем измерил основание для отмены и НЕ сделал вывода (признание сессии; неиспользованный канал вопросов; цена задержки $0.01362 3% пакета при этом именно эти траты произвели отрицательный результат, которым отмена обоснована).
**Снимается:** Z-B2 (17 строк на подпись справочная фактура ресёрча) · Z-B6 (беспредметен) · Z-B4 сужен (веб-фетч в роль по-прежнему НЕ вводится; «офлайн-словарь как пар-данные» полигон снял сам: польза 1/80) · Z-B1 беспредметен. **Уцелело целиком, перепрогоны не нужны:** контексты главный рычаг (D39.46) · узкое правило транскрипции (Z-B3; боевой интерим-промпт УЖЕ в узкой форме сверено по HEAD) · судья = катастроф-экран · вся фактура майнера/эмиссии/квадратичности.
**Размотка кода — дельта бэкендерам (адреса сверены оркестратором по HEAD):** `terminology.go` ScoreOpts.GenreDst + фактор genreAgrees/genreBonus (:357-359, :375, :433-434) · `terminologist.go` genreGlossaryMap/передача/инъекция блока (:130, :163-166, :322) · `langpack.go` поле GenreGlossary + parseGenreGlossary + GenreGlossaryFor · два теста-пина · файл `configs/langpacks/zh-ru/genre-glossary.txt` удалить. TM-CANON-якоря и CanonConflicts НЕ трогаются. Цена: пере-покупка только батчей терминолога (файл вне pack.Version правка самого пака это обеспечила); волны не двигаются. **Вместо словаря главным вопросом становится эмиссия:** recall term=0.040 (修行 ×326 невидим терминологу); расширение СОГЛАСУЕТСЯ с принципом даёт владельцу больше строк на решение, ничего не решая за него; цена известна из абляции (cap0.429 при 624 строках; +тип0.875 при 13 246, precision 0.15) + feed_cap (D39.45); kwic-дефолты 3×40 не покрыты замером (мерено на ~8×120). Санкция владельца на дизайн расширения ожидается.
**Процессное правило №4 — в нормы промтов** (к трём из D39.46): деливерабл промта не отменяет права сессии сказать «этого делать не надо»; замер, подрывающий ПОСЫЛКУ задачи (не исполнение), обязывает остановиться и поднять через канал вопросов, а не выдать формально требуемый артефакт.
## D39.48 — Дельта пака-20 ПРИНЯТА И ЗАЛЕНДЕНА (размотка словаря чиста, golden без пере-капчера = версия langpack не сдвинута); синк-находки дельты ПЕРЕФОРМУЛИРУЮТ вопрос расширения: ось = «что банкуется без подписи ≠ что кладётся на подпись»; перед дизайном — ТРИ ПРЕ-ЗАМЕРА (~$0.14, ждут санкции владельца) (26.07, оркестратор №8). ✅
**Приёмка:** размотка снята ровно по списку D39.47 (grep-остатков нет; TM-CANON⟧/CanonConflicts/узкое правило не тронуты; формула вернулась к четырём ратифицированным множителям); мутации возврата красные, включая обобщённый пин «любой второй TM-блок»; вердикт «версия пака побайтно та же» доказан независимым путём (golden PASS без пере-капчера). Отклонение (обновлённая шапка промпта роли) принято. Отчёт: `docs/archive/reports/PACK20_DELTA_2026-07-26.md` с ревью-шапкой.
**Синк-находки дельты (сверены оркестратором по коду):** (1) потребителей эмиссии ТРИ лист на подпись · авто-банк (строки проверить редактору) · вход роли; расширение одного входа роли бесполезно (`attachConsolidatedDst` матчит только по ключам mined dst небанкуемого кандидата умирает с прогоном) **ось G7 переформулирована: «что банкуется без подписи ≠ что кладётся на подпись»**; лист подписи остаётся человеческого размера. (2) Реальный риск расширения не потолок, а **доля отказов роли на мусоре**: правило TM-NO-DST ни разу не проверялось (0 пустых консолидаций из 875 роль всегда отвечала строкой); мусор с выдуманным dst = строка проверить в памяти редактора. (3) kwic-дефолты 3×40 не покрыты замером (мерено 0 и 8×120); цена роли = подача × контекст (при 8×120 «весь банк» дорожает с ≈$1.10 до $47) развилка «широкая подача × узкий контекст vs узкая × широкий» не измерена. **Плюс методологический вопрос к recall-программе пакета-7:** мерился майнер против сида, а живьём ~97% находок даёт банкнота; **совместный recall (майнер банкнота) против сида не считал никто** а именно он определяет, стоит ли расширение денег; считается за $0 из черновиков corpus.jsonl пакета-6.
**План пре-замеров ПЕРЕД дизайном расширения (ожидает санкции владельца):** (а) совместный recall майнербанкнота $0, офлайн; (б) проба отказов роли: 100 кандидатов из хвоста варианта C, критерий заранее ≈$0.01 (фолбэк при провале уже ратифицирован: судья-с-декоем как катастроф-экран, D39.46); (в) kwic × подача: сетка армов на харнессе пакета-7, ≈$0.12. Итого ≈$0.14. По итогам дизайн-секция расширения (СТОП ратификация стройка).
## D39.49 — Владелец (26.07): три пре-замера D39.48 САНКЦИОНИРОВАНЫ (~$0.14, потолок $0.30), исполнитель — ПОЛИГОН («сначала идти в полигон, доделать замеры, потом продолжение в паке-20 бэкенда»). Выдан ПАКЕТ-8. ✅
Промт: `docs/POLYGON_PACKAGE8_PREMEASURE_SESSION_PROMPT.md` (1) совместный recall майнербанкнота против сида ($0, из черновиков corpus.jsonl пакета-6); (2) доля отказов роли на мусоре (≈$0.01, боевой промпт HEAD, критерий до прогона); (3) сетка kwic × подача (≈$0.12, харнесс пакета-7). Нормы D39.46/47 вшиты. По итогам дизайн-секция расширения эмиссии в продолжении пака-20 (СТОП ратификация стройка). Рекомендация оркестратора по параллельности: пак-19 (бэкенд-зона) может идти одновременно с пакетом-8 (полигон-зона); продолжение пака-20 после обоих, перед мини-прогоном D39.40.
## D39.50 — Пакет-8 ПРИНЯТ (8/8 CONFIRMED, $0.11313): посылка «расширить эмиссию майнера» ЗАКРЫТА ОТРИЦАТЕЛЬНО — механизмом, не порогом; дизайн продолжения пака-20 переформулирован: ДИСЦИПЛИНА БАНКНОТЫ + ДЫРА ЯЗЫКА ОТВЕТА + allow_short + kwic_width в пар-данные; холодный старт — единственная неизмеренная цифра (26.07, оркестратор №8). ✅
**Ратифицировано фактами:** (1) **расширение `emitRankCap`/фильтра типа НЕ строится**: 66 из 74 поверхностей банкноты лежат вне варианта C по ЧАСТОТЕ (82% ниже emitMinFreq на срезе вне кандидатного алфавита), а на хвосте расширенной эмиссии роль ВЫДУМЫВАЕТ dst 7782% стабильно (сентинел TM-NO-DST различает «переводимо», не «терм», и нестабилен даже там размах 0.375); (2) **носитель покрытия — банкнота** (5/6 кандидатов, класс term с dst), но она невоспроизводима (Жаккар 0.0770.40 между прогонами одних глав) и эмитирует 咏梅》/咏梅 как разные строки лечения, выдержавшие проверку: нормализация книжных кавычек + агрегация по прогонам; **частотного экрана НЕ существует** 5.1: 少年 1149 против 光阴之河 15 порога нет; полигон сам снял свою рекомендацию); (3) **дыра языка ответа**: TM-CANON де-факто якорь ЦЕЛЕВОГО ЯЗЫКА; без него 22/40 английских строк в одном прогоне из трёх (8×120 тоже течёт), и конвейер их банкует (`wellFormedLemma` пропускает латиницу) закрыть ДО любого расширения канала; (4) **kwic-дефолт 3×40 ДОСТАТОЧЕН** (ни одна точка сетки не отличима, 0×0 лучшая; развилка «подача×контекст» неразличима), НО `kwic_width` в РУНАХ = утечка пары в общий слой (4384 морфемы zh против обрубка фразы en) пар-данные; (5) **蛊/转 подписаны и не доезжают ни одним каналом** (`SignificantLen=1`) правка ДАННЫХ сида (`allow_short: true`); (6) **условие судьи-экрана (фолбэк D39.46) наступило**, но экран платный за кандидата дизайн обязан посчитать, где ставить и что снимается бесплатно; (7) **холодный старт с пустым банком — не мерил никто**, и именно там цена любого утверждения о покрытии (кандидат совместить с мини-прогоном D39.40); (8) §6: **en-детектора НЕ СУЩЕСТВУЕТ** (`hanRuns` 0 эмиссии на латинице), ja с zh-таблицами активно неверен (0/10) второй книге нужен второй ДЕТЕКТОР, эксперименты на Кристоффе преждевременны; прототип каналов `mine_nonhan.py` пакета-7.
**Напряжение с D39.46 «контексты — главный рычаг» названо, НЕ отменено:** три различия постановки (лёгкая выборка · якорь в боевой сборке · нет строки drafts:); пере-замер на трудной выборке пакета-7 с боевой сборкой кандидат, до него kwic не трогать. **Дефект нарезки пакета-7** (фильтр по номеру при перезапуске нумерации в томах): абсолютные recall фазы A занижены втрое (0.0890.255 на непрерывном срезе), структурный вывод (term кратно слабейший) УСТОЯЛ. Приёмка: 8/8 CONFIRMED, ревью-шапка с нитами на отчёте `POLYGON_PREMEASURE_2026-07-26.md`; деньги $0.11313 из потолка $0.30.
## D39.51 — Дизайн «дисциплина банкноты + дыра языка ответа» РАТИФИЦИРОВАН, стройка санкционирована (владелец: «идём», 26.07): языковой экран на ВЫХОДЕ + счётчик OffLanguage + фильтр свёртки банкноты + нормализация кавычек в свёртке (Q1) + агрегация из чекпойнтов (A1) + kwic_width в пар-данные (файл zh-ru НЕ шипуем) + doc-хвост. Судья ОТЛОЖЕН; мини-прогон D39.40 — В ХОЛОДНОЙ конфигурации; allow_short — на нём (26.07, оркестратор №8). ✅
**Отчёт:** `docs/archive/reports/PACK20_BANKNOTE_DESIGN_2026-07-26.md` (ревью-шапка). Принципиальные решения: (1) **гарантия языка — на выходе, не на входе** (предикат offLanguage по `*unicode.RangeTable` через конфиг гейта `target_script`, обязателен при enabled, вне снапшота, $0; направление отказа объявлено: отвергнутый законный латинизм дешевле англо-канона); (2) **кавычки — в свёртке (Q1), не в парсере/NormalizeSourceKey** (Q2/Q3 платят волной за косметику; Q1 $0 и ретроактивен; NormVersion не двигается тест-страж); (3) **агрегация банкноты — производное из чекпойнтов (A1), без новых таблиц**; инвариант «прогон без новых черновиков даёт байт-идентичную карту» пином; предложения отвергнутых попыток входят (решение: предложение = улика, не канон); (4) **судья-с-декоем НЕ строится** (≈$0.025/книга цена не аргумент; его положительное решение = решение о переводе за владельца, против D39.47; популяция неизвестна до холодного старта; сначала P1); (5) **три расхождения сессии с записками оркестратора приняты** (allow_short = базовая версия = перепокупка книги на холодный прогон; kwic-файл zh-ru не шипуем; судья отложен). **Замеры полигону:** пример формата в промпте (≈$0.009, критерий до прогона: 0 не-целевых строк ×3 против 22/40) · P1 consistency ($0: Σchunks-предложивших / chunks-содержащих; порог засчитывается при 80% термов и 60% мусора; арм-без-фактора = голая частота обязана провалиться; положительный исход = право на ПОРЯДОК, не на выброс строк) · приёмка предиката на живом сырье 147 вызовов (живо, подтверждено: ровно 27 строк §3.4 и ни одной сверх). **Мини-прогон D39.40 = холодная конфигурация** (пустой сид, банкнота+терминолог ON, --verify-bank, ОТДЕЛЬНАЯ БД) пять ответов за ≤$0.23: банкнота без цензуры · совместный recall (замер 1 состоится) · язык при пустом якоре (счётчик OffLanguage как прибор) · побочки allow_short · второй сэмпл для агрегации. Приёмка стройки: мутации M-Я1/M-Я2 + регресс 16 живых строк + пин общности (латинская цель переворачивает вердикты) + пин инварианта агрегации + сырьё-приёмка.
## D39.52 — Замеры D39.51 закрыты ($0.00960; пакет-8 итого $0.12273): (а) строка примера формата ЧИНИТ срыв языка (22/120 → 0/120) — ИДЁТ В ПРОМПТ РОЛИ данными вместе со стройкой пп.17; (б) P1 consistency НЕ разделяет (вырожденность 0.740, критерий провален, частота — ноль) — права на порядок подачи нет, пере-замер на холодном прогоне $0 (26.07, оркестратор №8). ✅
Приёмка воспроизведением из сырья: (а) 0/120 не-целевых строк в арме с примером независимый пересчёт; фактор один (дифф запросов только три строки примера; пример-терм 师父 не входит ни в выборку, ни в якорь, ни в сид); мощность 0.104 названа до прогона, удвоение повторов не берём (страховка = экран + OffLanguage живьём). (б) ре-ран скорера: 54/73 вырождено, критерий 80/≥60 не выполнен нигде, частотный арм независимое подтверждение §5.1 на другом наборе и другой разметке (три слепых модельных разметчика, согласие 0.9730.986; оговорка «разметчики модели» названа). **Хвост в пак-21: утечка алфавита** «甲等 категория A» (7 строк): языковой предикат пропускает (кириллица есть), подписанные dst латиницы не содержат вовсе; кандидаты банк-линт латиницы в dst или строгая форма предиката 2.2-Б дизайна). **Вопросы холодного мини-прогона пополнены:** + пере-замер P1 на популяции без цензуры ($0 из чекпойнтов). Стройка бэкенда: пп.17 §8 + п.8 «строка примера в промпте роли» санкционирована, ждёт релея.
## D39.53 — Стройка «дисциплина банкноты + языковой экран» ПРИНЯТА И ЗАЛЕНДЕНА (пп.18 D39.51/52, $0, +454/100): экран на выходе роли и черновой стороне · кавычки в свёртке · агрегация из чекпойнтов с голосами по ЧАНКАМ · kwic_width в пар-данные (zh-ru файл не шипуется) · строка примера побайтно та, что мерил полигон (26.07, оркестратор №8). ✅
**Приёмка:** M-Я1/M-Я2 красные + моя мутация (дедуп голосов) красная · предикат по живому сырью: 27 латинских строк §3.4 побайтно + **два улова сверх слепоты старой метрики** (китайские пересказы 第四代族长, 长老 эхо-гейт и wellFormedLemma их пропускали) · регресс 16 живых строк чист, смешанная `Фан Юань (Fang Yuan)` проходит (экран судит язык, не написание) · пины общности/NormVersion/инварианта агрегации зелёные · vet/gofmt/golden чисты. Отчёт: `docs/archive/reports/PACK20_BANKNOTE_BUILD_2026-07-26.md` (ревью-шапка). Осей нет: снапшоты не двигаются; редакторская волна перекупается один раз только у книги, где банк реально изменится (иноязычная строка/кавычечные дубли).
**Находка стройки, решение задефолчено:** `hasBankSrcHan` канал банкноты МЁРТВ для не-CJK исходника (каждая строка отвергается с parse_fail; утечка языковой семьи в общий слой, существующая, не этой стройки). Дефолт: чинить пар-слепым правилом «исходная строка непуста и встречается в тексте книги» (заодно отсекает выдуманные строки) **на холодном мини-прогоне** версия парсера фолдится в снапшот, а холодная база платит ноль. **Холодный мини-прогон теперь несёт:** свои пять вопросов (D39.51) + пере-замер P1 + веса §C2-3 + allow_short / + фикс парсера банкноты + счёт «утечки алфавита» (категория A) живьём. Очередь: пак-19 холодный мини-прогон пак-21.
## D39.54 — МАЛАЯ ПАЧКА 14а+14б ПРИНЯТА И ЗАЛЕНДЕНА ($0, +559/94): ingest грязных епабов на токенайзере x/net/html (4 класса жёстких падений теперь импортируются; ТРИ регрессии — CDATA, self-closed raw-text, несбалансированный ruby — пойманы адверсариальным ревью сессии ДО лендинга и запинены байт-эталоном старого ридера, мутационная таблица сессии 17/17) · комментарии промпт-файлов вырезаются С ПРОВОДА до сплита, SHA по канонической форме (9/10 файлов байт-неподвижны, снапшоты книг не двигаются, терминолог перекупает батчи один раз — центы) · chunkerVersion НЕ поднят РАТИФИЦИРОВАННО (30.07, оркестратор №9). ✅
**Приёмка исполнением на неподвижных копиях:** независимый дампер оркестратора old-vs-new по трём епабам стенда 205 документов, дифф глав и ruby ПУСТ (3.29 МБ на сторону); сьют `-race -count=1` 14/14 зелёный, vet/gofmt чисты; 4/4 спот-мутации вне порядка сессии (SHA-по-сырому · нейтрализация вырезания · raw-text везде · flushRuby в no-op) красные, восстановление зелёное. Единственная ось сверх паритета ЛУЧШЕ старого и вне провода: чтение ruby при пропущенном `</rp>` теперь захватывается (старый терял; ruby питает только сид глоссария, не `ch.Text`). **Поправки посылок записки (замер сессии, перемерено оркестратором):** Empire of the Dawn = 126 itemref, не 958; ingest переисполняется КАЖДЫЙ прогон (`bookrun.go:112`, `status.go:190`) «существующие БД не тронуты» держится на другом факте: все 8 книг стенда txt, `extractXHTML` достижим только из `ingestEPUB`. **chunkerVersion — осознанная девиация от буквы дока (`render.go:29`):** остаточная экспозиция (епаб-БД с legacy-сущностью без `;` либо `&lang;`/`&rang;` единственные 2/252 расходящиеся имени, кросс-чек независимым стеком WHATWG`xml.HTMLEntity`) есть ПУСТОЕ МНОЖЕСТВО и возникнуть не может новые епаб-книги создаются уже новым кодом, а подъём двигал бы снапшот всех книг (`snapshot.go:414`) = полная переоплата за изменение, не касающееся их байтов; строгая буква одна строка за подписью владельца. `mimetype zip.Store` верность фикстуры OCF, НЕ фикс поведения (ingest файл не читает). Хвосты: фикс-лист (1) комментарий поля `SHA256` в `render.go:89` остался «hash of the raw file», одна строка на ближайшее касание; новая строка бэклога 34а экран `<meta charset>` без XML-объявления (до-паковая дыра, §8 отчёта). Отчёт с ревью-шапкой: `archive/reports/SMALLPACK_INGEST_PROMPTS_2026-07-30.md`.
## D39.55 — ДИЗАЙН ПАКА-19 «голос/состояние» РАТИФИЦИРОВАН С ПОПРАВКАМИ (фаза 1, $0, стройка после «идём» владельца): три сущности = ТИПЫ ЗАПИСЕЙ БАНКА с УСЛОВНЫМ фолдом в `memory_version` (наследование точечной ре-редактуры подтверждено исполнением) · голос/обращения CONFIRMED-only, порядок инъекции «обязывающее перед необязывающим» · флаггер = свой гейт `gates.voice` БЕЗ фолда (версия логируется с прогоном) · оси AC полноценно, ось D (регистр пары) отдельным счётчиком-индикатором · reveal-скоуп СОКРАЩЁН до флаггера спойлер-утечки без `reveal_ch` (амендмент ФОРМЫ D21 п.3, интент сохранён `spoilerBlocked`) · D21 п.1г амендирован: слот инъекции НЕ выбран, оба провода, решит полигон-эксперимент · D21 п.8 помечен model-bound (действующий порядок: драфт ~$0.04, редактор ~$0.070.10) (30.07, оркестратор №9). ✅
Приёмка: воркфлоу 7 верификаторов, 82 клейма = 71 CONFIRMED / 9 PARTIAL / 2 REFUTED (оба полнота отчёта; поправки фактов в ревью-шапке отчёта). Диспозиции пингов: (1) сокращение reveal ратифицировано; (2) `glossary.speech` deprecated (журнал-строки вместо статической матрицы), `first_person` переиспользуется полем профиля; (3) цифра D21 п.8 контрактно привязана к модели; (4) «драфт-слот дефолт» снят; (5) структурная неполнота оси D зафиксирована ДО фазы 2. **Новые «РОВНО ТАК» фазы 2 (из проб верификации):** (а) бюджет инъекции входит в денежный потолок/reserve дозакрыть в отчёте стройки; (б) критик полноты в отчёте фазы 2 обязателен; (в) `Materialize` получает фильтр типа записи строки голоса/обращений НЕ попадают в AC-матчер/глоссарную инъекцию как обычные строки (`memory.go:264-270` матчит всё с непустым Dst); (г) условный voice-тег копирует порядок «исключение скоупом ДО подсчёта условия» (`memory.go:352-357`); (д) `voiceSnap`/отдельный ключ снапшота ЗАПРЕЩЁН (ломает `repin.go:72`); (е) `address_pair` хранится по стабильному ключу (src+sense), не по autoincrement `glossary.id`; (ж) sticky-carry, отклонённый окном, добавляется в `Selection.Rejected` (`memory.go:495-497` сейчас молчаливый дроп); (з) ВКЛЮЧЕНИЕ инъекции = полный `--resnapshot` книги через consent-гейт, bank-only-класс на самом флипе не ожидается (omitempty защищает только добавление поля, не флип 0300); (и) v1 переиспользует `GlossaryTokenBudget` в сигнатуре отбора отдельный voice-бюджет потребовал бы зеркала в `repin.go:186`. Опционально фазе 2: линт «gap в окнах одного src» (сид грузится молча с дырой). Отчёт: `archive/reports/PACK19_DESIGN_2026-07-30.md` (ревью-шапка).
## D39.56 — СТРОЙКА ПАКА-19 ПРИНЯТА И ЗАЛЕНДЕНА ($0, +672/71, 16+7 файлов; ПАК-19 ЗАКРЫТ ЦЕЛИКОМ): голос/обращения = таблицы v13/v14 с УСЛОВНЫМ фолдом в `memory_version` (при выключенной инъекции не пишется НИ БАЙТА — golden байт-идентичен, ни одна книга не двигается) · ты/вы-флаггер осей AC + D-индикатор в `gates.voice` (версия не фолдится, едет с прогоном) · флаггер спойлер-утечки поверх `Selection.Rejected` (вне гейта — стоячий механизм C1) · девять «ровно так» D39.55 исполнены, запреты (д)/(и) держатся (`repin.go`/`snapshot.go` не тронуты ни строкой) · ратифицированное отклонение: атрибуция ЦЕЛЕВАЯ, не исходная (выравнивания src↔tgt в движке нет; целевой хвост атрибуции матчится банком через `speech_verb`+`decl`) · `speech-cue.txt` zh НЕ шипнут (байты двигают `LangpackVersion` = перекупка обеих волн всех zh-книг — решение владельца, бэклог 13б) (31.07, оркестратор №9). ✅
Приёмка короткая (норма 30.07): сьют `-race` перегнан оркестратором зелёный; vet/gofmt чисто; диффы repin/snapshot/testdata пусты; записка D21.10 сверена (переписана в «BUILT», стабильный ключ и заморозка в ней).
## D39.57 — ToS-РЕ-ЧЕК ПО ПЕРВОМУ КАЛЕНДАРНОМУ ТРИГГЕРУ ИСПОЛНЕН ($0, полигон, 31.07): головной Google ToS реально сменил ревизию (Effective July 30, 2026), но по оси `violence`/`sexually-explicit` дельта ПУСТА — все пять пере-проверенных вендоров (gemini/mistral/xai/deepseek/zai) на прежних ревизиях, вердикты не двигаются, `accepts_labels` не трогаются · ПРЕДМЕТ Google-мониторИНГА ПЕРЕВЕШЕН на цепочку договора (PUP · Gemini API Additional ToS · Google APIs ToS — потребительский ToS цепляется лишь косвенно и по нашей оси пуст) · в запись добавлен пропущенный головной Google APIs ToS (по оси пуст) · рассинхрон quirks-клетки `gemini`×`sexually-explicit` с D39.32 п.2 закрыт (FORBIDDEN → UNCLEAR, прозрачной правкой) · правило «двух путей» пакета-5 амендировано (r.jina.ai мёртв — 403; замена: Wayback ×2 снимка + прямой curl с cookie-jar; проверка цитат — по копии без пробелов, старая форма давала ложные нули) (31.07, оркестратор №9). ✅
Существенное для судьи Ф2: Additional ToS прямо запрещает обход фильтра (`You may not attempt to bypass these protective measures`) смыкается с D22.6 (фильтр неконфигурируем) подпись под строкой 6 дала бы ПРАВО отправки, но НЕ работающего судью эротики; судья 18+ остаётся grok, строка 6 аннотирована и понижена в приоритете (возвращаться при собственном вопросе, требующем именно права). Следующие триггеры: квартал 25.10.2026 · первая лейблованная книга · любая правка `accepts_labels`. Отчёт: `archive/reports/TOS_RECHECK_2026-07-31.md` (ревью-шапка).
## D39.58 — ХОЛОДНЫЙ МИНИ-ПРОГОН ПРИНЯТ И ЗАЛЕНДЕН ($0.126068 из $0.50; закрыт владельцем после банк-стопа, Р7 «замер достаточен»): ГЛАВНОЕ — совместный recall холодного банка майнер∪банкнота = **0.918/0.980** против 0.0690.103 у майнера соло, банк приходит владельцу ПЕРЕВЕДЁННЫМ (149/150 строк с dst) · банкнота-парсер v2 ПАР-СЛЕПОЙ («src непуст и засвидетельствован книгой», строка 19 закрыта) + восстановление порядка колонок тем же инвариантом · РАЗДЕЛЕНИЕ ВЕРСИЙ КАНАЛА ратифицировано (Р2, амендмент инварианта №2: `bankSliceVersion` фолдится — его выход оплачен чекпойнтом; `bankParseVersion` едет с прогоном — его выход пересчитываемые улики) · секция редактора по ПРОВЕНАНСУ (S7), путь (ii) — экспозиция 0 доказана диффом (1119 пар «запись×ключ», 32 банка, позитивный контроль; версии не бампались) · ЭХО-МИНА ЖИВА при thinking-ON (П3 пре-регистрации: 2/20 черновиков чистым исходником, han_share 0.999; гейт `cjk_artifact` поймал, эскалация вылечила; «echo 0» D39.20 — свойство выборки, не гарантия) (31.07, оркестратор №9). ✅
## D39.59 — КУРС АМЕНДИРОВАН ВЛАДЕЛЬЦЕМ (31.07): (1) ОБЩНОСТЬ ВПЕРЁД — бэкенду выдан ресёрч «инвентаризация языковой привязки» (read-only, $0; полный скан → пять вёдер → пересборка входа пака-21 → план rewrite-пакетов с критерием «вторая пара без правки Go»); ПАК-21 «чекеры» ОТЛОЖЕН до его карты, вопросы разметки Р1Р4 заморожены вместе с ним (пере-оцениваются генерализацией); (2) БАНК — КУРС НА АВТОНОМНОСТЬ: подпись владельца ОПЦИОНАЛЬНА (авто-режим уже дефолт D39.44), премиса «решение о переводе = подпись» (D39.42/47) амендирована — банк обязан приходить с максимально качественными АВТОНОМНЫМИ переводами; веб-фетч-вопрос владельца признан НЕ ОТВЕЧЕННЫМ пакетом-7 (мерился аддитив к KWIC-контекстам ПРОТИВ ПОДПИСИ — узкий вопрос; автономное качество с интернет-знанием термина не мерилось) — пере-замер в арке автономности после Р6; механизмы арки: 36а валидация типа · 36в серии · 36б рецензент второй моделью; (3) полигону выдан спаренный пакет: Р6 «язык промптов» + fidelity-хвост P4 анти-эхо — открытая петля D21 п.6, стоявшая с 09.07 (митигации 0/29 против базы 3067% измерены, wiring в боевой драфт-промпт ждёт fidelity-вердикта) (31.07, оркестратор №9). ✅
Промты выданы: `BACKEND_GENERALITY_RESEARCH_SESSION_PROMPT.md` · `POLYGON_PROMPTLANG_ANTIECHO_SESSION_PROMPT.md` (потолок $0.15). Эхо-причина (сводка по первоисточникам для владельца): свойство КЛАССА reasoning-моделей на плотном CJK-входе, не конкретного вендора (grok-off 40% + луп / grok-ON 0/10 exp10; deepseek non-thinking эхает, thinking СНИЖАЕТ но не исключает: P4-эха при reasoning_tokens>0, живой прогон 2/20 — D39.58); регистр усиливает (архаика: даже ON эхает 4/6 — exp11); промпт-положение решает (инструкция ПОСЛЕ текста + микро-few-shot = 0/29), а языковой констрейнт ИНВЕРТИРУЕТ (9/10); язык промпта (ru/en) как фактор эха НЕ исследован и на малых выборках недоказуем.
Прочее прогона: язык при пустом якоре — `off_language` 0/149 (экран-прибор работает) · утечка алфавита 0/150, но `甲等 → класс Цзя` при `乙等 → ранг И` вскрыла два механизма: НЕПРОВЕРЕННОЕ поле `type` решает ветку транскрипции (`元石`=name ⇒ «юаньши» — механизм «слишком китаизированно») и роль не видит СЕРИЙ (батчи режут) · `蛊` не приходит НИ ОДНИМ каналом (строка 18 переформулирована: структурная дыра эмиссии на голове частотного понятия; механизм доставки подписанной короткой строки проверен $0-пином) · эхо-метрика закрыта живым фактом (2 recovered) · стоп-режим ×4; авто-режим, edit-волна, полная цена (16), P1/веса (21/22 — сырьё снято, метод полигонский), оси голоса (профили не подписаны; черновик в `coldrun-a/SIGN-PACKAGE.md` §3; 13б открыта) — со следующим живым прогоном/полигон-пакетом. **Принятые нормы (в промт-нормы оркестратора):** итерации промптов — на проекте-пробе 12 главы (≈$0.005), полный срез после; правка-«терпимость» движка к собственным данным = воркэраунд (правило владельца 31.07); канон конкретной книги в пар-промпте = утечка §0 (поймано владельцем). Новые строки бэклога: 36а валидация `type` (Р3, приоритет) · 36б второе мнение-рецензент (Р4; условие строки 5 наступило) · 36в серии · 36г формат каналов в шаблон движка (Р5) · квадратичность src-правила → строка 37. Эксперимент «язык промптов» (Р6, гипотеза владельца, ≈$0.020.05, детерминированные счётчики) — к выдаче полигону по слову владельца. Отчёты: `archive/reports/COLDRUN_REPORT_2026-07-31.md` (пре-регистрация §0 до трат · критик полноты §9 · ревью-шапка) + `COLDRUN_HANDOFF_2026-07-31.md`. Мутации сессии 23/23 красные (две выжившие первого круга = дыры тестов, закрыты с премис-проверками). Критик полноты честен: оси до холодного прогона дают 0 срабатываний («не измерено», не «чисто») · ось A может ловить цитату · ось B precision-over-recall · качество осей = функция полноты `decl` сида · SourceReplies без выравнивания не сопоставим с Replies. Хвосты: бэклог 13б (`speech-cue.txt` — владельцу) · 49а (ALTER-миграции v8v14 не идемпотентны вопреки шапке `migrate.go:9-11`) · golden-счётчики голоса — кандидат следующего ратифицированного пере-капчера. Первое измерение = `gates.voice` ON на холодном мини-прогоне (бэклог 24). Отчёт: `archive/reports/PACK19_BUILD_2026-07-30.md` (ревью-шапка).
## D39.60 — РЕСЁРЧ ОБЩНОСТИ ФАЗА 1 ПРИНЯТ ($0, read-only, кода не тронуто; спот-чеки оркестратора 8/8, вкл. побайтный повтор хеша пака `a28ed743c99c` и счёт 27 строк/12 файлов живых CJK-литералов): долг = **149 сайтов в 45 файлах** (111 не забуканы; вёдра A=27 вынести-в-данные · B=6 пар-модуль-без-гейта · C=104 общий-алгоритм+параметр-из-данных · D=12 удалить · E=106 легитимно) · **ось долга: источник/пара 63% · ЦЕЛЬ (ru) 30% · книга 3%** — по оси «НИКОГДА» владельца движок чист (4 сайта поимённо) · ja→ru проходит БЕЗОПАСНО без правки Go (деградируют майнер и калибровка), en→ru — НЕБЕЗОПАСНО (молча спят эхо-детектор `cjkShare`=0 и майнер `hanRuns`=0; устойчиво разделяют пары G2/G3) · строка 32 бэклога долг ЗАВЫШАЛА (боевых call-site: `isRuTarget` 6, `TokenizeCyrillic` 2 — остальное греп по комментариям/определениям). РАТИФИЦИРУЮ КАК КАРТУ И РАБОЧУЮ ИСТИНУ: пять вёдер с якорями · заморозки З1З9 (синк с ратификациями подтверждён) · актуальные якоря пака-21 (ВСЕ ссылки D39.39 устарели после пака-19 — брать из §8 отчёта) · правило условного фолда §6.2 (фолдить ⟺ выход входит в оплаченный запрос/вердикт/final_hash; новый фолд обязан быть условным по присутствию) · находка «майненая сторона не пишет `Decl` ⇒ 149 авто-строк холодного банка не пройдут пост-чек» — уезжает в арку автономности банка (D39.59), не в пак-21 · живой баг ko/Hangul (`isCJKLang` числит ko, три вердикт-детектора Hangul не содержат — корейское эхо невидимо; строка 75, носитель П2) · дыра эмбед-плоскости (`internal/lang/data/*.txt` не хешируются ничем при `injection.txt` на проводе и `target-ru.txt` в вердиктах санитайзера ⇒ канал тихой пере-оплаты вне контура Р6, `rebill.go:137-139`; строка 76, П0 первым). СТОП: пять вопросов §12 — у владельца, рекомендации оркестратора: (1) П1 цель-шов ВКЛЮЧИТЬ в арку — D39.24 морозил «не ЭТИМ паком», сам код называет цель-шов назначенным носителем (`repair.go:182-189`), слой 7 целевой архитектуры держит «target-aware гейты — ОТКРЫТО» с 26.07; (2) фигуру «ОДИН общий resnapshot» ратифицировать (сегодня центы — корпус два мини-прогона по $0.130.23, после МАСШТАБА порядки; ре-пинуема 1 ось из 20), НО исполнение — ПОСЛЕ развилки DeepSeek-0731 (D39.61, строка 74: перепокупка сегодня купит пустые ответы; при выборе флора-16000 его сдвиг `request_hash` едет В ТОМ ЖЕ resnapshot); (3) П6-расщепление хеша пака — НЕ сейчас (посылка «наблюдаемость — не вердикт» противоречит записанной позиции `snapshot.go:397-402`; сессия сама отказалась подавать как решение); (4) Р1Р4 сократить до ДВУХ: Р2-расширенный («детекторы единиц/шкал судят ЗНАЧЕНИЕ рендера или ФОРМУ?» — один ответ на семейство) + Р4-норма (потолок recall by construction пишется в контракт правила); Р3 закрыт D39.44 Q4 (остаток-работа сливается с Decl-швом в арке банка), Р1 расщеплён (данные→пар-пак · политикаР2 · книжный остаток снят); (5) пак-21 РАСТВОРИТЬ: ~6 дешёвых пунктов (#11 U+0301 · #2 атрибуция-спан · #4 inner_marker · гомоглиф-детектор · строгий OffLanguage с оговоркой 36а · строка 26) батчем в общий resnapshot, 6 дефектов — в П1/П2/П3, #9 — в арку банка, #12/K4a — сняты как не-дефекты кода. Фаза 2 НЕ начинается до ответов (31.07, оркестратор №9). ✅
## D39.61 — ПОЛИГОН Р6+P4 ПРИНЯТ И ЗАЛЕНДЕН (итог $0.433062 = $0.147527 в потолке промта $0.15 + $0.285535 судейского хвоста по прямой санкции владельца; два пути счёта сходятся до 2.9e-06, независимый ре-ран spend.py оркестратором совпал; ⚠ леджер движка = НИЖНЯЯ граница — 4 вызова «2xx body decode failed (call IS billed)» не заледжерены, ≤$0.009, строка 78): отчёт трёхслойный — §1§9 хроника · §10§11 errata/саморевью по вопросам владельца · **§12 = единственная действующая редакция** (15-агентное адверсариальное ревью + исполнение пропущенного деливерабла); три ложных вывода сессия поймала и отозвала САМА (эхо-атрибуция few-shot · «пропуск» постинструкции · псевдо-репликация «митигации вернее», кластерный p=1.0) — механизм «вывод на агрегате до вскрытия единиц» забран в промт-нормы. **ГЛАВНОЕ — вендор-катовер: DeepSeek 31.07 сменил веса под слагом** (`DeepSeek-V4-Flash-0731`, «only re-post-trained»; `/models` молчит; **v4-pro НЕ тронут**) ⇒ **боевая черновая форма ПОКУПАЕТ ПУСТОЕ** (cap 8000 → `finish=length`, reasoning 8000, `content`=""; несущая улика — пробы ОДНОГО чанка: cap 8000 пусто / cap 16000 перевод); механизм — многословная обдумка с тяжёлым хвостом (разброс reasoning ×163 на побайтно одном входе; упор и в 16000 в 2/5), привязана к ПЛОТНОМУ ХАНЬСКОМУ входу (×7.8 против en при сопоставимом входе; ja не проверялся), вендор для high/max рекомендует потолок 384K — наш флор на два порядка ниже ⇒ сместился ДЕФОЛТНЫЙ эффорт, а не «модель сломалась» ⇒ **развилка владельца (строка 74): (а) флор 16000 + resnapshot · (б) слать `reasoning_effort` явно (= приведение к вендорской модели; амендмент `echoMineViolation`; `low` дешевле прежних весов ~22%, но эхо возвращается ~6% и литературное качество черновика при low НЕ судилось) · (в) ждать бету; до развилки платные прогоны и resnapshot СТОП.** **Эхо на 0731 стохастично ПО ВЫЗОВУ** (побайтно идентичные запросы → эхо/не-эхо) ⇒ посылка «retry just re-produces them» (`disposition.go:138-148`) опровергнута — ре-ген N=1 перед эскалацией ≈7.6× дешевле ремонта ($0.00096 против $0.007335 за эхо; строка 77). **Р6 закрыт отрицательно:** ru против en-перевода промпта строка-в-строку — различий НЕТ ни по одной детерминированной оси (эхо 0/0 · срыв языка 0/0 · коридор 12/12 · преамбулы 0/0); даже «en дороже +9.4%» снято ревью (кэш-эффект; без кэша +6.0%, знаковый p=0.39) — **боевые промпты остаются русскими**; язык промпта как фактор эха не подтверждён и не закрыт окончательно (N=12, роль одна). **Петля D21 п.6: гейт верности ПРОЙДЕН в ослабленной форме — «ЦЕНЫ ВЕРНОСТИ У МИТИГАЦИЙ НЕ ОБНАРУЖЕНО»** (риг на 16 из 24 готовых пар research15-probes, генерация оплачена 09.07; floor 4/4 tie у ОБОИХ судей; маршрутизация автор≠ревьюер: grok-пары судит dspro, deepseek-пары — grok-4.3; «митигации ВЕРНЕЕ» НЕ установлено — 16 пар из 6 базовых текстов, 5/6 кластеров смешанные, конфаунд длины). **Wiring-вердикт (пере-выведен §12.3):** few-shot — оснований ни на «вносить», ни на «вредно» (против — один полностью АНГЛИЙСКИЙ выход из 48; «×1.9/+28.5%» ОТОЗВАНО как артефакт средних на бимодальном распределении) · постинструкция — возражений по существу нет, но на 0731 покупать ей нечего (эхо в боевой форме НЕ измерено — канал мёртв), байты двигают PromptSHA256 ⇒ не вносить до предмета · **префилл «Перевод:\n» — сильнейший кандидат** (0/6 эха в P4, верность 3:0, контрдовод «обходит thinking» на 0731 перевернулся в довод ЗА; не проверен на новых весах, проба ≈$0.005) · языковые констрейнты — НИКОГДА без per-model замера (инверсия 9/10 подтверждена репликой побайтно). Эмпирика P4 09.07 = superseded (весов Preview больше нет); квирки синхронизированы сессией с §12 (один хвост докорректирован при лендинге); остаток с ценами — §12.7 (8 несудимых пар ≈$0.10 · префилл $0.005 · effort-high $0.01 · ja-вход $0.005 · echo-rate боевой формы невозможен до развилки). Лендинг: отчёт с ревью-шапкой · quirks · харнесс `eval/promptlang/` (01.08, оркестратор №9). ✅
## D39.62 — ОТВЕТЫ ВЛАДЕЛЬЦА ПО §12 ОБЩНОСТИ + НОРМА САМОПРОВЕРКИ + ДИРЕКТИВА ГОРИЗОНТА (01.08): **(Q1) П1 цель-шов САНКЦИОНИРОВАН** в состав rewrite-пакетов — формула владельца: «поедет в следующих паках — не принципиально когда и где именно, главное бэкенд писать по умному; цель исследования = найти и предложить, как снять инертность китайского/мастер-гу подхода в коде» ⇒ заморозка D39.24 §15.3 («ru-target-долг НЕ чинить») АМЕНДИРОВАНА: назначенный носитель = П1, приёмка = «пара, которой нет в репо, проходит слой 7 без правки Go»; **(Q5) пак-21 как единица РАСТВОРЁН** («мне в принципе без разницы» + карта D39.60): дешёвая шестёрка (#11 · #2 · #4 · гомоглиф · строгий OffLanguage с оговоркой 36а · строка 26) → батч фазы 2 · корзина (II) → П1/П2/П3 · #9 → арка банка (строка 73) · #12/K4a — сняты как не-дефекты; **(Q2)** resnapshot-фигура объяснена владельцу по-человечески — его внимания сверх одной будущей подписи не требует: запуск ОДНОГО общего resnapshot после развилки 74, цена сегодня ~$0.30.5 корпуса, после МАСШТАБА — порядки; **(Q3)** расщепление хеша пар-данных — НЕ делаем (объяснено; дисциплина взамен: правки данных копятся в тот же resnapshot-батч); **(Q4)** Р2/Р4 раскрыты владельцу отдельным сообщением, ответы ожидаются (строка 1); **НОРМА (дословно по смыслу): «сессиям ВСЕГДА писать мандат самопроверки исполнением на ВАЖНЫХ задачах — как текущий бэкенд и ресёрчи; на мелких — самопроверки меньше»** — вписана в промт-нормы оркестратора (вместе с уроком D39.61 «вывод на агрегате до вскрытия единиц запрещён»); **директива «планировать подальше и получше»** — горизонт достроен в CURRENT-STATE до Ф3 (фаза 2 общности → арка автономности банка → пере-замеры на новом стеке одним мини-прогоном → свип гипотез качества → добор идеала → ВТОРАЯ ПАРА живьём → МАСШТАБ → пилот Ф2.5 → Ф3 ридер-IDE); выданы промты: `BACKEND_GENERALITY_PHASE2_SESSION_PROMPT.md` (П0П4+шестёрка+77/78, $0-код, resnapshot только по отдельному слову) · `POLYGON_BANK_RAWMATERIAL_SESSION_PROMPT.md` (строки 21/22 + аудит типов 36а на сырье холодного прогона, $0; проб-пакет §12.7 — только по слову владельца) (01.08, оркестратор №9). ✅
## D39.63 — Р2/Р4 ОТВЕЧЕНЫ + ФИГУРА RESNAPSHOT РАСТВОРЕНА ПОСЫЛКОЙ ВЛАДЕЛЬЦА (01.08): **(1) Р2 = ЗНАЧЕНИЕ**: контракт семейства детекторов единиц/шкал (DC1-часы · магнитуды 万/億 · 成-доли · любой пересчёт) — жёсткий флаг ТОЛЬКО за неверное ЗНАЧЕНИЕ; неконвертированная в единицы читателя форма = мягкий счётчик/линт, НЕ дефект (согласуется с precision 1.000 против 0.167 разметки пакета-6); контракт передан фазе-2 промтом; **(2) Р4 — норма подтверждена** («Ладно»): у правила бывает потолок полноты by construction, записывается в контракт правила, «неразрешимая речь/мысль» не дефект и поклассово не переспрашивается ⇒ **строка 1 (Р1Р4) ЗАКРЫТА ЦЕЛИКОМ** (Р1 расщеплён D39.60, Р3 закрыт D39.44 Q4); **(3) владелец оспорил посылку «один общий resnapshot» — и ПРАВ для текущей фазы**: боевых книг в полёте нет, стендовый корпус ОДНОРАЗОВЫЙ (старые БД остаются читаемым $0-сырьём, перекупать их не для чего), каждый следующий замер — СВЕЖИЙ мини-прогон на новом стеке ⇒ фигура D39.60 п.(2) вырождается в дисциплину секвенирования: платных замеров не покупать, пока фаза-2 не залендена (иначе меряем вчерашний стек); механика `--resnapshot`/условных фолдов/П0-хеширования остаётся и строится — она про эру боевых книг после МАСШТАБА; побочное упрощение: данные-правки (шестёрка · #8 两 · класс speech-cue) на этой фазе перестают быть «дорогими»; **(4) развилка 74 — оперативное состояние «(в) ждать» по умолчанию**: платных прогонов до конца фазы-2 нет; перед следующим платным прогоном — ре-проба flash за копейки, довесок того же прогона — итерация №2 редакторов (D39.22); **(5) само-ревью выданных промтов по вопросу владельца — три дыры найдены и закрыты правками**: контракт Р2 вписан бэкенду · заметка о параллельной сессии и заморозке бинаря — обоим · карта чтения — полигону; параллельный запуск двух сессий подтверждён безопасным (зоны и артефакты не пересекаются) (01.08, оркестратор №9). ✅
## D39.64 — ОБЩНОСТЬ ФАЗА 2 ПРИНЯТА И ЗАЛЕНДЕНА ($0 — ноль платных вызовов, `--resnapshot` НЕ запускался; приёмка исполнением + адверсариальное 6-агентное ревью оркестратора: ни одно несущее утверждение отчёта не опровергнуто): построено **П0** — `lang.EmbeddedVersion()` (sha256 эмбед-данных, framing как у `Load`) БЕЗУСЛОВНЫМ фолдом в снапшот, дыра эмбед-плоскости ЗАКРЫТА (строка 76; мутационный тест: байт `target-ru.txt`/`injection.txt` = громкий resnapshot); **П1 цель-шов слоя 7 по данным** — `isRuTarget`×6 УДАЛЁН → `TargetActive()`/`TargetScriptNonLatin()`, токенизатор цели `TokenizeScript` с алфавитом из `word_script` данных + Mn-фолд U+0301 (#11 закрыт) = ЕДИНЫЙ шов линт↔репэйр (долг `repair.go` РЕПЭЙНУТ), `ExportNormalize`-гейт (7 сайтов), `ruSanitizer`→per-run поля `Checkers`, реестр целей из эмбед-файлов; книга `target_lang: en` инертна ПО ОТСУТСТВИЮ данных (мут.тест) — строка 32 ЗАКРЫТА; **П2 скрипт-шов источника** — `cjkShare`→`sourceScriptShare` по ОБЪЯВЛЕННОМУ письму (новый `lang-script.txt` + единый реестр `scriptRanges`), Hangul в CJK-leak: живой баг ko ЗАКРЫТ (строка 75), en/ko-эхо больше не слепые (вердикт-вокабуляр `cjk_artifact` сохранён); **П3** — 話-глава данными · sourceAbbrevs по языку книги · generic-детект глав без units («Chapter 12») · sizing-таксономия в ОДНОМ доме (`text.DenseScript`); **П4** — табличные опц-файлы + манифест-по-каналам: источник без пиньинь-морфологии грузится без Palladius-файлов, манифест-less пак БАЙТ-ИДЕНТИЧЕН (`langpack-v2-a28ed743c99c` — независимая проба оркестратора HEAD-vs-дерево), `packAlgoVersion` НЕ бампался — самый жёсткий блокер слоя данных СНЯТ; **шестёрка 2/6** — #11 + `translitInterjections`→данные (строка 26 закрыта); **#77** — ручка `RegenerateEchoBeforeEscalate` (дефолт 0 = байт-в-байт текущее поведение; гейт D19.2 не тронут; включение — решением при ре-пробе 74; при включении помнить: общий счётчик attempt с length-ре-геном + рост `maxTokensForAttempt` на каждом ре-гене). Верификация оркестратора: `-race` 14/14 · **Ш-1 НЕЗАВИСИМОЙ классификацией диффа голдена: 172 строки = ровно 5 осей** (`embedded_version` НОВАЯ · cheapgate-v6 · sanitizer-v7-hangul-leak · classify-v2 · chunker-v6; content_hash/disp/wire-тела/stage_text — 0) · майнер-парити EXACT (`n=13618`, катастрофы точны, recall 0.9655) · перекупок НЕТ (D39.63). Приёмочный критерий «пара, которой нет в репо, проходит слой без правки Go» ДЕРЖИТСЯ для П0/П1/П2/П4 + generic-П3 (свип: новых языковых ветвлений диф не внёс; остатки = документированные ru-дефолт-обёртки + флаги). **9 флагов §5 (не «10» — off-by-one) — очередь владельца (строка 14):** ё-фолд→данные (вердикт-несущий банк, сдвиг `memory_version`) · segmentation-фолбэк громким (ломает контракт corridor-фолбэка — `pipeline.go:839-848` + голден-фикстура на нём) · Fertility-map (калибровка ждёт боевого токенизатора) · encoding-реестр · 4 дефекта пака-21 → пакет-чекеров при свежем мини-прогоне (корпус `labels/` на стенде ЕСТЬ — барьер = утраченный в scratch харнесс) · #78 money-путь (дизайн §5.6 готов, не $0-хастл — строка 78 остаётся). Новая строка 79: остаточные Cyrillic-хардкоды пар-гейтед DC-чекеров (`checks/repair.go:131` · `checkers.go:457,474`) — инертны без dc-данных пары, кандидат на `c.wordScript`. Строки 72 · 75 · 76 · 77 · 26 · 32 ЗАКРЫТЫ (01.08, оркестратор №9). ✅
## D39.65 — ПОЛИГОН «$0-СЫРЬЁ АРКИ БАНКА» + ПЛАТНЫЕ ПРОБЫ ФИКСОВ ПРИНЯТЫ (по слову владельца без пере-прогона оркестратора — «всё уже прогнано»; внутренняя верификация отчётов: пре-регистрация до вскрытия · каждый агрегат двумя независимыми путями CONFIRM до цифры · два слепых грейдера · критик полноты с 11 вправленными пере-натяжками): отчёты `POLYGON_BANK_RAWMATERIAL_2026-08-01.md` (часть 1, $0; якорь целостности `spend ≡ Σ checkpoints = $0.126068` сошёлся с D39.58) и `POLYGON_BANK_PROBES_2026-08-01.md` (**$0.027831 / 31 вызовов, два пути до 1e-6; ⚠ куплены СВЕРХ буквы промта** — часть 2 §12.7 корректно пропущена без слова, но этот проб-пакет самоназначен с потолком $0.10; статус слова владельца зафиксирован при релее). **РАТИФИЦИРОВАННЫЕ ФАКТЫ (вход дизайн-пака арки автономности банка, строка 73):** (1) **строка 21 ЗАКРЫТА** — консистентность P1 терминолога: нестабильность **43.3%** (n≥2=127; 12 из 55 = ОДИН сдвиг конвенции 古月 «Гуюэ»→«Гу Юэ»); проходы ВЛОЖЕНЫ (75⊆127⊆150, 0 отсева) ⇒ чистая ре-выборка при фиксированном входе этим сырьём НЕ изолируема; смена батча — умеренная ассоциация (OR 2.56, p=0.041), НЕ драйвер; ЧИЩЕ и без мульти-проходности: ФИНАЛЬНЫЙ банк серийно несогласован — 甲等→«класс» (батч 5) vs 乙丙丁等→«ранг» (батч 0), причинно на границе батча ⇒ механизм 36в; (2) **строка 22 ЗАКРЫТА** — §C2-3 ведёт себя ТОЧНО как ратифицирована (term-топ==частота 43/43, 0 нулевых score), НО НИЗКИЙ РЫЧАГ НА ХОЛОДНОМ (neighbour структурно мёртв на пустом каноне, conform N/A для term-тяжёлого банка; сработал 2/23 и только на ничьих): фактический консолидатор = ТЕРМИНОЛОГ ПО KWIC — финал ≠ §C2-3-топ в **50/75 (66.7%)**, сочинено вне drafts 1015/75 (образец: 转-серия «оборот»→«ранг» ×7 единообразно); COLD-START-скоуп оговорён, на тёплом каноне не переносится; ⇒ **весá §C2-3 для холодного/автономного банка НЕ тюнить** — рычаг в контекстах и серия-осознанности роли; «эффективный консолидатор» ≠ «верный» (качество переопределений не судилось); (3) **36а промерен**: `type` ненадёжен **1222%** (place ~61% — самый шумный; term 0/95 — не путается никогда; направление = нарицательное→ошибочно имя), **2 строгих branch-harm** «слишком китаизированно» (元石→юаньши, 元海→Юаньхай — реалии мис-типированы name→транслит; до 9 широких), защита сегодня = ХРУПКОЕ контекст-переопределение роли; проба фикса: **сфокусированный классификатор той же моделью чинит 6/6 harm-направления** (+~10 п.п. к базлайну «верить draft-типу» 68.4%); (4) **36в подтверждён живьём**: со-батчинг серии в ОДИН вызов даёт согласованное + ДЕТЕРМИНИРОВАННОЕ родовое слово (等: 3 варианта порознь → 1 вместе; экстраполяция 丁=«четвёртый» вне всех drafts) и серий-зависим (转 no-op); реализация без пар-литералов — кластер по общей исходной морфеме; (5) **Decl: 142/142 null** — холодный банк без единой формы склонения, E1/E2 без входа (шов в 73); (6) утечка алфавита 0/150 и «слишком китаизированно» — РАЗНЫЕ поверхности отказа: закрытие первой не закрывает вторую; (7) ⚠ **ИНФРА-МИНА: cap 8000 бьёт и СТАДИЮ ТЕРМИНОЛОГА на 0731** (reasoning 8063 на батч при finish=stop на cap 16000) — резолюция развилки 74 ОБЯЗАНА накрыть терминолога (внесено в строку 74); (8) кандидат следующего $0-захода — first-occurrence-тест KWIC-консолидатора (позитивное обоснование вместо вывода-по-исключению; в заметки 73). Харнесс `eval/bank_autonomy/` заленден; строки 21/22 закрыты; 36а/36в переведены со статуса «замерить» на «дизайн с проверенными кандидатами» (01.08, оркестратор №9). ✅
## D39.66 — СВИП ПОЛНОТЫ «ПОТЕРЯННЫХ ТЕХ-РАБОТ» ИСПОЛНЕН (вопрос владельца «не потеряли ли мы запланированное на виражах»; $0, 10-агентный аудит-воркфлоу класса D39.34: 951 обязательство из D-лога D1D39.65 · генеалогии пака-21 · ресёрчей 0122 + START_PROMT · 04-unhappy/06-реестра/02-mvp · хвостов 40 архив-отчётов · обратной проверки бэклога — 77 находок, ВЛАДЕЛЕЦ БЫЛ ПРАВ): **(1) ГЛАВНАЯ ПОТЕРЯ — корзина II пака-21 ЦЕЛИКОМ (5 дефектов #3/#5/#6/#7/#10 + #1 K5c/Р2-имплементация + #8 两)**: D39.62 послал её «в П1/П2/П3», но промт фазы-2 её НЕ включил и фаза-2 её не строила — возвращена явным перечнем в строку 25 (пакет-чекеров с labels/), туда же резидуал R4 пака-11 (DC7 · omission-бэкстоп · DC2) и alignment-защита рефренов; **(2) новые строки 8086**: резюме-слой памяти + fact-gate (R9/Q6 D25 п.89, «вторая половина банка» — вопросом в дизайн-пак 73) · ja-преп B6-ja (Поливанов/kana-омографы/чек-лист сида — гейт второй пары) · морфо-гейт РОДА C3 («жалоба №1», спойлер-канал глагола) · F4 бэкап/integrity SQLite · канон D39.21 «generic гу = средний род» без носителя · пилот-преп добор (Bertalign GOLD-пары D29.2в · R2-каскад D25.2 · exp08 v3 D21.8) · мелкие открытые решения владельца (echo-семантика c-lite D39.18 · magnitude-кап D38.3-4в · feed_cap D39.45); **(3) дописки носителей** в строки 10/11/12/24/33/41/49/52/53/55/58/59/65/67/71/73/74/79 (вкл.: этап В D29.1 + протокол гендер-твиста D5.1 → 49; GLM-overflow гард → 59; annex-ре-чеки D39.29 + «версия исходника» → 67; остаток §12.7 + prefill-continuation → 74; слот инъекции голоса D39.55 + until_ch 白凝冰 → 24; ranked-set/STITCH/A7-D2/tmctl-замена-с-главы → 73); **(4) ЗАКРЫТО ЯВНО (без строк):** uniformity-пасс D12 (покрыт edit-волной + петлёй ремонта D39.38; пере-открыть на МАСШТАБЕ при видимом смешении моделей) · эвфемизм-словарь D7 (класс жанрового словаря D39.47 — регистр решает банк книги + подпись; вернуться строками 7/8 перед первой erotica-книгой) · синтетическая эвал-база IWSLT/mSynthSTEL D21.9 (superseded размеченным корпусом пакета-6, D39.39) · ретирование Gates.Banknote.Enabled (гейт остаётся по дизайну — канал per-book) · «судья-над-судьёй» из 02-mvp:62 (самоотменён владельцем START_PROMT V4 п.2; вычеркнуть при док-пассе 30а) · echo-калибровка D25.7 НЕ потеряна (residual PACKAGE4); **(5) STALE-фиксы:** строка 30б закрыта (ИНТЕРИМ-шапка терминолога снята рерайтом D39.52/53) · клауза «язык промптов к выдаче» вычищена из 30в (закрыт D39.61) · источник строки 74 уточнён · вес строки 12 перевязан на пакет-чекеров · битая ссылка 02-mvp:6 починена; **(6) строка 30 (свип стартового промта + ресёрчей) ЗАКРЫТА КАК ИСПОЛНЕННАЯ этим свипом** — остаток (контрастивный сьют) переехал в строку 58. Мета-вывод свипа: дисциплина трекинга в целом высокая (из 951 позиции ~92% BUILT/TRACKED/CLOSED с доказательствами), паттерн потерь один — хвосты, жившие в ТЕЛАХ ратификаций и отчётов, а не в едином бэклоге; норма впредь: каждое «отложено/в Ф2/вернуться» в D-ноте обязано в ТОМ ЖЕ лендинге получить строку бэклога или явное закрытие (01.08, оркестратор №9). ✅
## D39.66-пост-сверка — НАХОДКИ СВИПА ПЕРЕПРОВЕРЕНЫ АДВЕРСАРИАЛЬНО ПРОТИВ КОДА (вопрос владельца «а это точно потеряно, а не сделано/передумано?»; 4 верификатора, $0): **23 пункта — 20 CONFIRMED (file:line-доказательства ОТСУТСТВИЯ в коде и отсутствия закрытий) · 0 «передумали» · 3 RESCOPE вправлены:** (1) строка 81 СУЖЕНА — чек-лист kana-алиасов сида уже построен (`AttachRubyAliasesToManual`, seeding.go:43-50 + backend/README §ja), остаются Поливанов-валидатор («Phase 2»-заглушка migrate.go:186/194) и kana-омограф гейтинг (memory.go:1048); (2) кандидат «ranked-set» в 73 переформулирован — инъективность dst УЖЕ построена (`InjectivityCollisions` memory.go:1101-1126, warning-only на seeding.go:157), не хватает типа ranked-set + проверки ПОРЯДКА ступеней; (3) дописка 49 сведена к операторскому протоколу — механизм релиза твиста ПОСТРОЕН (until_ch-правка → `repin.go` $0-пере-пин + `rebill.go` смета-согласие, D39.42 п.5/D39.45), «селективного redrive» не существует и не нужно; довесок: `gender: neuter` в сиде сегодня = ТИХИЙ no-op без линта (строка 84 уточнена). Подтверждены кодом в т.ч.: chevron-детектор пропускает «X!»/безатрибуционные (cheapgates.go:248-275) · 数-магнитуды гасятся digit-требованием (508-519; узкий DC2-проб покрывает ровно 数十万) · заглавная латиница отбрасывается (checkers.go:527) · K5c-супрессор по всему юниту + Р2 не имплементирован (411-435; cheapgates.go:84-89 «a design, not a patch») · 两 нет в cheng_re (dc-checkers.txt:65) · пост-чек считает подстрочные вхождения 转 (memory.go:1048/144) · GLM-overflow проходит RAW и падает в ложно-retryable FlagEmpty (provider_openai.go:166-171, disposition.go:230-233) · внутрифайловый дубль pair-ключа тихо last-wins (langpack.go:824) · feed_cap-гейт режет лексикографический хвост (terminologist.go:256-264, сорт :191). Рабочая бумага с полными якорями: `docs/architecture/13-tech-debt-anchors.md` (перенесена из архива решением владельца, D39.67) (01.08, оркестратор №9). ✅
## D39.67 — ПЕРЕИМЕНОВАНИЕ КУРСА + ХИРУРГИЯ ОЧЕРЕДИ (решения владельца 01.08): **(1) термин «автономность банка» ЗАМЕНЁН на «КАЧЕСТВО БАНКА»** (формула владельца: «какая разница, автономен ли банк — не подсовывать же плохой банк на подпись, чтобы владелец всё исправлял»; существо прежнее: банк обязан приходить ВЕРНЫМ без ручной правки, подпись опциональна — D39.59; исторические D-ноты не переписываются, живые доки переведены); **(2) отдельный шаг «свежий мини-прогон» РАСТВОРЁН в ДОБОР ИДЕАЛА** (предложение владельца, рекомендация оркестратора совпала: его оси — голос 24 · авто-режим · итерация №2 редакторов 65 · полная цена редактуры 16 — и есть первая фаза добора идеала; собственного merit у отдельного прогона не было); носители строк 16/24/13б/65 перевязаны на «первый прогон добора идеала»; **(3) бэкенд-очередь после дизайн-пака КАЧЕСТВА БАНКА: СТРОЙКА банка ∥ ПАКЕТ-ЧЕКЕРОВ (строка 25 — вес поднят до «скоро»)** — обе кучки $0-код и исполняются, пока платные прогоны стоят на развилке 74; свежий прогон пакету-чекеров НЕ нужен: labels/-корпус статичен, харнесс пересобрать по README в `~/books/gu-zhenren/labels/` (урок scratch); **(4) рабочая бумага пост-сверки ПЕРЕЕХАЛА** из `archive/reports/` в **`docs/architecture/13-tech-debt-anchors.md`** — живой СПРАВОЧНИК якорей к строкам бэклога (НЕ трекер: единственный трекер — таблица PROGRESS; вопрос владельца «архив = неактуально?» резолвлен разделением: архив-отчёты = фактура приёмок, справочник долга = architecture/) (01.08, оркестратор №9). ✅
## D39.68 — ХЕНДОФФ КАЧЕСТВА БАНКА И ПАКЕТА-ЧЕКЕРОВ БЭКЕНД-СЕССИЯМ (решение владельца 01.08: «дизайна от оркестратора не жду — передать бэкендерам ресёрч → алгоритмы → реализацию → ревью; главное — правильные промты»): выданы ДВА промта — **`BACKEND_BANK_QUALITY_SESSION_PROMPT.md`** (двухфазный: этап 1 = ресёрч+дизайн $0 read-only с деливераблом-отчётом и СТОП на ратификацию — серия-батчинг по морфеме · тип-пере-вывод · Decl-шов+строка 27+84 · честное оспаривание 36б · рекомендация по резюме-слою 80 · дыра 蛊 18 · быстрые вердикты кандидатов вкл. first-occurrence-тест $0; этап 2 = стройка ТОЛЬКО по релею ратификации и после лендинга чекеров — общее дерево) и **`BACKEND_CHECKER_PACKAGE_SESSION_PROMPT.md`** (стройка сразу: полный перечень строки 25 + строка 79; харнесс labels пересобрать В GIT по образцу майнер-парити; Р2/Р4-контракты D39.63 обязательны — hard=значение/soft=форма, потолки в контракт правила; вердикт-двиги голдена для чекер-класса ратифицированы промтом — пере-захват один раз с маскированным диффом и вскрытыми единицами). **ОБА промта несут два новых обязательных блока (нормы владельца 01.08): (1) «Глобальный критерий» дословно — чистый архитектурный бэкенд, который легко писать и поддерживать и который качественно выполняет задачу; общность; механизм только где несёт качество/деньги; (2) «МАНДАТ РЕВИЗИИ ПОСЫЛОК» — свип D39.66 собрал долг по критерию «забыли», НЕ по критерию «надо ли»: каждый пункт перед кодом получает вердикт-тройку (посылка: источник и актуальность · нужность: что даёт на данных, иначе «закрыть» · форма: лучшая из ≥2 альтернатив по критерию), допустимый исход = «не строить», замер против посылки = СТОП и пинг.** Обе кучки $0 — исполняются, пока платные прогоны стоят на развилке 74 (01.08, оркестратор №9). ✅
## D39.69 — КАЧЕСТВО БАНКА: ОБА ЭТАПА ПРИНЯТЫ И ЗАЛЕНДЕНЫ (этап 1 дизайн ратифицирован ВЛАДЕЛЬЦЕМ напрямую; этап 2 стройка той же сессией, $0, чекер-пак ещё не стартовал — коллизий нет; приёмка оркестратора: тесты/парити/голден исполнением + независимое воспроизведение флагманских чисел + 4-агентное адверсариальное ревью): **ПОСТРОЕНО ТРИ ПРИМИТИВА** — **§1 серия-батчинг (36в ЗАКРЫТА)**: `DetectSeries` HEAD-AWARE (равная длина · общая голова · различие только в модификаторе · L=1 вне · без транзитивного замыкания) + серия ЦЕЛИКОМ в батч + value-порядок отреза бюджета (частота-desc — **feed_cap ЗАКРЫТ этим**, из строки 86 изъят); канал по классу письма из данных (`lang-script.txt`), алфавитный источник инертен; «ровно 4 серии на живом BANK-FULL, ноль блоба, 方源/元石/元海 вне» — воспроизведено оркестратором НЕЗАВИСИМО; **§2 тип-классификатор ПЕРВИЧНЫМ (36а ЗАКРЫТА)**: отдельная фокус-фаза ДО RenderBatch (единственная форма с живой пробой 6/6), корректный тип роутит conform + праймит рендер + банкуется `attachClassifiedType` БЕЗ смены эмиссии (D39.50 не реоткрыт); своя роль/бюджет/промт `classifier.md`, request-hash-ось, fail-loud пары без промпта; честный $0-экран (тест ПИНИТ, что он пропускает юаньши/Юаньхай — флаг, не гейт); денежный цикл терминолога зарефакторен в общий `runBankRoleBatches` (resume $0 запинен тестом); **§3 Decl-шов (строки 27/84 ЗАКРЫТЫ)**: `lang.TargetStemmer` из ru-ДАННЫХ `decl_suffix` (пара без данных инертна) → `dstFormPresent` принимает косвенные падежи; короткая форма 27 — уже работала через `decl.forms[]` (пин пре-существующим тестом); neuter end-to-end (enum · `gender_neuter` в injection-данных · SeedLint громко отбраковывает неизвестный род); ось = **scoped `neuter-directive-v1`-фолд в `memory_version`** (отступление от дизайна ПРИНЯТО как улучшение — точнее правила условного фолда §6.2, книга без neuter байт-идентична, голден доказал). **ЗАКРЫТО ПО НУЖНОСТИ дизайном (ратификация закрытий):** 36б второе мнение — бэкенд-стройки НЕТ, маршрут = полигон-замер (Q2, строка 5 перевязана) · резюме-слой (строка 80) — проза-суммарайзер закрыт, строка = ГЕЙТ ПИЛОТА Ф2.5 («допускает ли нарратив-строка детерминированный верификатор — или это D1 со схемой») · эмиссия головы 蛊 — сид-половина (чек-лист) + измер-гейт Q7 ПОСЛЕ #10 (строка 18 перевязана) · эмбеддинг A7/D2 — закрыт по нужности, реопен = измеренный recall-разрыв на МАСШТАБЕ, только batch-time лейн · STITCH — закрыт до давления МАСШТАБА (реопен = бюджет ИЛИ измеренный эффект размера инъекции) · ranked-set — качество закрыто §1, hard-режим = Q4. **First-occurrence-тест ($0, исполнен): гипотеза первенства ОПРОВЕРГНУТА** — роль не первовхожденческий и не частотный выбиратель, ре-решает контекстом (позитивное подтверждение D39.65). **Голден: 172/172 hex-only** (сдвиг = `embedded_version` от данных injection/target-ru), вердикты байт-идентичны. **Фикс-лист → строка 87** (несущее: «ь» в `decl_suffix` — приёмочный кейс «Фан Юаню» сейчас ПРОВАЛИВАЕТСЯ; неверный комментарий Batch про независимость request-hash; оверсайз-серия одним батчом — помнить cap-8000; classify-валидация/тесты; мутационный тест neuter; voice-stemmer вопрос). **⚠ Вопрос владельцу Q8: `classifier.md` несёт книжные каноны (方源 и др.) в общий пар-слой** — санкция или жанрово-генерические примеры. Вопросы §9 Q1Q7 + Q8 — строка 88. Платный порог «6/6 harm» — добрать при ре-пробе 74 (02.08, оркестратор №9). ✅
## D39.70 — ОТВЕТЫ ВЛАДЕЛЬЦА ПО §9 БАНК-ПАКА + КАНОН ЦЕЛЕЙ (02.08): **(Q8) книжные примеры в `classifier.md` САНКЦИОНИРОВАНЫ** с восстановленной нормой: языко-/книго-специфичное ДЕЛАТЬ МОЖНО — но выносить в данные/отдельные модули, встраиваемые архитектурно чисто (пар-промпт = легитимный модуль); **(Q1Q7) делегированы инженерному «как лучше по исследованию, соблюдая цели»** — диспозиции: Q1 канон-пин серий НЕ сейчас (вернуться на МАСШТАБЕ) · Q2 полигон-замер нужности 36б — ДА, до любой стройки (слот при ре-пробе 74) · Q3 резюме = гейт пилота Ф2.5 ПОДТВЕРЖДЁН (строка 80) · Q4 hard-инъективность — НЕТ (warning-only по дизайну, порядок закрыт серией) · Q5 авто-транслит реалий — промпт-инструкцией роли «предпочитай смысловой перевод реалий; транслит — именам собственным» (данные пар-промпта, в фикс-лист 87; судится следующим прогоном) · Q6 «сокращённая форма» = МОРФОКЛИП (`decl.forms[]` достаточно, $0; прозвища живут алиасами банка — отдельного поля НЕ строить); отбраковка неизвестного рода компат-безопасна (neuter-сидов в природе нет) — строка 27 остаётся закрытой · Q7 замер эмиссии головы — ДА, дешёвым полигон-слотом ПОСЛЕ #10 (очередью с ре-пробой; строка 18 уже так стоит); **(2) оценка `series.go` по канонам (вопрос владельца)**: ядро — ПО КАНОНАМ (пакет пар-агностичен, параметры приходят значением, алгоритм generic и детерминирован, языковые примеры только в комментариях с измеренным «почему»); один этаж ниже канона — `SeriesMorphology`: `head_final` захардкожен Go-константой CJK-класса вместо данных (код сам помечает «the one place to revisit») → в фикс-лист 87 добавлено «`series`/`head_final` → строкой в `lang-script.txt`» + консолидация дубля `lang.TokenizeWords`↔`text.TokenizeScript`; **(3) КАНОН ЦЕЛЕЙ ПРОЕКТА сформулирован и вписан в CLAUDE.md** («Цели и мерило», 6 пунктов: продукт-качество · мультиязычность модулями/данными · чистая поддерживаемая архитектура · современные подходы/харнесс-превосходство · экономика с видимыми деньгами · детерминизм) — собран оркестратором из формулировок владельца (START_PROMT, 24.07 общность, 01.08 критерий, 02.08 харнесс-буллеты), НА ПОПРАВКУ владельцу; сессионные промты далее ссылаются на канон вместо пере-цитирования. Строка 88 ЗАКРЫТА (02.08, оркестратор №9). ✅
## D39.71 — ФИКС-ПАК БАНКА ВЫДАН (владелец 02.08 «самое время передать записку тем же бэкендерам»): промт `BACKEND_BANK_FIXPACK_SESSION_PROMPT.md` — вся бэкенд-часть ответов §9 + фикс-лист приёмки D39.69 одной короткой сессией: (а) «ь»/палладиевский класс в `decl_suffix` + тест именно на «Фан Юаню» (б) `series`/`head_final` из Go-константы в `lang-script.txt`-данные (в) правка лживого комментария Batch + решение оверсайз-серии (мина cap-8000) (г) classify_types-гигиена + config-тесты (д) мутационный тест neuter-фолда (е) вердикт по voice×стеммер (ж) дистилл-фикстура BANK-FULL (з) Q5-промпт-инструкция реалий (и) консолидация дубля токенизации. Очерёдность ЯВНО: фикс-пак ПЕРВЫМ, пакет-чекеров — после его лендинга (общие файлы membank/prompts). Раскладка остальных ответов: Q6/Q8 закрыты без работ · Q1/Q4 «не строить» · Q3 гейт Ф2.5 by construction · Q2/Q7 полигон-слоты при ре-пробе 74. Строка 87 переведена в работу (02.08, оркестратор №9). ✅
## D39.72 — ОСТАТКИ КАРТЫ ОБЩНОСТИ ПОЛУЧАЮТ НОСИТЕЛЯ (вопрос владельца 02.08 «мы что-то взяли оттуда в бэклог?» — аудит показал ПРОПУСК оркестратора): из карты D39.60 взято и закрыто/затрекано ПОЧТИ всё — П0П4 построены (D39.64) · П5 generic-майнер = строка 35 (гейт ja→ru) · П6 отклонён (D39.62 Q3) · 4 data-флага = строка 14 · остаток ведра C = строки 79/34 · книго-ось чиста по построению; **НЕ имело носителя ведро D («удалить», 12 сайтов)** — свип D39.66 заметил «не удалено, вне скоупа фазы-2», но строку я не завёл (нарушение собственной нормы D39.66 «каждое отложено получает строку тем же лендингом»); живые остатки подтверждены грепом: указатели на несуществующий `checkers_zh_ru.go` в комментариях (cheapgates.go:56,125,130 · langpack.go:73+) · ложная шапка checkers.go:22-25 · дубль isHeaderContentRune↔isHeaderSeparator · minerPackVersion «zh-universal-v1» · глифы ⟨проверить⟩ в tmctl/render · вес palladius в miner.go (часть исходной дюжины могла уйти фазой-2 — сверить по карте §3). **Заведена строка 89** (аудит-и-чистка ведра D + сверка ведра B «6 пар-модуль-без-гейта» против фазы-2); носитель = ПАКЕТ-ЧЕКЕРОВ (бо́льшая часть сайтов в checks/ — промт дополнен пунктом) либо мелкая пачка (02.08, оркестратор №9). ✅
## D39.73 — РЕКОНСИЛЯЦИЯ ТРИАЖА: ПОЛНАЯ МАШИННАЯ СВЕРКА НАХОДОК ПРОТИВ НОСИТЕЛЕЙ (владелец 02.08 «что ещё проебал? технические решения сессий проебал?»): все 77 находок свипа D39.66 + рекомендации пост-чека + фикс-листы приёмок D39.6471 прогнаны механически против живых строк/дописок/закрытий. **Вердикт по решениям СЕССИЙ: целы** — их держал 951-позиционный свип (92% доказанных диспозиций) и адверсариальный пост-чек кодом; **провал локализован в ТРИАЖЕ оркестратора**: из ~95 рекомендаций уронено 5 (ведро D — уже исправлено D39.72; идиоматика-словари сехоуюй/васэй-эйго/вэньянь → дописка 52; Ф2-хвосты 02-mvp CometKiwi/T-index · Batch API судьи · llama-server · стриминг → строка 90 к пилот-препу; arity-полоса паспорта D29.2г → дописка 55; платный порог приёмки §2 «6/6 harm» жил только в гниющей шапке → дописка в строку 74 с полигон-слотами Q2/Q7). 7 из 8 греп-кандидатов оказались ложными (носители живы: порог-3 в 25 · lintNumberMagnitude в 79 · источник 74 · триггер 12 · линк 02-mvp починен · F3-brief в 71 · echo-R6 в PACKAGE4). Норма-урок: триаж многоисточниковых находок завершать МАШИННОЙ сверкой «каждая рекомендация → носитель», не глазами (вписано в промт-нормы оркестратора) (02.08, оркестратор №9). ✅
## D39.74 — АУДИТ РЕСЁРЧЕЙ СОСЕДНИХ ХАРНЕССОВ (research/21 транспорт · research/22 домен; вопрос владельца 02.08 «есть ли утерянное из /home/ubuntu/projects/tmp?»): **утерянного НЕТ** — из 15 клонов оба ресёрча покрыли корпус, взятое ПОСТРОЕНО (research/21: 9 транспорт-пунктов паками 12/13 — quota-429/Retry-After/keepalive/джиттер/xAI-гард/GLM-finish/retryable-пин/billed-decode-кап/models-валидация + CostSource и луп-гард; вердикт «наш транспорт опережает/вровень со всеми 11, не трогаем» ратифицирован; research/22: разрыв Q6 gating+repair закрыт паком-16 по прецеденту AiNiee ProofreadTask, Problem-классы №5 → строка 25, планы → строка 71), отклонённое отклонено ЗАПИСЬЮ, кандидаты Q7-квирков ждут вендор-сверки по правилу 10.07 (не абсорбированы — так и задумано). Два хвоста, уроненные МОИМ триажем внутри пучковых находок (класс D39.73), добиты: **(1) Mistral-strip гейт message-builder** (research/21 §1.1: extra_forbidden на reasoning-поля; ЛАТЕНТЕН — наш wire single-shot без reasoning-полей; станет несущим при multi-turn/continuation или прод-пути mistral в канале B) → дописка в строку 59 (транспорт-гигиена); **(2) halve-chunk-on-retry** (research/22 §2 №7) → ОТКЛОНЁН ЯВНО: волновая архитектура с чекпойнтами + флор max_tokens + ре-ген-ручка 77 делают полу-чанк малоценным; реопен — при живых max_tokens-упорах (строка 45, дописка) (02.08, оркестратор №9). ✅
## D39.75 — ФИКС-ПАК БАНКА ПРИНЯТ И ЗАЛЕНДЕН (все 9 пунктов строки 87 отработаны; приёмка исполнением + 3-агентное адверсариальное ревью: 14/15 CONFIRMED · 1 PARTIAL · 0 REFUTED; голден независимо: маскированный дифф ПУСТ, двинулся только `embedded_version`): **СДЕЛАНО** — (б) head-finality В ДАННЫХ (`script-series.txt` + `SeriesHeadFinal`; zh/ja/ko функционально идентичны — пин-тест; синтетический head-initial скрипт заводится данными) · (в) лживый комментарий Batch переписан на правду (ChunkIdx фолдится в RequestHash) + `BatchRunes`-WARN на оверсайз-серию (НЕ режет — резка убила бы со-батч) · (г) `classify_types` при выключенном гейте = fail-loud + 5 config-тестов · (д) мутационные тесты neuter-фолда (версия двигается; mined-scope: BASE байт-идентичен — draft-волна не перепокупает) · (ж) дистилл-фикстура BANK-FULL (150 поверхностей побайтно = боевому TSV; тест требует ТОЧНОГО членства 4 серий и id=0 для 方源/元石/元海) · (и) `TokenizeWords`→`text.TokenizeLetters` — консолидация чистая (слои однонаправленны) И ПОБОЧНО ЗАКРЫЛА РЕАЛЬНУЮ ЩЕЛЬ: старый токенизатор рвал слово на mid-word U+0301 («сло́во»→[сло во] — воспроизведено на копии старого кода), decl-пост-чек промахивался на ударениях. **НЕ ДЕЛАТЬ с контрактом в код** — (е) стеммер НЕ заводится в voice (направления несимметричны: SelfRef-стемминг безопасен, NG-стемминг = шум; контракт-блок voice.go:368-378, фактура сверена) · (з) Q5-инструкция реалий УЖЕ в `terminologist.md`/`classifier.md` — причём с D39.45 (мисатрибуция отчёта «D39.58» только усиливает клейм), PromptSHA256 не двигался. **(а) ОТКАЧЕН — МАНДАТ САМОПРОВЕРКИ СРАБОТАЛ ПО НАЗНАЧЕНИЮ:** «ь» в `decl_suffix` закрыл бы «Фан Юаню», но неотличим по форме от коллизии мягкознаковых имён с лексикой («Синь»↔«синий/синим» — контрфактика воспроизведена: SameStem=true с «ь»); адверсариальный ревьюер сессии поймал ДО лендинга, откат + два регресс-гвоздя (SameStem + dstFormPresent; пара Линь/линию инертна — заменить на Линь/линий при касании) + NB-комментарий в данных. **Finding-1 ОСТАЁТСЯ ОТКРЫТЫМ → строка 91 (выбор владельца):** приёмка склонений мягкознаковых имён стеммером НЕВОЗМОЖНА — (а) сид/терминолог перечисляет `decl.forms[]` для -нь/-ль имён (естественно ложится на Decl-эмиссию) или (б) anchor-gated матч; + прямой тест-гвоздь на дизайн-кейс добавить при решении. Граница плотности (`enabled` серий через Go-константу `cjkScriptNames`) — пре-существующая, дописана в строку 79. Строка 87 ЗАКРЫТА (02.08, оркестратор №9). ✅
## D39.76 — SOFTSIGN-DECL ЗАМЕР ПРИНЯТ, ОБА ВОПРОСА РЕШЕНЫ (строка 91; замер исполнен бэкенд-сессией по слову владельца «замеры → решать вместе с оркестратором»; eval-конвенция `eval/softsign-decl/`, пин-харнесс на боевом стеммере, $0, два адверсариал-прогона author≠reviewer): **факты** — (1) разрыв реален, но МАЛ и локализован: пер-чанковый честный промах ~47 на 25 глав, почти весь = «Винный червь»; «Фан Юань» = 0 (номинатив всегда рядом); раннее «~26» снято вторым путём (артефакт мелкого блока, свип 800→12000); (2) наивное «ь» (A1) отвергнуто ОКОНЧАТЕЛЬНО — вред глобальный, книго-независимый (SameStem → Postcheck И SpoilerLeaks везде); (3) **anchor-gated (C) СЛОМАН адверсариал-прогоном самой сессии**: коллизию ПЕРЕНОСИТ на класс «[титул]+[ь-фамилия]», числовой класс не защищает («пятого ранга»×13 — якорь общий), ноль коллизий этой книги = ТРАНСЛИТ-ВЕЗЕНИЕ ⇒ в ядро на одно-парном свидетельстве нельзя; (4) сид-перечень честно назван ручным трудом, но для 12 имён = ~10 строк YAML ВНЕ ядра (generic containsWholeWord, ноль строк Go). **РЕШЕНИЯ (оркестратор + владелец): (Q1) стопгэп A — ДА**: сид-формы «Винный червь» И «Фан Юань»; формы пишет бэкенд-сессия, подпись владельца обычным сид-циклом; тем же касанием гвоздь Линь/линию→Линь/линий + прямой позитивный тест «Фан Юаню» через forms[] (закрывает PARTIAL D39.75); memory_version → штатный repin, перекупок нет; **(Q2) finding-1 ЗАКРЫТ на A; C снят в ЗАГЕЙЧЕННЫЙ ТРИГГЕР** — реопен только при второй паре живьём, где кросс-парный полигон-замер (перенос + числовой класс, ≥2 пары) — ГЕЙТ любой правки ядра. Общность: путь A = ноль строк Go, grep ядра на пара/книго-литералы пуст. Строка 91 → «стопгэп в работе, закрытие по его лендингу» (02.08, оркестратор №9). ✅
## D39.77 — СТОПГЭП A ЗАЛЕНДЕН, СТРОКА 91 ЗАКРЫТА (+ УТОЧНЕНИЕ ПОЛИТИКИ ПОДПИСИ по вопросу владельца 02.08): бэкенд-сессия исполнила мини-касание — (1) сид стенд-книги (`guzhenren-seed-v2.yaml`, вне git): дописана ТОЛЬКО мн. парадигма «Винного червя» (5 форм полной детерминированной парадигмы; ⚠ честное уточнение сессии: все 4 формы «Фан Юань» и ед. обликы «Винного червя» УЖЕ стояли в сиде с 24.07 — нетто-новьё только мн. число); (2) гвозди (2 тест-файла): Линь/линию→Линь/линий (эмпир-проба: Stem(линий)=лин — дискриминирует, старая пара инертна — диагноз приёмки D39.75 подтверждён) + позитив-гвоздь «Фан Юаню» через forms[] (PARTIAL D39.75 закрыт); ядро Go не тронуто, голден не тронут, seed-lint 0/0. **(3) ЧЕСТНАЯ НАХОДКА СЕССИИ, бьющая по цифрам замера D39.76: coldrun-a был СИДЛЕСС-прогоном** (банк рождался майнером без сида) ⇒ харнесс мерил чистый стеммер-путь, слепой к forms[]; в подписанном сид-прогоне обликы «Фан Юань» уже ловились ⇒ реальный прод-разрыв ЕЩЁ МЕНЬШЕ отчётных чисел — решение «стопгэп вне ядра» только укрепляется. **(4) ПОЛИТИКА ПОДПИСИ (вопрос владельца «мы же не подписываем старые банки?»):** договорённость В СИЛЕ — подпись БАНКА (майнер→терминолог) опциональна, банк обязан приходить верным автономно (D39.59/67); СИД — другой артефакт (ручной входной канон книги: вкусовые dst/гендеры/спойлер-окна), НО **детерминированная морфология сида (падежные формы) владельческой подписи НЕ требует** — это не вкус; забирается приёмкой оркестратора; подпись владельца остаётся только за ВКУСОВЫМИ полями сида. Стратегическая нота: стопгэп = временная механика стенд-книги; автономная Decl-эмиссия — открытый шов арки (реопен с C-триггером строки 91 на второй паре) (02.08, оркестратор №9). ✅
## D39.78 — ПАКЕТ-ЧЕКЕРОВ ПРИНЯТ И ЗАЛЕНДЕН (строка 25 ЦЕЛИКОМ + первые два компонента строки 79; $0 — только фейк-провайдер; двухраундовая приёмка: 10-агентный адверсариал-воркфлоу → 5 CONFIRMED major → постфикс той же сессией ДО коммита → 3-агентный дельта-раунд: 0 major; `CheapGateVersion` v7 бампнут ОДИН раз): **харнесс labels пересобран В GIT** (env-гейт `TM_CHECKER_LABELS=1`, checks+membank+candidates; `metrics.json` пакета-6 воспроизведён ПОБАЙТНО 12/12 классов — k4a добавлен маркер-онли постфиксом; 2 независимых пути счёта; манифактуренной сходимости НЕТ — джойн-конвенции независимо пересчитаны ревью-агентом из сохранённых эра-вердиктов). **ПОСТРОЕНО:** #10 демоция одно-руновых Han-миссов в Unverified + `PostcheckMiss.Demoted` (K6 fp 14→6, fn=0 — ⚠ КЛАСС-ВАКУУМЕН: в labels ноль одно-Han-позитивов, recall-цена демоции НЕ измерена — hard-gate строки 12 на «fn=0» не опираться; репэйр-гард №5 ослеп на одно-Han-дифференциал — оговорка в строке 13; кана-класс открыт до B6, строка 81) · #3 атрибуция ёлочки «X!»/«X?»/«X…» с отказом плоской цитате sentence-final-гейтом (K4b recall 0.109→0.217; Р4-потолок ~0.22 inline в контракте) · #6 caps-латиница + case-insensitive allowlist (K2 recall 0.75→0.85, честная precision 0.971) + синк репэйр-твина (caps-утечки адресуемы актуатору) · k4_inverse маркер-в-атрибуции (3/0/1/71; сегмент режется с ДВУХ сторон, маркеры whole-word) · #8 两/兩 данными (0 эффекта — generality) · Р2 hard/soft split (`UnitScaleHard`={DC1, NumberMagnitude} / `Soft`={DC2, PercentScale}; `Total` не тронут) · строка-79: `isCyrLetter`→`isTargetWordLetter` + DC1-трим + magnitude `SourceScripts`-гейт через единый `lang.IsDenseScript` (закрыто и ведро C-2) · рефрен-исключение editor.md/mono (PromptSHA256 двигается, перекупок нет D39.63). **ЗАКРЫТО с обоснованием:** #5 (единственный дефект магнитуды DC2-покрыт) · #7 (THRESHOLD=2 = 0 изменений; 3 = Р4-потолок inline; гомоглиф = `tk.mixed`, приёмка пройдена) · DC2 word↔word (ноль размеченных дефектов — сперва разметить 分之-срез) · research/22 §2№5 (не подтверждены labels) · omission-бэкстоп (уже стеммером D39.75) · строгий OffLanguage (36а deferred) · fix-8 скоуп verb-гейта (ЗАГЕЙЧЕН контрактом checkers.go: ёлочный экстрактор атрибуции + корпус-замер ПРЕЖДЕ стройки). **Приёмка оркестратора исполнением:** labels-ячейки перепрогнаны лично, фрозен-ДО #3 5/1/41/99 воспроизводится из дерева · голден: независимый маскированный дифф ПУСТ дважды (двинулся только `style_check_version` v6→v7 + хеш-каскад; постфикс-перезахват = байт-идентичный no-op) · build/vet/-race/майнер-парити зелёные · общность: ноль пар/книго-ветвлений, Han-предикат #10 скрипт-структурен. Раунд-1-находки (скоуп k4_inverse = весь хвост строки · 2 ложных «вскрытых» примера #3 в отчёте · BASE==EXT кандидат-теста · рассинхрон репэйр-твина · Р4-потолки не в контракте) ВСЕ закрыты постфиксом §8. Остаточные минорки раунда-2 → строка 93; вопросы владельцу (§6 + жанр-ось register_neg «xianxia» в пар-шаблоне + асимметрия 兩-батча) → строка 92. Лендинг-штамп: «D39.76» постфикса → фактический D39.78 (отчёт + 2 код-коммента; механическая нумерация — сессия номера не знала). Строка 25 ЗАКРЫТА · 79 сужена до cjkScriptNames-границы · 89 сужена (checkers-срез ведра D исполнен). Незаявленные в дерево-списке отчёта файлы (langpack.go — коммент-указатели ведра D; memdecl_test.go — gofmt) тривиальны, проверены (02.08.2026, оркестратор №9). ✅
## D39.79 — МЕЛКАЯ ПАЧКА ХВОСТОВ САНКЦИОНИРОВАНА + РЕШЕНИЯ §6 ПАКЕТА-ЧЕКЕРОВ ПРИНЯТЫ ДЕЛЕГИРОВАНИЕМ (владелец 02.08: «давай сделаем» по пачке 89+93+53+83; по строке 92 — «подумай как это сделать и реши за меня; интересует качество подходов и работающего решения»): **(1) Пачка** = строка 89 (остаток ведра D + сверка ведра B) + 93 (хвосты чекер-ревью) + 53 (мелкие хвосты качества) + **83/F4 ПОДТЯНУТА** с «до МАСШТАБА» на «до платных прогонов добора идеала» (SPOF: тихая потеря банка и подписей владельца; VACUUM INTO дёшев) — один промт `BACKEND_SMALLPACK_TAILS_SESSION_PROMPT.md`, $0, голден-ожидание = НЕ движется. **(2) Q1 канон грейда = «класс X»** (approved-ряд банка побеждает draft «разряд X»; демоция draft-рядов = операция над стенд-данными, приёмка оркестратора — выбор среди уже-подписанного, не новый вкус); **DC7-чекер вслепую НЕ строить**: сперва $0-замер нужности на боевых финалах labels-корпуса; ≥1 реальный дефект → минимальный data-driven чекер по образцу DC1; 0 → закрыть с обоснованием и gated-триггером «первая книга с живой грейд-серией». **(3) Q2: 兩 ПОДТВЕРЖДЁН в numeral-классах** (консистентность: cjk-section уже нёс 兩 — ровно класс дефекта #8) и ДОВЕРШАЕТСЯ в числовой группе `shichen_re`; **probe-ЛИТЕРАЛЫ (时辰/千万/数十万) остаются simplified-only** до первой traditional-книги — тогда цельным дата-батчем (спекулятивные варианты паттернов без книги = инерция, норма 13б); NB-граница в файл данных. **(4) Q3: PercentScale остаётся SOFT, HARD-value-детектор 成/万 НЕ строить** — нужность = 1 инстанс на корпус, механизм без носителя качества/денег; реопен ДВУМЯ триггерами: перевод `postcheck_gate` в hard-gate (строка 12 — честный HARD потребует value-чека) ЛИБО ненулевой поток value-дефектов с добора идеала. **(5) Q4: register_neg ПЕРЕЕЗЖАЕТ из пар-пака в КНИЖНЫЙ слой** — дом `StyleAllowlist` (book-config → `CheapGateConfig`), DC6-алгоритм не меняется, «терем»-список → стенд-конфиг gu-zhenren, пар-файл zh-ru остаётся чисто пар-фактами, жанро-литералов в Go НЕТ; **жанровый shared-слой НЕ строим** — gated-триггер «≥2 книги одного жанра» (зеркало C-триггера D39.76). Ревью-вопрос общности расширен: к «пара без правки Go» добавлен «ВТОРАЯ КНИГА той же пары — без ложных флагов и без правки Go». **(6) Q7 (эмиссия головы, 18) и 36б-замер (5) подтверждены полигон-слотами при ре-пробе 74** — стройка только по эффекту, без изменений. Строка 92 ЗАКРЫТА (решения здесь); 28 вес актуализирован (носитель «свежий мини-прогон» растворён D39.67 → добор идеала) (02.08.2026, оркестратор №9, по делегированию владельца). ✅
## D39.80 — Онбординг-оверхол доков по фидбеку новой сессии: один носитель состояния, реестр продуктовых требований, глоссарий, зонный сдвиг диаграмм (02.08)
Триггер: две записки фронт-сессии 02.08; все проверяемые утверждения подтверждены исполнением (README застрял на D39.77 с мёртвой ссылкой на заархивированный промт — обновление README не входило в процедуру лендинга; статус-абзац README дублировал и обгонял CURRENT-STATE; битые относительные ссылки в архиве; «три слайса» при четырёх; SEO-требование V5 не всплыло за день фронт-дизайна — реестра требований не существовало). Диагноз записки принят: доки писались под роль с непрерывностью памяти и враждебны холодной сессии. Ратифицировано: **(1) Один носитель состояния** — PROGRESS CURRENT-STATE; `docs/README.md` не несёт ни головы, ни статуса, ни дублей целей — только карту «что где лежит» (дубль числа = гарантированное расхождение). **(2) Норма лендинга:** лендинг, двигающий файлы или состав активных промтов, обновляет README тем же коммитом (вписано в ORCHESTRATOR_SESSION_PROMPT §Лендинг). **(3) `docs/product-requirements.md`** — производный реестр «что продукт обязан уметь»: ПТ-1..ПТ-32 (+25а) из START_PROMT V0V5 (живой бриф) + владельческих находок H6H18, статусы сверены кодом; новые V-идеи владельца разбираются туда при первом касании; при конфликте D-лог выше. Требования без носителя получили его: НОВАЯ строка 94 (абьюз-прескрин H8 · лимит входа H7 · продукт-кнопки стоп/продолжить H10 поверх построенных graceful stop/redrive) · дописка 71 (V5 веб-первый/SEO — в Ф3-дизайн ДО выбора фреймворка, SSR-вопрос) · дописка 90 (H16 самоулучшение при пилот-препе). Строка 30в ЗАКРЫТА (разбор START_PROMT исполнен реестром). **(4) `docs/glossary.md`** — жаргон и сокращения одним экраном, в онбординг-пути. **(5) Бэклог:** ID строки стабилен навсегда (не перенумеровывается, не переиспользуется — внешние ссылки «строка N» остаются валидными, включая backend/README), длинные строки получили жирные лиды (43 строки, механический скрипт). **(6) Зонный сдвиг:** `components.puml`/`pipeline.puml``backend/docs/` — диаграмма и код правятся одним коммитом бэкендом (строка 30а перевешена; гардрейл «PUML не рендерить» в силе); how-it-works доки подсистем строятся ПО ТРЕБОВАНИЮ фазы (дом `backend/docs/`, образец — backend/README §Инварианты), впрок не строить. **(7) Архив:** норма глубины относительных ссылок в archive/README; починены все битые ссылки (слайс 0410: 12 промт-ссылок · отчёты PACK20_DELTA/POLYGON_TERM_RESEARCH_A: `../../backend``../../../backend` · PACK20_BANKNOTE_DESIGN: repo-root пути · STRATEGIC_REVIEW-промт); заявленные новичком «44» были подстрочным овер-каунтом (греп ловил `../../backend` внутри корректных `../../../`) — реальный список установлен экзистенс-чеком, содержимое записей не менялось, только пути. **(8) Роль «Фронт»** (зона `frontend/`) в CLAUDE.md; онбординг дополнен глоссарием и реестром; счётчик ролей канонизирован — «оркестратор №N», номера эстафеты промт-файла историчны (02.08.2026, оркестратор №9, санкция владельца «делаем максимально по красоте»). ✅
## D39.81 — Фронт открыт: SaaS ратифицирован, процессная модель движка, инвариант непротекания конвейера, бэкенд-работы Ф3 получили строки (02.08)
По релею записки фронт-направления; все несущие техутверждения сверены кодом до записи (HTTP-слоя в backend нет — 0 вхождений ListenAndServe; рамка research/16:13 «выхлоп = экспорт-артефакты, НЕ веб-сервер; API/SSE — Ф3» дословна; `pipeline/ratelimit.go:11` — гарды per-процесс, mistral ~48% отказов под параллелизмом; `store.go:43` EXCLUSIVE flock + `OpenReadOnly`-пути без flock; банк-пауза `--verify-bank` построена). Ратифицировано: **(1) Продукт = SaaS**, не локальное приложение (решение владельца 02.08); зоны `frontend/` (фронт-сессия на моках, промт `frontend/docs/FRONTEND_SESSION_PROMPT.md`) и `platform/` (control plane) — живые, роль «Платформа» в CLAUDE.md; натив-прицел V0-п.26 снят этим решением (реестр ПТ-23). **(2) Инвариант непротекания конвейера:** интерфейс не раскрывает модели/стадии/внутреннюю терминологию — пользователь видит «загрузка → разбор → перевод → подпись банка → финал → готово»; API отдаёт продуктовые понятия, слой перевода внутренних вердиктов обязателен (сегодняшний read-model с flag_reason/стадиями наружу не выдаётся); ревью-вопрос — зеркало общности: «сменится стадия конвейера — придётся ли править фронт?» (реестр ПТ-33). **(3) Процессная модель:** движок = процесс-на-прогон (EXCLUSIVE flock — инвариант, не ограничение); СЕРВЕР В backend НЕ ПИШЕТСЯ — HTTP/SSE и пользователи/квоты/очередь живут в `platform/`; read-API строится поверх готовых `OpenReadOnly`-путей. **(4) Строки:** НОВЫЕ 95 «контракт API v0 + продуктовый словарь статусов» ($0; ЕДИНСТВЕННАЯ ранняя вставка — фронт на моках, без пришпиленного контракта моки и API разойдутся классом «док↔код»; двухфазный поток вывести из готового `--verify-bank`, не проектировать) · 96 «HTTP/SSE + сервисная обвязка в platform» (Ф3, после 95) · 97 «глобальный брокер рейт-лимитов» (гейт «до второго параллельного пользователя»); ПЕРЕВЕСЫ: 49 annot-половина D15.2 → «скоро» (annot-v1 = источник замечаний фронта, критический путь подключения) · 94 → «к подключению фронта». **(5) Курс НЕ пере-упорядочен:** движковая очередь (смолпак → ре-проба 74 → добор идеала → ja→ru → МАСШТАБ) стоит — фронт бэкенда не ждёт. Поправки записке при приёмке: реестр требований, который она предлагает завести, УЖЕ построен (D39.80, `product-requirements.md`); H7/H8/H10 уже несла строка 94; ETA — строка 54; H-требования сверены — статусы записки совпали с реестром (02.08.2026, оркестратор №9, по релею владельца «надо записать в планы»). ✅
## D39.82 — Мелкая пачка хвостов принята и залендена; DC7 пере-гейчен сид-покрытием с домом канона в book.yaml (02.08)
Отчёт: `archive/reports/SMALLPACK_TAILS_2026-08-02.md` (ревью-шапка). Исполнено строками 93/89/53/83 + решения D39.79: **A** — 8 хвостов ревью чекеров (whole-word inner-marker вето + гвоздь · recall-потолок в контракт · негатив-ассерт Demoted=false, мутант убит · честные комменты); **B** — ведро D добито (isHeaderSeparator = !isHeaderContentRune, комплементарность доказана приёмкой полным перебором 1 114 112 рун · мёртвый freqStratum удалён, парити EXACT), ведро B — все 6 на носителях (строки 35/81); **C** — gofmt чист · editor-mono.md DORMANT hash-нейтрально · дубль-ключ пар-файла fail-loud (`putUniqueDC`) · архео D39.4/D23.4/D28.3(б) диспозициями; **D/F4**`tmctl backup` (integrity_check + VACUUM INTO `~/books/<книга>/backups/`) + боевой pre-flight в `run()`-диспетчере (ноль магических строк провайдеров; гвоздь «fake-путь бэкапов не создаёт»); **E** — Q1 канон «класс X» подтверждён read-only (живые носители чисты); Q2 兩 в `shichen_re`; Q4 register_neg+жанр-msg → книжный слой (`book.yaml register_blocklist` → union в DC6; BriefHash с omitempty — голден `c2021b1b…` неизменен, приёмка пере-вывела hash из фикстуры независимо; пар-файл без register легален; «вторая книга другого жанра — 0 ложных DC6, 0 правок Go» запинено тестом). Приёмка: батарея пере-прогнана независимо (build/vet/race · парити EXACT · голден-фикстура не тронута ни байтом · labels 6/6 фрозен-ячеек · DC7-замер пере-выведен 25/93/150) + 5-осевой refute-воркфлоу: **0 блокеров, 0 major против пакета**. **DC7: стоп сессии ПОДТВЕРЖДЁН, рекомендация ИСПРАВЛЕНА вторым рубежом** — класс в значительной мере уже покрыт mempostcheck+сид-v2 (грейды = approved-записи с decl-формами; «разряд» в сидовом прогоне = промах dst), а labels-финалы — прогоны до/вне сид-канона; ратифицировано: дом канона грейда = КНИЖНЫЙ конфиг (посылка D39.79 «данные в dc-checkers.txt» исправлена — пар-паковый DC7 ложно флагнул бы вторую книгу), стройка — ТОЛЬКО по остатку девиаций на первом сидовом прогоне добора идеала (строка 98). Минор приёмки: `redrive --dry-run` обходит pre-flight при мутирующем store.Open (миграции+recover) → хвост в суженную строку 93. `CheapGateVersion` НЕ бампнут; `LangpackVersion` двинут байтами пар-пака (ок, D39.63). Строки 89/53/83 ЗАКРЫТЫ; 93 сужена до остатков; НОВАЯ 98. Стенд-данные вне git: `coldrun-a/book.yaml` (register_blocklist) · `dc7-measure/` замер. Промт — в архив с баннером (02.08.2026, оркестратор №9). ✅
## D39.83 — Ре-проба flash и отладочный холодный прогон с автобанком санкционированы; промт выдан с потолками и двухфазным контролем (02.08)
По слову владельца («бэкенд готов? надо идти и делать холодный прогон с контролем бэкенда; цель — отладка; никаких хаков и ворэраундов — только поддерживаемые мультиязычные решения»). Выдан `docs/BACKEND_COLDRUN_DEBUG_SESSION_PROMPT.md`, три фазы со СТОП-точками: **A** — верификация готовности САМОЙ сессией ($0; батарея с фрозен-числами · сквозной fake-путь · чек-лист наблюдаемости как приоры с правом чинить дыры — вердикт готовности за сессией, по предпочтению владельца); **B**ре-проба DeepSeek-V4-Flash-0731 (строка 74; ≤$0.15; боевая форма через расширение live-рига, N≈812 + терминолог-батчи на cap 8000 + классификатор 6/6; критерии бинарны, пограничное = НЕ здоров → развилка (а) флор 16000 / (б) reasoning_effort / (в) ждать — РЕШЕНИЕ ВЛАДЕЛЬЦА; ручка #77 сессией не включается); **C** — холодный прогон coldrun-b с автобанком (≤$5 через `ceilings.book_usd/day_usd`; ступени 2+8 глав в ОДНОЙ БД; банк-пауза `--verify-bank` = инспекционная точка сессии, продолжение неподписанным банком по D39.77; намеренный стоп+резюм посреди волны; наблюдения per-узел: эхо · упоры · банкнота→банк · инъекция байт-диффом (не injected_ids) · flag_reason · голос-оси (для 13б) · wall-clock (первые данные ПТ-19) · деньги двумя путями · F4-бэкапы). Дебаг-дисциплина: фикс = мультиязычный + тест + батарея до resume; архитектурная дыра = СТОП+пинг с вариантами, заморозка чекпойнтом — легитимный исход. Прогон закроет замер цены холодного старта ЦЕЛИКОМ (строка 16). Вне скоупа: Q2/Q7 (полигон), судья Ф2, DC7-остаток (строка 98 — нужен СИДОВЫЙ прогон). Промт холодно аудирован агентом ДО выдачи: 3 major вправлены (`budget_usd` не существует — реальные потолки `ceilings.book_usd`/`day_usd`, мина day_usd 0.25 эталона · носитель боевой формы ре-пробы назван · механика смока/добора одной БД + легитимный re-pin/подпороговая перекупка против ложного СТОПа) + 4 minor; факты аудита вложены в промт приорами (голос-счётчики есть в read-model, но не печатаются; риг 6/6 исполним из бэкенда). Строка 74 → «в работе». Владельцу при запуске: стартовать в долину DeepSeek (02.08.2026, оркестратор №9). ✅
## D39.84 — Стек фронта/платформы запинен, восемь решений владельца ратифицированы, работы движка под фронт получили строки, перевод не индексируется (02.08)
По релею отчёта фронт-сессии (исследование стека закрыто: 15 агентов — 7 направлений × независимые скептики-опровергатели + синтез, версии сверены с вебом 02.08, blocker/major-поправки скептиков записаны исправленными вариантами; артефакты `frontend/docs/STACK_DECISIONS.md` и переписанный `frontend/docs/FRONTEND_SESSION_PROMPT.md` — фронт режется на этапы S0S7, первая кодовая сессия кончается витриной токенов). Приёмка оркестратора: 10-агентный refute-воркфлоу — ВСЕ несущие бэкенд-утверждения записки CONFIRMED по коду, 8/8 веб-пинов подтверждены первоисточниками (TS7 GA 08.07.2026 БЕЗ программного API до 7.1 → TS 6.0.3 · Vite 8 = Rolldown · Fleet закрыт 22.12.2025 · react-resizable-panels v4 Group/Separator · react-router 8.3 Node≥22.22 — стенд 22.22.3 проходит). **(1) Восемь решений владельца:** рынок глобальный, SEO только Google (Яндекс снят) · выравнивание колонок грубое по единицам экспорта — механизм ГОТОВ (`tmctl export --pairs`, побайтное выравнивание по edit-unit, `internal/pipeline/export.go:89-93`; уточнение приёмки: draft-only-пайплайн шипит по чанкам, для штатного edit-пайплайна утверждение точно) · подсветка сомнительных мест только блок/глава, внутритекстовые спаны НЕ строятся (у $0-гейтов нет байтовых смещений) · остановка на подписи банка = параметр запуска per-run — ГОТОВО (`--verify-bank`, exit 3, `invocation.go:108`/`main.go:39-46`; галочка формы = передача флага, движок не трогается; в draft-only не останавливает — `mining.go:193-197`) · оплат в MVP нет, денежных полей в UI нет вовсе (расход остаётся телеметрией владельца; потолки/rebill-согласие движка канон §5 не трогает) · десктоп = устанавливаемое PWA первым шагом, Tauri по явным триггерам · макет-инструменты не используются, источник вида = пиксель-замеры референса (Fleet невоспроизводим — растровое совпадение не критерий готовности) · аутентификация: ОДНА серверная сессия, предъявление кукой (браузер) или Bearer (десктоп/CLI), principal только в middleware — вход дизайна П-1 платформенного бэклога. **(2) ПТ-34, продуктовый запрет:** ни один символ пользовательского перевода никогда не попадает на публично индексируемый URL — ни витрин, ни «поделиться», ни публичных ссылок чтения (авторское право + политика Google по масштабируемому машин-контенту бьют по всему домену); носитель — двухконтурный деплой (SPA `app.<домен>` целиком под noindex + статический публичный контур, STACK_DECISIONS §4). **(3) ПТ-21 переформулировано:** якорь чтения = edit-unit экспорта, НЕ «чанк пайплайна» — финальный текст существует только на уровне юнита (~1.9 юнита/главу по замеру фронта; «4276 юнитов» из артефактов репо не выводится — полнокнижной БД не существует, что само подтверждает тезис о ре-ингесте; принято как замер сессии, порядок величин сходится с coldrun-a); читалка обязана жить с «глава = один блок». **(4) Работы движка → строки 99102** (каждая проверена кодом): 99 пофазный прогресс draft N/M ∥ edit N/M (done = все draft-строки членов + edit-строка, `status.go:328-331/365` — индикатор 0% ВСЮ черновую волну; `chunk_status` уже несёт гранулярность — выводимо без миграции схемы) · 100 персист манифеста глав/чанков + хеш источника (каждый read-вызов заново ингестит и режет исходник — `status.go:177-195`, redrive дважды за вызов; замер фронта 1.421.51 с CPU/23 МБ; `chunker_version` уже в снапшоте — `pipeline/render.go:53`) · 101 машиночитаемая таблица подписи банка (кап 20 = только stdout `render.go:98`; полная таблица — текстовый сайдкар `.bank-stop.txt`; JSON нет нигде) · 102 внешний trace-контекст в tmctl (TraceID минтится заново каждым вызовом — `main.go:67-70`; внутри вызова трасса цельная, `request_log.trace_id` персистится). **(5) Противоречие разрешено ВЕРНО:** рекомендация интеграционного агента «долгоживущий демон в backend» отвергнута самой сессией по D39.81 — ратификация удержана, HTTP/SSE/очередь в `platform/`. **(6) Две ловушки эксплуатации подтверждены и заведены входами дизайна (строка 95 · П-1):** подпись термина ≠ UPDATE строки — банк пересобирается каждым прогоном (seedGlossary REPLACES + ReplaceBank DELETE/re-INSERT, `seeding.go:18/110`, `glossary.go:158-162`; контракт подписи пишет в файлы-источники: mined-delta/сид; след затирания — только журнальная строка glossary_revisions, без предупреждения) · порядок деплоя платформы: read-путь схему НЕ мигрирует никогда (`store.go:135-143`, «schema vN … expects vM» в обе стороны; чинит write-команда, годится и `redrive --dry-run`; `tmctl backup` НЕ мигрирует). **(7) Норма зонных бэклогов (решение владельца при лендинге):** фронт и платформа держат СВОИ бэклоги в своих зонах — `frontend/docs/BACKLOG.md` (Ф-1..Ф-6) · `platform/BACKLOG.md` (П-1..П-4); засеяны оркестратором при лендинге переносом уже записанных отложенных решений, дальше ведут зоны; ЕДИНЫЙ бэклог PROGRESS фронт/платформа-строк НЕ принимает — остаётся трекером движка/полигона/доков; движковые стыки фронта (зона «бэкенд») живут в едином (строки 99102); строки 96/97 переехали в платформенный (П-1/П-2) с ID-надгробиями-указателями (ID стабильны навсегда — внешние ссылки не рвутся). **(8) Лендинг зон** `frontend/` + `platform/` + `.gitignore` (`frontend/references/` — скриншоты вне git, пины замеров сохранены в доках). ⚠ Норма-вопрос ВЛАДЕЛЬЦУ: промт S0 велит фронт-сессии «заленди отдельным коммитом» — против нормы «сессии не коммитят» (ORCHESTRATOR_SESSION_PROMPT §роль; прецедент исключения есть — пре-рег фризы полигона); рекомендация оркестратора: дать фронт-сессиям право коммита В СВОЕЙ зоне (изолирована от движка/голдена; шесть сессий визуальных итераций через релей-приёмку каждой = трение без выигрыша), пост-хок ревью оркестратора; до слова владельца действует старая норма, промт фронта не правился (чужая зона) (02.08.2026, оркестратор №9). ✅
## D39.85 — Шов движок↔платформа: индустриальный стандарт ратифицирован — событийный поток, материализация, артефакты; ресёрч записан (02.08)
По слову владельца («двигаемся в сторону стандарта индустрии, запиши что узнал аргументированно»). Ресёрч: `docs/research/23-engine-platform-seam.md` (5-агентный воркфлоу: три веб-направления по первоисточникам + репо-инвентаризация + независимый арбитраж — 9/9 вердиктов подтверждены, 3 поправки внесены; правила internal проверены ЖИВЫМИ сборками go1.26.4; $0). Ратифицировано: **(1) Форма шва — три канала:** живой статус = версионированный однонаправленный NDJSON-поток событий движка (шаблон terraform -json: version-хендшейк первой строкой, semver «минор = ignore-unknown / мажор = reject», stdout только потоку — человеческие логи уже на stderr) → воркер-обёртка платформы материализует в СВОЙ Postgres идемпотентным апсертом (run_id, seq) → SSE и все чтения ТОЛЬКО из Postgres (Reporting Database, НЕ полный CQRS — предостережение Фаулера принято); массивный контент = артефакты границ стадий (export-JSON готов · таблица банка = строка 101 · манифест = строка 100); пост-фактум/ре-синк = `status --json`/`export` (CLI-as-API по критериям git-porcelain/kubectl/terraform — только для завершённого состояния, не для поллинга живого прогона). Реконсиляция обязательна: на обрыве потока материализация пересобирается из status --json и артефактов (BEP-каveat о потерянных при краше событиях). **(2) Анти-паттерны — запреты:** платформа НЕ читает живой SQLite движка (EXCLUSIVE-локи + смешение локинг-протоколов = порча по howtocorrupt §2.4 · checkpoint starvation = операционное проникновение · IntegrationDatabase-связность со схемой v1v14+ · индустрия единодушна: Litestream/LiteFS/sqlite3_rsync/Fossil строят снапшот/реплику, не шарят живой файл); движок НЕ пушит HTTP (направление: движок эмитит — адаптер платформы пушит); человеческий вывод не парсится; неверсионированный ad-hoc JSON не эмитится (прецедент гниения docker jsonmessage); допустимая будущая форма чтения файла — ТОЛЬКО immutable-снапшот, экспортированный самим движком (VACUUM INTO уже есть — F4) с явным export-контрактом. **(3) Публичный read-пакет ОТКЛОНЁН репо-фактом:** NewReadOnlyRunner тянет 12 из 14 internal-пакетов (полный конфиг-стек + шаблоны + langpack + ре-рендер снапшотов, `runner.go:151-266`; арбитраж усилил: 12/14, не 10/13) — тонкого среза не существует; процессный контракт D39.81 подтверждён дословно. **(4) Модули:** sibling-структура двух модулей правильная — честный аргумент НЕ видимость (один модуль дал бы ту же изоляцию internal), а изоляция графа зависимостей: pgx/river не попадают в go.mod движка и не двигают транзитивные версии через MVS — довод от детерминизма; живой эксперимент-лазейка: модуль с путём, вложенным под `textmachine/backend/*`, импортирует internal (проверка по префиксу пути, golang/go#23970) → **ревью-гард: пути Go-модулей платформы/фронта никогда не вкладывать под путь движка**; go.work закоммитить при появлении Go-кода платформы (паттерн kubernetes/grafana). **(5) Носители:** НОВАЯ строка 103 (NDJSON-эмиттер со стабильным словарём + событие потолка — единственное отсутствующее, деньги сейчас только в тексте ошибки `stagerun.go:472-494`; малое касание — единичные call-sites рядом с готовыми slog) · входы контракта 95 дополнены тройкой (i)поток/(ii)артефакты/(iii)ре-синк · П-1 платформенного бэклога уточнён формой потока · README research-навигация += 23. Дизайн-промт контракта 95 — по слову владельца; словарь событий и продуктовый словарь статусов (ПТ-33) проектируются вместе (02.08.2026, оркестратор №9). ✅
## D39.86 — coldrun-b ПРИНЯТ: блокер 0731 вскрыт до корня на боевой форме, флор-16000 фальсифицирован, эхо-мина пере-подтверждена на живых весах; развилка 74 — на владельце (02.08)
Отчёт: `archive/reports/COLDRUN_B_DEBUG_2026-08-02.md` (ревю-шапка с поправками). Промт D39.83 отработан: фазы A и B исполнены за **$0.114378 из $0.15**, фаза C **заморожена чекпойнтом** — по букве промта («здоров по ВСЕМ критериям → C без ожидания») это ЛЕГИТИМНЫЙ исход, не провал: критерий «0 пустых» нарушен 8 из 9. **Приёмка исполнением, не чтением:** батарея пере-прогнана независимо (build/vet/`vet -tags live` exit 0 · `-race -count=1` все пакеты ok · парити EXACT `n=13618 catastrophe{方源:0 蛊:1 蛊师:2 古月:22} recall 0.9655` · labels 5/5 фрозен · голден PASS · 5 новых тестов PASS); **деньги пере-выведены оркестратором из СЫРЬЯ** (`sqlite3` read-only по 4 БД, пересчёт провайдерских `usage`-колонок по вендор-ценам мимо `ledger.CostUSD`): леджер $0.114378 ≡ Σ чекпойнтов **во всех четырёх** проектах до 6-го знака, независимый путь $0.099267, разница $0.015111 = 3 `estimated`-строки декод-фейлов; все несущие счётчики пере-выведены из `chunk_status`/`request_log` и сошлись. Плюс 9-осевой refute-воркфлоу (скептик + независимый арбитр на ось): 6 CONFIRMED, 2 PARTIALLY_CONFIRMED, 0 REFUTED.
**(1) Вариант (а) «флор 16000» ФАЛЬСИФИЦИРОВАН замером боевой формы** — при `max_tokens=8496` 0 из 9 вызовов пригодны, при 16992 пустых 4 из 5; сырые тела показывают 15 424→21 528 симв. `reasoning_content` ⇒ добавка потолка уходит в думание, сходиться некуда (вендорская норма вывода для `high` = 384K, ×45 к флору). Строка 44 сужена до «какое число ставить ПОСЛЕ развилки». **(2) Посылка строки 74 об амендменте `echoMineViolation`НЕВЕРНА ДЛЯ СТАДИЙНОЙ РУЧКИ и ЖИВА ДЛЯ БЭНК-РОЛЕЙ** (поправка приёмки к §3.3): гейт (`models.go:485-501`) инспектирует МЕХАНИЗМ `capabilities.reasoning.control`, а не значение `stage.reasoning`; у deepseek `ReasoningNone`, где `off`/`""` — no-op, а `low` уходит на провод (`capability.go:167-171`) ⇒ `stages[draft].reasoning: "low"` легален и thinking НЕ выключается (доказано проводом: 22 тела с `reasoning_effort:"low"`, ноль ключей `thinking`, 24/24 ответов с непустым `reasoning_content`). НО у бэнк-ролей ручки нет вовсе, а единственный дата-путь `model.extra_body` гейт банит (`thinkingControlExtraKeys` содержит сам ключ `reasoning_effort` при любом значении) ⇒ **вариант (б) — правка Go, а не строка конфига**. Тем же решением о (б) обязаны быть приведены в соответствие доккомменты гейта (`models.go:440-448`, `capability.go:52-58`), которые утверждают инвариант «echo-prone провайдер держит thinking на дефолте провайдера»: иначе защита читается как полная, а боевой конфиг обходит её по неохраняемому каналу. **(3) Вендор-факты (пере-сняты оркестратором, HTTP 200, внесены в `experiments/00-provider-quirks.md` п.3а/п.10):** *«Thinking mode is enabled by default, with the default effort being high»* — вот почему боевая форма упирается в стену; маппинг per-модельный: у flash `low→low`, **у `deepseek-v4-pro` `low→high`** ⇒ на pro рычага эффорта НЕТ; сноска *«We will update the actual mapped effort of `deepseek-v4-pro` in early August 2026»* — то есть сейчас, поэтому «pro вендором не тронут» имеет срок годности. Changelog новее 31.07 записей не имеет. **(4) Эхо-мина при выключенном thinking ПЕРЕ-ПОДТВЕРЖДЕНА НА ЖИВЫХ ВЕСАХ** (проба C, 4/20) — вся прежняя эмпирика флага `echoes_when_thinking_off` была снята на весах Preview, которых больше нет; флаг сохраняет основание. **Норма прецедента (ратифицируется этим блоком):** ратифицированный гардрейл ПРОБОВАТЬ можно — но только карантином: копия конфига ВНЕ git с громкой шапкой, боевой файл и гейт не тронуты (проверено: sha боевого `models.yaml` = `git show HEAD:`), вопрос пришёл релеем владельца, результат = ЗАМЕР, а не разрешение шипить. Разворот гардрейла требует читки КАЧЕСТВА (D19.1/D21.9 стоят не только на эхе), которой не было ни в одной из трёх проб. ⚠ Остаточный артефакт: проект `optNoThink` стоит на банк-паузе и его `book.yaml:28` указывает на ungated копию — помечен СПЕНТ-пробой, не резюмить.
**(5) Поправки приёмки к несущим клеймам** (тело отчёта не переписано — дисциплина «отчёт = артефакт сессии»; всё в ревю-шапке): §3.1 «нет автоматического пути восстановления ВООБЩЕ» слишком сильно — `regenerate_before_escalate: 1` (`stagerun.go:177`) вылечил гл.3/чанк 1, отдача 1/5; **но арбитраж усилил вторую половину клейма: вылечил НЕ бюджет** — победивший вызов уложился в 8285 токенов при базовом потолке 8496 и выданных 16992, то есть добавка не тратилась и причиной быть не могла ⇒ **лечит стохастика вызова** (то же свойство, что квирки п.6), а значит `regenerate_before_escalate: 2` бессмыслен, и рычаг того же класса — N ре-роллов на БАЗОВОМ потолке (ручка #77), при отдаче 1/5 ожидание ≈$0.0125/чанк, дороже (б) и (г) ⇒ понят, не рекомендован; закрытость эскалации доказана СИЛЬНЕЕ, чем в отчёте (хоп настроен и профинансирован, `escalated=0` на всех восьми юнитах ⇒ блокировал КЛАСС ФЛАГА, не потолок); из 7 терминальных флагов 3 — `decode_error`, третий класс; «14 оплаченных вызовов» занижает счёт на три (оплачено 17). **Деньги волны (б) = $0.028195**, а не $0.0257 (не воспроизводится ни из одного среза; ledger ≡ Σ чекпойнтов ≡ независимый пересчёт), flash-only $0.019489, проба C $0.012287. **Вариант (г) ≈×8.9, а не ×3.1**: «×3.1» — отношение цен за токен, а pro на том же чанке выдал 9059 выходных токенов против медианы 2330 у flash-low ⇒ ≈$0.174 на волну 20 чанков (n=1, прогноз, не замер). **Д1 понижен в отчёте несправедливо:** «не тихая порча» верно лишь там, где санитайзер включён И цель = ru — условие тройное (`chunkrun.go:52`), а отчёт назвал одно. ⚠ **Мой первый черновик этой ноты утверждал, что контрпример — «легальный шиппинг-скелет `configs/pipeline-c2.yaml` без секции sanitizer»; арбитраж это ОПРОВЕРГ, и запись исправлена ДО коммита:** c2 неисполняем (`CheckRunnable` рубит и `core: C2`, и стадию `role: judge``config/pipeline.go:469-486`), его отсутствующий санитайзер уже забукован условием оживления (строка 33 / `13-tech-debt-anchors.md:45-47`). **Настоящая дыра — на оси ЦЕЛИ, и она ДВУСТОРОННЯЯ:** (i) без данных цели весь слой 7 инертен ПО ОТСУТСТВИЮ (`disposition.go:302-305` объявляет это осознанным дизайном) ⇒ для не-русской цели рубежа нет вовсе; (ii) а как только будущая ЛАТИНОПИСЬМЕННАЯ цель поедет задокументированным путём расширения (`data/target-<tgt>.txt` в go:embed), `detectLatinInsertion` (`checks/sanitizer.go:228`) сработает на ЧИСТОЙ целевой прозе и дропнет 100% чанков — потому что внутри санитайзера он НЕ обусловлен `TargetScriptNonLatin()`, хотя доккоммент `disposition.go:302-305` объявляет именно эту защиту; сам гард существует и стоит только на репэйр-пути (`quality.go:215`, `repair.go:208`), а частичный файл цели невозможен (`CompileCheckers` паникует) ⇒ новая цель ОБЯЗАНА включить санитайзер. Ревью-вопрос владельца «заработает ли пара, которой в репо нет, без правки Go?» для →en/→de сегодня отвечается **НЕТ**; кандидат фикса — тот же шов, что уже применён к репэйру. Худший исход даже на сегодняшнем ru-пути — не потеря юнита, а тихо отгруженный релейный перевод zh→en→ru. **Д2 назван на 2/3:** третий такой же синтетический `config.Stage``repair.go:384`, чей доккоммент декларирует ровно фальсифицированную посылку; проводной шов ровно ОДИН (`:515`, общий для обеих ролей), `:568` до провайдера не доезжает. **Строка `VOICE`: `rules=` говорит «сконфигурирован», а не «отработал»** (`quality.go:436` читает конфиг ВРЕМЕНИ ОТЧЁТА — воспроизведено: включение гейта после прогона печатает «измерено, чисто» для неизмеренной книги); живое чтение coldrun-a `flags=0 over attributed=0 of replies=0` означает «не считалось ни разу» (флаггер живёт на финальной волне, редакторская не гонялась) ⇒ **строка 13б по-прежнему без данных**.
**(6) Принято как построенное:** две дыры наблюдаемости закрыты $0 (строки `BANKNOTE` и `VOICE` + 5 тестов, включая тесты молчания; голден/`CheapGateVersion` не тронуты; живая проверка на БД coldrun-a воспроизвела `lines=182 over 18/20 · parse-fail 3`, sha256 БД до/после идентичен) · **live-риг не собирался с D39.64** (`undefined: cjkShare` — per-adapter live conformance физически не запускался; слом бисектнут до коммита D39.64) — починен передачей `SourceScripts` по языку пробы · порог классификатора **6/6 ВЗЯТ** ($0.000390, `finish=stop`), оговорка честна и проверена: `元石`/`灵泉` стоят в `prompts/zh-ru/classifier.md` дословно, остальных четырёх там 0 ⇒ дискриминирующие 4/4 настоящие · девиация «носитель ре-пробы = сам боевой путь вместо расширения live-рига» ПРИНЯТА с аргументом сессии (риг мог бы разойтись с боевой формой по любой оси — ровно класс ошибки D37). **Живыми деньгами доказаны:** нарезка · волна на 4 воркерах · classify/disposition · эскалация одним хопом с ре-гейтом · банкнота · майнер+банк · банк-пауза exit 3 · потолок физически выстрелил на 98.7% и отказал в хопах, не уронив прогон · F4-pre-flight (первый боевой клиент) · graceful SIGINT · **$0-резюм** (20 юнитов из `chunk_status`, 5 чекпойнтов, 0 вызовов, леджер байт-в-байт).
**(7) Строки:** НОВЫЕ **104** (ручки `reasoning`/`temperature` у синтетических стадий — блокер-очереди при выборе (б)/(в′), с пятью констрейнтами дизайна, включая ловушку расхождения хеш-оси `bankCheckpointExists``runAttempt`) и **105** (мис-вердикт классификатора + честность двух новых поверхностей). **46** получила живой носитель, повышена до «скоро» и пере-сформулирована как «экран целевого языка на выходе ЛЮБОЙ не-последней стадии». **44** сужена, **78** получила живое число ($0.015111 = 13% захода), **13б** уточнена («не считалось», не «пусто»), **74** переписана числами и остаётся НА ВЛАДЕЛЬЦЕ — **платных прогонов до его слова нет**. **16 НЕ закрыта** (полная цена холодного старта требует фазы C с редактурой). Промт `BACKEND_COLDRUN_DEBUG_SESSION_PROMPT.md` — в архив с баннером: фазы A/B исполнены, фаза C переиздаётся после развилки (стенд coldrun-b собран, $0-проверен и стоит нетронутым — прогон стартует одной командой) (02.08.2026, оркестратор №10). ✅
## D39.87 — Развилка строки 74 РЕШЕНА владельцем: вариант (б) плюс ручка эффорта для ролей без неё; мандат «элегантно и чисто» ратифицирован как приёмочный критерий (02.08)
Решение владельца по итогам приёмки D39.86 (числа и четыре варианта поданы ему таблицей): **берём (б) — явный `reasoning_effort: "low"` черновой стадии — ВМЕСТЕ с правкой Go, дающей ручку эффорта ролям, у которых её нет (строка 104), и с экраном целевого языка (строка 46) как условием безопасности.** Отклонены: **(а)** — фальсифицирована замером (D39.86); **(в′) thinking OFF** — дешевле всех и терминолог на ней здоров, но это разворот ратифицированного гардрейла `echoes_when_thinking_off`, эхо-мина на 0731 жива (4/20), а качество прозы не судил никто ⇒ принимать нельзя без читки качества; **(г) pro** — ≈×8.9 по цене, и вендор-маппинг `low→high` означает, что на pro рычага эффорта нет вовсе, при объявленной вендором смене маппинга pro на начало августа; **(в) ждать** — вендор молчит.
**Мандат исполнения — слово владельца дословно: «элегантно встроить в текущее решение по коду. Чтоб было чисто».** Ратифицирую его как ПРИЁМОЧНЫЙ КРИТЕРИЙ, а не пожелание, в четырёх проверяемых вопросах: **(1)** правка обязана быть использованием СУЩЕСТВУЮЩЕГО механизма — поле `Stage.Reasoning` (`config/pipeline.go:208`) и проброс `stagerun.go``llm/capability.go` уже есть, новый механизм не строится; **(2)** корень дефекта — не «забыли ключ», а **рукописные литералы `config.Stage`, молча теряющие поля родителя** (в шиппинг-коде их ровно три — `terminologist.go:515` для ОБЕИХ бэнк-ролей, `terminologist.go:568` не-проводная, `repair.go:384`; плюс четвёртый в live-риге), поэтому правка, чинящая три места копипастой, дефект тиражирует: приёмочный вопрос — «появится ЧЕТВЁРТАЯ такая стадия — она унаследует ручку сама или её опять забудут?»; **(3)** оба стоячих вопроса общности на каждый фикс; **(4)** «не появилось ли второго способа сказать то же самое». Ручка — ран-скоупная и из ДАННЫХ; в пар-пак и в `book.yaml` не заходит.
**Обязанность, унаследованная от D39.86 п.2:** санкция (б) тем же диффом приводит в соответствие доккомменты эхо-гейта (`config/models.go:440-448`, `llm/capability.go:52-58`), которые утверждают инвариант «echo-prone провайдер держит thinking на дефолте провайдера» — после (б) тот же провод легален через `stages[].reasoning` и запрещён через `model.extra_body`, и защита перестаёт быть полной. Гардрейл «thinking у DeepSeek не выключать» при этом НЕ ослабляется и остаётся в силе: (б) — уровень эффорта, а не тумблер.
**Выдан промт** `docs/BACKEND_EFFORT_HANDLE_SESSION_PROMPT.md`: работа A (ручка, $0 + проба банка на `low` ≤$0.10 — этот замер не делал НИКТО, `low` у бэнк-ролей открытый вопрос) · работа B (экран целевого языка, $0, вердикт-двигающая ⇒ дизайн и пинг ДО кода) · работа C (добивка холодного прогона ≤$5 — закрывает строку 16 «полная цена холодного старта включая редактуру» и ВПЕРВЫЕ даёт данные по осям голоса для строки 13б, потому что редакторская волна не гонялась ни разу). **Промт холодно аудирован 4-линзовым воркфлоу с независимым арбитражем ДО выдачи** (норма D39.83): **3 блокера и 15 major вправлены** — несуществующая на момент написания ссылка на этот самый блок · платная проба, буквально уводившая прогон в ЗАМОРОЖЕННЫЙ эталон coldrun-a (он держит денежный базлайн строки 16) · та же ловушка хеш-оси на пути repair (`repairCheckpointExists`, `repair.go:350`, чей доккоммент декларирует зеркальность) · область работы B, буквально накрывавшая бэнк-роли и repair, чьи ответы законно НЕ в целевой письменности (100% ложных флагов) · негодный носитель данных для экрана · молчащие суб-бюджеты (`gates.terminology.budget_usd: 0.05`, `escalation.budget_usd: 0.10`), которые связывают РАНЬШЕ потолка $5 · незапрещённая правка вердикт-несущих `capabilities` в `models.yaml` · порядок «B заморожена ДО первого платного вызова C» (иначе сдвиг `classifierVersion` осиротит чекпойнты C1) · пропущенная в промте обязанность про доккомменты гейта · отсутствие явной инструкции переставить ручку ЧЕРНОВИКА в стенде (буквальное прочтение оставляло draft на `"off"` и воспроизвело бы стену 0/9 за $5). Строка 74 → «в работе»; закрывается приёмкой этого пака (02.08.2026, оркестратор №10). ✅
## D39.88 — Коммит-права зонных сессий: фронт и платформа коммитят СВОЁ, чужое не трогают никогда; git-протокол переведён в механику (02.08)
Закрывает норму-вопрос, открытый D39.84 п.8 («промт S0 велит фронт-сессии коммитить самой — против нормы «сессии не коммитят»; до слова владельца действует старая норма»). **Решение владельца дословно: «Свою часть пусть коммитит. Чужую не трогает никогда. Надо ему явно это прописать. То же самое и для платформы».** Ратифицировано: **право коммита у зонных сессий фронта и платформы ЕСТЬ — строго на пути своей зоны** (`frontend/`, `platform/`); бэкенд и полигон по-прежнему не коммитят, лендит оркестратор (исключение прежнее — пре-рег фризы полигона).
**Повод — два живых инцидента 02.08, и они вскрыли, что декларативной нормы мало.** Коммиты фронт-сессии `e9a6bb2` и `b98afb5` дважды унесли под своим сообщением застейдженную работу оркестратора (архивный `git mv` промта coldrun-b; затем все четыре дока лендинга D39.86/D39.87). Содержимое цело — проверено `git show HEAD:` по каждому файлу — потеряна только атрибуция; история НЕ переписывалась (запрет при живых параллельных сессиях, урок 09.07; владелец санкционировал рерайт постфактум, оркестратор от него отказался — переписывать общий `main` под активно коммитящей сессией дороже выигранной косметики, оба хеша названы в PROGRESS, археология не рвётся). **Корень инцидента — не дисциплина, а механика: голый `git commit` уносит ВЕСЬ индекс.** Обе стороны виноваты симметрично: сессия коммитила без pathspec, оркестратор держал файлы застейдженными между операциями.
**Поэтому норма записана как ПРОТОКОЛ, а не как призыв** (канон — `CLAUDE.md` §Гардрейлы, «Git-координация мультисессий»): коммит ТОЛЬКО с явным списком путей `git commit -- <пути>` (pathspec-форма чужой индекс не трогает) · **никогда** `git add -A` / `git add .` / `git commit -a` · перед каждым коммитом `git status` + `git diff --cached --name-only`, и чужой путь в индексе не «прибирать», а обойти pathspec-формой · свои файлы не держать застейдженными между шагами (стейдж и коммит одной командой) · `reset --hard`/amend/rebase несвежих коммитов/checkout поверх грязного дерева — запрещены · чужое уехало в твой коммит → историю НЕ переписывать, сообщить владельцу · не коммитить `START_PROMT.MD` и `.claude/settings.local.json`.
**Носители (правило обязано доехать до сессии, а не только до канона):** `CLAUDE.md` — таблица зон получила колонку «Коммитит сама?» + протокол в гардрейлах · `frontend/docs/FRONTEND_SESSION_PROMPT.md` — раздел «Коммит-права и git-протокол» перед первым коммитом (правка чужой зоны сделана оркестратором по прямому указанию владельца «надо ему явно это прописать»; прежняя формулировка §«Кто ты и твоя зона» несла только общий запрет и не давала механики) · `platform/README.md` — то же плюс ревью-гард модулей D39.85, потому что отдельного промта платформы ещё нет, а правило нужно ДО первой строки кода. ⚠ Фронт-сессия на момент ратификации ЖИВАЯ: правило доедет до неё только РЕЛЕЕМ владельца — бегущая сессия файл промта не перечитывает (норма хендофф-промтов п.4) (02.08.2026, оркестратор №10). ✅
## D39.89 — БАНК КАК ЦЕНТРАЛЬНАЯ ЦЕННОСТЬ: ГИПОТЕЗА ВЛАДЕЛЬЦА О КОНСИЛИУМЕ И УВЕРЕННОСТИ МОДЕЛЕЙ ПРИНЯТА К ПРОВЕРКЕ, ТРЕК = РАСШИРЕНИЕ Q2 (строка 5/36б), НЕ НОВЫЙ; ПРОМТ ВЫДАН (02.08, оркестратор №10). ✅
**Вход владельца (02.08, дословные опоры):** «банк памяти сейчас центральная ценность при переводе… туда нужен как грамотный инжект так и фетч по книге, прям очень грамотно алгоритмически продуманный»; перевод банка требует **«консилиума без голоса»** (равноправные модели; при неравноправии — склонять вес); открытый вопрос — **могут ли модели вообще устанавливать уверенность** (числами или словами) и можно ли на скоре строить выбор перевода терма; оговорка — выбор по-терминно может **разбить стиль/систему** соседних решений. Отдельно владелец потребовал в промте секцию **рекомендованных дальнейших алгоритмов/доработок и критики текущего решения в коде**.
**Диспозиция: это НЕ новый трек.** Маршрут «второе мнение по банку» уже ратифицирован — **D39.69** закрыл бэкенд-стройку 36б по нужности и оставил ПОЛИГОН-ЗАМЕР нужности рецензента другого семейства поверх §1 (серия-батчинг) + §2 (тип-классификатор); **D39.70 (Q2)** санкционировал замер «ДО любой стройки», слотом при ре-пробе 74 (строка 5). **Новое в входе владельца, чего в Q2 не было:** (i) калибровка САМООЦЕНКИ моделей как сигнала; (ii) взвешенный арбитраж вместо равноправного; (iii) **связность системы термов как ограничение арбитража**; (iv) инжект/фетч как отдельная ось. Поэтому Q2 РАСШИРЕН этими вопросами, а не продублирован новой строкой.
**Разбор оркестратора, вошедший в промт как приоры (грунтованы, не мнение):** **(1) экономическая асимметрия** — арбитраж платится раз на книгу и по числу РАЗЛИЧНЫХ термов (насыщается: замер строки 16 — терминолог $0.0060.013/проход), инжект платится на каждом чанке каждой волны каждой роли (`membank/memory.go:523`, `Select(chunk, chapter, sticky, budgetTokens)`) ⇒ на книге оси расходятся на порядки, и «покупать качество расточительно» законно именно в арбитраже; **(2) три наших замера уже бьют по наивной форме гипотезы** — слепой судья = катастроф-ЭКРАН, а НЕ ранжировщик (D39.46); канал отказа роли нестабилен (⟦TM-NO-DST⟧ размах 0.375, выдумывание dst 7782% на хвосте — D39.50); согласие прогонов само по себе слабое (Жаккар банкноты 0.0770.40 между прогонами одних глав, D39.50); **(3) единица арбитража** — сегодня `ScoreVariants` ранжирует варианты ОДНОГО кандидата, единственный межстрочный сигнал `Neighbours` работает лишь при уже существующей подписи, а автономный банк подписи не имеет ⇒ связность системы термов на холодном старте держится ТОЛЬКО со-батчингом серий (`series.go`), и это ровно тот дефект, который был измерен и вылечен со-батчингом (D39.65 строка 21: 甲等→«класс» против 乙丙丁等→«ранг» через границу батча) ⇒ по-терминный argmax вернул бы его классом ⇒ **дизайн обязан оперировать КЛАСТЕРОМ (семья корня · серия · регистр · алиас-граф), а не строкой**; **(4) инвариант эмиссии** (терминолог не может утвердить — `draft`/`auto`, D39.42 §C2-7) размывать запрещено: «три модели согласились ⇒ канон» — запрещённая форма; **(5) D39.47** запрещает арбитражу превратиться в пар-словарь, форсящий один регистр.
**Промт выдан — `docs/BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md`** (ресёрч+полигон сессия; зона: `docs/research/24-bank-arbitration.md` + `eval/bank_arbitration/` + секция PROGRESS; НЕ коммитит). Четыре работы: **A** критика текущего алгоритма в коде ($0, вердикт-тройки, дефекты классами сломано/хрупко/дорого/слепо) · **B** арбитраж (B1 голд — гейт остального; ядро уже есть: `guzhenren-seed-v2.yaml` 58 записей / 53 `approved` + дистилл-фикстура BANK-FULL 150 поверхностей + банк coldrun-a, смещение выборки назвать честно; B2 калибровка уверенности ≤$0.60 — разделяющая способность, числа против слов, устойчивость к повтору, **сравнимость МЕЖДУ моделями**, канал отказа, и обязательный БАР против бесплатного базиса §C2-3; B3 формы консилиума ≤$0.80 с контролем «одна модель N раз» — ответ на Q2) · **C** инжект/фетч ≤$0.60 (мерить ПОСЛУШАНИЕ и ВРЕД, не recall) · **D** рекомендованные алгоритмы тремя корзинами (строить сейчас · измерить · закрыть по нужности; последняя обязана быть непустой). Потолок **$2.00** с суб-потолками и пре-регистрацией критерия до каждой пробы. **Легитимные исходы, объявленные заранее:** «консилиум не бьёт базис — закрыть» · «уверенность не разделяет — закрыть» · «голда мало, вот точный запрос владельцу» · «рычаг в инжекте, а не в арбитраже». Мандат ревизии посылок (D39.68) и правило №4 (D39.47) вшиты.
**Гигиена выдачи:** промт холодно аудирован автором перед выдачей по `file:line`/D-номерам; исправлена одна мис-атрибуция (фактура премеров — **D39.50**, отчёт `archive/reports/POLYGON_PREMEASURE_2026-07-26.md`, а не D39.71). ⚠ **Коллизия зон названа в промте:** `backend/` ЖИВАЯ (сессия строк 104/46/16), `coldrun-a` — замороженный эталон только на чтение, `coldrun-b` — стенд живой сессии; пробы гонять СВОИМ харнессом против API, не через движок. Валидный базлайн качества банка — **coldrun-a**, НЕ coldrun-b (там терминолог сломан транспортом: 1 терм из 81, D39.86) — сравнение с поломкой даст фальшивую победу консилиума и будет отклонено приёмкой.
## D39.90 — ЗАКРЫТИЕ СЕССИИ ОРКЕСТРАТОРА №10: пак ручки эффорта отработан и ЖДЁТ ПРИЁМКИ преемника, банк-ресёрч подрезан, дыры трекера заведены строками, форма архитектурных гардов и конвенции Go-репо подняты владельцем в решение (02.08). ✅
**Повод — слово владельца: «эту сессию мы завершаем, дела передаёшь; главное важную инфу не потерять».** Нота собирает состояние на момент передачи; вода и хроника опущены намеренно.
**1. Бэкенд-пак строк 104/46/16 ОТРАБОТАН, НЕ ПРИНЯТ, НЕ ЗАЛЕНДЕН.** Отчёт `archive/reports/EFFORT_HANDLE_2026-08-02.md` закоммичен с ⚠-баннером «коммит ≠ ратификация» — только чтобы артефакт пережил смену сессий. **Код лежит в дереве НЕЗАКОММИЧЕННЫМ** (новые `internal/config/internal_call.go`, `internal_call_test.go`, `pipeline/synthetic_stage_seam_test.go`; правлены `models.go`/`pipeline.go`/`capability.go`/`escalation.go`/`repair.go`/`runner.go`/`stagerun.go`/`terminologist.go`/`live_reprobe_test.go`/`capability_test.go`) — **дерево не чистить, history-rewrite и `checkout` поверх него запрещены.** Заявления сессии, которые приёмка обязана пере-проверить исполнением: работа A = ДВА шва (`config.InternalCall{…}.Stage()` + `Runner.attemptRequest`), рукописных `config.Stage{}` не осталось ни одного, все четыре сборки `RequestHash(Request{…})` схлопнуты в одну, ловушка хеш-оси закрыта в обе стороны на обоих путях; **перекупки нет** (`gates.terminology` не фолдится в снапшот, кортеж воспроизведён побайтно — `8e4495006b978ed4` в обе стороны, голден PASS без пере-захвата); гранулярность решена ЗАМЕРОМ (парная выборка N=5: `low` 4/5 против `high` 5/5 неразличимо при цене `high` ×2.30 ⇒ вторая ручка `classify_reasoning`, построенная на n=1, СНЯТА самой сессией); `Temperature` зафиксирована нулём осознанно.
**2. Проба банка на `low` ЗЕЛЁНАЯ и это главный технический результат дня** (строка 104, §3.4 промта; хост — свой проект `reprobe/bank-low/`, эталон `coldrun-a` только на чтение): терминолог **4/5 батчей `stop`, consolidated 72, unanswered 18, $0.005750**; классификатор 5/5, reclassified 14, $0.004286; черновая волна 20/20 ok ($0.031639 flash + $0.010350 pro, 2 эскалации вылечили эхо); **весь заход $0.045095 из $0.10, леджер ≡ независимому пересчёту `usage`×цены до нуля** (строки 78 в этом заходе не было). Против вендор-дефолта `high` — 1/5 батчей и 1 терм из 81. **Оба молчащих пути исключены предъявлением** (терминолог 11.5% суб-бюджета, классификатор 21.4%, книга 45.1%, ноль WARN-строк). **Провод вскрыт: 35 тел, `reasoning_effort:"low"` во всех 35, ключей `thinking` ноль, `reasoning_content` непустой везде ⇒ гардрейл «thinking у DeepSeek не выключать» доказан ПРОВОДОМ, а не рассуждением.** ⚠ Несущий нюанс для будущего: `low` стену НЕ убирает, а разрежает — упавший батч вскрыт сырьём (`content=""`, `finish=length`, `completion=7999`, `reasoning=7999`), то есть тот же тяжёлый хвост, 1/5 вместо 4/5, и это стохастика вызова, а не размер входа. ⚠ На стенде пробы `escalation.budget_usd` сознательно понижен 0.10→0.015 ⇒ наблюдение эскалаций НЕПОЛНОЕ. ⚠ Боевой `coldrun-b/pipeline.yaml` НЕ тронут — там по-прежнему no-op `reasoning: "off"` на черновике.
**3. Работа B (строка 46) — ДИЗАЙН ПОДАН, КОДА НЕТ, стоит на решении владельца.** Сессия исполнила букву промта («вердикт-двигающее ⇒ сначала дизайн и пинг»). Три поправки к посылке, все замером, и они МЕНЯЮТ масштаб проблемы: **боевой гейт уже ловит 18 из 20** off-target событий (`sourceScriptShare > 0.15`, 0 ложных на 1055 здоровых, запас 13×) ⇒ остаточная дыра **0.18%** (2 чанка из ~1100, оба английские; японский ловится долей ханьцзы); **второй рубеж существует, но стоит не там** — санитайзер поймал бы те байты, однако `chunkrun.go:52` требует `isFinal`, а в шиппинговой двухстадийной топологии черновик НИКОГДА не финальный, и тот же `isFinal` глушит на черновике латинный линт, флаггер голоса и глоссарный пост-чек; здоровый минимум на тексте, который РЕАЛЬНО видит гейт (после среза банкноты), = 0.9767 при n=1055, а не 0.9510 при 1306 (сессия поправила собственное число). **Развилка владельцу: (а)** предикат в `classify()` + бамп `classifierVersion` — двигает снапшот у всех книг, голден пере-захват один раз, на свежем стенде $0; **(б)** отдельный опциональный гейт — снапшот не двигает, но это второй способ сказать то же самое и он выключен по умолчанию; **(в)** языковой детектор. Выбор сессии — **(а)**. Носитель — `lang.LangScripts(Book.TargetLang)`, НОВЫЙ go:embed-файл не заводить (`EmbeddedVersion` фолдится безусловно = перекупка всех книг всех пар). Три мины наивной реализации названы (новый флаг провалился бы мимо `escalatable()`/`retryable()` ⇒ переиспользовать `FlagCJKArtifact`; классификатор флагался бы ложно 16/16; экран слеп к ПОДМНОЖЕСТВАМ письменности — чисто китайский выход для →ja наберёт 1.000).
**4. Работа C (строка 16) НЕ НАЧАТА, закрыта владельцем как неуспешная на этом этапе; деньги фазы C не тронуты.** Редакторская волна по-прежнему не гонялась НИ РАЗУ ⇒ оси голоса (13б/24) без данных, полная цена холодного старта невыведена.
**5. Банк-ресёрч (строка 5): заход запущен и ДОСРОЧНО ЗАКРЫТ владельцем — «требуются фиксы в бэкенд». Артефакта в дереве НЕТ** (ни `docs/research/24-*`, ни `eval/bank_arbitration/`, ни свежих файлов в `~/books` — проверено) ⇒ **находки не сохранены; если они ценны, их надо вынуть из истории той сессии, иначе работа повторяется с нуля.** Диспозиция пере-запуска — ПОДРЕЗАТЬ: держать §3-A (критика кода, $0 — она и вскрывает нужные бэкенд-фиксы), B1 голд (гейт всего) и B3 формы консилиума с контролем «одна модель N раз»; свернуть B2 (калибровка уверенности) до под-пробы внутри B3 — как отдельная работа она дорога, а приоры D39.46 (судья = катастроф-экран, не ранжировщик) и D39.50 (канал отказа нестабилен, размах 0.375) уже сильно против неё; отложить §5-C (инжект/фетч) до бэкенд-доработок — мерить послушание инъекции без движка нечем. Потолок $2.00 → $1.20. **Да, после ресёрча последуют бэкенд-работы** — их предмет и есть деливерабл §3-A и §6-D промта.
**6. Дыры трекера закрыты строками (сверка по репозиторию, не по памяти).** Заведены: **106** слой 3 — контракт редактора остаётся full-regen при целевом diff-контракте (`09:121-126`), строки не было вовсе · **107** конвенции Go-репо (см. п.7) · **108** реестр загейченных триггеров — шесть реопенов жили только в телах D-нот, и триггер «появление Go-кода платформы» УЖЕ наступил (`platform/go.mod` заведён) · **109** требования без носителя (ПТ-6 · ПТ-7 · ПТ-22-интейк · ПТ-10-механизм) + гигиена перекрёстных ссылок реестра · **110** детектор повторов лемм / защита авторских рефренов · **111** `parseCategoryRows` молча last-wins (фикс дубль-ключа накрыл только `parseDCCheckers`). **Снято расхождение трекера:** строка 74 объявляла строку 44 закрытой — верно лишь для половины «поднять флор»; живой остаток обратный (число флора влияет на цену ретрая, не на проходимость). Уточнён гейт строки 93 (`分之`-часть гейчена полигон-разметкой, F4-хвост свободен). **Четыре пункта, поданные черновиком свода как долг, СНЯТЫ как уже закрытые решениями:** резолвер слоя 7 построен (`chunkrun.go:30-35`, D39.2 T3) · «санитайзер = чистый детектор» исполнен (D39.2 T2; остаточная мутация `StripCosmetic` — сама ратифицированная диспозиция D38.3 п.2а) · 36б — не бэкенд-стройка, а замер (D39.69) · полярность/ранг отменены D38.4, строка 2 и есть их загейченный носитель.
**7. Вопрос владельца, поднятый в решение (строка 107): форма архитектурных гардов и конвенции репозитория.** Предмет — `backend/internal/pipeline/synthetic_stage_seam_test.go` (395 строк): гард ходит по дереву через `go/parser` из обычного `_test.go`, резолвит пакет по ПУТИ импорта, несёт пол на число разобранных файлов. **Намерение верное и уже окупилось** (поймано 7 обходов: байтовая версия пробивалась пятью способами, AST-версия — ещё двумя, алиасом импорта и `[]config.Stage{{…}}`; сессия честно записала, что первая версия говорила `ok` на посаженном пятом сайте). **Дом неверный:** без типовой информации (`go/packages`+`types.Info` вместо эвристики по путям), в тестовом пакете, и каждый следующий инвариант породит ещё один такой обход. Индустриальная форма — analyzer на `golang.org/x/tools/go/analysis` (+`multichecker`, `go vet -vettool=`, CI), где алиас и дот-импорт закрываются ПО ПОСТРОЕНИЮ. Вторая половина вопроса: **в репозитории нет ни `.golangci.yml`, ни `Makefile`, ни CI-воркфлоу** (проверено) — батарея гоняется руками каждой сессией. Опасение владельца про хвост техдолга обоснованно ⇒ **первый шаг обязан быть $0-ЗАМЕРОМ** (набор в report-only, находки по правилам), и только потом состав + режим внедрения (baseline «только новый код» против big-bang). Решение — за владельцем, исполнение — следующей сессией оркестратора.
**8. Состояние зон на момент передачи.** `backend/` — незакоммиченный пак (п.1), сессия отработала и закрыта. `frontend/` — сессия ЖИВАЯ и коммитит сама по D39.88 (за день ушли `d8437d6`, `8d6b3f7`, `804dbc9`, `8be1e41`); правило pathspec-коммита до неё доехало только релеем владельца. `platform/` — кода нет, `go.mod` заведён. `eval/` — пусто по новому. **Очередь на момент передачи (пересчитано скриптом после добора п.9: 95 строк · зона бэкенд 46 строго / 61 широко · блокеров очереди 0 (104 → «на приёмке») · «скоро» 13 (2·4·5·18·46·49·55·95·107·108·109·112·113).**
**9. ДОБОР ПОСЛЕ НЕЗАВИСИМОГО РЕВЬЮ ЛЕНДИНГА (author≠reviewer, тот же день).** Ревьюер подтвердил числовую часть (все числа пробы и строки 46 сошлись с отчётом, все `file:line` живые, счёт очереди воспроизведён скриптом, все четыре снятия «ложных долгов» обоснованы) и нашёл, что дефект передачи — **в НЕзаписанном**: просели предупреждения и адресованные наверх вопросы, у которых нет числа. Исправлено тем же лендингом:
- **Мой над-клейм СНЯТ:** «дом гарда неверный» (строка 107). Отчёт §5.5 замерил обратное: форма «архитектурное правило обычным тестом» — стандарт stdlib (`go/build/deps_test.go`, `go/types/errorcalls_test.go`), а индустриальная альтернатива **не проходит наше ограничение «падать на обычной батарее»** (`go test -vet=<свой>` не поддерживается, `GOFLAGS=-vettool` при `go test` игнорируется), и переход на `x/tools/go/analysis` тянет `x/net` 0.26.0 → 0.54.0, **где `x/net/http2` — наш транспорт к провайдерам**. Тестовый дом был осознанным следствием замера. Владельцу вопрос переформулирован честно: принять ли бамп `x/net` ради типовой информации · заводить ли CI · остаётся ли гард тестом.
- **Второй мой над-клейм СНЯТ** (строка 44): «число флора влияет на цену ретрая, а не на проходимость» — незамеренная экстраполяция. При `low` флор не варьировался ни разу, упавший батч умер ровно на потолке 8000.
- **Заведены строки на потери:** **112** — пять ШИППИНГ-конфигов (`pipeline-c1.yaml:49` · `c2:26,39` · `arm-mistral:30` · `arm-glm:34` · `arm-deepseek-pro:34`) до сих пор несут no-op `reasoning: "off"` на ЧЕРНОВОЙ стадии, то есть ратифицированное решение (б) в проде НЕ действует, а правка двигает снапшот их пользователям ⇒ вопрос владельцу, и он был бесхозным; **113** — числа «18/20 · 0 FP на 1055 · запас 13×» получены ВРЕМЕННЫМ тестом, который сессия удалила, то есть контрактное число невоспроизводимо ⇒ корпус-фикстура + регресс-тест на запас ДО любой правки по строке 46.
- **Дописано в строку 104 то, что приёмка обязана смотреть отдельно:** наследование эффорта у repair СНЯТО против буквы промта и D39.87 (девиация, не ратифицирована) · починка `ThinksOnWire` на `extra_body_disable` (предикат врал «думает» при пустом эффорте ⇒ бэнк-роль на glm молча уезжала в thinking-off; область правки — ровно случай «ключ отсутствует», явный `off` в армах предупреждался и до, и после, оставлено специально чтобы приёмка не искала регресса) · вывод «одна ручка» опирается на N=5, где 2 из 6 термов стоят дословно в промпте классификатора, и падение `low` было ровно по дискриминирующему подмножеству (1/4 против 4/4) · **качество прозы не судил никто ни в одной пробе**.
- **Дописано в строку 46:** порог abstain 200 букв · база off-target на ЧЕРНОВОЙ вызов **3.02%**, а не опубликованные ~1.5% (знаменатель пулил редакторские выходы — третья самопоправка сессии) · **не проверено, что редактор делает с английским черновиком** — от этого зависит, чем являются остаточные 0.18%: потерей юнита или тихо отгруженным релейным zh→en→ru · `cultivation` (86 из 1055 здоровых) чинить в СИДЕ, а не порогом · Hunspell/GlotScript-эмбед не строить.
- **Строка 108 получила первого жильца:** сиблинг-угроза (выход на языке, близком к целевому) с дискриминатором «плотность ы/э/ё НИЖЕ ожидания, а не замыкание алфавита». **Строка 36б приведена в соответствие** собственному снятию (зона → полигон-замер через строку 5; прежняя форма «отдельный дизайн (Р4)» завышала счёт бэкенд-очереди).
- **Норма, нарушенная этим же лендингом и потому названная вслух:** сжимая отчёт, я сохранил всё, у чего есть число, и потерял часть того, у чего числа нет. Для отчётов с секцией «пошаговый план следующей сессии» правило сверки — идти по ней ПУНКТАМИ, а не по сводке.
## D39.91 — ПРИЁМКА бэкенд-пака строк 104/46/16 (оркестратор №11): пак ПРИНЯТ и заленден `553f1a3`, обе девиации РАТИФИЦИРОВАНЫ, две находки приёмки, все отложки Д4Д9 получили носителей, строка 104 ЗАКРЫТА (02.08). ✅
**Мандат — D39.90 п.1 и задача №1 хендоффа. Всё ниже — исполнением, не чтением отчёта.**
**1. Батарея с фрозен-числами: 5/5 совпали.** `build`/`vet`/`vet -tags live`/`gofmt` чисты, `go test -race -count=1 ./...` — все 14 пакетов ok (pipeline 82.2s). Голден PASS **без пере-захвата** · парити EXACT `n=13618 catastrophe{方源:0 蛊:1 蛊师:2 古月:22} recall@proposed=0.9655 (56/58)` · labels-фриз `k4b 10/1/36/99 · k4_inverse 3/0/1/71 · k2 34/1/6/51 · k4a 0/0/0/348` · K6 `tp=1 fp=6 fn=0 tn=251`.
**2. Деньги вторым путём: сошлись до нуля тремя маршрутами.** Леджер Σ чекпойнтов $0.045095 ≡ мой независимый пересчёт usage×цены `models.yaml` (flash $0.034745 + pro $0.010350) ≡ Σ `request_log.cost_usd`; `decode_error` 0, `estimated` 0 (расхождения строки 78 не было). Разбивка по ролям сверена с логом: терминолог $0.005750 (5 вызовов, 4 stop/1 length) · классификатор $0.007706 = осн. $0.004286 + риг $0.003420 · черновик flash $0.021289 (23 вызова: 20 stop + 3 length-ретрая) + pro $0.010350 (2 эскалации). **НАХОДКА-1 приёмки:** §2.1 отчёта и D39.90 п.2 маркируют «$0.031639 (flash)» — на деле это **flash+pro черновой волны** ($0.021289+$0.010350); суммы и леджер верны, врёт метка. Поправлено ревью-шапкой отчёта; при цитировании черновая волна flash-only = $0.021289.
**3. Адверсариал по несущим клеймам — все выдержали.** (а) Рукописных `config.Stage{}` в не-тестовом коде НОЛЬ (grep), единственный `Request{}`-литерал — внутри самого `attemptRequest` (`stagerun.go:407`); все четыре `RequestHash`-сайта едут через шов (`escalation.go:109`, `stagerun.go:420`, `terminologist.go:505`, `repair.go:353`). (б) Перекупки нет: `snapshot.go` паком не тронут (diff пуст), `Gates.Terminology` в снапшоте отсутствует, `repairSnap` нового ключа не фолдит; обратная сторона проверена и признана штатной — СМЕНА `gates.*.reasoning` потом двигает request-hash без resnapshot-гейта, но это тот же контракт, что у смены `gates.*.model` (перекупка ограничена классом вызовов гейта, видима леджером; доккоммент `TerminologyGate` это аргументирует). (в) Гарды: **пять НЕЗАВИСИМЫХ посадок приёмки** (алиас-импорт-литерал · `[]cfg.Stage{{…}}` · hoisted `Request` · `var`-форма · `new()`) — все CAUGHT с позициями, после удаления посадок гарды зелёные; рефлексионный гард полноты верифицирован чтением (XOR карт carried/deliberatelyZero корректен в обе стороны). (г) ⚠ Клейм «`8e4495006b978ed4` в обе стороны» НЕВОСПРОИЗВОДИМ как таковой (старая форма удалена из дерева, хеш не запинен тестом) — принят ПО ЭКВИВАЛЕНТНОСТИ: `RequestHash` длина-префиксует `req.Reasoning`, опущенное поле композитного литерала = `""` побайтно, плюс `TestBankProbeAndAttemptAddressOneCheckpoint` (боевой путь `Reserve``SettleWithCheckpoint`, 3 уровня эффорта) и голден без пере-захвата. (д) N=5 сверен с сырьём `classifier-6of6-{low,high}.json`: low 4/5 · $0.001016 · completion 911278 · промах run3=91 ток. с 1/4 по дискриминирующему подмножеству; high 5/5 · $0.002335 · 9203104; цена ×2.298. (е) Провод: 35 тел `reasoning_effort:"low"`, ключей `thinking` 0, бюджетных WARN 0; `terminology finished`: consolidated=72 · unanswered=18 · reclassified=14 · bad_lines=0 · off_language=0.
**4. Девиации строки 104 — обе РАТИФИЦИРОВАНЫ этой нотой.** (а) **Repair: ключ СВОЙ, наследование снято** (против буквы промта и D39.87) — деньги и семантика подтверждены исполнением: `reasoning: "off"` стоит на финальной стадии всех пяти шиппинг-конфигов (`c1:77` · `c2:51` · `arm-glm:43` · `arm-deepseek-pro:43`, + стенд `coldrun-b:44`) ⇒ наследование двигало хеш всех оплаченных repair-вызовов; и то же слово «off» на другой модели меняет СМЫСЛ (no-op deepseek → живой `thinking:{type:disabled}` на glm). Запинено `TestRepairStageTakesItsEffortFromItsOwnGate`. (б) **`ThinksOnWire`**: область правки ровно случай «ключ отсутствует» на `extra_body_disable` — провод (`applyToBody`: `""`→disable) существовал ДО пака и не менялся, менялся врущий предикат; явный `off` в армах предупреждался и до, и после (Д11); 8 кейсов теста на три control. (в) Вывод «одна ручка» принят с оговоркой Д8 (2/6 термов — припоминание; носитель Д8 — строка 116). (г) Качество прозы не судилось — остаётся на строках 16/13б, в контракт этой приёмки не входит.
**5. НАХОДКА-2 приёмки: стейл-доккоммент `capability.go:78`.** Комментарий константы `ReasoningExtraBodyDisable` до сих пор говорит «effort "" leaves the provider default», противореча и проводу (`applyToBody` мержит disable на `""`), и inline-коменту самого arm, и новому предикату. Пак чинил ровно эту путаницу (D39.86-обязанность доккомментов) и хвост в 30 строках выше собственной правки не заметил. Однострочный фикс — носитель: строка 114 (тем же касанием, что Д4).
**6. Носители отложек — гигиена D39.90 исполнена ТЕМ ЖЕ лендингом.** **114** = Д4 (`gates.terminology.target_script` не сверяется с `book.target_lang` — мисконфиг тихо ИНВЕРТИРУЕТ банковский экран) + находка-2 (оба — конфиго-слой ручки, вне снапшота, дёшево). **115** = Д6 (`//go:embed` в `lang/embedded.go:22` — ЯВНЫЙ список файлов: новая ЦЕЛЬ требует правки Go, `CompileCheckers` паникует на неполном файле цели ⇒ на ревью-вопрос общности ответ сегодня НЕТ — дыра в ратифицированной «ФАЗЕ 2 ОБЩНОСТИ ✅» D39.64, и она не про язык, а про строку эмбеда). **116** = Д8 (ратифицированный порог классификатора «6/6» определён для ОДНОГО вызова; на рекомендованном `low` риг N=5 красный — порог обязан стать выборочным контрактом ДО применения (б) где-либо; решается вместе со строкой 112). **Реестр 108** получил двух жильцов: Д5 (enum эффорта провайдер-слеп; решение оркестратора этой нотой — пер-модельную таблицу НЕ строить: новый механизм без носителя качества/денег, misconfig ограничен бюджетами и назван в доккомменте `ValidReasoningEffort`; триггер реопена — первый живой инцидент кривого поведения уровня на проводе) и Д9 (аддитивные провайдеры отказываются бэнк/repair-гейтам — блок не несёт `reasoning_max_tokens`; лоадер fail-closed; триггер — первая потребность гейта в аддитивной модели). **107** дописан Д7 (свести давний байтовый `TestProviderEgressSeamIsSingle` с AST-обходом в один — тем же решением формы гардов). Д1→46 · Д2→46 · Д3→105 · Д10→112 · Д11 закрыт — носители существовали до приёмки, сверено.
**7. Сверка §5.4 отчёта ПУНКТАМИ (правило D39.90 п.9 — по плану, не по сводке): потерь сжатия НЕТ.** Шаги 12 (корпус-фикстура + регресс-тест запаса) → строка 113 ✓ · шаг 3 (два дока-дефекта: 0.9510→0.9767 на 1055, база 1.5%→3.02%) — УЖЕ исполнен №10 в теле строки 46, других публикаций неверных чисел grep не нашёл ✓ · шаги 46 (чистая функция → офлайн-дифф → бамп `classifierVersion` с подписью) → тело строки 46 ✓ · шаг 7 (`cultivation` в сиде, не порогом) → хвост 46 ✓ · шаг 8 (сиблинг строкой с триггером) → первый жилец 108 ✓.
**8. Лендинг и очередь.** Пак закоммичен pathspec-формой: `553f1a3`, ровно 13 файлов backend/, чужие файлы (фронт-сессия ЖИВАЯ, её правки в дереве) и `START_PROMT.MD` не тронуты. Отчёту дана ревью-шапка ПРИНЯТ. Очередь скриптом по таблице: **97 строк (95 закрытая 104 + новые 114/115/116) · «скоро» 15 (2·4·5·18·46·49·55·95·107·108·109·112·113·114·116) · блокеров 0 · «на приёмке» 0**; гейт строки 44 «при приёмке 104» наступил — строка пере-диспозиционирована (вариационный замер флора при `low` не проводился, вопрос числа жив). **На владельце без изменений три решения:** развилка (а)/(б)/(в) строки 46 — выбор сессии И приёмки: **(а)**; строка 107 (форма гардов + линтер/CI; первым шагом $0-замер); строка 112 (применять ли (б) к пяти шиппинг-конфигам и когда платить перекупку — теперь в связке со 116).
## D39.92 — РЕШЕНИЯ ВЛАДЕЛЬЦА 02.08 (вечер): строка 46 пере-поставлена как closed-set «не тот язык, что просили», строка 107 САНКЦИОНИРОВАНА целиком (CI+линтер+бампы, промт выдан), строка 112 САНКЦИОНИРОВАНА, вендор-сверка DeepSeek исполнена. ✅
**1. Строка 46 — переформулировка владельца ратифицирована как ПОСТАНОВКА задачи.** Слово владельца: нужен не языковой детектор, а детектор «вернуло НЕ на том языке, что просили» (closed-set, нулевая гипотеза «текст на N», аттракторы: en · язык источника · сиблинги N); полноценный LID — максимум запасной флаггер ВНЕ пути вердикта; «сбой» — четыре режима (эхо · уход в другой язык · дрейф в середине · мета/деградация), гнать всё через один детектор — ошибка проектирования; в коде проверку изолировать отдельным слоем. **Констатация приёмки: ресёрч бэкендеров ЗАПИСАН и отвечает этой постановке почти пункт-в-пункт** (`EFFORT_HANDLE_2026-08-02.md` §5.15.3, живые носители — строки 46/113/108): four-modes = Guerreiro (разные детекторы на режим, §5.1); closed-set и аттракторы подтверждены (en — доминирующий аттрактор, наши 2/20 английские); эхо у нас ловится БЕЗ LID и лучше Левенштейна — `sourceScriptShare` 18/20 при 0 FP и запасе 13× (для zh→ru письменности далёкие); слой «скрипт детерминированно» = и есть предлагаемый экран `targetScriptShare` на `lang.LangScripts` (шаг 4 плана §5.4 — ЧИСТОЙ изолированной функцией, ровно «изолировать отдельно»); abstain-вердикт есть (пол 200 букв); срез терминов/латиницы = `cultivation` в сиде. **Расхождения с текстом владельца — ДВА, оба замером на нашем корпусе:** (а) гарантия Неймана–Пирсона FPR ≤ 0.1% на этом корпусе не покупается — независимых позиций 114, правило трёх даёт ≤ 2.594% (в 26 раз слабее), а калибровка порога на той же выборке двоит данные ⇒ порог ставится консервативной КОНСТАНТОЙ в пустом интервале [0.0000; 0.9767] и версионируется как контракт (не как тюнинг); (б) замыкание алфавита (L2) и посегментный worst-of LR (L4) на СЕГОДНЯШНЕМ корпусе отвергнуты числами (болгарский алфавит ⊂ русского — L2 нулевой; у L4 ноль положительных примеров и умножение FPR на число сегментов; lingua-go недетерминистична 6/23 на 20k повторов даже в closed-set режиме — в путь вердикта нельзя, как ЗАПАСНОЙ офлайн-флаггер вне вердикта допустима) — это отказ ПО ДАННЫМ ОДНОЙ КНИГИ, при сиблинг-инциденте реестр 108 возвращает вопрос (дискриминатор уже назван: плотность ы/э/ё ниже ожидания). Слой 0 владельца (отношение длин len(out)/len(in) вне полосы пары) в ресёрче НЕ рассматривался — добавить ЗАМЕРОМ на корпус-фикстуре строки 113 (дёшево, решит фикстура). **Исполнение:** форма (а) из D39.90 п.3 + изолированный модуль; порядок §5.4 в силе (фикстура 113 → чистая функция → офлайн-дифф → бамп `classifierVersion`); ⚠ денежный шаг 6 (бамп версии = снапшот всех книг) — ПО-ПРЕЖНЕМУ под отдельную подпись владельца, сегодня не санкционирован.
**2. Строка 107 — САНКЦИЯ ЦЕЛИКОМ: «делаем по стандартам индустрии».** CI + линтер + бамп `x/net` и библиотек; подход «осторожный, затем полный»; самописные AST-тест-гарды заменить штатной формой, «спилив лишний мусор»; ограничение равной силы: **стандарты не должны мешать разрабатывать, тормозить и приводить модели к хакам** (в промте — анти-хак-правило: спорное правило линтера ВЫКЛЮЧАЕТСЯ с причиной, а не обходится в коде; голый nolint запрещён). Промт выдан: `docs/BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` — этапы: 0) строка 112 · A) $0-замер report-only · B) состав+режим по числам · C) Makefile/`make battery`+CI · D) бамп с живой пробой провода ≤$0.50 (x/net/http2 = транспорт) · E) гарды→analyzer с паритетом 12 посадок, снос тест-гардов только после 12/12 (Д7 исполняется там же). Три СТОП-пинга: >1000 находок · >30 файлов правок разом · любое изменение поведения провода.
**3. Строка 112 — САНКЦИЯ: править все пять шиппинг-конфигов сейчас** (`reasoning: "low"` на черновике), перекупка снапшотов старых книг при их следующем прогоне принята, новые книги $0. Внесено этапом 0 промта п.2; редакторские/финальные `off` не трогаются (Д11).
**4. Строка 116 — рекомендация оркестратора подана владельцу:** порог классификатора пере-ратифицировать выборочным — **«≥4/5 прогонов N=5 достигают 6/6»** (пер-прогонный критерий 6/6 сохраняется, контракт становится выборочным; совпадает с замеренным `low` и дефолтом рига). Ждёт слова владельца; альтернатива, если хочет жёстче: порог по дискриминирующему подмножеству 4/4 без двух термов-припоминаний.
**5. Вендор-сверка DeepSeek исполнена по правилу 10.07 (веб, не гадание).** Вопрос владельца: «полного лечения эха нет? модель хуже прежней? мигрировать?» Ответ тремя фактами: (а) наши замеры — `low` стену НЕ убирает, а разрежает (1/5 батчей всё ещё умирает на потолке с `reasoning=7999`), эхо лечится эскалацией (2/20 в пробе), т.е. РЕЖИМ УПРАВЛЯЕМ, но не вылечен; (б) интернет ДЕГРАДАЦИЮ НЕ подтверждает: 0731 = официальный релиз flash (re-post-train, бенчи ВВЕРХ, вкл. agentic) — наш отказ это не «модель хуже», а СМЕНА ПОЛИТИКИ ДЕФОЛТА (thinking по умолчанию `high`) на плотном хане, и ключ `reasoning_effort` — штатный вендорский рычаг, который мы теперь и используем; (в) ⚠ вендор анонсировал смену МАППИНГА эффорта `deepseek-v4-pro` «early August 2026» ⇒ квирк 3а («у pro эффорт не настраивается, low→high») может устареть со дня на день — **вахта заведена в реестр 108** (триггер: аномалия редакторского арма / дата > 05.08 ⇒ пере-проба маппинга + сверка changelog; абсорбция в 00-provider-quirks — полигоном по его зоне). Миграция черновика с deepseek — вопрос ЗАМЕРА, не решения сейчас: при работающем `low` приоритет низкий; кандидаты (glm-5, mistral, qwen) меряются той же пробой формы bank-low, когда/если владелец даст добро — строкой не заводится до его слова.
**6. Строка 5 (банк-ресёрч) — статус подтверждён владельцу:** промт `BANK_ARBITRATION_RESEARCH_SESSION_PROMPT.md` жив, но заход по нему прерван владельцем досрочно, артефактов в дереве НЕТ (проверено №10) — находки существуют только в истории той закрытой сессии. Диспозиция пере-запуска ратифицирована (D39.90 п.5: §3-A+B1+B3, B2 → под-проба, §5-C отложен, потолок $1.20); промт будет подрезан оркестратором ПЕРЕД пере-выдачей. Вопрос владельцу открыт: вытащит ли он находки из истории прерванной сессии (тогда они входом в подрезанный заход), или пере-запуск с нуля.
## D39.93 — Дизайн-ввод владельца по строке 46 (02.08, ночь): проверки выхода — ИЗОЛИРОВАННЫМ модулем с ИМЕНОВАННЫМИ причинами; деталь «переиспользовать FlagCJKArtifact» СНЯТА в пользу именованного флага. ✅
Слово владельца: «какая разница почему пришёл отказ — бэкенду надо ПРИЧИНУ назвать (эхо · не тот язык · вообще не ответила); я выступаю за степень изолированности кода» + классический вопрос «сколько стоит добавить пару». Следствия, вносимые в дизайн пака экрана ДО его выдачи: (1) детекторы выхода живут отдельным пакетом чистых функций (вход: текст + дата-план цели; выход: именованный вердикт + счёт), движок только вызывает и маппит в диспозицию; (2) **деталь §3.6 отчёта «переиспользовать `FlagCJKArtifact` для нового экрана» СНЯТА** — она экономила правку `escalatable()`, но ВРЁТ о причине (off-target-язык лёг бы в телеметрию как «артефакт исходной письменности»); правильно: новый именованный флаг + явное включение в белый список `escalatable()` (диспозиция та же: эскалируем, не ретраим); (3) пары: сам экран пар-слепой (скрипт-набор цели из `data/lang-script.txt`), новая пара = строка данных; известные ограничения — 115 (явный embed-список: новая ЦЕЛЬ сегодня требует правки Go) и семантика ПОДМНОЖЕСТВ письменностей для ja/ko (чисто китайский выход для →ja набирает 1.000 — решается в данных набором скриптов, не в Go). Попутно: предложение владельца по DeepSeek «поднять токены размышления при low» = ровно открытый замер строки 44 (вариация флора при `low` не проводилась; при `high` фальсифицировано D39.86) — мини-проба ждёт его санкции.
## D39.94 — ЗАКРЫТИЕ СЕССИИ ОРКЕСТРАТОРА №11 (02.08): состояние передачи. ✅
**1. Сделано:** приёмка бэкенд-пака 104/46/16 исполнением — ПРИНЯТ, код `553f1a3`, строка 104 закрыта (D39.91) · решения владельца ратифицированы: 46 пере-поставлена closed-set, 107 санкционирована целиком, 112 санкционирована (D39.92) · дизайн-ввод по 46: изолированный пакет детекторов, именованные причины отказа, именованный флаг вместо реюза `FlagCJKArtifact` (D39.93) · выдан `BACKEND_REPO_STANDARDS_SESSION_PROMPT.md` (линтер/CI/бампы/гарды→analyzer; этап 0 = пять шиппинг-конфигов на `low`).
**2. Ждёт исполнения:** бэкенд-сессия по промту стандартов; её приёмка — преемником по образцу D39.91 (батарея + фрозен-числа + посадки-паритет 12 обходов этапа E + предъявление живой пробы этапа D ≤$0.50).
**3. Ждёт выдачи (преемник):** промт пака экрана 46. Порядок жёсткий: фикстура+регресс (113) → изолированный модуль с именованными вердиктами → офлайн-дифф по всем чекпойнтам (ожидание: ровно 2 строки меняются, СТОП при любой здоровой) → денежный шаг (бамп `classifierVersion`) ТОЛЬКО с подписью владельца. Ограничения: D39.92 п.1 (порог константой-контрактом · abstain 200 букв · слой-0 длин добавить замером · Hunspell/GlotScript/LID в путь вердикта НЕ строить) + D39.93 (именованный флаг + `escalatable()`; скрипт-НАБОРЫ цели в данных — ja/ko). Тем же диффом: Д2 (`detectLatinInsertion` под `TargetScriptNonLatin`) и Д3 (`SourceEchoExpected` для classifier) — строки 46/105.
**4. Открыто на владельце (ответа при закрытии НЕТ):** 116 — форма порога классификатора (подано «≥4/5 прогонов N=5 дают 6/6»; альтернатива — 4/4 по дискриминирующему подмножеству) · строка 5 — вытащить находки прерванного банк-ресёрч-захода из истории той сессии ИЛИ пере-запуск с нуля; в обоих случаях промт ПОДРЕЗАТЬ перед выдачей по D39.90 п.5 (§3-A+B1+B3 · B2 → под-проба · §5-C отложен · потолок $1.20) · мини-проба строки 44 «low + потолок 16k на упавшем классе батчей» (~$0.05) — идея владельца, санкции нет · подпись денежного шага по 46 (когда дойдёт).
**5. Вахты и грабли преемнику:** вендор-анонс смены маппинга эффорта `deepseek-v4-pro` «early August 2026» — реестр 108, триггер: дата >05.08 или аномалия редакторского арма; `medium` на DeepSeek не ставить (вендор документирует low/high/max — Д5, реестр 108); фронт-сессия ЖИВАЯ и коммитит сама (D39.88, только pathspec); дерево на закрытии чисто от бэкенд/докс-зон, незакоммиченное в дереве — фронта и `START_PROMT.MD`.
**6. Очередь скриптом:** 97 строк · «скоро» 15 (2·4·5·18·46·49·55·95·107·108·109·112·113·114·116) · блокеров 0.