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

523 KiB
Raw Blame History

Журнал решений оркестратора — контракт D1D39.28 (развязки 04.07 · пакеты 0910.07 · приёмка/качество-первым/пивот/эмпирика 1112.07 · арх-ресет+стройка пере-прогонного стека 1319.07)

КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3). Читая контракт целиком, держи под рукой, что чем перекрыто:

  • Полностью 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.yamlREAD-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): ранобэ/роман $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), жёсткий гейт $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 (метод: 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.6/§9.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 && reason≠glossary_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 zh→ru 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.yamlglossary_seed: guzhenren-seed.yaml (сид V1); pipeline-acceptance.yamlprompt_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.4в апгрейд в приоритет; курация сида → полигон/бэкенд-глоссарий). (г) Класс инверсий редактуры 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. (б) §2Б.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 кросс-семейных судьи) + P1a↔F-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:draftrenderEditorConstraintBlock (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 внешние сессии.

  • ChatGPT↔Claude РАСХОДЯТСЯ на заголовке (НЕ подгоняю сходимость): 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; exp14bexp14_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 синхронизированы D17→D38.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 сдвинулся РОВНО на эту строку b3b4f60495b1085). + 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=falsebaseMemory==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 обрабатывает WaveSignatureStopexit 3 (distinct от 2-flagged/1-крэш, переживает %w), рендер terms/signature-path/resume-guidance, оверклейм-комменты выправлены; (2) R1-FL-Breject-set (Book.MinedRejects yaml, не в BriefHash → не снапшот-двигающ; MineBank(rejects) дропает отклонённый терм С кластером [markEmitted против representative-shift re-fire], nil = байт-идентичный no-op → парити цел); стоп очищается когда каждый терм промоутнут ИЛИ отклонён — livelock/W1.5-UX §10-1 закрыт; (3) R1-FL-CxTextVersion="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]==nilnil-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 (bankTokenBudgetbanknoteSnap.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/langpipeline подтверждена грепом; FL-1/2/3+тест-путь спот-верифицированы построчно. Сессия сама прогнала Phase-5 ревью (3 минора пофикшены).

Ратифицирую три дивергенции от стартового предложения оркестратора (пресс-тест сработал — сессия опровергла даже МОЙ буллет с доказательством):

  1. isRuTarget/isCJKTargetx/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 CONFIRMEDdocs/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 цело). T2exportNormalize на КАЖДЫЙ 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 извлечён. T4tmctl 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_ratecosmetic_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 · политика канона · жанр-паки · реплика ja→ru) — вынесены. §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 «мандаты редактора пересматриваются» НЕ триггерится); при этом редактор режет катастроф-хвост 66→52 (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: армы различаются тем, ГДЕ ошиблись, не классом ошибок. Ранжирование читок (V1→V3→V2) объясняется НЕ рычагами когезии: V2-брак = eval-риг без прод-гейтов (санитайзер поймал бы 待遇/一步登天) + гипотеза «src-carryover → больше исходника в контексте → выше CJK-протечка» (к пере-прогону); V1-опознание = баг генератора пакета (хвост за границей референса).

Ратифицировано: (1) курс D39.7 подтверждён финально — сцен-детекция/carryover-машинерия НЕ строятся для книг этого класса (оба уровня согласны: метрики + читатель); (2) дефект-класс-леджер пере-прогона (все — пак/банк/гейт-уровня, НЕ нарезка): 时辰-юниты (НОВЫЙ класс: детерминированная конверсия единиц в пакет пары; «3 часа» вместо ~6 системно в 2/3 армов) · числа-масштабы 千万/数十万 (b1, свежая эмпирика) · gender-enforce полем сида (Бай Нинбин: hidden→male-до-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-класс, пойман рубежом author≠reviewer).

Ратифицировано: (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: 0→0.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 · старые решения) и опция ja→ru-реплики — в хендоффе.

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 8000↔3200 · скоуп подписи 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 · src→dst-формат констрейнт-блока редактора (закрытие 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 < $15 (судья $6.46 — доминирующая статья).

Три независимых сигнала качества (НЕ слиты, по правилу несфабрикованной сходимости):

  1. Судья-риг D39.7 (floor 14/14 tie = шум 0; 56 игр/арм): dspro 0.679 > glm 0.589 >> 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/minerinternal/checksinternal/membankinternal/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:337Reserve:379client:410Complete: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 и пересылает тот же запрос другому провайдеру — ровно то, что лейбл-механизм запрещает; если local→cloud фолбэк когда-нибудь понадобится, он родится под лейблами с первой строки. Удаление тестов файла — объявить в цензе ^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:337clientFor:374Reserve: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: только по первоисточникам, ПЕР-ЛЕЙБЛУ (violencesexually-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 по МОЕЙ копии — то есть перевёрнутая сессией клетка (ALLOWED→UNCLEAR) перевёрнута правильно; в сексуальной семье названы только реальные лица (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() a7d4be2c0465133d71e8d132 и оба волновых снапшота, а стендовые книги объявляют 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. Сырой блок банкноты срезается из драфта до хранения (applyBanknotecommitBanknoteExport персистит ЧИСТЫЙ текст), то есть предложенный перевод не остаётся и в артефактах прогона.
  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 a7d4be2c0465a28ed743c99c) · парити 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; BPOLYGON_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 роли НЕ вводить, офлайн-словарь как пар-данные (для zh→ru собран). Полигон-очередь пуста; кандидаты следующего пакета: вариативность банкноты 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 невидим терминологу); расширение СОГЛАСУЕТСЯ с принципом — даёт владельцу больше строк на решение, ничего не решая за него; цена известна из абляции (cap→0.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.089→0.255 на непрерывном срезе), структурный вывод (term кратно слабейший) УСТОЯЛ. Приёмка: 8/8 CONFIRMED, ревью-шапка с нитами на отчёте POLYGON_PREMEASURE_2026-07-26.md; деньги $0.11313 из потолка $0.30.