Ratify D33 accepting backend D15.2 stage A with two mandatory sanitizer fixes before re-run, confirm editor glm-5 and unified resnapshot, issue sanitizer-fix prompt

This commit is contained in:
Claude (backend session) 2026-07-11 14:52:57 +03:00
parent 00f8e36fbd
commit 8c3d387639
5 changed files with 54 additions and 3 deletions

View file

@ -1,6 +1,6 @@
# Промт: приёмочная сессия Ф1 — ПЕРЕ-ПРОГОН 25 глав кандидат-конфигом → этап B (2026-07-12, D30.9)
> **Предусловие запуска (все ЧЕТЫРЕ, иначе стоп и пинг оркестратору):** (1) бэкенд-пакет D15.2 **этап А** залендён (билингв-редактор D30.1 + reflow D30.2 + output-санитайзер D30.3 + новый golden); (2) exp13 закрыт — переводчик пере-прогона выбран (D30.6); (3) сид v2 финализирован, спорные термины подписаны владельцем (D30.5); (4) **единый resnapshot выполнен** (промпты+сид меняют wire/вердикты → это НЕ дубль оплаты этапа A, а новый снапшот по ратифицированной смене поведения). Чистое дерево (`git status`; в дереве часто ДВЕ живые сессии — чужие правки не трогать).
> **Предусловие запуска (все ПЯТЬ, иначе стоп и пинг оркестратору):** (1) бэкенд-пакет D15.2 **этап А** залендён (билингв-редактор D30.1 + reflow D30.2 + output-санитайзер D30.3 + новый golden — D33, коммит 00f8e36) **+ 2 обязательных фикса санитайзера (D33.1: хвостовая утечка «Основные правки для справки»; false-positive «около колонны»/«стало талой») залендены с golden re-capture**; (2) **переводчик пере-прогона = deepseek-v4-flash СОХРАНЁН** (exp13/D32 — pro отклонён; escalate_to=pro без изменений); (3) сид v2 финализирован, спорные термины + род «гу» подписаны владельцем (D32/`diag/glossary_v2_signoff.md`); (4) `escalation.budget_usd>0` в c1 (D22.11 — иначе echo-эскалация не стреляет); (5) **единый resnapshot выполнен** (промпты+editor-модель+санитайзер-фикс+сид v2 — всё в один снапшот; это НЕ дубль оплаты этапа A, а новый снапшот по ратифицированной смене поведения). Чистое дерево (`git status`; в дереве часто ДВЕ живые сессии — чужие правки не трогать).
---

View file

