textmachine/docs/PROGRESS.md

439 lines
167 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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

# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-12). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1D38); этот файл — ЖУРНАЛ, не спека.**
> - **Фаза:** 0 ✅; Ф1-машинерия ✅ (D21D28); приёмка этап A ✅ (D24). **Путь D26→D35: качество-первым.** Флип D1 моно→билингв (D30, supersede D17), reflow+output-санитайзер (D30/D33), сид v2 подписан владельцем (D34.1), переводчик flash сохранён (exp13/D32 — pro отклонён). **Пере-прогон 25 глав связкой ВЫПОЛНЕН; вердикт владельца: «лучше (из-за сида), но крайне слабо художественно» (2 претензии: абзацы/конвенции + понимание связей). ПИВОТ D35:** цикл приёмочных прогонов ЗАКРЫТ (инфра ✅ подтверждена исполнением / читаемость ❌ = блок на непостроенной Ф2 — НЕ провал; диагноз «Ф2-недострой + near-term промпт/нарезка-рычаги, не баг» верифицирован; флор D24.3 валидирован в проде). Планка впредь = 2 претензии владельца (ИНТЕРИМ пре-скрин, НЕ пилот Ф2.5). **Очередь «мерить→строить»: research/18 ЗАЛЕНДЕН (D36) → полигон exp14 ПРОГНАН+ратифицирован (D37, ACCEPT_WITH_FIXES): претензия-1 (абзацы) = рычаг ПРОМПТА/активации (F-base фронтир+старый промпт рубит хуже P0), дёшево — дискурс-промпт + крупный чанк; A-2pass отклонён (2-пасс дрейфует); разряды 甲乙丙 → кириллица «класс А/Б/В/Г» (владелец); re-gate хвост ~5-6 реальных редактор-инверсий (не 13 — kimi оверфлаг); претензия-2 хвост → exp14b ПРОГНАН+ратифицирован (D38): **«только gpt-5.4» ОПРОВЕРГНУТО** (дешёвые mistral/deepseek-pro чинят двойн.отриц, что glm-5+grok инвертируют; провалы разбросаны; фронтир в дефолт НЕ нужен — P1a≈F-disc по абзацам); **корень терм-дрейфа = статус-draft сида** (draft-термы не в editor-констрейнте + longest-match съедает верный approved) → promote грейды(А/Б/В/Г)+四代族长 approved; **кандидат glm-5→mistral/deepseek-pro** (дешевле+чинят) на бейк-офф ПРОЗЫ/omission → бэкенд под доказанный конфиг.** Эмпирика сошлась на ОРГАНИЗАЦИИ (не моделях) — D30.7-трек подтверждён. **h2h залендён (D38.1): ChatGPT↔Claude расходятся (фронтир-сильнее ↔ near-parity), сходятся — дефекты=инфра, никто не publishable без человека → разворот к СТРОИТЬ инфра-пак (`BACKEND_INFRA_PACK_SESSION_PROMPT.md`), не ещё-один-editor-эксп.** Бэкенд-фиксы (D35.4): экспорт-баг (ch5/ch20 пустые), ведущий `###` из draft, глоссарий разрядов 甲乙丙丁. Трек: дешёвые модели сейчас, фронтир потом (D30.7). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, судья-дублёр — D22.6). *(Детальная хроника D30D34 — в записях ниже + D-лог.)* **Консолидация D38.2 (док-гигиена): eval спент-скрипты сгруппированы в `eval/exp12|13|14|14b/` (живой сид/оракулы в `eval/`), статус-доки + `.puml` актуализированы до D38.1, ссылки проверены (1799) — контракт-решения не тронуты.** **Инфра-пак D38.3 залендён** (санитайзер strip+export + число/omission-гард, верифиц. исполнением: build/vet/test зелёные, 3 span-дефекта запинены); дискурс+чэнъюй editor (v3, `0ac5f7a`) + reseed (`eb409f2`) ЗАЛЕНДЕНЫ (D38.5). **⚠ ПЕРЕ-ПРОГОН ПРИОСТАНОВЛЕН арх-ресетом (2026-07-13):** владелец остановил раунд — тактическое латание вместо архитектуры + «сломанный телефон» полигон→оркестратор→бэкенд. Хендофф `ORCHESTRATOR_ARCH_RESET_PROMPT.md` (5 концернов + синк-план). **→ РАТИФИЦИРОВАНО D39 (13.07):** синк-аудит (42 агента, $0, 65 находок / 0 refuted — `architecture/08-sync-audit-ledger.md`) → целевая 7-слойная архитектура + фазовый план (`architecture/09-target-architecture.md`). Вывод: потолок в НАШЕЙ организации (нарезка/проходы/контракт t-e/когезия), не в моделях. Владелец: **фазово** (трек A build-now ∥ трек B ресёрч, пере-прогон после трека B) + **слой пар = сеам сейчас, zh→ru контент**. Несущее: редактор=4-мандата-full-regen (причина инверсий); верности нет владельца (inversion-guard не построен); нарезка=потерянный рычаг (const в неверной единице, границы бюджетные, edit=draft-единица, когезия=мёртвые заглушки); терм-дрейф код-корень ЖИВ (сид-воркэраунд); ноль quality-сигнала в контуре; «D35.7» фантом→формализован. Дальше: хендофф-промты трека A (бэкенд) + трека B (полигон+ресёрч).
> - **Стек (пост-D32):** черновик — **deepseek-v4-flash СОХРАНЁН** (exp13/D32: смена на pro отклонена по данным — сфабрикованная сходимость + катастрофа 蛊→«гусеницы» + верность у flash не хуже; thinking ON; escalate_to=pro без изменений) · редактор — **БИЛИНГВ (D30.1), кандидат glm-5-билингв** (gemini — премиум-эскалация за санитайзером; grok reasoning-off из редакторов СНЯТ — no-op) · судья/апекс Gemini 3.1 Pro (**слаг `-preview`**; mandatory thinking; `additive_total` — D22.3) · эскалация A: DeepSeek V4 Pro → GLM-5.1 → Gemini-preview · **канал B (18+): Mistral · эскалация grok-4.3 reasoning-ON (⚠ не на архаичных zh — D22.5) · abliterated-скрининг · судьи: эротика — Grok (дублёр гейтится пробой D22.6), violence/SFW — Grok+Gemini** (DeepSeek в explicit запрещён ToS — D14.1). 7 ключей.
> - **Экономика:** `experiments/08-cost-model-v2.md` — до-флиповый ~$0.69 ранобэ / ~$10.94 вебновелла-500; **после флипа D1 → ~$0.85/ранобэ (+1525%, D30.4)**; «$1.52» = опция Б (селективный апекс+память, НЕ подписана); пере-съём = exp08 v3 (D21.8/D25.8). ⚠ Resume: любой `--resnapshot` = переоплата книги — онгоинг гейтится реализацией D15.2 (идёт, D30.9). Gemini-недоучёт 146×/вызов закрыт additive_total (D22.3).
> - **Ждём от владельца:** ~~подпись спорных терминов сида v2~~ ✅ ПОДПИСАНО (D34.1; владелец переопределил: Жэнь Цзу, Монах Цветочного Вина, гу Жизни, деревня Гуюэ, первобытный камень; род «гу» муж) · **чтение 25 глав пере-прогона** (арбитр читаемости — после связки+re-gate) · **флагман-сверка exp13** (переводчики, monitor-паттерн) · DashScope-ключ для qwen-арма exp13 (опционально) · **планка запуска** (лучше-фана/гибрид/издательский + готовность к COGS опции Б ~$1.52 — мемо-эскалация exp12; интерим D30.7: «лучше фана» на дешёвом миксе) · решение по билингв-якорю пилота (D25.9-Q1) · «да/нет» митигации контаминации пилотного корпуса (D27.4) · publishable/waiver — при экспорте (D25.1) · FN-bound L3 — при спеке (D25.4) · провенанс 12-*-доков · юр-пакет (+rights manifest, D25.8).
> - Записи ниже — хронология; РАННИЕ (день-0, 04.07) содержат устаревшие цифры/решения (COGS $24, BYOK, Anthropic-Sonnet), переопределённые позже — см. блок выше и 05-decisions-log.
## Полигон — reseed: промоут грейдов + 四代族长 в approved (`POLYGON_RESEED_SESSION_PROMPT.md`), 2026-07-12 (D38.5)
Направленный владельцем детерминированный фикс корня терм-дрейфа (exp14b D38 §3 / D-лог:499). **Фактчек по D-логу+сиду ПЕРВЫМ (не по памяти):** D-лог:499 направляет РОВНО 5 термов; D-лог:437 перечисляет остальные draft (南疆/沈嬷嬷/гу-имена) как «при желании владельца» — **НЕ трогал** (approved-инвариант). Одно уточнение против наивного «просто флипнуть статус»: грейды в сиде стояли `dst «разряд X»`, а D37 направляет `«класс X»` → трансформ меняет И dst, И статус.
**Трансформ** `eval/exp14b/exp14b_reseed_promote.py` (паттерн `exp13_seed_signoff`; **идемпотентен + байт-стабилен** D30.5; сид ВНЕ git). Пре-снапшот `diag/guzhenren-seed-v2.pre-reseed.yaml`, лог `diag/glossary_v2_reseed_promote.md`.
| src | было (dst/status) | стало | что чинит |
|---|---|---|---|
| 甲等/乙等/丙等/丁等 | разряд А/Б/В/Г · draft | **класс А/Б/В/Г · approved** | грейды теперь в editor-констрейнте; развести с 转→«ранг» (D37) |
| 四代族长 | Четвёртый глава рода · draft | **· approved** | approved-длинный выигрывает longest-match; 族长 не съедается впустую (D38 §3) |
**Само-проверка ИСПОЛНЕНИЕМ (не на веру):**
- `diff` пре-снапшот↔сид = **РОВНО эти 5** термов (ничего лишнего); повторный прогон = **байт-в-байт** (идемпотентно, note не накапливается); approved 47→52 (Δ=+5); 5 остаточных draft не тронуты.
- **Enforce-зеркало** (таргетный порт `memory.go:485-503` memConfirmed-only + `:615-641` suppressContained; при расхождении верить Go) на синт.чанке (мой конструкт, не из книги): ДО — 四代族长/грейды draft⇒невидимы, в контексте главы рода якоря нет (рядом лишь 家老→«старейшина»); ПОСЛЕ — Δ = {«Четвёртый глава рода», «класс А», «класс В»} появляются; standalone 族长→«глава клана» и 家老→«старейшина» целы в обоих (家老=старейшина легитимно — фикс это не ломает); 五转→«пятый ранг» отдельно (развести 转/грейд соблюдено).
**Оркестратору:** трансформ `eval/exp14b/exp14b_reseed_promote.py` **untracked — на ваш коммит** (промпт: скрипт коммитит оркестратор; путь: владелец перенёс в папку `exp14b/` по имени-конвенции, стдлиб+yaml, импорты не рвутся) + **единый resnapshot** (P1a-промпт + промоутнутый сид + инфра-пак, D30.9 — одна переоплата книги). Обновлённый сид на диске (ВНЕ git). ✅ **Стейл-хвост грейд-заметок вычищен** (по указанию оркестратора до снапшота: «Head разряд declines / owner may prefer первый/высший» убран; схема в заметке теперь «класс А>Б>В>Г»; трансформ авторит чистую заметку детерминированно, verify пере-прогнан — байт-стабилен/идемпотентен, стейл-фраз 0).
## Полигон — уборка/консолидация зоны (`POLYGON_CLEANUP_SESSION_PROMPT.md`), 2026-07-12 (D38.2)
Сессия по промпту уборки (эксперименты закрыты D38, «мерить→строить» пройдена). **Фактчек направления — ПЕРВЫМ (мандат промпта); аудит оркестратора уточнён:**
- **Задача 1 ✅ — индекс `docs/experiments/README.md`** создан, каждая строка сверена по шапке дока + D-логу (легенда ⭐живой-reference/живой/закрыт/settled; дуга 12→14b; пропуск exp05 отмечен). Указатель на карту скриптов в `eval/README`.
- **Задача 2 — уборка `eval/`:** (а) **`exp14b_{arms,judge,monitor,score}.py` закоммичены** (path-scoped, 0be3084) — дыра воспроизводимости за ратифицированным D38 закрыта. (б) **Карта скриптов в `eval/README` расширена** (9feb115): все семьи exp12/13/14/14b + 18+/корпус-билдеры + `dialogue/mistral_fidelity/local_bench` — навигация плоского каталога без перемещения.
- **⚠ ФАКТЧЕК ОПРОВЕРГ наивную «архивацию exp12/13»:** прямое условие промпта («без живых импортов») выполнено (exp14b импортит `exp14_common`, не exp12/13), **НО** нашлись **живые цитаты по пути**, которые `git mv` порвёт: `eval/exp13_seed_v2.py`+`exp13_seed_signoff.py` цитируются **D-логом:400/437** как воспроизводимый провенанс ДЕЙСТВУЮЩЕГО сида v2 (D30.5) — это ЖИВЫЕ скрипты, не спент; плюс exp12/13/14 цитируются по пути из закрытых отчётов (12/13/14) и PROGRESS-прозы. `memory_hotpath.py` (README: УСТАРЕЛ) — в ~10 ссылках вкл. `architecture/06:114`. **Перемещение = сирота-ссылки в зонах, что я не правлю (D-лог/PROGRESS/architecture) → нарушение D23.3.** Вывод: уборка = индекс+карта, НЕ relocation; ничего не двигал. Гигиена gitignore уже чистая (нет трекнутого мусора). **[⟶ СУПЕРСИДНУТО D38.2-оркестр (12.07): владелец выбрал полную логическую группировку кода по папкам; спент-семьи перенесены в `eval/exp12|13|14|14b/`, живой сид (`exp13_seed_v2/signoff`) и оракулы оставлены в `eval/`, ВСЕ цитаты+импорты починены и проверены (`py_compile`+`find_spec`); контракт (D-лог) не трогали. См. оркестр-запись ниже.]**
- **Самопроверка (мандат):** `py_compile` 4 exp14b-скриптов — OK; `import exp14_common` — чисто (Spender/cost_of на месте); импорты закрытых экспов не тронуты (0 перемещений). `git status` перед каждым коммитом; staging пофайловый.
- **Мультисессия:** живой бэкенд (infra-pack) держит WIP в `backend/internal/pipeline/{sanitizer,chunkrun,disposition}.go`**не трогал** (не моя зона).
## Оркестратор — исполнение полной консолидации (D38.2), 2026-07-12
Владелец передал остаток оркестратору (апдейт всех доков + рефактор полигон-репо + архивирование; ссылки проверить; **бэкенд-сессию не нарушить**). После read-only карты (5 агентов: число-лаг / ссылки [1799 проверено] / .puml-дельта / граф цитирований eval / точность индекса):
- **eval → логическая группировка по папкам** (владелец поправил mid-flight: не «архив» — это код-репо): 30 спент-скриптов → `eval/exp12|13|14|14b/`; **живой сид (`exp13_seed_v2`/`_signoff`) + оракулы оставлены в `eval/`** (контракт D-лог:400/437 не тронут). Импорты сохранены шимами (`.parent.parent` для `refusal_bench`; `exp14b``../exp14`); **`py_compile`(30/30) + `find_spec`(вся цепочка) зелёные.** Path-цитаты (experiments/12/13/14, eval/README) починены.
- **Доки до головы D38.1:** статус-абзацы `CLAUDE.md`/`README`/`PROGRESS` (были заморожены на D35); число-лаг «D1D35/D31»→«D1D38»; `.puml` D17→D38.1 (targeted-patch: моно→БИЛИНГВ-редактор, +узлы санитайзер/диагностик-харнесс, канал-B v2, роли провайдеров; внутренние `;` в активити → `·`).
- **Ссылки:** live битый `research/17` → архивный acceptance-путь; над-атрибуция индекса снята (exp04 →D30.1, exp12 →D30). **Историч. D-лог:87/91 (runner.go, D12) и link-rot frozen-архива НЕ переписаны** — D23.3 + прецедент D-лог:288.
- **Гигиена:** `POLYGON_CLEANUP` заархивирован с баннером-исходом. **6 path-scoped коммитов; бэкенд-WIP (19 файлов) не тронут.** Разбор — D-лог **D38.2**.
## Инфра-пак читаемости залендён (D38.3), 2026-07-12
Бэкенд-сессия исполнила `BACKEND_INFRA_PACK` (4 задачи, `backend/` only, не коммитила); оркестратор **верифицировал ИСПОЛНЕНИЕМ** (второй рубеж) и залендил (`d5beefc`, 19 файлов, path-scoped).
- **Верификация:** `go build`/`vet`/`test -race ./...` зелёные; **3 span-дефекта запинены реальными тестами**`却有` CJK strip+export (`TestSanitizerCJKLeak`/`TestStripCosmetic`/golden ch8), `### Глава` markdown strip+export (golden ch7), `44`→«четыре десятых» number-drift (`TestRegressionGuardNumberDrift`).
- **Сделано:** экспорт флагнутого-косметикой чанка (ch5/ch20 не пустые, D35.4a) · класс `cjk_leak` (фолд полноширины ``→123, U+3000 искл.) · opt-in число/omission-гард (наблюдаемость, НЕ drop) · reseed-enforce верифицирован (сид не трогал).
- **Самопроверка бэкенда:** 19-агентный адверсариал → 4 CONFIRMED+1 UNCERTAIN, все починены до отчёта (вкл. MAJOR: полноширина-число теперь сохраняется фолдом, не удаляется).
- **3 дизайн-вопроса владельцу** (не блокируют): порог гарда 40%; легит CJK-глоссы в скобках (`(羅漢拳)` стрипается); кап на тяжёлую-под-эхо утечку. Разбор — D-лог **D38.3**.
- **Дальше:** рычаг №1 (дискурс-промпт P1a→боевой editor, промпт-зона) + reseed (промоут грейдов) → **единый resnapshot** (D30.9) → пере-прогон 310 глав → чтение владельца.
## Аудит полноты exp14/14b (D38.4), 2026-07-12
Владелец: «не забыли ли полезные выводы?» — ledger ВСЕХ выводов exp14/14b → диспозиция (субагент + спот-верификация по коду/промптам). **4 незакрытых + 1 минор:**
- (1) **⚠ Чэнъюй-сплющивание ЗАБЫТ near-term** (D38 §2г = рычаг промпта/глоссария; отсутствовал в P1a-атом-листе, editor.md, reseed) → **дописан атом «идиомы/чэнъюй — оба компонента» в дискурс-промпт** (окно открыто); долгосрочно Ф2 Annotator-маски (04-unhappy §124).
- (2) **⚠ inversion-гард D37 §2г НЕ строился** (D38.3 = число/omission = длина/числа, НЕ полярность) → полярные инверсии (a1, glm валит независимо от промпта) закрывает лишь fidelity re-gate (скоринг пере-прогона) + editor-swap → **свап = защита от инверсий, приоритет↑, кандидат в ДЕФОЛТ**, не просто арм.
- (3) b1 word↔word число-дрейф покрыт ЧАСТИЧНО (гард видит только арабские цифры черновика; `四成四`→«четыре десятых» слеп) → Ф2 / канон-глоссарий.
- (4) крупная edit-единица («умное чанкование») = **явный re-run-арм** (тест на пере-прогоне; прод-нарезку не менять до подтверждения).
- (5) (минор) число/omission-гард opt-in → оркестратор **включает тумблер `Gates.RegressionGuard.Enabled` при resnapshot**.
Курс НЕ меняется; near-term конфиг пере-прогона уточнён. Разбор — D-лог **D38.4**.
## АРХ-РЕСЕТ: раунд приостановлен, хендофф новой оркестратор-сессии (2026-07-13)
Владелец остановил раунд: тактическое латание вместо архитектуры с первых принципов + **«сломанный телефон»** полигон(ресёрч)→оркестратор(выводы)→бэкенд(реализация); триггер — чуть не потеряли «умное чанкование» (оркестратор о нём не вспомнил, пока владелец не вернул). **Пере-прогон ПРИОСТАНОВЛЕН.** Выдан `docs/ORCHESTRATOR_ARCH_RESET_PROMPT.md`**5 концернов владельца:** (1) translator/editor-разделение (абзацы легли на редактора — а переводчик? редактор переписывает всю главу? тестировали?); (2) чанкование НЕТРИВИАЛЬНО (влияет на структуру+смысл; глава>чанк→логическая нарезка; отдельный ресёрч, статический код, интернет-best-practices, фоллбеки); (3) аудит лендингов «сломанный телефон» (чисто/расширяемо/правильно ли залендено); (4) промты ПЕР-ЯЗЫК + где держать правила пар zh→ru/en→ru + few-shot-релевантность + русско-центричность (V4-п5 START_PROMT); (5) дыра в передаче знаний (что ещё забыли — систематический ledger). **План:** новая оркестратор-сессия синкается с полигоном, полигон с бэкендом; пере-прогон — только после архитектурной проработки. Эта сессия — ТОЛЬКО передача дел.
## Оркестратор №6 — синк-аудит + целевая архитектура ратифицированы (D39), 2026-07-13
Онбординг + **грунтовка по коду** (chunker/chunkrun/stagerun/memory/промты — не по заголовкам). Вопросы к предыдущему оркестратору (через владельца) подтвердили: концерн 1 контрактно ОТКРЫТ (D30.2, `05:366` — «механизм реверстки открытый вопрос»; арм «переводчик даёт структуру» не тестировался); «D35.7» — фантом (бэклог-кандидат `05:471`, не ратифицирован).
**Синк-аудит (многоагентный воркфлоу, read-only, $0):** 42 агента, 8 дорожек (по несущему рычагу: цепочка полигон→оркестратор→бэкенд), адверсариальная верификация refute-by-default. **65 находок: 25 CONFIRMED, 9 PLAUSIBLE, 0 REFUTED**; верификаторы отделили настоящий «телефон» от осознанных ROI-деферов. Ледджер — `architecture/08-sync-audit-ledger.md` (первый экземпляр процесса концерна 5). Спот-верифицировал сам корневой пример: терм-дрейф-фикс = сид-воркэраунд (`memory.go:489` CONFIRMED-only + `suppressContained:615` disposition-слепой, код не тронут — `git log` подтвердил).
**Ратификация D39:** целевая 7-слойная архитектура + фазовый план — `architecture/09-target-architecture.md`. **Решения владельца (AskUserQuestion):** фазово (трек A ∥ трек B, пере-прогон после B) + слой пар = сеам сейчас/zh→ru. **Док-долг трека A:** формализовать/вычистить фантомный «D35.7»; диспозиции незакрытых владельческих идей (V2-п1/2/3, V4-п1/4). **Мультисессия:** дерево чистое (только `START_PROMT.MD` владельца); написаны `08`/`09` + D39-блок + актуальность-карта + этот журнал; НЕ коммичено (ждёт обзора владельца + git-status перед стейджем). Дальше — хендофф-промты трека A (бэкенд) и трека B (полигон+ресёрч).
## Оркестратор №6 — трек B залендён (D39.1): research/19 нарезка+когезия+волны+пре-рег эмпирики, 2026-07-16
Ресёрчер исполнил `RESEARCHER_CHUNKING_COHESION_*` (архивирован с баннером; правки владельца в задаче-1 — роли при чанковании, lost-in-middle — закрыты §A.1/Q2c). **Залендено БЕЗ оркестратор-ревью — прямое решение владельца 16.07** (сессия само-верифицирована: 52 клейма → 36 CONFIRMED/16 OVERSTATED-скорректированы, 65-агентный воркфлоу + 5-линзовое само-ревью, 8 MAJOR исправлены до сдачи). Несущее: **конфликт exp14↔research/18 = ложная дихотомия** (единица эмиссии ≠ окно чтения ≠ единица связности); Go-спека чанкера (профиль→B0B5→целочисленная DP)+фоллбек-веер; когезия carryover/lookahead/детерм-стейт (не LLM-summary); **волновая архитектура W0W3** (вводная владельца 16.07 = V4-п1 параллелизм; W1.5-консолидация банка = V4-п4); **§D пре-рег дизайн Q0Q5** (двойной якорь, reflow-инвариантный omission, карта независимости сигналов, ~$815). Открытое: §E.14 владельцу (гибрид/пол-в-сиде/транскрипция/бюджет), §E.58-бис бэкенду (**⚠ DeepSeek-слаги до 24.07; ⚠ вендор-чек кэша ZAI/GLM**). Разбор — D-лог **D39.1**. V4-п6 (Cloudflare Workers AI) закрыт владельцем самостоятельно — «ловить нечего», в ресёрч-очередь не идёт.
## Оркестратор №6 — трек A пак-1 залендён (D39.2, `d3f6b34`), 2026-07-16
Бэкенд исполнил T1T4; **верификация прямая, исполнением** (мандат): build/vet/race-тесты зелёные (прогнал сам), golden-детерминизм PASS, пиновые тесты вербозно, несущие диффы прочитаны построчно, **golden re-capture воспроизведён независимо** (маскированный структурный дифф = 0 расхождений — только хеши/версии/2 новых пустых поля). ⚠ **Мульти-агентный второй рубеж 3× упал на API-529 — зарегистрирован ДОЛГОМ** (по восстановлении API; находки → фикс-лист пак-2, маршрут D37). Залендено: **терм-дрейф закрыт в КОДЕ** (trust-gated suppressor, memmatch-v4, громкий retrieval_state) · export-contract нормализация каждого финала (width.Fold, не NFKC — тот калечит «…»/«№») · **pair-keyed промпт-сеам** (fail-loud на не-zh-ru; `Book.LangPair()` ожил) · реестр role→инъекция · target-gated readability · `tmctl report` (детерм. quality-KPI). Снапшот: memmatch-v4+sanitizer-v5 → плановый единый resnapshot (и так требовался D38.5). Открытое → D39.2 (полигон-экспорт-поверхность ДО пере-прогона; CJK-глоссы — владельцу; билингв src→dst; ja-пример). Разбор — D-лог **D39.2**. **Решения владельца (16.07, пост-D39.2):** бюджет §D-эмпирики ≤$15 ✅ · поле gender в схеме сида ✅ (транспорт+подпись — в exp15-преп) · **CJK-глоссы СОХРАНЯТЬ** (против текущего стрипа → whitelist в фикс-лист пак-2; скоринг exp15 глоссы не штрафует) · W1.5-гейт — решить после Q3. **Пак-1.5+F1F9 ЗАЛЕНДЕНЫ (D39.5, 17.07):** tmctl export (manifest-join+drift-гард; полигон-экстракция впредь через него — D39.2-open№1 ЗАКРЫТ) · fold-first санитайзер (HIGH закрыт) · bounded глосс-whitelist · пример zh-ru; верификация исполнением, masked-golden пуст. **Адверсариал-долг ПОГАШЕН (D39.4, 17.07):** 8 осей по обоим пакам, 0 CRIT/1 HIGH/6 MED — ядро держится; HIGH = fold-first обход санитайзера (полноширинная сигнатура обходит детектор, exportNormalize изготавливает ASCII-дефект) + глосс-whitelist не ограничивает латиницу; **пак-1.5 НЕ лендится до фикс-листа F1F9** (вписан в `BACKEND_TRACKA_PACK15` §T4; v6 не лендился → fold-first в тот же бамп v5→v6, один golden re-capture). **Пакет банк-майнинга W1.5 ратифицирован (D39.3, по записке ресёрчера-19 через владельца):** диспозиция H15/V4-п4 → активный пакет «ресёрч→полигон→бэкенд-дизайн»; гипотеза №1 владельца («код сам разметит») — проверяемая; промт `RESEARCHER_BANK_MINING_SESSION_PROMPT.md` ВЫДАН с HOLD-гейтом (запуск после фриза exp15). **Промт exp15 ВЫДАН:** `POLYGON_SEGMENTATION_EMPIRICS_SESSION_PROMPT.md` (исполнение research/19 §D: пре-рег фриз пинит бэкенд-HEAD/сид/промты; Q2b→Q1+Q3→Q2a/Q2c→Q4→Q0; преп: DeepSeek-слаги до 24.07, вендор-чек кэша ZAI/GLM, gender-транспорт).
## Компоненты единого resnapshot залендены (D38.5), 2026-07-12
Оба параллельных deliverable исполнены сессиями + верифицированы оркестратором ИСПОЛНЕНИЕМ + залендены:
- **Reseed** (`eb409f2`) — 5 термов промоутнуты (грейды→класс А/Б/В/Г+approved, `四代族长`→approved), enforce-Δ держится, идемпотентен; стейл-хвост вычищен.
- **Дискурс-editor** (`0ac5f7a`) — P1a-reflow (append к baseline=победитель `b3b4f604`) + **чэнъюй-атом D38.4** (SHA `b3b4f604``95b1085` = ровно чэнъюй) + **few_shot-тумблер** (ON=ядро+примеры / OFF=ядро для deepseek-pro swap; детерминизм тройной, golden цел). `go build/vet/gofmt/test -race` зелёные, тесты snapshot-fold/wire/absent-noop/golden пройдены.
- **Все 3 компонента resnapshot ГОТОВЫ:** editor v3 (P1a+чэнъюй+тумблер) · reseed-сид · инфра-пак D38.3.
- **Дальше — единый resnapshot** (D30.9, одна переоплата книги) **+ пере-прогон 310 глав:** glm=P1a-few-shot дефолт + армы {mistral few-shot · deepseek-pro `few_shot:false` · крупная edit-единица} + `RegressionGuard` ON → чтение владельца (интерим-планка 2 претензии). Разбор — D-лог **D38.5**.
**ФЛАГ-ЛИСТ (чужие зоны, в отчёт, НЕ делал):**
- **Владельцу:** `/home/ubuntu/books/gu-zhenren/{diag,rerun,acceptance,exp14,research15-probes,exp14b}`**18M** артефактов закрытых экспов/приёмки — можно чистить (исходники `*.txt` ~38M + `*-seed*.yaml` НЕ трогать). Решение владельца.
- **Оркестратору:** (1) если физическая архивация exp12/13 всё же желательна — она требует правок цитат в D-логе:400/437 + PROGRESS (ваша зона); я оставил всё на месте намеренно. (2) `.puml` (components/pipeline) синхронны с D17 — на ~21 решение устарели (нет D30-билингв-флипа, D35-пивота) → баннер/обновление. (3) `CLAUDE.md`/`docs/README.md` число-лаг «D1D35»→D38 (косметика).
## Полигон — exp14 эмпирика рычагов качества (нарезка×промпт + фронтир 2×2), ПАРТИЯ 1, 2026-07-12 (D36)
Сессия по `POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md`. **Пре-регистрация ЗАМОРОЖЕНА коммитом ДО первого платного вызова** (D30.10; `docs/experiments/14-quality-empirics.md` §1 — trap-набор 6 трапов вкл. gl.7/gl.8 владельца, армы нарезка×промпт, метрики/гейты, бюджет-по-ключам). Харнес `eval/exp14_*.py` (call+3-режима-cost+per-call-кап+токенайзер+реконструкция инъекции из `retrieval_state.injected_ids`). Все выходы ВНЕ git (`/home/ubuntu/books/gu-zhenren/exp14/`). **Бэкенд не трогал (0 правок).**
**ПАРТИЯ 1 (trap-набор, 9 чанков): 0 ошибок на 64 арм-вызовах; трата ARM $1.77 (ZAI $0.43 + OpenAI $1.34) + trap-судьи $0.50 (gpt-5-mini+kimi, кросс-семейно) ≈ $2.27 (глубоко в остатках).** T1-катастрофа корроборирована независимой панелью (2/2 судьи флагают КАТАСТРОФУ на всех дешёвых армах, чистят фронтир). Фронтир = **gpt-5.4** ($2.5/$15, live-фактчек 2026-07-11; GPT-5-линейка до 5.4/5.5/5.6, взят 5.4 standard).
**ГЛАВНЫЙ ВЫВОД — потолок РАСЩЕПЛЁН по двум претензиям владельца (прямой ответ на «модели vs нарезка/промпт»):**
- **Претензия 1 (абзацы/конвенции) = наш ПРОМПТ/ПАЙПЛАЙН (активация), НЕ модель.** Детерм. KPI предл./нарратив-абзац: P0 1.91 → P1a (дискурс-промпт) 2.61 → **A-2pass (семантика→target-only reflow-пасс) 3.33** (лучший, доля-1-предл. 0.187, БЕЗ коллапса длины/CJK). **Фронтир+СТАРЫЙ промпт (F-base 1.58) ХУЖЕ дешёвого P0** — «сильнее модель» абзацы НЕ чинит. A-layout (deformat черновика) улучшает абзацы (3.13), НО **CJK-утечка ×20** (регресс-гард поймал) — deformat требует CJK-пост-гарда.
- **Претензия 2 внутри-чанк (смысл) = дешёвая МОДЕЛЬ (capability floor).** T1 (gl.7 двойное отрицание «все знали»): glm-5 **инвертирует** в «никто не знал» НЕЗАВИСИМО от промпта (P0 и P1a); **gpt-5.4 чинит** НЕЗАВИСИМО от промпта (F-base и F-disc). T2 (物是人非) — тот же знак. Промпт претензию 2 НЕ закрывает.
- **Претензия 2 кросс-граница = НЕ доминирует в срезе.** T5/T6 локально самодостаточны; ±1-reference (A-ref) дал байт-идентичный выход (чинить нечего); whole-chapter (P1c) единственный явно связал антецедент (1 датапоинт).
**ПАРТИЯ 2 ВЫПОЛНЕНА (по запросу владельца добавлены Gemini+Grok фронтир-редакторы — честный тест в €2.3; итог обеих партий ≈$8.5 across 6 ключей, каждый под лимитом).** Ключевые УТОЧНЕНИЯ:
- **T1-«capability floor» — MODEL-SPECIFIC, не общий фронтир (поправка партии-1 n=1):** gpt-5.4 чинит инверсию двойного отрицания, а **grok-4.3 (фронтир, reasoning-ON) её НЕ чинит — инвертирует как дешёвый glm** (заякорился на черновике; мини-проба grok на СВЕЖЕМ предложении верна → провал именно в РЕДАКТОРСКОЙ задаче). **gemini-3.1-pro тоже ИНВЕРТИРУЕТ** (первый батч был мис-конфигом max_tokens=8000 → обрыв; прицельный ре-тест с max_tokens=20000 на T1/T2 дал полные выходы: «не знал ни один человек» + «всё изменилось» = инверсия+сплющивание; плюс COGS-урок: Gemini-editor ≥1620k×$12/M ×10 к glm/grok; итог €2.21, в лимите). grok-4.5 — регион-лок (403, оба ключа). ⇒ **из 3 фронтир-семей ТОЛЬКО gpt-5.4 чинит смысл-ловушку** — П2 чинит gpt-5.4 конкретно, не «любой фронтир».
- **Абзацы (П1): grok-disc ЛУЧШИЙ (mean 4.22)** но CJK+провал T1; A-2pass 3.33; **кривая нарезки: крупнее чанк = ДЕШЕВЛЕ выходных токенов И лучше абзацы, 0 ретраев** (оптимум 3200c/глава) → поддержка `edit=крупная единица` (D35.7) по COGS И качеству.
- **Fidelity re-gate (D34.3): пере-прогон НЕ чист** — средняя верность 8894, но **13 катастроф + 21 инверсия редактуры на ~10 чанках** (ch10.1 both-judge fid 60); класс инверсий D34.3 подтверждён на хвосте → флаги на span-ревью, пере-прогон засчитан НЕ полностью.
- **Ранжирование финалистов (гл.19/17/18): стиль F-disc(gpt-5.4)>A-2pass>P0 (робастно); holistic-верность P0>прочих — НО P0 несёт T1-катастрофу, панель её не поймала = ЛИТЕРАЛ-СМЕЩЕНИЕ судей** (урок exp12/мемо eval-aggregation) → доверять span-уровню, не holistic-скаляру.
**Слепой пакет владельцу готов:** `exp14/monitor/monitor14.md` (оригинал + 3 финалиста × 3 главы, нейтральные метки, ключ отдельно). **Внешняя слепая оценка (2 нулевые сессии ChatGPT+Claude, промпт `EXP14_BLIND_EVAL_PROMPT.md`) — §2Б.7:** 4-сигнальная сходимость (наш KPI+панель+2 внешних) — **P0(прод) худшая проза** (претензия-1 реальна, прод-специфична; рублёнка = рычаг промпта, не модели), **F-disc(gpt-5.4) лучший по прозе И верности** → подтверждает поправку «holistic-панель литерал-смещена, вернее F-disc». НОВОЕ: **разряды 甲/乙/丙 плывут** (обе сессии → D35.4c в приоритет); **A-2pass несёт катастрофу верности** (人上之人-инверсия, 2-й пасс дрейфует) → near-term = ОДИНАРНЫЙ дискурс-пасс, НЕ A-2pass. Лучший (F-disc) перешёл «лучше фана» у обеих. **Near-term рекомендация** (ратификация оркестратора): дискурс-промпт + крупная edit-единица (дешевле И лучше) под omission-гард; селективная эскалация на gpt-5.4 (не grok/gemini) по смысл-риску; CJK-гард на deformat/grok; ~10 re-gate-флагов на ревью. Планка = 2 претензии (ИНТЕРИМ пре-скрин, НЕ пилот Ф2.5). Детали — `experiments/14-quality-empirics.md` §2/§2Б/§3.
## Ресёрчер — рычаги качества (`research/18-quality-levers.md`), 2026-07-12 (D35.5, вход полигону)
Сессия по `RESEARCHER_QUALITY_SESSION_PROMPT.md` (нейтральный/анти-анкоринг). **Ничего не коммичено** (лендит оркестратор после верификации первоисточников — как research/15/16/17). Отчёт: `docs/research/18-quality-levers.md` — §A (заморожена, sha256 `44f90364…`, построена ДО чтения стека/ChatGPT-отчёта; хеш байтов между маркерами BEGIN/END §A) · §B дифф · §C таблица-рекомендации полигону · §D вопросы.
- **Протокол соблюдён:** §A из ТОЛЬКО (2 претензии + сырьё rerun/ + механизм chunker.go/translator.md/editor.md + собств. внешний веб-ресёрч 52-агентным фан-аутом с адверсариальной верификацией). НЕ читал в фазе 1: D-лог/хендоффы/rootcause/приёмку. §A заморожена хешем ДО фазы 2.
- **Главный результат — ТРОЙНАЯ независимая сходимость** (моя §A ⟂ ChatGPT-§A ⟂ эмпирика D26→D35) на диагнозе и большинстве рычагов ⇒ высокое доверие карте «строить». Оговорка D25.10/D32.4: общая нога «внешняя MT-лит» у меня и ChatGPT — не 3 независимых голоса там.
- **Замеры на сырье (независимо воспроизвёл):** рубленость 41/51 нарратив-чанков ~1:1 абзац-на-строку; редактор структуро-СОХРАНЯЮЩ (слил 1/49) — reflow-инструкция инертна; **ch5.0 черновик 5425 симв.→финал ПУСТ (`sanitizer_defect`) = экспорт-баг D35.4a**; CJK-глифы в 13 финалах.
- **Несущий вклад СВЕРХ команды И ChatGPT (§B2):** (1) **zh→ru дискурс-транформ как теория** — паратаксис→гипотаксис (意合/形合), 流水句, **прямая zh→ru peer-reviewed прескрипция Ван Цуй (Вестник МГУ Сер.22): 5 техник + причастные/деепричастные обороты** ⇒ апгрейд research/16 «слияние дискреционно» → «обязательная дискурс-операция, и КАК»; прямой ответ владельцу «конвенция языка, не стиль автора»; (2) слой **«пакет конвенций пары»** версионируемый (идея владельца; research/07 держит контент как разбросанные brief-политики — отдельного слоя нет); (3) DocRepair EN→RU числа (монолингв. repair-пасс); (4) фертильность-налог кириллицы + cache-ordering + перевёрнутая-U; (5) метрика-инверсия zh→ru (WMT24 NMT>LLM d-BLEU) — не гейтить художественность на авто-метрике.
- **Само-поправки §A (§B3, честно):** ch5-void = экспорт-баг (не санитайзер); research/16 УЖЕ заземлила русские нормы (Розенталь §52-53/Лопатин/Правила-1956); source-line-strip не нов (exp12:174).
- **§C = армы для D35.6:** СЕЙЧАС (дискурс-reflow-промпт с zh→ru-контентом · discourse-move few-shot target-anchor · source-strip · детерм. reflow-постпроцессор ops b/c/d · guard пост-черновой регрессии · ±1 reference-контекст · кривая нарезки на retry-adjusted-output-cost · **capability-vs-activation 2×2 + фронтир-арм** · **авто-Claude-судья: KPI-структура без судьи для претензии 1, span+comprehension-QA+perturbation для 2, владелец кросс-чек ChatGPT/вручную**) vs Ф2 (running summary+entity-ledger DelTA · chapter-card · ZP-аннотация · монолингв. RU reflow-пасс). Архитектура: слой пары (зона оркестратора/бэкенда).
- **Запросы владельца этой сессии учтены:** (а) конвенция-vs-стиль отвечена источниками (§A/§B2.1); (б) «модель недоактивирована» → capability-vs-activation арм (§C #9); (в) авто-оценка качества → §C #10 + §D; (г) языковые карты в архитектуру → слой пары §C #15.
**12.07 (№4): research/18 (ОБА отчёта) отревьюирован и залендён с ревью-шапками, ратификация D36.** Мультиагентный воркфлоу 26 агентов ($0, refute-by-default, первоисточники + реплика сырья): **§A-заморозка Claude sha256 44f90364… воспроизведена побайтно (MATCH) → не редактировалась; 57/57 несущих цитат СУЩЕСТВУЮТ (0 сфабрикованных — проверены ВСЕ «2026»-препринты)**; эмпирика воспроизведена (ch5.0/ch20.0-void ТОЧНО, CJK 13 финалов, 41/51 в допуске, gl.7-инверсия/gl.8-сплющивание фактически есть → на fidelity re-gate); **Ван Цуй ПОДТВЕРЖДЁН по ТЕЛУ статьи** (скептик декодировал CID/Identity-H шрифт: 5 техник + причастные/деепричастные + подчинение + прескриптивная необходимость — Вестник МГУ Сер.22 2024№3, рецензирован). **Вердикты: Claude — ACCEPT_WITH_FIXES** (5 поправок в ревью-шапке: DocRepair-числа принадлежат D19-1081 не P19-1116 — числа верны; TransAgents двойная-метка; Z5 автор Dingxu Shi не Li&Thompson; Ван Цуй = прескрипция ТЕХНИКИ, не «норма языка»; «пост-черновая регрессия > 2 претензий» пере-возвышена — ch5-void = экспорт-баг); **ChatGPT — ACCEPT** (цитатно-чист, §C — самый исполнимый скелет; оговорки: §A-заморозка НЕ воспроизводима из документа = дисконт на вес сходимости, §C4-гейт не ссылается на D34.3). **Калибровка «тройной сходимости»:** оговорка честна (D25.10 взята), но (а) вторая необъявленная общая нога — оба §A читали одно сырьё/код; (б) цитатные базы почти НЕ пересекаются (~3 общие) → где литература расходится, совпадение сильнее; (в) ChatGPT-заморозку — с дисконтом. **Несущий вклад для «строить» держится:** Ван Цуй-контент → в reflow-промпт полигона; экспорт-баг ch5/ch20 подтверждён двумя репликами (бэкенд-fix D35.4a). Выдан `POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md` (D36: скелет §C ChatGPT + графт Ван Цуй/COGS/D34.3 из Claude; добавлены недостающая ячейка current-промпт×глава и явный P0-baseline; ch5/ch20 исключены из слепых пакетов).
**12.07 (№4): D36.1 — гигиена доков + бюджеты (по запросу владельца).** Заархивированы **5** спент-промтов (`archive/prompts/`, git mv, история не переписана — D23.3): ресёрчер/exp13/санитайзер-фикс/приёмка-v2/D152-этап-А. **`POLYGON_PACKAGE4` НЕ архивирован** (проверка по запросу владельца): как сессия не запускался, отработана лишь task-1 сид-мн.ч. (в exp13/D32); **residual жив** (D22.6 судья-дублёр — блокер пилота, D25.7 echo-кал, миграция memory_eval с 2.5-flash, пилот-пре-рег, P4-хвост) — **пилот/18+/echo-трек, ОРТОГОНАЛЬНО exp14** (не вносить); оставлен активным со статус-баннером как residual-трекер до активации пилота. Активны `ORCHESTRATOR_*` + `POLYGON_QUALITY_EMPIRICS_*` (exp14) + `POLYGON_PACKAGE4_*` (отложен); README-карта + титул D-лога D35→D36 актуализированы. **Бюджеты подтверждены владельцем:** OpenAI ~$9, Gemini ~€2.6, DeepSeek/ZAI/Kimi/xAI/Mistral ~$9; других нет; «полигон делает что нужно в рамках» → блокер фронтир-ceiling снят (exp14: GPT-5 основной фронтир, Gemini точечно/мета-ревьюер, grok не на ch1; per-call кап + пре-рег). D36.1 — в D-логе.
**12.07 (№4): exp14 (эмпирика рычагов качества) отревьюирован и ратифицирован — D37.** Полигон прогнал exp14 (нарезка×промпт 2×2 + аблации + фронтир 3-семейный gpt-5.4/gemini/grok + кривая + fidelity re-gate + слепые финалисты P0/A-2pass/F-disc), закоммитил 6 батчей САМ (отклонение — впредь фризить только пре-рег). Владелец прочёл монитор слепо (3 главы) + 2 внешние сессии (ChatGPT+Claude). **Независимая верификация — 7-агентный воркфлоу span-уровнем ($0):** (1) **Претензия-1=промпт-рычаг ПОДТВЕРЖДЕНА** (F-base фронтир+старый промпт 1.75 spp рубит хуже P0 1.95; дискурс-промпт реверстает у всех). (2) **A-2pass-катастрофа 人上之人 РЕАЛЬНА** (span; одинарный P0 её починил → одинарный дискурс безопаснее). (3) **Разряды 甲乙丙 плывут** (ch9.1 В→Б, ch18.1 «цинское качество») → **владелец выбрал кириллицу «класс А/Б/В/Г»**. (4) **T1-floor (только gpt-5.4 чинит двойное отрицание, grok/gemini инвертируют) ВЕРИФИЦИРОВАН, но n=1 + одно-судейно на фронтире → нога-2 (gpt-5.4-эскалация) НЕДО-МОЩНА, ХОЛД.** (5) **Поправки:** «13 катастроф» завышено (~5-6 реальных; kimi оверфлаг, ошибся 29/55; ch11.0 — редактор УЛУЧШИЛ); §2Б.3 «панель литерал-смещена→P0 не вернее» = пере-натяжка (T1 в ch7 вне ранг-выборки; IN-SAMPLE спан выгораживает P0); «0 ошибок» неточно (36 ошиблись+билленулись $0.89). Деньги $8.67 (в 2%), капы соблюдены, Gemini €2.21=85% бюджета. **Следующий шаг — exp14b (промт ВЫДАН, `POLYGON_EXP14B_SESSION_PROMPT.md`; владелец выбрал exp14b ПЕРЕД бэкендом — строить бэкенд один раз под финальный конфиг):** батарея смысл-трапов (≥3-5 типов, детерм.-скоринг + ≥2 фронтир-судьи) для ноги-2 + ранг P1a head-to-head vs F-disc (финалисты его исключили); дешёвые фиксы (глоссарий А/Б/В/Г) параллельно. Курс не разворачивается; планка = 2 претензии ИНТЕРИМ; пилот не разбавляется. (Разбор — D37.)
**12.07 (№4): exp14b (батарея смысл-трапов + P1a↔F-disc) отревьюирован и ратифицирован — D38.** Полигон прогнал 5 DET-классов × 6 семей-редакторов + SOFT (≥2 судьи) + P1a↔F-disc; **батчи НЕ коммитил** (процесс-фикс D37 отработал); **self-review сам поймал+починил 2 бага** (мандат самопроверки CLAUDE.md отработал живьём). Независимая верификация — 3 агента span-читкой ($0). **ГЛАВНОЕ (span-верифицировано):** (1) **«только gpt-5.4 чинит смысл» ОПРОВЕРГНУТО** — на a1 (двойн.отриц) deepseek-pro «знал каждый» И mistral «знали все без исключения» чинят, glm-5+grok инвертируют в «ни один»; **дешёвый mistral чинит то, что дефолт glm инвертирует, и дешевле**; провалы разбросаны по модель×конструкция. (2) **Фронтир в дефолт НЕ нужен** — P1a(glm)≈F-disc(gpt-5.4) mean_spp тай (2.56/2.65). (3) **Корень терм-дрейфа = статус-draft сида** (verified `memory.go:489` CONFIRMED-only + `suppressContained` съедает верный approved `族长`) → **promote грейды(А/Б/В/Г)+四代族长 draft→approved** (владелец направил; reseed; owner-only). (4) Soft: 0 катастроф ≥2-глазами; чэнъюй-сплющивание универсально = промпт/глоссарий. **ХОЛД: кандидат glm-5→mistral/deepseek-pro** — бейк-офф их ПРОЗЫ+omission до смены дефолта (урок exp13). Провайдер-квирк **gpt-5.4 reasoning=medium обрезает вывод**`00-provider-quirks` (в роли редактора `low`). Деньги $1.36/13 ошибок точно. **Стратегически: эмпирика сошлась на ОРГАНИЗАЦИИ, не моделях — фронтир НЕ нужен, D30.7-трек «дешёвые сейчас» подтверждён.** Слепой h2h-пакет (`exp14b/monitor/h2h.md`) — владельцу на вердикт. ⚠ `eval/exp14b_*.py` untracked (полигон-зона — полигону закоммитить для воспроизводимости). (Разбор — D38.)
**12.07 (№4): h2h залендён + разворот к ИНФРА-паку — D38.1.** Владелец прогнал слепой h2h (P1a↔F-disc) через 2 внешние сессии: **ChatGPT** (фронтир заметно сильнее, дешёвый провалил QA 1718, потолок гл.19 ~8590%) ↔ **Claude** (near-parity, разрыв = инфра не модель) — **расходятся на заголовке, СХОДЯТСЯ: дефекты = глоссарий+санитайзер, ни одна не publishable без человека** (фронтир «издательский» тоже не покупает). Оркестратор span-проверил: `却有`-CJK в русском (санитайзер не ловит Han), `丙→Б` (статус-draft корень), «не брал/не бил» (точечно, у обеих). **Разворот (уточняет D38):** editor-бейк-офф даёт мало (сравнивали 4×); **следующий = СТРОИТЬ инфра-пак** (бэкенд: CJK-в-выходе + экспорт-фикс D35.4a + число/omission-гард ∥ reseed-глоссарий промоут) под доказанный ROI; editor-swap glm→mistral/deepseek-pro = почти-бесплатный арм в пере-прогоне, не отдельный эксп. Промт `BACKEND_INFRA_PACK_SESSION_PROMPT.md` выдан → единый resnapshot → пере-прогон 310 глав → чтение. (Разбор — D38.1.)
## Приёмка Ф1 — ПЕРЕ-ПРОГОН 25 глав кандидат-конфигом (билингв glm-5 + reflow + сид v2 + санитайзер), 2026-07-12 (D30.9/D34.2)
Пере-прогон по `ACCEPTANCE_SESSION_PROMPT.md`. **Ничего не закоммичено** (лендинг — оркестратору). Все производные — ВНЕ git в `/home/ubuntu/books/gu-zhenren/rerun/` (свежий store `guzhenren-rerun.db`, конфиги, выходы, отчёты, скрипты замеров). **Дерево backend/ чистое — мои правки кода = 0** (throwaway-хелпер `cmd/_dumpsrc` для дампа исходных чанков — `_`-игнор Go-тулчейном, не коммичен, удалён после использования). Предусловия запуска (все 5) сверены: D15.2 этап A+D33.1 залендены; draft=flash сохранён (exp13/D32); сид v2 подписан владельцем (D34.1 — Жэнь Цзу/Монах Цветочного Вина/гу Жизни/деревня Гуюэ/первобытный камень/род «гу» муж — сверено в `guzhenren-seed-v2.yaml`); budget_usd>0; единый resnapshot.
### ШАГ 0 (repoint, D34.2) — ВЫПОЛНЕН и ВЕРИФИЦИРОВАН исполнением
Приёмочный конфиг собран из БОЕВОГО `pipeline-c1.yaml` (HEAD, post-D33) + book-дельты, **СВЕЖИЙ store** (не store этапа A). Снапшот `e754d3a7b321`, сверен из store (`snapshots.payload`):
- draft `deepseek-v4-flash` **`prompt_version:v1-reflow`**, escalate_to `deepseek-v4-pro`, floor max_tokens **8000** (D24.3 — стадия A имела 2048/3291).
- edit `glm-5` **`prompt_version:v2-bilingual-reflow`**, prompt_sha256 байт-в-байт совпал с `backend/prompts/editor.md`.
- `sanitizer.enabled:true` (`sanitizer-v2`, post-D33.1), coverage off, postcheck_gate false (флаггер), glossary_injection selective, **memory_version `002716c2…`** (сид v2, 57 терминов ≠ сид v1).
- `status --json`: **config_drift=false, snapshot_drift=false** — текущий конфиг рендерит ТОТ ЖЕ снапшот, что в store (нет стейл-моно-конфига; repoint airtight).
### A. Инфраструктура держится на НОВОМ снапшоте — таблица (каждое исполнением)
| # | Пункт | Как проверено | Результат |
|---|---|---|---|
| A1 | committed==SUM(checkpoints) | SQL на 4 срезах живого store | ✅ ТОЧНО: honest-stop $0.02163351==$0.02163351 (n=9); kill-9 $0.03187751==$0.03187751 (n=11); финал **$0.47462791==$0.47462791==chunk_status-sum** (n=116) |
| A1 | честный стоп потолка (committed+reserved) | book_usd=0.03 → отказ ch1/4 edit | ✅ committed=$0.021634 reserved=$0 denied estimate=$0.014533, «raise ceilings.book_usd or stop», **exit 1** (стадия A этот код не фиксировала — теперь подтверждён) |
| A1 | **настоящий kill -9** посреди in-flight glm-5 edit (ch1/5) | SIGKILL, инспекция store до resume | ✅ orphan reserved=$0.013373 виден до resume; на resume «recovered 1 stale reservation»; committed==SUM пережил краш; resume ре-атаковал РОВНО ch1/5 edit (≤1 вызов) |
| A1 | resume не переоплачивает | replay после kill-9/honest-stop | ✅ «stage resolved from chunk_status» ($0), первый платный = убитая/отклонённая стадия |
| A2 | **echo-эскалация стреляет и ре-гейтится (LIVE)** | ch16/0 flash draft | ✅ flash → **flagged cjk_artifact** → эскалация **deepseek-v4-pro @ max_tokens=8000****ре-гейт ok** → edit прошёл. **Валидирует фикс D24.3 живьём** (стадия A: хоп наследовал 2048 → finish=length, эскалация-пустышка; теперь флор 8000 → rescue) |
| A2 | flag+skip+continue, мусор не в TM | 2 sanitizer-флага (ch5/0, ch20/0) | ✅ чанк flagged, edit НЕ закоммичен (final пуст), прогон продолжился; FinalText не течёт в TM/экспорт |
| A2 | `tmctl redrive` на реальном флаге | ch5/0 sanitizer_defect: dry-run + real | ✅ dry-run план 1 (ничего не тронул); real сбросил+ре-атаковал+**ре-гейтил** → **re-flagged** (glm-5 детерминированно повторил «### Глава 5»); committed=$0.483486 **≥ SUM=$0.474670** (diff $0.008816 = сброшенная стадия; D15.3) |
| A2 | `tmctl status` живой (OpenReadOnly) | status/--json ПРИ активном translate | ✅ работают без flock; snapshot/деньги/паспорта/config-drift корректны; --json exit 2 при флагах |
| A3 | санитайзер ловит классы exp12 | unit-тесты (исполнением, зелёные) + LIVE | ✅ LIVE 2 TP (markdown «### Глава 5», «# Глава 20»); unit: gemini-преамбула / «Основные правки для справки» / ### / латиница / гомоглиф — firing+non-firing, вкл. D33.1-FP-гварды («около колонны»/«стало талой») |
| A3 | НЕ даёт ложных на чистом тексте | 55 чистых glm-5-чанков | ✅ **0 false-positive** (2 флага — оба реальные markdown-заголовки) |
### B. Качество
- **B4 re-gate ВЕРНОСТИ — НЕ ЗАПУСКАЛА (по контракту author≠reviewer): отдано полигону.** Пакет `rerun/FIDELITY_REGATE_HANDOFF.md` + `rerun-parallel.txt` (выровнено ОРИГ|ПЕРЕВОД, 57 чанков) + `records.json` + store. **⚠ Пере-прогон НЕ ЗАСЧИТАН до пройденного независимого span-цитирующего re-gate** (раздельно стиль/верность, охота на класс инверсий редактуры exp12, катастроф-скрин). Билингв-редактор мог купить гладкость ценой смысла — это ровно то, что не видно на поверхностном чтении.
- **B5 D10 консистентность** (НЕЗАВИСИМЫЙ скрипт `rerun/d10_consistency.py`, приложен — воспроизводимо, author≠native-matcher): presence **91.0%** (647/711), occurrence **95.8%** (3072/3207). По типам (presence): имена 98.6%, клички 100%, места 96.0%, термины 94.9%, **титулы 78.7%** (слабейший класс — как термины на этапе A). Классификация промахов: **decl_gap 0** (фикс D24.4 «базовый dst всегда» держит), **inflection_gap 54** (dst присутствует в НЕперечисленной в сиде форме — читатель видит верный термин; эффективная консистентность = (647+54)/711 = **98.6%**), **genuine_absent 10** (кандидаты дрейфа для span-сверки, НЕ подтверждённый дрейф). Alias-слепое пятно D24.2 **обойдено** (per-term substring, не longest-match): поймал **古月→Гуюэ ×2** (гл.18/0,20/1) — ровно класс, слепой для нативного матчера. Прочие кандидаты: 转→ранг ×6, 南疆→Наньцзян ×1 — отданы полигону (не подтверждаю дрейф сам). Порог 98% достижим на эффективной; строгий presence занижен местоимённой заменой/инфлексией, НЕ терминодрейфом (как на этапе A).
- **B6 вёрстка/reflow** (скрипт `rerun/reflow.py`): диалог→«—» в **49/55 чанков** (404 dash-строки); нарратив местами слит (dst_paras/src_lines mean 0.96). Груборазмерная метрика «скопирована структура 38/55» — **артефакт** (эта вебновелла в ИСХОДНИКЕ ~одно-предложение-на-абзац + диалог легитимно 1:1); **качественное чтение story-глав (гл.6, гл.8) показывает естественные многопредложные русские абзацы, НЕ построчную рубку exp12**. Reflow работает.
### C. Прочее
- **C8 echo-rate**: 1/57 flash-draft (**1.75%**, gl.16/0) — RESCUED эскалацией; финальный cjk_artifact=0. vs прайор книги ~25% (exp10/D18) и 3.5% этапа A. **Резко ниже — v1-reflow-промпт + flash почти не эхают на этом срезе** (front-matter гл.1, эхавшая на этапе A, тут переведена).
- **C8 spine**: 25/25 глав, 57/57 чанков, **0 молчаливых потерь**. 55 чанков с закоммиченным переводом; 2 (гл.5/0, гл.20/0) flagged (см. находку 1).
- **C9 деньги vs D30.4**: committed=**$0.474628**; доля стадий: editor glm-5 **87.1%** ($0.4132), draft flash 11.6% ($0.0550), эскалация pro 1.4% ($0.0065). vs этап A $0.4081 (моно) = **+16.2%** — В КОРИДОРЕ D30.4 (+1525% от флипа билингв; билингв +ток. редактора → editor-доля 83.3%→87.1%). Проекция полной книги (2283 гл.) ~$43 (этап A ~$37); НЕ подгоняю под до-флиповый $0.69.
### Находки для оркестратора (НЕ чинил — вне зоны багфикса / зона пакета/промптов)
1. **[quality, НЕ инфра-баг] glm-5 детерминированно лепит `### Глава N: <title>` на ~2/25 зачинах глав** (гл.5/0, гл.20/0), ХОТЯ editor.md прямо запрещает markdown-заголовки. Санитайзер ловит (flag+skip), но **redrive НЕ спасает** (повторяется). Тело перевода этих чанков КОРРЕКТНО — дефект = только ведущая «### ». **Рекомендация: export-нормализация ведущего `#{1,6} ` с строки-заголовка** (D29 уже отметил 8/54 финалов этапа A с ###; экспорт-контракт должен снимать) ИЛИ усиление промпта. Инфра отработала правильно — это находка о поведении модели.
2. **[glossary, для владельца] B2 dst-коллизия: 修炼/修行 → «культивация»** (сид v2, подписано владельцем) — читатель не различит два разных src. Раннер варнит на materialize. Подтвердить, что намеренно.
3. **[D10] 10 genuine-absent кандидатов дрейфа** отданы полигону на span-сверку (转→ранг, 古月→Гуюэ, 南疆→Наньцзян) — НЕ подтверждаю дрейф сам (author≠reviewer).
### ВЕРДИКТ
- **Инфра-инварианты на новом снапшоте: ДЕРЖАТСЯ** — деньги (committed==SUM/honest-stop-exit1/kill-9-orphan-recovery/resume$0/redrive-D15.3), диспозиции (echo-эскалация+ре-гейт LIVE, flag+skip, live OpenReadOnly-status), санитайзер (2 TP / 0 FP), spine (0 потерь), телеметрия/деньги (+16% в коридоре D30.4). **Плюс: фикс эскалации-флора D24.3 валидирован ЖИВЬЁМ** (то, что на этапе A возвращало эскалацию-пустышку, теперь rescue-ит эхо).
- **Читаемо / не читаемо: АРБИТР — ВЛАДЕЛЕЦ** (сэмплы `rerun/owner-sample.md`). Приёмка даёт честный замер, НЕ приговор. **Честно: на чистых story-главах (гл.8) этап A читался УЖЕ прилично — дельта инкрементальная (термины сида v2, нет эха, нет markdown, чуть плотнее), НЕ «нечитаемо→читаемо».** Крупный рычаг билингва — ВЕРНОСТЬ смысла (сверка с исходником), не видна на поверхностном чтении → **решает span-re-gate полигона.** Не преувеличиваю сходимость сигналов (урок eval-aggregation).
- **Верность: PENDING** (полигон re-gate; без него пере-прогон не засчитан — D1.1/D34.3).
### Вопросы владельцу (отдельный блок — после чтения)
1. **Читаемо ли?** Прочти `rerun/owner-sample.md` (гл.6, гл.8 + контраст этап A↔пере-прогон) и/или полный `rerun/rerun-ru.txt` (25 глав) холистически, как читал этап A. Перешло планку «лучше фана» (D30.7)? Да/нет.
2. **Этап B (срез ~300 глав, ~$56): да / нет / потолок?** При «да» — явный `ceilings.book_usd`/`day_usd` (согласие на трату, Р6). Проекция: ~$0.019/гл × 300 ≈ $5.7; рекомендую book_usd≈8, day_usd по темпу.
3. **markdown-заголовки (находка 1):** ок ли план «export-нормализация ведущего ###» (не трогая промпт/модель), или усилить промпт glm-5? Гейтит чистоту зачинов глав.
4. **B2-коллизия 修炼/修行→«культивация»** (находка 2): оставить (намеренно) или развести (напр. 修行→«совершенствование»)?
### Вердикт владельца (прочитал выхлоп пере-прогона) — СТРАТЕГИЧЕСКАЯ РАЗВИЛКА
**«Лучше, чем было (скорее из-за сида), но всё ещё крайне слабо художественно.»** Две конкретные претензии: **(1)** нет логической редактуры по абзацам, не соблюдаются конвенции русского; **(2)** остаются места, где модель не понимает связей/смысла. Владелец ставит вопрос о жизнеспособности сетапа и о смысле дальнейших тестов/масштаба.
**Диагноз приёмки (сверено с кодом/контрактом — НЕ баг, а недореализация):** обе претензии = машинерия качества, которая ДИЗАЙНЕРСКИ есть, но НЕ ПОСТРОЕНА (Фаза 2): judge (`role=judge` не исполним — `pipeline.go:170`; C2/C3/fanout не реализованы — `pipeline.go:159`), annotator-пре-пасс (speaker-ID/регистр/чэнъюй — 04-unhappy §124), чтение-вперёд, конвенц-гейты (морфо-род/ты-вы/канцелярит-Галь). Текущий пайплайн = голый линейный черновик→редактор + детерминированные гейты, **ноль оценки качества в контуре, ноль per-segment сигнала «где смысл поехал».** Черновик flash как ПЕРЕВОДЧИК на художественность не мерен НИКОГДА (D30.6). Владелец сам назвал обе проблемы в `START_PROMT.MD` (п.4-конвенции, п.33-чтение-вперёд) и предложил «судью над пайплайном» (п.3 разд.2) — реализован лишь разово как флагман (exp12/13).
**Решения к ратификации оркестратором (запрошены владельцем):**
1. **Этап B (~300 глав) ОТМЕНИТЬ** как инструмент оценки качества — это инфра-масштаб-тест, к художественности отношения не имеет, жжёт токены/40-мин ожидания. Итерация качества — на **≤10 главах**, быстро. 25 глав уже переведены (`rerun-ru.txt`), читаемы как есть.
2. **Развилка:** (A) пауза/стоп на дешёвом сетапе; (B) дешёвая фронтир-проба ~5 глав (~$5): фронтир-переводчик+редактор + фронтир-мета-ревьюер → разводит «потолок в моделях vs в архитектуре» ДО решения; (C) строить машинерию Ф2 (annotator+judge+чтение-вперёд+конвенц-гейты) → пилот Ф2.5. Приёмка рекомендует (B) как самый дешёвый вход в (A/C).
3. **Планка приёмки впредь = 2 претензии владельца** (абзац-логика/конвенции + понимание смысла), не только инфра. Инфра-веха Ф1 закрыта; вакуум качества — открыт.
**Guard:** любой фронтир-ревью/проба — на СЫРЬЕ (src+выходы+код), без наших выводов (урок research/17 — анкоринг = сфабрикованная сходимость); пре-регистрация до платных вызовов. **Промт-хендофф оркестратору:** `rerun/ORCHESTRATOR_HANDOFF.md`.
**Архитектурные пробелы — верифицированы независимо (6 адверсариальных агентов по коду, с калибровкой МОИХ интерпретаций):** факты подтверждены, но часть «дефектов» оказалась осознанными компромиссами → в хендофф поданы откалиброванно. **Реальные пробелы:** кросс-чанк дискурс на стыках (~12/глава; редактор не видит главу целиком — гипотеза `draft=чанк/edit=глава`), reference-тома прошлых частей (не построены, Ф2/3), **отсутствие LLM-оценки качества/аннотатора в контуре (главный, Ф2)**. **Откалибровано (НЕ дефекты, требуют эмпирики, не утверждения):** фикс-чанкер 1500/без-ёмкости-модели = quality-first компромисс; промпты lean НО ресёрч промтинга ЕСТЬ (research/15 §Промптинг, exp12/13/10); кэш 20% — присущ по-чанковому переводу, не из-за глоссария. **План владельца (на ратификацию оркестратором):** закрыть цикл приёмочных прогонов (инфра ✅/читаемость ❌ — НЕ «провал»), → ресёрч-сессия по репо → полигон-эмпирика (чанк/биллинг/промт/ретраи/переверстка — последняя тестируется БЕЗ пайплайна) → если подтверждается, доработка бэкенда. Планка впредь = 2 претензии владельца, не только инфра.
**12.07 (ночь): пере-прогон отревьюирован, ПИВОТ ратифицирован — D35.** 3 оси исполнением по копии re-run store/логам/выходам. **Конфиг-корректность подтверждена** (снапшот несёт v1-reflow/v2-bilingual-reflow/сид-v2 — НЕ старая моно-мина D34.2 → вердикт валиден). **Диагноз «Ф2-недострой, не баг» ПОДТВЕРЖДЁН** (все баг-гипотезы опровергнуты: reflow применён но зеркалит рубленость исходника = промпт-рычаг; билингв-редактор активен sim 0.643; сид инъектится 628 хитов; внутри-чанк-фиксимо/кросс-чанк-~1.28-Ф2 эмпирически верно; флор D24.3 валидирован в проде — эхо-эскалация ch16/0→pro@8000→реальный результат). Ратифицированы 3 пункта пивота (закрытие цикла / планка=2 претензии ИНТЕРИМ-пре-скрин-не-пилот / мерить→строить). Найден 1 реальный баг (major): санитайзер-флагнутые ch5/ch20 экспортятся ПУСТЫМИ (~44% зачина глав выпали; текст правки цел) → бэкенд-фикс + полигон исключает ch5/ch20 из слепых пакетов. Промт ресёрчера выдан НЕЙТРАЛЬНЫЙ (ревью поймало анти-анкоринг-дефект §3 хендоффа — урок D25.10). Fidelity re-gate (D34.3) остаётся жёстким гейтом. Дешёвые фиксы: ведущий `###` из draft (не glm-5), глоссарий разрядов 甲乙丙丁. Очередь: ресёрчер (`RESEARCHER_QUALITY_SESSION_PROMPT.md`) → полигон (нарезка×промпт + фронтир-диагностик + re-gate) → бэкенд под ROI.
---
*(Замеры и скрипты — в `/home/ubuntu/books/gu-zhenren/rerun/`: `audit.sh`, `d10_consistency.py`, `reflow.py`, `extract.py`, `records.json`, `rerun-parallel.txt`, `rerun-ru.txt`, `owner-sample.md`, `FIDELITY_REGATE_HANDOFF.md`, `ORCHESTRATOR_HANDOFF.md`. Всё ВНЕ git.)*
## Приёмка Ф1 — 蛊真人 zh→ru, этап A (25 глав), 2026-07-10
Приёмочная сессия по `ACCEPTANCE_SESSION_PROMPT.md`. Прогон реальной книги end-to-end, вердикт по критериям `02-mvp-plan §Приёмка Фазы 1`. **Ничего не закоммичено** (лендинг — оркестратору). Все производные (store.db, срез, выходы, отчёты) — ВНЕ git (`/home/ubuntu/books/gu-zhenren/acceptance/`). Дерево backend/ чистое (мои правки = 0; `docs/research/17-*` — чужая GPT-сессия, не трогал).
**Конфиг прогона (по контракту):** срез 25 глав (57 чанков) из `guzhenren-gb18030.txt` (GB18030, ре-энкод среза лосслесс), сид 49 терминов; draft=deepseek-v4-flash (thinking ON), editor=**glm-5** (D20.3 — чистого xAI-ключа нет), draft `escalate_to`=deepseek-v4-pro, `escalation.budget_usd=2.0` (D22.11), гейты дефолтные (coverage OFF, postcheck-гейт OFF=флаггер). Промпты/версии/пороги — байт-в-байт из pipeline-c1.
### Чек-лист приёмки (каждое — исполнением)
| # | Пункт | Как проверено | Результат |
|---|---|---|---|
| 1 | `committed == SUM(checkpoints)` | SQL по живому store на 3 срезах | ✅ ТОЧНО: honest-stop $0.07446423; **пережил SIGKILL** $0.08639944 (32 ckpt); финал $0.408077 *(испр. оркестратором: на финале после redrive инвариант по D15.3 — «≥»: SUM(130 ckpt)=$0.405370; «==» держалось до redrive и на конец полного прогона)* |
| 1 | Честный стоп потолка (committed+reserved) | book_usd=$0.08 → отказ резервации | ✅ отклонён ch5/1 edit *(испр. оркестратором: denied estimate=$0.00732 по phase1.log:74, не $0.0733)*, reserved=$0, «raise ceilings.book_usd or stop», exit 1 (код-путь tmctl, в логах не зафиксирован), резюмируемо |
| 1 | kill -9 посреди этапа → без переоплаты | реальный SIGKILL в in-flight glm-5 вызове | ✅ orphan-резервация $0.0075 восстановлена («recovered 1 stale reservation»), committed==SUM пережил краш, ≤1 вызов |
| 1 | resume не переоплачивает | поднял потолок $0.08→$2.0 (wiring-поле, не snapshot) → translate | ✅ *(испр. оркестратором — два resume смешаны в одну строку, оба чистые: ceiling-resume переиграл гл.15 за $0, первый платный — ровно отклонённая потолком стадия ch5/1 edit; пост-SIGKILL resume переиграл гл.16 за $0 (24 tm_hit), первый платный — ровно убитая стадия ch6/1 edit)* |
| 2 | echo-эскалация стреляет и ре-гейтится (D18) | ch1/0,1: cjk_artifact 7682% | ✅ → deepseek-v4-pro → ре-гейт → флаг остаётся (fallback тоже провалил), edit skip, мусор в TM НЕ коммитится |
| 2 | refusal/empty → flag+skip+continue | 4 флага (cjk_artifact×2 стойких, length×2) | ✅ edit пропущен (DispSkipped), FinalText="" не течёт в TM/экспорт/STM |
| 2 | `tmctl redrive` на реальном флаге | dry-run (план 4) + real `--chapter 1 --chunk 4` | ✅ **флаг RESCUED** (length был транзиентным бюджетом → ok, attempts=2); флагов 4→3; committed≥SUM (D15.3: сброшенный $0.0027 остаётся в committed) |
| 2 | `tmctl status` живой при прогоне (OpenReadOnly) | status / status --json / report при активном translate | ✅ работают без flock; --json exit 2 (флаги); D23 orphan reserved-хвост виден до recovery |
| 3 | Консистентность D10 ≥98% (все approved) | замер ниже (нативный post-check + независимый пересчёт) | ⚠️ **суть выполнена (0 реальной терминодрейфа); флаггер шумит из-за неполноты decl сида** — разбор ниже |
| 4 | Ноль молчаливых потерь глав | ingest 25 глав → 57 чанков, spine consistent | ✅ все 25 глав обработаны, 0 U+FFFD, 0 потерь. (coverage-гейт OFF по дефолту — ≥90%-recall искусств. пропусков не гонялся, отдельный тест) |
| 5 | Честная оговорка D1.1 | — | ✅ приёмка = инфраструктура; верность НЕ мерена (это пилот Ф2.5) |
### Деньги (этап A, весь прогон)
- **committed = $0.408077**, reserved = $0.000000, потолок $2.00 (20.4%). **committed ≥ SUM(checkpoints)=$0.405370** (разница $0.0027 = *(испр. оркестратором)* ДВА сброшенных пре-redrive draft-вызова ch1/4, побайтно $0.0010117+$0.0016956; честное направление D15.3).
- **$/глава = $0.0162** (25 глав). **Проекция полной книги (2283 гл.) ≈ $37** — в коридоре промта $2555, ниже человеческого якоря $100.
- **Доля стадий:** editor(glm-5) **83.3%**, draft(deepseek-flash) 15.3%, эскалация(deepseek-pro) 1.4%.
- **Санити vs exp08 (честно, не подгоняя):** exp08 моделировал editor 8890% на grok-4.3. Здесь 83.3% — ниже, потому что (а) 3 флагнутых чанка пропустили дорогой edit *(испр. оркестратором: финально 3 — ch1/4 после redrive edit получил)* и (б) draft тяжелее (deepseek reasoning subset + ретраи length + эскалации). **⚠️ Клейм промта «glm-5 дешевле grok» неверен по выходу:** glm-5 output $3.2/M против grok $2.5/M = **+28% за токен**; итоговая $/глава ниже якоря из-за размера глав и пропуска edit флагнутыми, НЕ из-за дешевизны glm-5.
- Телеметрия чиста: deepseek reasoning=subset (внутри completion, `reasoning_tokens`-поле=0 — не путать с thinking-off), glm-5 billed по факту, эскалация billed отдельной осью (2 ckpt, $0.0056). Gemini/grok на wire-пути дефолт-конфига НЕТ (ожидаемо).
### Консистентность D10 — разбор (числитель/знаменатель + классы промахов)
Нативный post-check (retrieval_state, decl-aware, реальный матчер) на 57 чанках: **55 confirmed-промахов**, 14 style-флагов, инъекций(точных)=529, sticky=166. Независимый пересчёт по сиду+выходам (author≠reviewer, дважды):
- **Occurrence-level D10 = 1780/1938 = 91.8%**; **presence-level = 370/390 = 94.9%**. По типам (presence): **имена 98.5%, места 100%, титулы 99%, термины 89%**. *(Пометка оркестратора: точные числители/знаменатели метод-зависимы и без приложенного скрипта третьей стороной не воспроизводятся — независимая реплика под 6 конвенциями матчинга даёт occurrence 83.193.8% / presence 91.699.3%, отчётные значения внутри диапазонов, качественная структура (термины — слабейший класс, места 100%) совпадает; с decl-докредитом (база+мн.ч.) occurrence-реплика = 99.0% ≥ 98%. Методику пересчёта на этапе B приложить скриптом.)*
- **Классификация ВСЕХ 55 confirmed-промахов (по фактическим выходам):**
- **37 = nominative_gap** — approved-dst присутствует в ИМЕНИТЕЛЬНОМ, но `decl.forms` перечисляет только косвенные падежи, а фолбэк на базовый dst в `dstFormPresent` (mempostcheck.go:85-96) срабатывает ТОЛЬКО при пустом decl. Пример: `方源→Фан Юань` — «Фан Юань» есть в выходе (+«он» ×410 для прочих упоминаний), но флагается.
- **18 = inflection_gap** — корень dst присутствует в форме, которой нет в сиде (обычно МН.Ч.): `元石→первокамень` рендерится «первокамней/первокамни/первокамнями» (сид дал только ед.ч.); так же `凡人→смертный`→«смертных/смертными», `蛊师→гу-мастер`→«гу-мастеров».
- **0 = genuine drift** — среди 55 промахов флаггера реального рассогласования терминологии НЕТ. *(Уточнение оркестратора: адверсариальный поиск ВНЕ зоны видимости флаггера нашёл ровно 1 дрейф-вхождение — гл.18/0 рендерит 古月方源 раздельно «гу юэ фан юань» против «гуюэ…»×35 и «гуюэ»×154 в остальном корпусе; post-check структурно слеп к этому классу: полное имя longest-match'ится на 方源, чей dst присутствует → промах не фаерится. Alias-слепое пятно зафиксировано в D24.)*
- **Вывод:** машинерия (инъекция + decl-aware post-check + флаггер) работает; **истинная терминоконсистентность ≈ 99.5% (1 наблюдение дрейфа на ~190 поверхностей клан-имени, вне видимости флаггера)** *(испр. оркестратором: было «≈100% (0 дрейфа)»)*. Измеренный <98% целиком артефакт **неполноты decl в сиде** (нет именительного-в-decl + нет мн.ч.), воспроизведён двумя независимыми методами. Порог 98% ДОСТИЖИМ; правка сиду (дописать nom+мн.ч. в `decl.forms`) ИЛИ post-check (всегда проверять базовый dst, а не только при пустом decl). Это ровно почему `postcheck_gate` дефолтно OFF (флаггер): флип ON сейчас = флаг-шторм на легитимных именительных.
### G2 flag-rate (первый замер человеческой петли на реальной книге)
- **3/57 чанков (5.3%) флагнуто** после redrive (4/57=7.0% до redrive; redrive снял 1 транзиентный length).
- **Концентрация: 2 из 25 глав** несут все флаги гл.1 (классический зачин «第一节纵身亡魔心仍不悔» эхо на плотной архаике, ср. register-оговорка D22.5) и гл.10 (length). **23/25 глав — чисто.** Человеческая петля front-loaded на классику/плотный ханьский зачин, не размазана.
- Стиль-флаггеры (наблюдаемость): **14, все `dialogue_dash`** (0 ё / 0 транслит-междометий / 0 разрядов 万億).
### Находки для оркестратора (НЕ чинил — правят wire/вердикты → изменение поведения)
1. **[major] Эскалация draftdeepseek-v4-pro неэффективна под дефолтным max_tokens.** deepseek-thinking требует 8000 (quirks), а `max_output_ratio=2.2`+`min_max_tokens=2048` дают ~23k на чанк эскалация возвращает empty/length (finish=length), сжигая ~3× цену draft впустую. На ch1/0,1 хоп deepseek-v4-pro дал compl=2048/3291 finish=length. Известный техдолг min-budget Kimi16k/Gemini8k комментарии, не схема») подтверждён эмпирически для deepseek. **Вопрос: ввести per-model floor max_tokens для thinking-моделей (schema, не комментарий)?** Правит снапшот решение оркестратора/владельца.
2. **[major] Post-check `dstFormPresent` не проверяет базовый dst (именительный) при непустом `decl.forms`** (mempostcheck.go:87-89: фолбэк на base только при пустом decl). Даёт 37/55 ложных промахов на именительных. Правка: либо сиду дописать nom+мн.ч. в `decl.forms` (зона полигона), либо коду всегда добавлять базовый dst к проверяемым формам (правит вердикты флаггера изменение поведения). Гейтит осмысленность/флип `postcheck_gate`.
3. **[info] deepseek-flash эхает на классическом зачине гл.1** (cjk_artifact 7682%, finish=stop интринсик, не бюджет). Ожидаемо (D18/D22.5), гейт ловит корректно. Не баг.
### Вердикт
**Критерии приёмки Фазы 1 (`02-mvp-plan`) ВЫПОЛНЕНЫ — как инфраструктурная веха — С ОГОВОРКАМИ.**
- Деньги (committed==SUM, честный потолок, resume $0, kill-9 1 вызов, budget_usd-гейт эскалации), диспозиции (echo-эскалация+ре-гейт, flag+skip+continue, мусор не в TM), redrive (rescue+D15.3), живой OpenReadOnly-status, телеметрия/паспорта **подтверждены исполнением, без исключений.**
- Консистентность D10: **суть выполнена (дрейф ≈0: 1 вхождение вне видимости флаггера — см. разбор)**; формальный порог 98% по флаггеру не достигнут из-за неполноты decl-сида не машинный/модельный отказ, воспроизведено, actionable (находка 2).
- Верность НЕ мерена (D1.1, по контракту пилот Ф2.5).
- *(Оговорки вердикта дополнены оркестратором при верификации, D24):* (а) **объём**: прогнан срез 25/2283 глав (~80k zh-символов), не «том целиком» буквы критерия 1 полный объём двигается в этап B по этапности промта; (б) **coverage-гейт**: recall-тест «≥90% искусственных пропусков» НЕ гонялся (гейт OFF по дефолту) остаётся отдельной задачей, вторая половина критерия 4 (ноль молчаливых потерь) выполнена; (в) **grok-биллинг** (под-критерий 2) не мерен редактор glm-5 по D20.3, grok на wire отсутствовал; (г) **budget_usd эскалации** проверен только в направлении «>0 → стреляет» (D22.11), отказ по исчерпанию не исполнялся; (д) parallel-экспорт устарел для спасённого redrive'ом ch1/4 (показывает старый флаг без перевода) — перегенерить на этапе B.
### Вопросы владельцу
1. **Этап B (полная книга 2283 гл.): да / нет / потолок?** Этап A стоил **$0.41** за 25 глав; полная проекция **~$37** (glm-5-editor). Нужен явный «да» + `ceilings.book_usd`/`day_usd` (согласие на трату, Р6). Рекомендация: `book_usd≈45`, `day_usd` по темпу (сейчас ~$0.016/гл × скорость).
2. **Редактор этапа B:** glm-5 (как A) или ждать чистый xAI-ключ под grok-4.3? По D20.3 glm-5 для приёмки допустим (B — та же инфра-веха). Напоминание: glm-5-output на 28% дороже grok/токен.
3. **Сид перед этапом B:** дописывать полноту decl (nom+мн.ч.) сейчас (полигон), чтобы D10-флаггер стал осмысленным, или гнать этап B с флаггером как есть (гейт OFF, прогон не блокирует — просто шумный retrieval_state)? Приёмку инфры B не гейтит; но без этого D10-число останется заниженным.
*(Ревью оркестратора 11.07, воркфлоу 5 осей — всё исполнением по копии store/логам/экспортам: деньги воспроизведены до float-epsilon (все 130 чекпоинтов пересчитаны из usage×прайсов), классификация 55 промахов реплицирована бит-в-бит независимой реализацией матчера, SIGKILL/honest-stop/resume сверены по phase-логам, конфиг-паритет с pipeline-c1 подтверждён diff'ом с ровно двумя санкционированными дельтами. Правки текста и дополнительные оговорки внесены выше с пометками «испр. оркестратором». Ратификация вердикта и обе развязки — D24; ответы на вопросы 13 — в D24.424.5.)*
## 2026-07-11 — Оркестратор №3: лендинг приёмки этапа A и research/17, D24/D25, задания
Передача роли №2 принята (промт 4c48f89). Два ревью-цикла, оба мультиагентными воркфлоу, всё исполнением/по первоисточникам:
1. **Приёмка этапа A — верифицирована и залендена (7ca14c2), вердикт ратифицирован D24.** 5 осей ($0, по копии store/логам/экспортам): все хедлайны воспроизведены — деньги до float-epsilon, классификация 55 промахов бит-в-бит, SIGKILL/стоп/resume по логам, конфиг-паритет. Найдено и исправлено при лендинге: денежная опечатка ×10 ($0.0733→$0.00732), смешение двух resume в одной строке, «committed==SUM» после redrive (корректно «≥», D15.3), «0 дрейфа»→«≈99.5%» (1 вхождение гл.18/0 古月方源 раздельно — alias-слепое пятно вне видимости флаггера, зафиксировано D24.2); вердикт дополнен оговорками (объём 25/2283; coverage-recall не гонялся; grok-биллинг не мерен; budget_usd-отказ не исполнялся). Числа собственного пересчёта отчёта (1780/1938 и 370/390) третьей стороной не воспроизводятся (метод не приложен; реплики дают диапазоны, вывод устойчив) — методика этапа B обязана быть скриптом.
2. **Развязки приёмки ратифицированы (D24.324.4):** per-model floor `min_max_tokens` схемой (deepseek 8000 / gemini 8000 / kimi 16000; хоп берёт флор своей модели; блокер этапа B — при прайоре эха 25% без флора ≈$3.6 эскалаций-пустышек на книге) и post-check «базовый dst всегда проверяется» (код, не сид; 37/55 ложных) + сид-обогащение мн.ч. (полигон; 18/55). Порядок: **фиксы → единый resnapshot → этап B** (~300 глав по переопределению владельца, ~$5; редактор glm-5).
3. **research/17 — ревью завершено, залендено с ревью-шапкой (a148f41), абсорбция D25.** 12 агентов: 19/19 первоисточников существуют (0 несуществующих; 8 с нюансами — ключевой: морф-оговорка Exel et al. процитирована с инверсией); анти-якорение критиком соблюдено (лексический аудит §A, errata-паттерн), но НАШ мандат засеял §A осями и списком дыр → конвергенция ≠ независимое подтверждение (урок D25.10); метки §B2/«Итога» переграждены в PLAUSIBLE. Абсорбция: release-state контракт (задача с гейтом «до читательского экспорта»), fidelity-каскад shadow (Ф2, НЕ вперёд пилота), sequential-судья только как вложенный анализ D13.3, L3-расширения в спеку D22.7 (методика валидации — владельцу: конфликт с гардрейлом «не анализировать»), trust boundary в контракт сейчас (action-gate — именованный блокер Ф3), review bundle в minimal-форме, echo-калибровка полигону, over-stylization метрика в voice-арм. Курс не разворачивается; пилот Ф2.5 остаётся решающей точкой и не разбавляется.
4. **Задания выданы:** `BACKEND_PACKAGE5_SESSION_PROMPT.md` (floor + post-check + golden re-capture + coverage-recall/budget-отказ тесты + D23.4-микро) ∥ `POLYGON_PACKAGE4_SESSION_PROMPT.md` (сид мн.ч. — гейтит этап B; D22.8 major; проба судьи-дублёра; echo-калибровка; дополнения пре-регистрации пилота; P4-хвост) → затем этап B (`ACCEPTANCE_SESSION_PROMPT.md` ред. 11.07). Доко-дрейф ja-приёмки в 02-mvp-plan закрыт (v3.1); GPT_EXTERNAL_ASCENT_PROMPT — в архив.
5. **Владельцу (сводно, см. CURRENT-STATE):** «да»+потолок на этап B (после лендинга №5+сида); билингв-якорь пилота (Q1 — рекрут vs en-мост в пре-регистрации); publishable/waiver-подпись — при постройке экспорта; L3 FN-bound и методика валидации — при спеке; юр-пакет и чистый xAI-ключ — висят.
## 2026-07-11 (позже) — Оркестратор: качество-первым (D26)
Владелец прочитал 25 глав этапа A — **нечитаемо, слабейшее звено редактура**. Первый человеческий замер читаемости на реальной книге; D24 не пересматривается (приёмка мерила инфраструктуру по D1.1), но очередь перестроена — **D26**: этап B заморожен до читаемого конфига на 25 главах; полигону выдан промт **exp12 «диагностика качества»** (`POLYGON_QUALITY_DIAG_SESSION_PROMPT.md`: армы draft-only / glm-5-моно / glm-5-билингв / grok-моно / grok-билингв / gemini-премиум / grok-без-констрейнтов на 3 чистых главах; слепые пакеты владельцу; LLM-судьи вторично с билингвальной сверкой смысла; root-cause разбор худших мест; кап $5; текущий xAI-ключ допустим — D19.4); полигон №4 — второй приоритет; бэкенд №5 без изменений, после него — пакет D15.2 (пер-стадийный reuse = дешёвая итерация редактора). Оценка research/17 владельцу дана честно (~6/10: две контракт-аддиции + задачи, по качеству перевода — ничего, не его мандат). Разъяснена «гигиена чистого ключа» (без data-sharing + без NSFW-истории; к exp12 не требуется).
**Позже (11.07, ночь): D27 — ключевая политика xAI по решению владельца.** Отдельный чистый ключ не заводится: текущий (с data-sharing-промо — уточнение владельца, supersedes скобку D19.4) идёт на все тесты и пилот, data-sharing отключается перед продом. «Чистый ключ» снят из блокеров пилота; вынужденная glm-5-замена умирает (grok доступен для exp12/пере-прогона/этапа B). Риски зафиксированы принятыми (копирайт 蛊真人 в обучение — только свои тесты; NSFW-история аккаунта), рекомендация-митигация: пилотный корпус (вне претрейна!) гнать при временно выключенном data-sharing — ждёт «да/нет» владельца. Механику отключения сверить с вендор-докой перед релизом (в чек-лист первого боевого прогона). Инцидент git при синке D26: `add -A` подмёл чужие незакоммиченные правки живой бэкенд-сессии №5 — размотано soft-reset'ом немедленно, содержимое чужих файлов не тронуто; впредь стейджинг только пофайловый.
**Ночь: бэкенд-пакет №5 отревьюирован и залендён (aa47e25), ратификация D28.** Внешнее ревью 5 осей исполнением в scratchpad-копиях (при двух живых сессиях в дереве), ~10 мутаций переисполнено независимо: **все оси ACCEPT, 0 critical/major**. Гипотеза «фиксы мертвы (golden пуст)» убита исполнением в обе стороны (флор фикстурной модели валит golden wire-диффом; oblique-only сид флипает вердикты 2/1/2→1/0/1) — пустой дифф data-driven. Scope чист (ровно 4 флора в models.yaml, exp12-файлы полигона не тронуты). D24.4 амендирован (recall-трейдофф — поймал сам пакет); fix-лист D28.3 (fbHash-пин хопа, provider_local×floor note, косметика, models.yaml→D27) — в пакет D15.2, промт которого выдаётся после развязки exp12 (D28.4: reuse×смена-редактора взаимодействуют).
**12.07 (позже): exp12 отревьюирован и залендён (75db9e1), ратификация D30 — флип D1 и пакет качественных фиксов.** 4 оси ревью, всё исполнением по diag/-артефактам и store-копии: ядро диагноза подтверждено (пассивность моно-редактора бит-в-бит: 3/6 grok-чанков байт-идентичны черновику; вёрстка — от промптов дословно; дефекты — в черновике; риг A1≈прод). Снято ревью: «единогласный #1 A2» (gpt-5-mini 9/9 за A5; выбор glm-5 = цена ×13 + чистота), «fidelity-гейт пройден 5.0» (судьи давали 5.0 сырому черновику; A2 сам внёс инверсию «пожертвуй мной» → re-gate верности обязателен на пере-прогоне), утечка gemini 6/6 (не 4), мина статусов сида v2 (спорные со status:approved ушли бы в hard-constraints — до подписи владельца → draft). Ратифицировано D30: флип D1 моно→билингв (supersede D17.в), reflow, санитайзер, глоссарий v2 условно, exp13 бейк-офф переводчиков (+grok-ON арм), COGS-рамка (флип +1525%, «$1.52»=опция Б отдельно), трек дешёвых моделей владельца (архитектура конфиг-первая — фронтир позже без переделки кода). Промты выданы: `BACKEND_D152_SESSION_PROMPT.md` (этап А гейтит пере-прогон) ∥ `POLYGON_EXP13_SESSION_PROMPT.md`.
**12.07: research/16 «Ридер-IDE» отревьюирован и залендён (458b0ea), ратификация D29.** 4 оси (источники ×2 по первоисточникам, независимая реплика $0-пробы, red-team контракта против кода/D15.2-спеки): **ACCEPT_WITH_FIXES**. Ядро принято: чанк = несущий якорь; precision-гейт YELLOW перед показом цветов (<10% ложных/флаг); детект-флаггер, не форс-структура; числовой confidence никогда без QE. Поправки ревью: числа пробы верх метрик-диапазона 4458% на stale-базе (DB-истина 57.4%/70.4%, редактор 90.7%, не 93%); «полностью из read-model» оверклейм (src/dst_range, source_file_hash, спаны = net-new нужна настоящая `tmctl export`-команда с ассемблером); passport-3-тир = явный амендмент вердикт-правила D12/exp07 (при gate-on glossary_miss уже катится в fail); override-ключ = хеш СЫРОГО src-текста (не content_hash=rendered msgs ловушка), override новое provenance-состояние, не «verdict-нейтрален». Плюс находка реплики: 8/54 финалов несут markdown-`###` нормализация выхода в экспорт-контракт. Абсорбция: D29.1(ад) в пакет D15.2; полигону 4 задачи (precision только post-hoc, пре-регистрацию exp12 не трогать); Ф3-хвост в F3-brief.
**12.07 (вечер): тотальная ревизия документации (D31) по мандату владельца.** Мультиагентный staleness-аудит 5 кластеров (read-only, каждый клейм сверен с D-логом). Применено дисциплиной D23.3 (историю не переписывать только баннеры/пометки/архив): (1) **PROGRESS.md разделён** закрытая хроника 0410.07 (~330KB) в `archive/PROGRESS-2026-07-04-10.md` с дословными заголовками (grep-рефы кода целы); живой файл 39363KB (~85100K токенов экономии на онбординге). (2) D-лог: карта актуальности сверху (superseded-цепочки). (3) CLAUDE.md: шапка-пайплайн БИЛИНГВ/~$0.85, счётчик D1D31, «Текущее состояние» под дорожку D30.9. (4) Баннеры/пометки живых доков architecture/experiments/research (главное: опасные editor-grok строки `00-provider-quirks` reasoning-off = no-op исправлены; `04-editor-quality`/`08-cost-model` баннеры; `04-api-providers`/`gap-2` под D30/D14D22; `13`/`14` post-check-каветка снята decl-путём). (5) Промты: старые в архив (ORCHESTRATOR v2 / ACCEPTANCE v1 / READER_IDE), написаны заново **ORCHESTRATOR хендофф №3** и **ACCEPTANCE под пере-прогон+этап B**. Сознательно не тронуто (низкий приоритет, покрыто картой D-лога): `01`/`02`/`10`-эксперименты; backend/README и eval/README чужие зоны, в fix-листы D15.2/exp13.
**12.07 (ночь): exp13 отревьюирован и залендён с ревью-шапкой, ратификация D32.** 4 оси исполнением по diag/-сырью и конфигу @HEAD (при двух живых сессиях в дереве). **Сид v2 ПРИНЯТ** (трансформ байт-воспроизводим дефект провенанса D30.5 закрыт; 6 спорных status:draft, 0 hard-lock; мн.ч. D24.4 влито полигон-4 сид-задача закрыта; гейты 30/30 честны; бюджет $5.50 сходится; пре-рег заморожен; слепота цела) гейтится подписью владельца 6 спорных+род «гу» (`diag/glossary_v2_signoff.md`). **Смена переводчика flash→pro ОТКЛОНЕНА по данным** (повтор класса exp12): «7 сигналов сходятся» ложно (делятся 3-3 flash-верность/pro-стиль; флагманы расходятся); #1 pro держится на gemini (gpt-5-mini-якорь ставит mistral #1, pro #3); pro ЕДИНСТВЕННЫЙ рендерит заглавный как «гусеницы» ×2 катастрофа класса забракованных армов; по верности (ось черновика-под-редактором) flashpro, pro ×3.7 дороже; подъём даёт свзяка, не переводчик. **Черновик остаётся flash** (= текущий конфиг, escalate_to=pro без изменений коллизия снята). Методика-фиксы полигону в любой будущий бейк-офф (fidelity-first агрегация, катастроф-скрин, leave-one-out, per-call кап, grok-reasoning wire-квирк). Бэкенд отдельно отчитался «пакет D15.2 ЭТАП А завершён» отревьюирую следующим циклом (код backend/ не лендил).
**12.07 (ночь, позже): бэкенд-пакет D15.2 ЭТАП А отревьюирован и залендён (00f8e36), ратификация D33.** 4 оси исполнением в scratchpad-копиях WIP: golden ACCEPT, wiring ACCEPT, sanitizer/spec-scope ACCEPT_WITH_FIXES. Верифицировано: golden байт-в-байт (TM_UPDATE_GOLDEN=1 тот же sha256), дифф-класс ровно санкционированный, 3 новых поведения запинены мутацией (floor/union/isFinal); билингв {{text}} доказан рендер-пробой; reflow консистентен; **конфиг-флип D32 соблюдён** (editor=glm-5, draft=flash, эскалация не тронута, grok-редактора нет); build/vet/test-race зелёные; спека v3.1 только дизайн (этап Б не утёк); скоуп backend-only. **2 major-дефекта санитайзера, которые backend-ревью пропустило** (D33.1, чинить до пере-прогона, вливается в тот же resnapshot): (а) хвостовой класс не ловит «Основные правки для справки» целевую gemini-утечку A5/5_1; (б) класс «битые словоформы» ложно флагает «около колонны»/«стало талой» как «Первок предок» (флаг-шторм на прозе). Промт фикса выдан (`BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`). Ответы бэкенду: editor grokglm-5 подтверждён (D30.1); FALSE-POSITIVE-классы санитайзера НЕ приемлемы как «принятые FP» чинить; этот resnapshot = единый resnapshot пере-прогона. Этап Б+В промт после пере-прогона (исход чтения уточнит экспорт В).
## Бэкенд
*(Закрытая хроника пакетов №0№4 (0410.07) перенесена в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md) — ревизия D31.)*
### 2026-07-11 (пакет-5) — Фиксы приёмки этапа A (D24.3/24.4) + тесты-оговорки + D23.4-хвосты ЗАВЕРШЕНО
По `BACKEND_PACKAGE5_SESSION_PROMPT.md`. **Ничего не коммичено** (лендинг оркестратор). `go build ./... && go vet ./... && go test -race ./...` зелёные. Все новые тесты mutation-verified (реверт фикса валит именно его тест подтверждено исполнением). Финал агентское адверсариальное ревью диффа (4 оси findrefute-by-default verify, authorreviewer): 1 CONFIRMED minor (неточность коммента о recall у union закрыт, см. оговорку 4), 0 critical/major. Осведомлён о D26-заморозке этапа B: пакет 5 остаётся в очереди (line-4 CURRENT-STATE) и гейтит этап B; фиксы валидны независимо от editor-диагностики exp12.
**Сделано:**
1. **Per-model floor `min_max_tokens` (D24.3) — смена wire-поведения.** Поле в схему `capabilities` (`config.CapabilitiesConfig.MinMaxTokens`), резолвится через `ResolveCapability` (провайдермодель) и живёт в `llm.Capability` (тег `json:",omitempty"`) **фолдится в snapshot автоматически** и для primary (`ResolveCapability(st.Model)`), и для hop (`ResolveCapability(st.EscalateTo)`) правка флора = громкий `--resnapshot`. Применение: `Runner.applyModelFloor(base, model)` ДО request_hash на праймари (`stagerun.go`, по `st.Model`) И на хопе (`escalation.go` `maybeEscalate`, по `st.EscalateTo`: `hopMaxTokens` в fbHash И в runAttempt ровно фикс этапа A, где хоп наследовал 2048/3291 finish=length). Флоры в `models.yaml`: deepseek-v4-flash/pro **8000**, gemini-3.1-pro-preview **8000**, kimi-k2.6 **16000**; glm-5/5.1/grok-4.3 без поля. Комментарии-заглушки «дать 8000/16000» схема. Валидация `min_max_tokens<0`. README-техдолг обновлён (комментарийсхема). Флор не течёт в тело как ключ (`applyToBody` его не читает) только через max_tokens; резерв EstimateUSD растёт на флорнутых вызовах, committed по факту не меняется.
2. **Post-check `dstFormPresent`: базовый dst всегда проверяется (D24.4) — смена вердиктов.** Множество проверяемых форм = `{normalizeTargetForm(dst)} declForms` ВСЕГДА (было: база только фолбэк при пустом decl). Закрывает 37/55 ложных промахов этапа A (nominative_gap: approved-dst в именительном, decl только косвенные). Union монотонен (только промахпасс) precision↑; poisoning ловится по-прежнему (тест). recall на измеренных данных не страдает, НО строго это precision/recall-трейдофф с узким классом ложных пропусков см. оговорку 4. inflection_gap (18/55, мн.ч.) остаётся сид-фиксом полигона.
3. **Golden re-capture — дифф-класс ПУСТОЙ (byte-identical, sha256 совпал, git diff пуст).** Прогон `TM_UPDATE_GOLDEN=1` не изменил `capture.golden`. Причина (проверено чтением фикстуры): (а) фикстура использует ТОЛЬКО нефлорнутые `fake-model`/`fake-fallback` floor 0 нет wire-изменений; `omitempty` держит Capability-JSON нефлорнутых моделей байт-в-байт snapshot неизменен; (б) в сиде каждый entry с непустым decl уже несёт базовый dst первой формой, а два записанных промаха (紋章герб ch1/0; 竜の紋章Драконья печать ch2/0) НЕ имеют в проверяемом выходе ни базовой формы, ни decl-формы union не спасает ни один вердикты неизменны. Пустой дифф санкционированных классов {(a) max_tokens флорнутых, (b) postcheck-вердикты}. Оба новых поведения покрыты выделенными mutation-verified юнит-тестами (golden их не упражняет нет флорнутых моделей/oblique-only-сида в фикстуре).
4. **Тесты (все новые mutation-verified; числа):**
- `TestMinMaxTokensFloorPrimary/Hop/FoldedIntoSnapshot` (`maxtokens_floor_test.go`, новый): primary флор на wire (max_tokens==8000); хоп re-флорится по СВОЕЙ модели (primary=512, hop=9000 доказывает per-call, не global); правка флора двигает snapshotID. Мутации: снять primary-флор 5128000 FAIL; хоп наследует базу 5129000 FAIL.
- `TestPostcheckBaseDstAlwaysChecked` (`memory_e1_test.go`): repro этапа A (方源Фан Юань, oblique-only decl + именительный в выходе промаха НЕТ) + негатив (dst и все формы отсутствуют промах ЕСТЬ). Мутация: реверт к empty-decl-фолбэку положительный кейс валится с `[{方源 Фан Юань confirmed}]`.
- `TestRunnerEscalationBudgetExhaustionDeniesLaterHop` (`escalation_budget_test.go`, новый; D24.1г): 2-главный epub, оба чанка эхают, budget 0.001 < 1 хоп. Гл.1 хоп допущен (spent 0<budget) OK; гл.2 хоп ДЕНИЕД (spentbudget) флаг остаётся, edit skip, escalation-spend ровно 1 хоп (денег на деньед-хоп $0), 4 вызова, exit 2. Мутация: `spent<budget+1e9` гл.2 эскалирует, 6 вызовов FAIL.
- `TestCoverageGateCatchesArtificialExcision` (D24.1б, предсуществовал пакет coverage-гейта): синтетические пропуски (drop 30/40/50/60% предложений × zh/ja/en) recall **12/12 = 100%**, контроль 0 ложных. Усилил: recall-число теперь ПИННУЕТСЯ ассертом (`caught==total`), не только логом; 90%-бар приёмки сохранён.
- `TestErrTailTruncatesOnRuneBoundary` (`render_test.go`; D23.4): >120 байт с континьюейшн-байтом на офсете 120 → валидный UTF-8, без U+FFFD, суффикс «…». Мутация: `!RuneStart(...)&&false``\xd1…` невалид FAIL (реверт фикса раньше выживал сьют — гэп закрыт).
- `TestRetryLoopLogsWillRetryOnlyWhileAttemptsRemain` (`httpllm_test.go`; D23.4, slog-capture): персистентный 5xx, MaxAttempts=3 → ровно 2 «will retry» (не на последней попытке), несут `retry_in`, финал — «exhausted». Мутация: снять `att+1>=MaxAttempts break` → 3 «will retry» FAIL.
- kill9 rounds 3→5 (`kill9_test.go`, D23.4). Комментарий golden_test.go:32 смягчён (AMBIGUOUS-ячейка: выбрано смягчение коммента, НЕ правка фикстуры — держит golden байт-в-байт; ambiguous=0 в капче задокументирован, AMBIGUOUS>0-ячейка = опц. расширение фикстуры отдельной ратификацией).
**Оговорки / вопросы оркестратору:**
1. **Golden не упражняет новые поведения** (флор/union) — фикстура нефлорнута и сид уже полон базой-в-decl. Покрытие — выделенными тестами. Рекомендация (опц., отдельная ратификация): при следующем осознанном golden-рефреше добавить в фикстуру (i) стадию на флорнутой модели и (ii) entry с oblique-only decl + именительным в выходе — тогда golden запинит и wire-max_tokens флора, и union-вердикт. Не делал сейчас: это правка фикстуры = golden-дифф класса ВНЕ {a,b} санкции пакета.
2. **Реальный `configs/models.yaml` теперь даёт другой snapshot** для deepseek/gemini/kimi (флор в Capability). Ожидаемо и совпадает с планом D24.5 «фиксы → единый resnapshot → этап B»; книга gu-zhenren вне git, resnapshot на её стороне. Тесты boevoy-конфига (echo_mine) зелёные.
3. **Порядок floor vs global MinMaxTokens:** оба — max(), порядок неважен; флор только ПОВЫШАЕТ (0 не понижает). Хоп: `max(унаследованная_база_праймари, флор_хопа)` — наследование бюджета сохранено (мандат), флор добавлен сверху.
4. **⚠ Пинг (зона docs/, формулировка D24.4): «recall не страдает» у union-фикса — НЕТОЧНО.** Адверсариальное ревью пакета (4 оси find→verify, 1 CONFIRMED minor) поймало: расширение accepted-set монотонно (только промах→пасс), это precision/recall ТРЕЙДОФФ, не бесплатный выигрыш. На данных этапа A убранные промахи — все ложные (precision↑, 37/55). Но есть узкий РЕАЛЬНЫЙ класс потери recall: entry, у которого decl БЕЗ именительного И база — нарицательное слово, которое встречается в выходе отдельно, тогда как сам термин для своего вхождения ДРОПНУТ (`剑→меч` дропнут как «клинок», но «меч» стоит рядом не по делу) → bag-of-words-проверка пасует, дроп замаскирован. На реальных данных редко (транслит-имена не совпадают случайно) и ТЕРПИМО пока это ФЛАГГЕР. **Если `postcheck_gate` когда-либо флипается в hard-gate — обязателен пере-замер recall на нарицательных терминах (не предполагать).** Код НЕ менял (union = ратифицированный D24.4); поправил только собственный коммент в `mempostcheck.go` на честный трейдофф + предупреждение о промоушене. Поведение/golden не тронуты. Рекомендация: в D24.4-логе смягчить «recall не страдает» → «на измеренных данных recall не страдает; hard-gate требует пере-замера».
### 2026-07-12 (пакет D15.2 · ЭТАП А — качественные фиксы D30, гейтят пере-прогон 25 глав) — ЗАВЕРШЁН · лендится ОТДЕЛЬНО и ПЕРВЫМ
По `BACKEND_D152_SESSION_PROMPT.md` этап А. **Ничего не закоммичено** (лендинг — оркестратор). `go build ./... && go vet ./... && go test -race ./...` — зелёные. Golden re-captured осознанно (инвариант №8). Зона чистая: правил только `backend/`; чужие правки `docs/PROGRESS.md` (полигон exp13, «Полигон»-секция) и `eval/exp13_*` НЕ трогал. Финал — адверсариальное ревью диффа (воркфлоу, 4 оси find→verify-by-refute, author≠reviewer): **14 CONFIRMED (все — ложные срабатывания санитайзера на легитимной ru-прозе; 0 после фиксов), 0 в интеграции/golden/контракте вне санитайзера.**
**Сделано (4 фикса D30):**
1. **Билингв-редактор (флип D1→D30.1, supersede D17.в).** `prompts/editor.md` стал БИЛИНГВ (форма D13.1 — простой general-промпт: блок `{{text}}`=исходник + инструкция сверять смысл/чинить кальки жестов, БЕЗ сложного инжиниринга). Раннер УЖЕ передаёт `Text: ch.Text` каждой стадии (`stagerun.go:59`) → editor.md просто ссылается на `{{text}}`. Моно-вариант сохранён отдельным файлом `prompts/editor-mono.md` (подтверждающий пилот-арм D13.1; тот же reflow, отличие — наличие исходника). Тест `TestEditorPromptIsMonolingual``TestEditorPromptIsBilingual`.
2. **Reflow (D30.2).** Из `translator.md` и `editor.md` убрано «Сохраняй разбивку на абзацы» (корень нечитаемости exp12 §2.5-S). Редактору — мандат нормативной репараграфизации (логические ru-абзацы; реплики с нового абзаца через тире «—»; без максимума длины). Bump prompt_version: translator `v0-draft``v1-reflow`, editor `v1-monolingual``v2-bilingual-reflow` в pipeline-c1.yaml И c2.yaml (label-SHA дисциплина — общие файлы). *(Полигон-пинг: reflow залёндён как активная инструкция ПОСЛЕ их exp13-армов; пере-прогон обязан идти на этом прод-промпте — согласовано.)*
3. **Output-санитайзер (D30.3) — новый детерминированный вердикт-гейт-класс** (`sanitizer.go`, `sanitizerVersion="sanitizer-v1"`). Opt-in `gates.sanitizer.enabled` (коверейдж-паттерн), фолдится в снапшот ТОЛЬКО при enabled (`sanitizerSnapshot`, зеркало coverageSnap → переедет в verdictSnapshotID с D15.2). Дефект → `FlagSanitizerDefect` (D2 flag+skip, non-retryable/non-escalatable). **Плагин в `classifyOutput` — бежит ТОЛЬКО на ФИНАЛЬНОЙ стадии** (`isFinal`, протянут через runAttempt/maybeEscalate): промежуточный черновик легитимно черновой, редактор его чистит — санитайзить draft значило бы скипать спасающий editor (правка по ревью). Пять классов, precision>recall: ведущая преамбула (gemini 6/6), хвостовой блок заметок/правок, markdown-###, латиница-фраза (≥5 ПРОБЕЛ-смежных лат-слов ИЛИ тяжёлая доля; hex/id и ≤4-словный мото НЕ триггерят), битые словоформы (невалидные знаковые биграммы ь/ъ+буква/сдвоенные; гомоглиф кир+лат в токене; junction-дубликация ≥4 БЕЗ containment). Regex Unicode-корректны ([а-яё]/\P{L} — RE2 \w/\b ASCII-only). Санитайзер в pipeline-c1.yaml ВКЛЮЧЁН (пере-прогон: gemini течёт преамбулой, премиум-редактор за санитайзером). **⚠ Честный recall-gap (пинится `TestSanitizerBrokenWordRecallGap`):** чистый орфо-раскол «Первок предок» детерминированно НЕ ловится (нужна Ф2-морфология).
4. **Golden re-capture + расширение фикстуры D28.2** (закрывает оговорку 1 пакета-5). Осознанный re-capture. Дифф-классы: (a) `"sanitizer":{...}` в payload + флаги ch6; (b) `MinMaxTokens` в Capability + max_tokens →4000(×12)/6000(×2); (c) oblique-only union ch5; (d) 2 новые главы. Пины (все mutation-verified исполнением): **floor** (fake-model 4000, fake-fallback 6000 — хоп берёт СВОЙ 6000); **union** (ch5 老人→старик oblique-only, финал несёт номинатив «старик» → postcheck_miss=0 только через union; revert→FAIL); **sanitizer+isFinal** (ch6 draft И edit несут преамбулу — с isFinal флагается edit-финал, draft ok; revert isFinal → флагается draft → golden diff).
**Тесты (mutation-verified):** `sanitizer_test.go` — 5 классов × firing+non-firing на реальной ru-прозе, ВКЛ. все 14 ревью-FP как non-firing (полиптотон «старик старика», «Хорошо хорошо», мото «sic transit gloria mundi», «Изменения —», «Комментатор», буква-ъ, em-dash+общий-нарратив) + hex-регрессия + recall-gap + детерминизм. Golden пинит floor/union/sanitizer/isFinal (мутации подтверждены). Obsolete-D1 тесты обновлены (`TestEditorPromptIsBilingual`, `TestBoevoyConfigEditorGlm5AndGrokReasoning`: editor grok-4.3→glm-5).
**НАШЁЛ БАГ (фикстура поймала):** латиница-детектор считал hex-теги (`138fd5c384e3`) «латинской фразой» (одиночные лат-токены между цифрами) → ложно флагал ЛЮБОЙ чанк с alphanumeric-id. Фикс: фраза считается только по ПРОБЕЛ-смежным лат-словам. Пинится hex-кейсом.
**Оговорки / вопросы оркестратору:**
1. **[РЕШЕНИЕ на подтверждение] Editor-модель pipeline-c1/c2 сменена grok-4.3→glm-5** (D30.1: билингв glm-5 — кандидат value; grok reasoning-off из редакторов СНЯТ = no-op). Формально стадия-А промта — про промпты/санитайзер/golden; смену МОДЕЛИ сделал, т.к. grok-off-editor ратифицированно-мёртв и оставить = внутренне-противоречивый конфиг (билингв-промпт на no-op reasoning-off grok). Draft оставлен deepseek-v4-flash (интерим). **Пинг: полигон exp13 рекомендует draft=deepseek-v4-pro** (их «Полигон»-запись выше, на ратификацию) — если ратифицируете pro, одна строка `model:` в pipeline-c1.yaml + пересмотр хоп-1.
2. **[recall-gap санитайзера, precision>recall]** битые словоформы ловят только детерминированный минимум (невалид-знаки/гомоглиф/junction-dup). Чистый раскол «Первок предок» — Ф2-морфология. Пинится как ОСОЗНАННАЯ граница. Достаточно ли (рекомендация: да — FP роняет хороший чанк в плейсхолдер владельцу)? Плюс латиница-мото ≥5 слов — принятый редкий FP (opt-in, redrive поднимает человеку).
3. **[санитайзер = гейт, не наблюдаемость]** реализован как opt-in гейт (flag+skip), НЕ наблюдаемость-с-промоушеном. Когда OFF — не бежит (нет retrieval_state-колонки → без миграции в этапе А). Always-on наблюдаемость счётчиков при OFF = +колонка (следующий пакет, если нужно).
4. **[resnapshot]** реальный pipeline-c1.yaml даёт другой снапшот (промпты+модель+санитайзер) — это ЕДИНЫЙ resnapshot пере-прогона (D30.9); gu-zhenren вне git.
**Попутно (fix-листы, безопасные, зелёные):** models.yaml — комменты xai/gemini приведены к D27 (единый ключ+data-sharing, off перед продом) и D22.6/exp11 (Gemini fail-closed на эротике, первичный судья эротики Grok; grok из редакторов СНЯТ D30.1); `mempostcheck.go:84` D24.3/D24.4→D24.4 (D28.3в); `escalation.go applyModelFloor` — note о provider_local×floor латентной интеракции (D28.3б). D22.9 `redrive --resnapshot` — покрытие УЖЕ есть (`TestParseRedriveSelectorExplicit` + `TestRedriveResnapshotAcceptsDrift`), no-op.
**Статус этапов Б/В (НЕ гейтят пере-прогон — по этапности промта идут следом):**
- **Спека D15.2 доведена до v3.1** (§0-бис: D22.2-амендменты — `SourceLang`/`TargetLang``verdictSnapshotID` (cjk-gate/coverage-коридор вне рендера; editor.md не рендерит target_lang), `Context.CacheTTL` демотирован до advisory (wire-инертен — `clients.go:38` шлёт `prov.CacheTTL`), `prov.CacheTTL``wireSnapshotID`; axis-тест `RequestHash` §12.9; паритетные не-цели §8 (classify-Source editor-строк, Retries/BudgetUSD вне ключа, транспорт); line-ref-нот про рефактор D23). Реализация РАЗБЛОКИРОВАНА в спеке.
- **Реализация Б (три хеша/guard_hash/verdict-split/миграция v8/fast-path v2/dry-run+--accept-rebill) и В (`tmctl export`/annotations/цвет-мап/override) — НЕ начаты этой сессией.** Осознанное решение: Б трогает денежно-критичный resume-путь (`RequestHash`, fast-path), где рывковая частичная реализация рискует ровно минами F1/D15 (тихая переоплата / stale-serve), а безопасный лендинг Б связан (fast-path снимает loud-гейт согласия → dry-run обязан его заменить, §7) — всё-или-ничего. Бюджет сессии ушёл на гейтящий этап А (полный цикл + ревью, поймавшее 14 реальных FP санитайзера) + v3.1-спеку. Хендофф чистый: спека v3.1 = дизайн-оф-рекорд, план §12 + тест-лист §12.9 готовы для следующей бэкенд-сессии. Дерево -race зелёное на границе А.
### 2026-07-12 (мини-сессия D33.1/33.2 — 2 обязательных фикса санитайзера + golden re-capture, гейтят пере-прогон) — ЗАВЕРШЕНО
По `BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`. **Ничего не закоммичено** (лендинг — оркестратор). `go build ./... && go vet ./... && go test -race ./...` — все пакеты зелёные; gofmt чисто. Зона: только `backend/` (3 файла: `sanitizer.go`, `sanitizer_test.go`, `testdata/golden/capture.golden`). Чужой untracked `eval/exp13_seed_signoff.py` (полигон) НЕ трогал. **Все 4 фикса/пина mutation-verified исполнением** (revert→FAIL, restore→ok — по каждому в изоляции).
**Сделано:**
1. **[major D33.1а] Хвостовой класс теперь ловит «Основные правки для справки:».** В `editMetaAnywhereRE` добавлена high-precision альтернатива `основн…правк…` — гейтится «… для справки» ИЛИ двоеточием, так что нарративное «Основные правки внёс редактор газеты» (без summary-метки) НЕ фаерит. Ловит и «Основные правки для справки:» (утечка A5/5_1, exp12:229), и colon-вариант «Основные правки:». Пины: 2 fire-теста, воспроизводящие СТРУКТУРУ утёкшего блока (заголовок + список правок; копирайтную главу не встраивал — диагностика в заголовке) + 1 clean-пин на нарративную форму без метки.
2. **[major D33.1б] Класс junction-дубликации СНЯТ (опция (б)), НЕ сужен.** Разобрал: опция (а) «перекрытие ≥ бо́льшей части ОБОИХ токенов» математически обратна — все четыре кейса (три FP + единственный синтетический реальный «Первопред предок») делят overlap РОВНО 4 руны, причём у реального кейса доля перекрытия НИЖЕ (4/9) чем у FP (4/5); никакой порог на длину/долю overlap их не разделяет, а канонический «Первок предок» не ловился и так (recall-gap). Класс ловил мало реального и много ложного на частом предлоге «около» → флаг-шторм на 25 главах. Убраны `junctionDuplicated`, конста `junctionOverlap`, петля в `detectBrokenWords`; остались две ZERO-FP сигнатуры (невалид-знак ь/ъ, гомоглиф кир+лат). Пины: 3 clean-кейса «около колонны»/«около колодца»/«стало талой» (mutation: восстановил детектор → все три фаерят). `TestSanitizerBrokenWordRecallGap` сохранён (assertion как есть; коммент обновлён — «Первок предок» по-прежнему не ловится, теперь by-design).
3. **[minor D33.2] Быстрые сужения (в тот же resnapshot, не блокеры):** (а) markdown-заголовок требует букву/цифру после хешей → декоративные сцен-брейки «# # #», «## ***», «### ---» больше не фаерят (пины + fire «### 1. Вступление»); (б) heavy-латиница исключает капитализированные бренд-токены из счёта (`hasUpperLatin`) → список «iPhone, iPad, MacBook, Apple Watch, Google Pixel» не фаерит, а лоуэркейс-англ-фраза ловится фразовым детектором (пин). Хвостовые «Примечание:»/«Комментарий:» уже ловятся `trailingNoteRE` — без правки. Разговорный префикс «Конечно!/Готово!» и recall-gap «Первок предок» — приняты как границы (не трогал).
4. **Golden re-capture (`TM_UPDATE_GOLDEN=1`) — дифф-класс РОВНО санкционированный.** `sanitizerVersion` `sanitizer-v1``v2` (правка правил = loud --resnapshot, инвариант №8). Аудит диффа исполнением: маскированный дифф (все hex-хеши + версия → плейсхолдер) **ПУСТ** — т.е. изменились ТОЛЬКО `snapshot_id` + `snapshot_payload` (строка `"version":"sanitizer-v2"`, дважды: fresh+resume) + каскад request/content-хешей, ключёванных на snapID. Ноль дрейфа disposition/flag/final_text/cost/postcheck_miss/injected_ids/term-order; 0× `snap_match=false`; счётчик строк 206=206. Фикстура ch6 упражняет только класс Preamble (не затронут) → новых санитайзер-вердиктов НЕТ, только version-fold-каскад. Другого класса диффа нет → стоп/пинг не потребовался.
**Итог по вопросу промта («сузил/снял»):** класс «битые словоформы» — junction-подкласс **СНЯТ** (precision-обоснование выше); два high-precision подкласса сохранены.
## Полигон
(секция параллельной сессии — записи добавлять сюда)
*(Закрытая хроника сессий 13, 18+ пакетов и exp10/11 (0410.07) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
### 2026-07-11 — exp12 «диагностика качества 25 глав» (D26, приоритет №1) — армы+судьи+root-cause СДЕЛАНЫ, чтение владельца ждём
Мандат `POLYGON_QUALITY_DIAG_SESSION_PROMPT.md` + аддендум оркестратора (D27: единый xAI-ключ, grok-армы без ограничений; backend/ — живая сессия №5, ничего там не гонял/не читал WIP; пакеты чтения → `diag/reading/`). **Ничего не закоммичено.** Отчёт: `docs/experiments/12-quality-diagnosis.md`. Артефакты/тексты — `/home/ubuntu/books/gu-zhenren/diag/` (ВНЕ git). Скрипты `eval/exp12_*.py`. **Потрачено ≈$2.22 из капа $5** (армы $0.78 / судьи $1.31 / демо $0.13; 0 ошибок).
**Дизайн (пре-регистрация §1 заморожена ДО платных вызовов):** 3 чистые главы выбраны формулой (диалого-плотность на исходнике, high/mid/low = гл.7/5/14, не черри-пик); армы A0 черновик · A1 glm-моно(=этап A, store $0) · A2 glm-билингв · A3 grok-моно · A4 grok-билингв · A5 gemini-билингв · A6 grok-моно-без-констрейнтов; +A1 контроль рига. Инъекция глоссария реконструирована из `retrieval_state.injected_ids` (воспроизводит боевой блок; rig-фиделити A1≈A1 sim 0.9841.0).
**Находки (мех. + судьи вторично; чтение владельца — главный, ещё не пришло):**
1. **Ядро: моно-редактор ПАССИВЕН.** Активность (1sim к черновику): glm-моно **0.013**, grok-моно **0.001** (3/6 чанков char-identical!), grok-моно-без-констр 0.004, **grok-билингв тоже 0.006** (reasoning-off инертен в ОБОИХ режимах). Реально правят только glm-билингв 0.14 и gemini-билингв 0.34. На всех 54 чистых чанках этапа A медиана draft→final sim **0.978**, канцелярит-маркеров снято **0**. «Нечитаемо, слабейшее редактура» = **редактор почти не редактирует**; нечитаемость унаследована от черновика.
2. **Монолингвальный режим (D1/D17) — корень.** Моно-редактор и пассивен, и структурно СЛЕП к искажениям черновика (без исходника не знает, что «ударил головой»=磕头 земной поклон). Фикс = **билингв** (флип D1 — ратификация оркестратора).
3. **grok-4.3 reasoning-off непригоден как редактор** (no-op; худший у судей). exp04-ранг-1 был на дефолт-reasoning+билингв; боевой off = инертен (quality-transfer риск exp08/D26 подтверждён числами). Грок-редактор — только reasoning-ON (D6.2-резерв).
4. **Судьи (gemini+grok+gpt5-mini, кросс-семейно, self-family excl, 26/27 парс):** билингв ≫ моно; **A2 glm-билингв единогласный #1 по стилю И верность 5.0****fidelity-гейт «гладко-неверное» пройден** (билингв не купил гладкость ценой смысла — страх кальки D1 на срезе не подтвердился). Оговорка: судьи держат вёрстку константной → недооценивают структурный дефект; валидируют модель×режим, не фикс вёрстки.
5. **Root-cause (кейсы владельца, гл.1 сцена смерти, сверено с zh):** структурный дефект №1 = **построчные абзацы** (оба промпта велят «Сохраняй разбивку на абзацы» → пайплайн копирует кит. «предложение=строка», для ru деструктивно; бьёт по всем главам). Остальные кейсы — ошибки ЧЕРНОВИКА deepseek (时辰 не переведён, 派→«фракции» вместо секты, 磕头→«ударил головой», 练成→«совершенствование»), НЕ спасённые пассивным моно-редактором; 1 «smooth-wrong»-подозрение (清白之身→«невинность») проверено — верно. Демо §2.6 (gemini-билингв + разрешение реверстать абзацы + жанр-правила) чинит ПРАКТИЧЕСКИ ВСЕ кейсы одним прогоном (абзацы 49→25, «фракции»→«школы», «обесчестил»).
**Рекомендация конфига (provisional, §3; смену дефолта НЕ делаю — ратифицирует оркестратор):** три ортогональных фикса — (а) убрать «Сохраняй разбивку на абзацы» из брифа zh→ru + разрешить реверстку (дешевле всего, заметнее всего); (б) **редактор билингв, не моно** (флип D1); (в) модель — **glm-5 билингв** (судейский #1, верность 5.0, **$0.42/25 гл**), премиум-потолок gemini-билингв ($5.6/25 гл, селективно); grok-off снять. Плюс курация глоссария (моя зона): 春秋蝉 «Цикада Весны и Осени»? · 派→секта · 时辰→глосса. Дорожка: ратификация (флип D1+вёрстка = D-блок) → пере-прогон 25 глав кандидатом → чтение владельца → этап B.
**Раунд 2 (чтение владельца состоялось, §4 отчёта):** вердикт — **ни один из 7 не дотягивает до чтения** («машинный, модели не следят за сюжетом»). Новое: (1) **⚠ gemini (A5) ТЕЧЁТ преамбулой** в выход («Вот отредактированный перевод…», wire-verified 4 чанка) → дефект продакшн-редактора + раздул мою метрику активности A5; glm/grok чисто → **gemini понижен**. (2) **Глоссарий — сквозная первоклассная проблема** (владелец прав): все армы делят один сид; 修炼/人祖 — GAP (не в сиде, «совершенствование»/«Первопредок» = выбор модели → засидить культивация/Рен-Зу?), 蛊师/蛊虫/甲乙丙丁/花酒行者 — lock (гу-мастер/гу-тварь/разряд-Г/Винный-Странник → переголосовать с владельцем); таблица current→pref в §4.2, пере-курация = моя зона после утверждения. (3) **Идея «модель гуглит термины» (владелец) — в доках НЕТ**; ближайшее D25.5 (веб=недоверенные данные, webfetch=Ф3-блокер) → автолукап = Ф3+, near-term = засид глоссария из фан-конвенций; **пинг оркестратору** зафиксировать owner-proposal в архитектуру. (4) **Кандидат-фикс** (glm-билингв+реверстка+конвенции, `diag/arms/CAND/`) — конвенции ставит, БЕЗ утечки, но реверстку абзацев делает нестабильно → layout надёжнее отдельным reflow-пассом/сильной моделью. (5) **Монитор** `diag/reading/monitor.html` (локальный, вне хостинга — копирайт) — оригинал+варианты+кандидат, кнопки копировать для флагман-сверки владельца. Рекомендация §3 дополнена: **4-й равноправный фикс — пере-курация глоссария**; gemini понижен.
**Раунд 3 (флагман-сверка состоялась, §5 отчёта):** владелец прогнал монитор через ДВА фронтир-флагмана (GPT + Claude) слепо + любительский релейный перевод (контроль). Un-blind по ключу монитора (`diag/reading/_РАСШИФРОВКА_ФЛАГМАНОВ.md`; полный разбор Claude — `ОЦЕНКА_ФЛАГМАНА.md`). **Корректность проверена:** оба читали `monitor.html` (8 вариантов — столько только у монитора) + `translate.txt`, ключи не открывали, конфаундинга меток монитор↔пакеты нет (чистые 8-ранги), «переработки» выведены чтением и un-blind'ятся ровно в {A5,A2,CAND} = доказательство слепоты; единственный de-blind — gemini сам палит утечкой (мой стриппер снял ведущую форму, пропустил хвостовую в `A5/5_1`). **Конфиг-итог (оба флагмана СОГЛАСНЫ):** gemini-билингв (GPT 7.7 / Claude ранг 1.0 — лучшее ЯДРО, но течёт) > glm-билингв (7.3/2.7) ≈ КАНДИДАТ (7.2/2.3) ≫ **glm-МОНО=этап A (6.2/6.0, низ — подтверждает «нечитаемо»)** ≈ черновик/grok-no-op (~5). **Тройная триангуляция** (механика §2.2 + судьи §2.3 + 2 флагмана): билингв-переработка ≫ моно/пассив; практич. выбор — glm-билингв/КАНДИДАТ. **Флагманы добавили сверх:** (а) никто не publishable («крепкий сетевой», не издательская проза); (б) чтобы победить фан — 3 вещи: принудительный глоссарий + евро-вёрстка с тире + сноски на аллюзии; (в) нужен **output-санитайзер** (утёкшие заметки/непереведённые слова/латиница-в-кириллице/диакритики/битые словоформы — новый класс дефектов вне гейтов); (г) сквозные ошибки ЧЕРНОВИКА deepseek (族长≠家老, 本命蛊, 长生=бессмертие не долголетие, 失神, 花酒行者 теряет 花); (д) экспертные глоссарии от обоих — материал для пере-курации. **Стратегия честно:** сценарий A+B — инкремент даёт «лучше фана», но «издательский уровень» требует более сильного ЯДРА (переводчик, пилот Ф2.5) → приоритет ядра растёт.
**Ждём:** (1) **Пере-курация глоссария** — утверждение владельцем терминов (§4.2 + флагман-таблицы: врата→апертура, 真元, 本命蛊→жизненный гу, 长生→бессмертие, 族长/家老; спорное — Первопредок/Жэнь Цзу, культивация/совершенствование — за владельцем) → засид GAP + переголос lock → resnapshot. (2) **Оркестратору:** ратификация флипа D1 (моно→билингв) + бриф вёрстки + **новые задачи**: output-санитайзер (класс «мгновенной нечитаемости»), сноски-на-аллюзии, и — по сигналу флагманов «издательский уровень требует ядра» — поднять приоритет выбора базового переводчика/пилота Ф2.5; фиксация owner-proposal «автолукап терминов = Ф3». Дефолт сам не трогаю. (3) Полигон №4 (сид мн.ч.) — второй приоритет, не начат.
### 2026-07-12 — exp13 «бейк-офф ПЕРЕВОДЧИКОВ + финализация сида v2» (D30.6, приоритет №1) — СДЕЛАНО
Мандат `POLYGON_EXP13_SESSION_PROMPT.md` + D30.6/30.10. **Ничего не закоммичено, КРОМЕ пре-регистрации** (D30.10-гейт: коммит §1 до первого платного вызова — 5bc75d0, path-scoped только exp13-док). Отчёт: `docs/experiments/13-translator-bakeoff.md` (§1 пре-рег заморожен → §2 результаты → §3 рекомендация → §4 сид v2 → §5 лимитации → §6 итог). Артефакты `diag/arms13/` + `diag/reading/monitor13.{html,md}` (ВНЕ git). Скрипты `eval/exp13_*.py`.
**Рекомендация (на ратификацию оркестратора — дефолт НЕ трогал): переводчик пере-прогона = `deepseek-v4-pro`** (superseding deepseek-v4-flash в draft-стадии). Триангуляция **7 сигналов** (агент-верность/проза + GPT + Opus + API-судьи верность/стиль + гейты) сходится: deepseek-pro — общее место **2.50 ①**, лучший СТИЛЬ, 2-я верность, самый стабильный, без катастроф; ~$0.23/25 глав. Порядок: pro **2.50** > mistral 2.92 > grok 3.10 > flash-база 3.16 > glm-5 3.33. Нюансы: база flash — лучшая верность (2.53) но худший стиль (течёт англ. «cultivation», markdown-###); mistral — лучшая проза но режет смысл + выброс заголовков (полнота); grok/glm-5 нестабильны (grok перевернул 供奉; glm-5 成→«десятки»). **Гипотеза D30.6 «качество сменой одной строки model:» — подтверждена ЧАСТИЧНО** (pro>flash по стабильности/стилю, не разгромно; подъём даёт СВЯЗКА draft+билингв-редактор+sanitizer+глоссарий). Сквозные дефекты (англ.-течь, ###, 成) — цели sanitizer D30.3 + сид v2, не выбора переводчика. Все армы прошли гейты (0 эхо/refusal/объём — контест честный).
**Сид v2 финализирован (D30.5):** `guzhenren-seed-v2.yaml` (57 терминов) единым трансформом `eval/exp13_seed_v2.py` (супрсидит exp12-скрипт — дефект провенанса/статусов). Спорные (修炼/修行, 人祖, 花酒行者, 蛊虫, 本命蛊 + род «гу») → **status:draft** (не в hard-constraints до подписи); бесспорные (8 правок + 5 добавлений) → approved; влито мн.ч. (D24.4: 元石/凡人/蛊师). **Таблица владельцу на подпись: `diag/glossary_v2_signoff.md`.** Аддендум провенанса — exp12 §4-addendum.
**Флаги оркестратору/бэкенду:**
- **Reflow-строка (мой пинг D30.2 закрыт):** бэкенд залендил `translator.md` reflow как АКТИВНУЮ инструкцию (в 05:50, ПОСЛЕ моего арм-прогона); мои армы гнались с reflow-как-удалением. Ранг устойчив, но **пере-прогон 25 глав обязан идти на залёнженном прод-промпте**. Кросс-контаминации НЕ было (reflow-guard харнеса; все 24 вызова прошли ⇒ старый промпт был у всех армов; бэкенд правил файл после).
- **⚠ Перерасход бюджета:** армы $0.109 + судьи $5.387 = **$5.50 vs кап $5** (~+10%). Коарс-кап (между судьями, не по-вызову) + gemini думал дороже оценки ($3.14) + kimi $2.0. Дисциплинарный промах, зафиксирован; фикс — кап по каждому вызову. Данные собраны, дальше не трачу.
- **Слепота цела** (Opus поднял флаг «метки не перетасованы» — опровергнут кодом: три перестановки различны, mistral совпадением в слоте V3 трижды; попутно вскрыт реальный дефект mistral — выброс заголовков).
- Если pro становится праймари черновика — **пересмотреть хоп-1 эскалации** (был deepseek-pro; теперь первый кросс-семейный = glm-5.1).
**Ждём от владельца:** (1) **подпись спорных сида v2** (`diag/glossary_v2_signoff.md`) → проставлю статусы; (2) флагман-сверка через `monitor13.md` (опц., 4-й голос — GPT+Opus уже дали, сходятся с судьями). **Оркестратору:** ратификация draft=deepseek-v4-pro (D-блоком) → единый resnapshot (draft=pro, editor=glm-5-билингв, reflow, сид v2, sanitizer) → пере-прогон 25 глав с re-gate верности. Полигон №4 (сид мн.ч.) — влит в v2, отдельная задача закрыта.
## Память
(секция ресёрч-сессий памяти — записи добавлять сюда)
*(Хроника валидации банка (0405.07, research/1314, вердикт GO) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
## Голос и состояние
(секция ресёрч-сессии — записи добавлять сюда)
*(Хроника сессии «Голос и состояние» (09.07 → research/15, D21) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*
## Ридер-IDE
(секция ресёрч-сессии — записи добавлять сюда)
*(Хроника сессии «Ридер-IDE» (11.07 → research/16, D29) — в [archive/PROGRESS-2026-07-04-10.md](archive/PROGRESS-2026-07-04-10.md), D31.)*