@ -0,0 +1,36 @@
# Промт: бэкенд-мини-сессия — 2 обязательных фикса output-санитайзера (D33.1) + golden re-capture (2026-07-12)
> **Гейтит пере-прогон 25 глав.** Санитайзер (D30.3, `sanitizer.go`) залендён (D33, 00f8e36) и **включён в `pipeline-c1.yaml`**, но ревью нашло 2 major-дефекта, которые backend-ревью пропустило. Оба правят вердикт-ось → **golden re-capture обязателен** (инвариант №8, D23.1). Правки вольются в единый resnapshot пере-прогона (нулевая доп. цена).
---
## Кто ты
Бэкенд-мини-сессия. Зона: `backend/` + секция «Бэкенд» в `PROGRESS.md`. **Ничего не коммитить** — лендинг оркестратора. Пакет крошечный и целевой: 2 регекс-фикса санитайзера + пины + golden. Не расползаться (этап Б/В D15.2 — отдельный промт после пере-прогона).
## Онбординг
1. `CLAUDE.md` → CURRENT-STATE → **D33 целиком** (мандат; особенно D33.133.2) → D30.3 (санитайзер) → D23.1 (процедура golden).
2. `docs/experiments/12-quality-diagnosis.md:229` (точная строка хвостовой утечки gemini A5/5_1 «Основные правки для справки» — цель фикса 1) + шапка D30.
## Задачи
### 1. [major] Хвостовой класс ловит «Основные правки для справки» (D33.1а)
Санитайзер ловит ВЕДУЩУЮ gemini-преамбулу, но НЕ хвостовую форму «**Основные правки для справки:**» + список — ту самую утечку A5/5_1 (exp12:229), ради которой гейт включён. Сейчас `sanitizer.go:164/171` матчат только примечание/заметки/сноска и внесённ+правк/что изменено/список правок — «для справки»/«основные правки» проваливаются.
- Фикс: high-precision альтернатива на «основные правки»/«для справки» (эти фразы в НАРРАТИВЕ не встречаются — низкий FP-риск).
- Пин: fire-тест точной строкой 5_1 (хвостовой блок должен флагаться).
### 2. [major] Класс «битые словоформы» ложно флагает нормальную прозу (D33.1б)
`junctionDuplicated` (`sanitizer.go:356`) фаерит «около колонны», «около колодца», «стало талой» ТАК ЖЕ, как реальный «Первок предок» — гард полиптотона (`:362`) исключает только префикс-вложенность, а эти пары лишь случайно делят 4+-рунную морфемную границу, не содержа друг друга. «около» — частый предлог → флаг-шторм на 25 главах легитимного текста. Гейт включён в c1.
- Фикс на выбор: (а) требовать, чтобы перекрытие покрывало **бо́льшую часть ОБОИХ токенов** (не просто 4+ руны общей границы); ИЛИ (б) **снять класс целиком** — он и так признаёт (`TestSanitizerBrokenWordRecallGap`), что канонический «Первок предок» не ловит (recall-gap до Ф2-морфологии), т.е. класс ловит мало реального и много ложного. Реши по precision: если после сужения (а) класс всё ещё даёт FP на прозе — снять.
- Пины: clean-кейсы «около колонны»/«около колодца»/«стало талой» (НЕ флагать) + сохранить recall-gap-тест как есть.
### 3. Мелочи (документировать границей ИЛИ быстро сузить — не блокеры, D33.2)
Латиница-heavy на 5+ брендах («iPhone, iPad, MacBook…») — исключить капитализированные одиночные латинские токены из heavy-count; хвостовой «Примечание:»/«Комментарий:» в последних строках; «# # #»/«## ***» разделители (требовать букву/цифру после хешей). Разговорный префикс «Конечно!/Готово!» перед преамбулой — recall, precision-over-recall дизайн, ОК (не трогать). Recall-gap «Первок предок» — **принятая граница** до Ф2-морфологии (не чинить).
### 4. Golden re-capture
Правки 12 меняют вердикт-ось → `TM_UPDATE_GOLDEN=1`; дифф-класс задокументируй — изменения ДОЛЖНЫ исчерпываться sanitizer-version-бампом + (если фикстура ch6 упражняет затронутые классы) вердиктами санитайзера. Любой другой класс = стоп и пинг оркестратору.
## Дисциплина
Только санитайзер + пины + golden; никаких других wire-правок. Каждый фикс/пин mutation-verified; `go build/vet/test -race` чисто. `git status` перед стартом (в дереве могут быть чужие правки). `.env` не читать. Отчёт: секция PROGRESS «Бэкенд» — дифф-класс golden, числа пинов, что решил по классу «битые словоформы» (сузил/снял). Не коммитить.

View file

@ -1,7 +1,7 @@
# Журнал прогресса
> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (обновляемый блок; на 2026-07-12). **Источник истины по РЕШЕНИЯМ — `architecture/05-decisions-log.md` (D1D31); этот файл — ЖУРНАЛ, не спека.**
> - **Фаза:** 0 ✅; Ф1-машинерия ✅ (D21D28); **приёмка этап A ✅ с оговорками (D24); этап B заморожен (D26) до читаемых 25 глав.** **exp12-диагностика ПРИНЯТА (D30): «нечитаемо» = пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + нет санитайзера; дефекты смысла — в черновике.** Ратифицировано D30: **флип D1 моно→билингв** (supersede D17.в; re-gate верности на пере-прогоне обязателен), reflow-вёрстка (промпты чинятся), output-санитайзер (новый гейт-класс), глоссарий v2 условно (спорные → draft до подписи владельца), **exp13 бейк-офф ПЕРЕВОДЧИКОВ** (deepseek качеством не мерен — главный невыжатый рычаг), COGS флипа +1525% (~$0.85/ранобэ; «$1.52» = отдельная опция Б). **exp13 ПРИНЯТ (D32): черновик flash СОХРАНЁН (pro отклонён по данным), сид v2 принят под подпись владельца (6 спорных + род «гу» в `diag/glossary_v2_signoff.md`); мн.ч. влито → полигон-№4 сид-задача закрыта. Очередь: бэкенд-пакет D15.2 (`BACKEND_D152_SESSION_PROMPT.md`: этап А=промпты+санитайзер гейтит пере-прогон; Б=v3.1+реализация; В=export/override D29) ∥ подпись владельца сида → единый resnapshot → пере-прогон 25 глав кандидатом (flash+свзяка) с re-gate верности → чтение владельца → этап B.** Трек владельца: дешёвые модели сейчас, фронтир потом (архитектура конфиг-первая — D30.7). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6).
> - **Фаза:** 0 ✅; Ф1-машинерия ✅ (D21D28); **приёмка этап A ✅ с оговорками (D24); этап B заморожен (D26) до читаемых 25 глав.** **exp12-диагностика ПРИНЯТА (D30): «нечитаемо» = пассивный моно-редактор + кривой сид + построчная вёрстка от промптов + нет санитайзера; дефекты смысла — в черновике.** Ратифицировано D30: **флип D1 моно→билингв** (supersede D17.в; re-gate верности на пере-прогоне обязателен), reflow-вёрстка (промпты чинятся), output-санитайзер (новый гейт-класс), глоссарий v2 условно (спорные → draft до подписи владельца), **exp13 бейк-офф ПЕРЕВОДЧИКОВ** (deepseek качеством не мерен — главный невыжатый рычаг), COGS флипа +1525% (~$0.85/ранобэ; «$1.52» = отдельная опция Б). **exp13 ПРИНЯТ (D32): черновик flash СОХРАНЁН (pro отклонён), сид v2 под подпись владельца. Бэкенд-пакет D15.2 ЭТАП А ПРИНЯТ и залендён (D33, 00f8e36): билингв-редактор+reflow+санитайзер+golden — golden байт-в-байт, конфиг-флип D32 соблюдён; НО 2 обязательных фикса санитайзера до пере-прогона (D33.1: хвостовая утечка + false-positive «около колонны»). Этап Б/В D15.2 осознанно не начаты (Б трогает денежный resume-путь). Очередь: фикс санитайзера (`BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`) ∥ подпись владельца сида → единый resnapshot (промпты+editor+санитайзер-фикс+сид v2) → пере-прогон 25 глав (flash+свзяка, budget_usd>0) с re-gate верности → чтение владельца → этап B.** Трек владельца: дешёвые модели сейчас, фронтир потом (архитектура конфиг-первая — D30.7). Решающая точка — пилот Ф2.5 (блокеры: билингв-якорь/аннотаторы ≥3 — D25.9-Q1, корпус, проба судьи-дублёра — D22.6).
> - **Стек (пост-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** (修炼/культивация · 人祖/Первопредок · род «гу» · 花酒行者 — таблицу даст exp13) · **флагман-сверка 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).
@ -102,6 +102,8 @@
**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 — катастрофа класса забракованных армов; по верности (ось черновика-под-редактором) flash≥pro, 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 grok→glm-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.)*

View file

@ -16,7 +16,7 @@
- `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22).
- `research/` — фактура исследований 0405.07: `0110` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**.
- `PROGRESS.md`**журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений).
- **Активные хендофф-промты**: [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (роль оркестратора) · [`BACKEND_D152_SESSION_PROMPT.md`](BACKEND_D152_SESSION_PROMPT.md) (**пакет D15.2: этап А промпты/санитайзер D30 — гейтит пере-прогон; Б реализация v3.1; В экспорт/override D29**) · [`POLYGON_EXP13_SESSION_PROMPT.md`](POLYGON_EXP13_SESSION_PROMPT.md) (**exp13: бейк-офф переводчиков + сид v2 — приоритет №1 полигона, D30**) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (полигон №4: D22.8-остаток — второй приоритет) · [`ACCEPTANCE_SESSION_PROMPT.md`](ACCEPTANCE_SESSION_PROMPT.md) (приёмка Ф1: **этап A ✅ D24; этап B ЗАМОРОЖЕН D26**; следующий шаг — пере-прогон 25 глав кандидатом D30). Закрытые (пакеты №35, erotica, «Голос и состояние», GPT-восхождение → research/17, ридер-IDE → research/16, exp12 → D30) — в `archive/prompts/`.
- **Активные хендофф-промты**: [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (роль оркестратора) · [`BACKEND_SANITIZER_FIX_SESSION_PROMPT.md`](BACKEND_SANITIZER_FIX_SESSION_PROMPT.md) (**2 обязательных фикса санитайзера D33.1 — гейтит пере-прогон**) · [`BACKEND_D152_SESSION_PROMPT.md`](BACKEND_D152_SESSION_PROMPT.md) (пакет D15.2: **этап А ✅ D33; Б реализация v3.1 + В экспорт/override — промт после пере-прогона**) · [`ACCEPTANCE_SESSION_PROMPT.md`](ACCEPTANCE_SESSION_PROMPT.md) (приёмка Ф1: **этап A ✅ D24; этап B заморожен D26**; следующий шаг — пере-прогон 25 глав flash+свзякой D33.6, предусловие из 5 пунктов) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (⚠ до-D30 хвост: сид-часть закрыта exp13, живо только D22.8-остаток — освежить/не запускать как есть). Закрытые (пакеты №35, erotica, «Голос», GPT-восхождение → r/17, ридер-IDE → r/16, exp12 → D30, **exp13 → D32**) — в `archive/prompts/`.
- `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять).
## Статус (2026-07-12)

View file

@ -405,6 +405,19 @@ D1 остаётся дефолтом Фазы 1 (менять конфигура
5. **Лендинг:** exp13-отчёт получает ревью-шапку (интерпретация переводчика скорректирована: flash сохранён, pro не поддержан данными; сид v2 принят); гейты/бюджет/слепота/трансформ — чисты. Дорожка: **подпись владельца сида ∥ бэкенд-пакет D15.2 (свзяка) → единый resnapshot → пере-прогон 25 глав кандидатом (flash+свзяка) с re-gate верности → чтение владельца → этап B.**
## D33. Приёмка бэкенд-пакета D15.2 этап А (билингв-редактор + reflow + санитайзер + golden): принят, 2 обязательных фикса санитайзера до пере-прогона (12.07, оркестратор). ✅
Внешнее ревью (4 оси исполнением в scratchpad-копиях WIP, при чистом дереве кроме этого пакета): **golden ACCEPT, wiring ACCEPT, sanitizer/spec-scope ACCEPT_WITH_FIXES. Пакет залендён (00f8e36).** Верифицировано исполнением: (а) golden байт-в-байт воспроизводим (TM_UPDATE_GOLDEN=1 → тот же sha256), **дифф-класс ровно санкционированный** (санитайзер-fold + floor + D28.2-фикстура; 0 дрейфа term-order/injected-id на старых чанках), все 3 новых поведения **запинены мутацией** (floor 4000→4200, union-реверт ch5 postcheck 0→2, isFinal-guard removal ch6); (б) билингв {{text}} доказан рендер-пробой (edit-стадия USER несёт исходник перед черновиком; `stagerun.go:59` Text:ch.Text безусловно), reflow снят из обоих промптов + мандат репараграфизации, prompt_version бампнут в c1/c2, snapshot дополнительно хеширует PromptSHA256; (в) **конфиг-флип D32 соблюдён** — editor=glm-5, draft=deepseek-v4-flash, escalate_to=deepseek-v4-pro и цепочка [pro,glm-5.1,gemini] НЕ тронуты, grok как редактор отсутствует; (г) build/vet/test-race зелёные, спека v3.1 §0-бис — только дизайн (RequestHash/fast-path не тронуты — этап Б НЕ утёк), скоуп backend-only, деньги/схема/миграции не тронуты, контрабанды нет.
1. **Два ОБЯЗАТЕЛЬНЫХ фикса санитайзера ДО пере-прогона** (оба ревью нашло, backend-ревью пропустило; санитайзер enabled в c1). Правят вердикт-ось → **сворачиваются в тот же единый resnapshot пере-прогона + golden re-capture** (нулевая доп. цена — resnapshot и так предстоит):
(а) **[major] хвостовой класс НЕ ловит «Основные правки для справки»** — ту самую gemini-утечку A5/5_1 (exp12:229), ради которой гейт enabled; ловит ведущую преамбулу, но не хвостовую форму → контаминированный чанк уйдёт в TM/экспорт без флага. Фикс: high-precision альтернатива на «основные правки/для справки» + fire-тест точной строкой 5_1.
(б) **[major] класс «битые словоформы» ЛОЖНО флагает нормальную прозу** — «около колонны/колодца», «стало талой» фаерятся как реальный «Первок предок» (гард полиптотона исключает только префикс-вложенность, не случайное совпадение морфемной границы 4+ руны); «около» частый → флаг-шторм на 25 главах. Фикс: требовать перекрытия бо́льшей части ОБОИХ токенов ИЛИ снять класс (он и так признаёт, что канонический «Первок предок» не ловит — recall-gap до Ф2-морфологии). + clean-пины «около колонны»/«стало талой».
2. **Мелочи санитайзера (документировать как границы ИЛИ быстро сузить, не блокеры):** латиница-heavy на 5+ брендах (исключить капитализированные одиночные латинские токены); хвостовой «Примечание:»/«Комментарий:» в последних строках; «# # #»/«## ***» разделители (требовать букву/цифру после хешей); разговорный префикс «Конечно!/Готово!» перед преамбулой (recall — precision-over-recall дизайн, ок). Recall-gap «Первок предок» — **принятая граница до Ф2-морфологии**.
3. **Ответы на вопросы бэкенда:** (1) **editor grok-4.3→glm-5 — ПОДТВЕРЖДЁН** (D30.1: grok reasoning-off-редактор = ратифицированный no-op; glm-5-билингв — кандидат; оставить grok = противоречивый конфиг). (2) Латиница-мото/«Первок предок» как «принятые FP» — **частично отклонено**: recall-gap «Первок предок» принят, но FALSE-POSITIVE-классы («около колонны», латиница-бренды) фаерятся на легитимной прозе — НЕ приемлемо, чинить (п.1б/2). (3) **Да, этот resnapshot (промпты+editor-модель+санитайзер) = единый resnapshot пере-прогона** (D30.9) — в него же вливаются 2 фикса санитайзера + подписанный сид v2.
4. **Структурные ноты (fix-лист, не блокеры):** (а) `editor-mono.md` — свеже-производный (не старый editor.md дословно), с reflow, DORMANT (ни в один конфиг не подключён) — подключить к конфигу до пилот-арма D13.1 (reflow в моно-арме корректен: изолирует source-visibility как единственную переменную A/B); (б) санитайзер enabled в c1, ОТСУТСТВУЕТ в c2 (c2 — неисполнимый Ф2-скелет, нет Ф1-влияния; включить когда c2 оживёт — gemini-эскалация c2 тоже течёт); (в) golden НЕ пинит билингв {{text}}/reflow prompt_version (фикстура держит свой моно editor.md — инвариант №8 не покрывает эту wire-правку; follow-up: перевести golden-editor.md на билингв ИЛИ выделенный ассерт).
5. **Этап Б (реализация content-addressed resume) и В (`tmctl export`/annotations/override) — НЕ начаты, осознанно** (backend): Б трогает денежно-критичный resume-путь (RequestHash/fast-path) — рывковая частичная реализация рискует минами F1/D15 (тихая переоплата/stale-serve); Б связан (fast-path снимает loud-гейт согласия → dry-run обязан заменить §7 — всё-или-ничего). Спека v3.1 = дизайн-оф-рекорд, план §12 + тест-лист §12.9 готовы. **Порядок правильный: этап А гейтит пере-прогон, Б/В — нет.** Промт следующей бэкенд-сессии на Б+В — выдам после пере-прогона (исход чтения может уточнить экспорт-требования В).
6. **Дорожка:** обязательные фиксы санитайзера (п.1) — быстрый backend-follow-up ∥ подпись владельца сида v2 (D32) → **единый resnapshot** (промпты+editor+санитайзер-фикс+сид v2) → пере-прогон 25 глав (flash+свзяка, `escalation.budget_usd>0` — D22.11, иначе echo-эскалация не стреляет) с re-gate верности → чтение владельца → этап B.
## Сопутствующие правки доков (оркестратор, 09.07)
`02-mvp-plan.md` → v3 (мёртвые пороги/интерим-18+/фазовые списки синхронизированы с D-логом); обе `*.puml` → v3 (убраны Opus/BYOK/«≤2×», дорисованы ре-гейт эскалации, три класса отказов D12, человек в петле, фазовые пометки); superseded-баннеры на `research/01, 02, 03, 04, 09`; провенанс-шапки на `research/12-architecture-as-antipattern.md` и `12-common-failures.md` (происхождение не зафиксировано — до уточнения владельцем числа оттуда не абсорбировать как факты); закрытые промты → `docs/archive/prompts/`; онбординг: корневой `CLAUDE.md` + `backend/README.md` + `eval/README.md`.