# exp15 — эмпирика сегментации/когезии/контракта t-e (research/19 §D, трек B)

> Полигон-сессия, 2026-07-17. Промт: `docs/POLYGON_SEGMENTATION_EMPIRICS_SESSION_PROMPT.md`.
> Дизайн-оф-рекорд: `docs/research/19-chunking-cohesion.md` §D (Q0–Q5). Зона: `eval/` + `docs/experiments/`.
> Скрипты — семья `eval/exp15/`. Выходы/сырьё — ВНЕ git (`/home/ubuntu/books/gu-zhenren/exp15/`).
>
> **СТАТУС: §1 ПРЕ-РЕГ ФРИЗ — ЗАПОЛНЕН, ждёт (а) подписи владельца на 3 гейтах §1.13 и (б) коммита
> ДО первого платного вызова.** §2–§6 заполняются по ходу прогона. НИ ОДНОГО платного вызова ещё НЕ было.

---

## §1 — ПРЕ-РЕГИСТРАЦИОННЫЙ ФРИЗ

### §1.0 Дисциплина и провенанс

- Пре-рег = единственный коммит этой сессии; всё после первого платного вызова НЕ меняется (иначе новый
  experiment-ID). Мандат самопроверки (CLAUDE.md): ревью ИСПОЛНЕНИЕМ кода + сформированных запросов +
  результатов — в каждый скрипт; каждый платный скрипт персистит usage/cost (D30.10).
- **Правило двух направлений соблюдено**: все слаги подтверждены И живым `/models` (`eval/exp15/preflight_models.py`
  → `exp15/preflight_models.json`), И официальной вендор-докой (12-агентный веб-workflow → `exp15/freeze_facts.json`,
  5/6 тем CONFIRMED, 1 PARTIAL с явным caveat). Даты/URL — в `freeze_facts.json`.
- Анти-сходимость (D32.4): все контрасты делят один якорь A0 → их «победы» коррелированы и НЕ суммируются
  в «N сигналов сходятся»; повторы судей давят судейский шум, НЕ шум генерации якоря (двойной якорь A0↔A0′).

### §1.1 Пины (хеши — состояние на момент фриза)

| Что | Значение | Примечание |
|---|---|---|
| Бэкенд HEAD | `68032f7` | ≥ `d3f6b34` (пак-1: trust-gated suppressor, memmatch-v4, sanitizer-v5, pair-сеам). Дерево ЧИСТОЕ (трек A залендён). |
| Сид (снапшот-основа) | `guzhenren-seed-v2.yaml` sha256 `175a67ad2f05caeaec8fc5b8c8d304334e8dc73eebd3caf5fc3b4b8be0c408f4` | gender-полон (12/13 person; `古月`=n-a клан). `人祖`=male ДОБАВЛЕН (подпись владельца, канон D19.3) — байт-стабильно (diff=1 строка, идемпотент). Пол в memory-хеше (`memory.go:273`) → resnapshot. |
| translator.md | sha256 `35d3ad6e0656a7d1116fb8b034a4cea087d5c11ac6e043804185f94f15af5829` | prod prompt (`v1-reflow`); несёт инертный reflow-однострочник (L10) — §C1 предлагает снять, но A0 = ТЕКУЩИЙ prompt как есть. |
| editor.md | sha256 `878b0da397eda5392950a5fa43a87e575b09cf6aa352d8e58ea2da26b55d8290` | prod prompt (`v3-discourse-reflow`). |
| editor-mono.md | sha256 `a8aaa38ea529e7344c4ce08f000f862cfa7a3fe4c5b3a6bba08a1a22cfeb189c` | моно-редактор (не в A0-стеке; пин для полноты). |
| A0 pipeline | `backend/configs/pipeline-c1.yaml` + `gates.regression_guard.enabled: true` | §1.2. |
| chunkerVersion | `chunker-v4-utf8-quotedepth` (const) | greedy-1500 = CODE-const (`chunker.go:47`), НЕ config-кноб. |

### §1.2 Якорь A0 и реконструкция инъекции (по ТЕКУЩЕМУ Go)

**A0 = прод-кандидат пост-D38.5:** draft `deepseek-v4-flash` (`v1-reflow`, temp 0.3, **thinking ON** —
конфиг-строка `reasoning:"off"` для deepseek — NO-OP, echoMineViolation-гейт принуждает thinking; при
расхождении верить Go) → editor `glm-5` (`v3-discourse-reflow`, temp 0.4, thinking OFF), **greedy-1500**,
**без когезии** (`stm_depth:2`/`overlap_tokens:200` — МЁРТВЫЕ кнобы, реального carryover в prod НЕТ),
**RegressionGuard ON** (наблюдаемость, не диспозиция), `glossary_token_budget:800`, сид reseed-промоутнутый.

**Реконструкция инъекции — КРИТИЧНО (порт exp14b СТАЛ, не использовать):**
- $0-пути к `retrieval_state.injected_ids` НЕТ (persist только ПОСЛЕ платной стадии в `translateChunk`;
  единственный бинарь `tmctl`, ingest вплавлен в платный `translate`).
- Python-порт `exp14b_reseed_promote.py` (find/suppress/render) **поведенчески устарел**: он кодирует
  ДО-trust-gate longest-match (spoiler-only `valid_suppressor`), а текущий Go `suppressContained`
  (`memory.go:684-726` + `matchTrust`/`trustRank` `640-668`) — disposition/trust-gated. Порт разойдётся с
  A0 ровно на draft-nests-over-approved (суть пак-1). **НЕ реюзать порт для инъекции.**
- **Метод (принят):** A0/A0′ генерятся РЕАЛЬНЫМ бэкендом `tmctl translate` (аутентичный trust-gated
  matcher), из его `retrieval_state.injected_ids` (SQLite `retrieval_state`) читаются авторитетные
  инъекционные id; контраст-армы (eval-риги) ПОТРЕБЛЯЮТ эти же id (общий знаменатель). Дамп:
  `sqlite3 <book>.db "SELECT chapter,chunk_idx,injected_ids,n_trust_gated_suppress,trust_gate_detail FROM retrieval_state ..."`.
- **Архитектурное следствие (несущее):** бэкенд НЕ умеет производить арм-механизмы (logical-chunker,
  carryover/lookahead, diff-editor, edit=глава, wide-read — все ОТСУТСТВУЮТ в prod: greedy-1500 const,
  кнобы мёртвые, diff-парковка D21.4). Значит **только A0/A0′ — из реального бэкенда; ВСЕ механизм-армы
  (Q1/Q2a/Q2c/Q3a-b/Q4a-c) — eval-риги** (Python, паттерн exp14/arms), реализующие §B1.4-B1.5/§B3/§C2
  ДИЗАЙН и потребляющие аутентичную A0-инъекцию. Риги — «порт-зеркала в своей зоне, при расхождении верить Go».

### §1.3 Корпус S1–S4 (структурные профили — ДО прогона; `eval/exp15/structural_profile.py`)

| Срез | Материал | Профиль (замерен) | Роль | Статус |
|---|---|---|---|---|
| **S1** плоский zh | 蛊真人 поздние 节 (высокий `--sec`, низкая violence-плотность), вне slice25 | median 29 cjk/строка, term 4.46/100c, **0 орнамент-разделителей во ВСЕЙ книге** (2308 节), flat_line_per_sentence=True | точка фоллбек-режима | ✅ материал есть; ⚠ IN-претрейн (принято §D0: S1 валиден для нарезки/внутрипарных, «вне претрейна» несёт S2) |
| **S2′** синтетич. сцен-маркир. zh (склейка) | конкатенация ПЕРВЫХ последоват. 节 蛊真人 (решение владельца); швы = ground-truth сцен-границы | по построению: швы-границы | **несущий**: где Q1 дифференцирует (выравнивание разрезов на швы) | ✅ материал есть (§1.14). ⚠ IN-претрейн + синтетика → ПРЕДВАРИТЕЛЬНО; свежая новелла = чистовое подтверждение (НЕ гейт) |
| **S3** ja-ранобэ | `isekai_majutsushi_jp.txt` | median 46, dialogue-opener 0.45 (line-per-utterance), 86 разделит.-строк (`＝`), 43 話, scene_marked=True | нагрузка carryover/пол | ✅ $0 чанкер-профиль (без платных арм) |
| **S4** длинно-абзацный en | `fifty_shades_1_en.txt` | mean 107 cjk/строка (длинные абзацы), blank-run 0.99, 52 Chapter, cjk 0 | контроль общности §0.1 | ✅ $0 чанкер-профиль; caveat: US/UK совр., не европ.классик (альт. PD — `samples/en/*` без билдера) |

Платные армы перевода — ТОЛЬКО S1/S2 (zh→ru, единственные прод-промты). S3/S4 — $0 детерм. валидация
общности чанкера. **Пре-ран проверка «срез задействует рычаг»**: S1 подтверждён flat (проверяет фоллбек-лестницу
B3/B4/DP); S2 обязан нести орнамент/сцен-сдвиги (проверяется профилем ДО платного прогона, когда материал будет).

### §1.4 Трап-набор (§D1)

- **Типы и min-N (общий знаменатель, определяется как пересекающий границу В ЯКОРЕ A0):** T-ana ≥20,
  T-ent ≥20, T-tense ≥20 (несущие); T-cat ≥10, T-ell ≥10, T-gen ≥10, T-reg ≥10, T-inv ≥10 (контроль/реюз exp14b).
- **Майнер трапов = `kimi-k2.6`** (Moonshot) — ИСКЛЮЧЁН из судейского пула, семья ≠ арм-моделям (DeepSeek/GLM)
  и ≠ судьям (xAI/Mistral). Кандидаты добываются майнингом + ручной отбор.
- **Стратификация по дистанции антецедента** (публикуется per-трап): квота в пределах K=3 предложений
  (зона carryover) vs дальше K (зона окна/Ф2) — иначе Q3a «выиграет» по построению.
- **Общий знаменатель контраста:** трапы определяются в A0; в ОБОИХ армах скорится ОДИН набор; пересёк/не
  пересёк границу в арме — записываемая КОВАРИАТА, НЕ фильтр. Исключаются только не-пересекающие НИ в одном арме.
- **Ожидаемое поведение каждого трапа записано ДО прогона**; недобор → домайнить до квоты ДО платных вызовов,
  иначе тип помечается «Q недоказуем a priori» (не после).
- **T-gen** использует поле `gender` сида (§1.11); если подпись не успевает до Q3a′ — арм честно «стейт без пола».

### §1.5 Армы — 2-арм контрасты к общему якорю (§D2, дословно + конкретизации)

Якорь A0 на несущем S2 генерится ДВАЖДЫ (A0↔A0′, temp>0) = floor шума генерации; Q-эффект < floor не интерпретируется.

| Q | Контраст (одна переменная) | Первичная метрика (ОДНА) | Реализация |
|---|---|---|---|
| **Q1** | greedy vs **logical-граница** (§B1.4/B1.5-DP) на **S2′**, оба на size-matched бюджете **~3–4k ток** (различие ТОЛЬКО в выравнивании разрезов на швы; размер-эффект → Q2) | T-tense+T-ana точность на S2′ (общ.знам.); вторично: доля разрезов на scene-shift-швы (выше=лучше) vs continuation-швы (ниже=лучше) | eval-риг: Python-DP чанкер (порт §B1.5) → армы через его границы |
| **Q2a** | A0 vs edit=глава (draft приколочен к greedy-1500, крупнеет ТОЛЬКО эмиссия редактора) | retry-adj cost-of-pass при reflow-инвар. omission не хуже A0 | eval-риг: editor glm-5 на объединённом чанке |
| **Q2b** | реюз sizecurve (800/1600/3200/whole, ch17/13) + omission-скоринг ($0 генерации) | reflow-инвар. omission per size | **$0**, `exp14/sizecurve/*`, err-фолбэки исключить |
| **Q2c** | A0 vs широкое-чтение/узкая-эмиссия (эмиссия=чанк, окно=сцена read-only) | T-ana+T-tense точность при out-ток ≈ A0 | eval-риг glm-5; кэш z.ai ВЕРИФИЦИРОВАН (§1.9) → cache-normalized колонка ЛЕГИТИМНА |
| **Q3a** | A0 vs +carryover(K=3): 3 режима src-only/draft-сосед/final-сосед; стейт — суб-арм Q3a′ | T-ana+T-ell точность per режим (Q3a′: T-gen/T-reg) | eval-риг: билингв невыровненный хвост в промт |
| **Q3b** | A0 vs +lookahead M=2 (src-only, шов-дедуп-гард ON) | T-cat точность (пустая ячейка exp14) | eval-риг |
| **Q4a** | A0 vs сильный переводчик (draft=`deepseek-v4-pro`) + суб-арм strong-draft+do-nothing | fidelity-трапы ЧЕРНОВИКА до редактора (span) | eval-риг; v4-pro держит семью DeepSeek (mistral свободен под судью) |
| **Q4b** | A0 vs diff-fidelity+style редактор (§C2; ±сегмент-маркеры) | trap-точность (T-inv) при формат-комплаенсе ≥90% | eval-риг: anchored search/replace + Go-стиль tolerant apply (Python-порт) |
| **Q4c** | A0 vs reflow-план отдельным пассом (§C1.3) | mean_spp при omission-инвар.=0 (валидатор плана) | eval-риг |
| **Q0** | A0 vs do-nothing (экспорт черновика) | TOST-эквивалентность, маржа M на trap-точн.+KPI | **$0** генерации (do-nothing = экспорт draft) |

**Порядок/стоп-гейты:** Q2b($0, ре-атрибуция) → **Q1+Q3 (несущие, S2)** → Q2a/Q2c → Q4a/Q4b/Q4c → Q0
(обязателен, дёшев). Каждый Q — стоп-гейт; стоп при исчерпании бюджета легитимен (приоритет пре-рег);
НО стоп после Q2b НЕ закрывает центральный конфликт. Двойной якорь A0↔A0′ до интерпретации любого Q.

### §1.6 Метрики / агрегация (§D3)

- **Reflow-инвариантный omission (ГЛАВНЫЙ, валидируется на вручную вычитанном whole-chapter выходе ДО скоринга
  арм):** по КАЖДОМУ предложению источника — присутствие семантических атомов (числа, сущности/глоссарий-хиты,
  полярность отрицания) ГДЕ УГОДНО в целевом чанке. НЕ длинo-зависимые гарды (RegressionGuard/coverage смещены
  против крупных чанков — фабрикуют B0.4).
- **Детерминированные $0:** mean_spp / доля 1-предл. абзацев / диалог-тире / CJK-утечка (⚠ Han-в-скобках после
  кириллич.терма — НЕ штраф, решение владельца #3) / glossary-консистентность (LTCR по сиду) / доля классов
  границ / шов-дедуп / позиционный градиент ВНУТРИ арма.
- **Карта независимости сигналов:** метрики с общим драйвером длины (out-ток, mean_spp, длино-гарды) = ОДИН
  сигнал; «сигналы сходятся» требует ≥1 длинo-независимого (trap-точность/span-верность).
- **Trap-судьи:** ≥2 кросс-семейных (§1.10), temp 0, каждый пейр в ОБОИХ порядках; **6 голосов, при расколе ≤4:2
  → добор до 10** (ослабление против §A.7 «~10» — бюджетная поправка, фиксируется явно); leave-one-judge-out;
  катастроф-скрин К ПОБЕДИТЕЛЮ тоже; fidelity-first, без pooled-style.
- **Агрегация:** ПАРНЫЕ по-главные разности арм−якорь ВНУТРИ среза; кластер-SE по книге НЕ считаются (несущий
  срез ≈ 1 кластер) — генерализация на «любую книгу» = декларированное ограничение, закрываемое S1–S4-разнообразием;
  один первичный контраст на Q + Holm-Bonferroni; мощность честно: на 8–12 главах разрешимы средн./крупн. эффекты
  → первичны ТРАПЫ.
- **Слепота владельца:** финалисты — слепые пакеты (`exp15/monitor/`), метки перемешаны. **Человеческий эндпоинт
  гейтит** (планка 2 претензии, D35): метрики НОМИНИРУЮТ, ратифицирует слепое чтение владельца.

### §1.7 Дерево решений (§D5, пороги пинятся числом ДО прогона)

- **Q1:** T-tense+T-ana (общ.знам., S2) сдвиг ≥ **порог (пин: парная разность ≥ +0.10 доли починенных трапов, p<0.05
  Holm)** → строить §B1.4/B1.5-DP; null на S2 (НЕ только плоский S1) → граница вторична, приоритет когезии (Q3).
- **Q2a/Q2c:** Q2a-первичка (cost-of-pass при omission-инвар.) лучше A0 И Q2c НЕ воспроизводит окном → edit=глава
  легитимен (§A.8.1). Q2c воспроизводит (trap-первичка ≥ Q2a при меньшей эмиссии) → «мелкая эмиссия + широкое окно».
- **Q3a/Q3b:** знаменатель = кросс-граничные трапы, которые A0 ПРОВАЛИВАЕТ; carryover чинит **≥50%** → оживление
  ратифицируется (режим — по дельте src/draft/final + владелец §E.1); null при верифиц. пересекающих → когезия требует окна/Ф2.
- **Q4a:** strong-draft+do-nothing чинит **≥ пин-доли (≥0.5)** T-inv, что flash-draft валит, при COGS ≤ пин-потолка →
  арм «структура у переводчика» в прод-кандидаты.
- **Q4b:** формат-комплаенс <90% ИЛИ fidelity-first trap хуже full-regen → диффы откладываются (закрыть D21.4/D21.10 явно);
  ≥90% и атом-omission=0 → дифф-редактор в прод-кандидаты.
- **Q4c:** mean_spp ≥ A0 И атом-omission=0 при COGS ≤ A0×1.3 → reflow отдельным пассом; иначе остаётся в editor-промпте.
- **Q0:** TOST-эквивалентность (маржа **M пин: |Δ| < 0.05 доли** на первичках) A0↔do-nothing → мандаты редактора
  пересматриваются (APE-урок); НЕ-отвержение без эквивалентности = «данных мало».
- **Финал любой ветки:** прод-кандидат → слепое чтение владельца (гейтящий эндпоинт).

### §1.8 Слуги (live /models ✅ + вендор-док ✅, 2026-07-17)

Все присутствуют в /models. `deepseek-chat`/`deepseek-reasoner` депрекейтятся **2026-07-24 15:59 UTC** (оба → v4-flash);
арм-конфиг на `deepseek-v4-flash`/`-pro` — НЕ задет. Слуги: draft `deepseek-v4-flash`; editor `glm-5`; Q4a-strong
`deepseek-v4-pro`; судьи `grok-4.3`, `mistral-large-latest`(=Large 3); майнер `kimi-k2.6`; gpt-5.4=`gpt-5.4-2026-03-05`,
gemini=`gemini-3.1-pro-preview` (пины на случай эскалации/3-го судьи).

### §1.9 Цены, кэш, бюджет, капы (`exp15/freeze_facts.json`, `eval/exp15/budget_calc.py`)

Цены/1M USD (офиц., 2026-07-17): deepseek-v4-flash 0.14/0.0028/0.28; v4-pro 0.435/0.003625/0.87; glm-5 1.00/0.20/3.20;
grok-4.3 1.25–2.50/0.20–0.40/2.50–5.00 (reasoning additive out); mistral-large-3 0.50/–/1.50; kimi-k2.6 0.95/0.16/4.00;
gemini-3.1-pro 2–4/0.2–0.4/12–18 (thinking=output); gpt-5.4 2.50/0.25/15.00.
**Кэш ВЕРИФИЦИРОВАН**: z.ai/GLM auto-implicit, `usage.prompt_tokens_details.cached_tokens`, hit ~0.2×input →
**§E.8-бис гейт ПРОЙДЕН, Q2c cache-normalized колонка ЛЕГИТИМНА**; DeepSeek auto ~2%×miss; OpenAI/Gemini auto.

**Бюджет (recompute из trap-N×голоса×2 порядка×2 судьи):** несущий блок (Q1+Q3a+Q3a′+Q3b) armы $1.71 + судьи $6.66 +
майнер $0.27 = **$8.64**; полный пакет $13.13 — оба < **$15 (хард-кап владельца)**. **Апекс-судья gemini как 2-й = $44
несущий блок → ИНФИЗИБЛ**; grok+mistral — бюджет-вынужденный правильный выбор (зафиксировано).
**Капы:** per-call predicted-cost гейт ДО каждого вызова (в run-скриптах); стоп-гейт после каждого Q; хард-кап $15.
**Риск (пин):** DeepSeek анонсировал (SCMP/TNW 30.06) peak-surge ×2 в Beijing-часы (01–04 & 06–10 UTC) — НЕ на офиц.
таблице; митигация: платные DeepSeek-армы ВНЕ этих окон, либо ×2 бюджет; ре-чек у 24.07-катовера. Gemini thoughts-accounting
и glm-5 PAYG-доступ — эмпир-верификация на 1-token пробе у первого платного гейта (`freeze_facts.json` risks).

### §1.10 Судьи и майнер (семейно чисты)

- **Судьи (2 кросс-семейных):** `grok-4.3` (xAI, reasoning ON) + `mistral-large-latest` (Mistral Large 3). Ни один
  не из семьи арм-моделей (DeepSeek draft/Q4a, GLM editor) и не майнер (Moonshot). Опц. 3-й `gemini-3.1-pro` — ТОЛЬКО
  на leave-one-out подмножестве при остатке бюджета (иначе инфизибл).
- **Майнер:** `kimi-k2.6` (Moonshot) — исключён из судей, семья ≠ арм/судьи.
- **Отклонение от D-лог апекс-пары (grok+gemini):** заменён gemini→mistral как бюджетная поправка (§1.9); зафиксировано явно.

### §1.11 Gender-транспорт (решение владельца #2) + спорные

Поле `gender` УЖЕ в сиде и потребляется Go (`memseed.go:35`→`memory.go:273` хеш→store; `migrate.go:183` =
male|female|hidden|''). Транспорт `eval/exp15/gender_transport.py` — идемпотентен, байт-стабилен, пре-снапшот+лог+асерты
(паттерн exp14b_reseed_promote), audit-first (no-op на уже-гендерном сиде → snapshot-хеш СОХРАНЁН до подписи).
Аудит: **13 person-записей, теперь 12 гендерны** (方源/方正/古月X male, 沈翠 female, 白凝冰 hidden→гендерно-нейтр.,
**`人祖`=male — ПОДПИСЬ ВЛАДЕЛЬЦА, канон D19.3**); **`古月`=n-a** (клан, без поля — подтверждено). Подписи в
`exp15/gender_signoff.yaml` (пин). Транспорт применил 人祖→male байт-стабильно (diff=1 строка, идемпотент); новый seed-хеш §1.1.
**T-gen-трапы гонятся полноценно** (квота ≥10). Будущие трап-персонажи добавляются в signoff идемпотентно до Q3a′.
Scene-state слот (eval-side, Q3a′) surface-ит пол — self-review OK.

### §1.12 Отклонения от §D (явно)

1. Судья-пара grok+mistral вместо апекс grok+gemini — бюджет ($15 не держит gemini-thinking-output). §1.9/§1.10.
2. Голоса 6→10 (не «~10») — уже бюджет-поправка самого §D3, повторно фиксирую.
3. **Порт инъекции exp14b — НЕ реюзается** (поведенчески устарел до-trust-gate); A0-инъекция из реального `tmctl translate`. §1.2.
4. **Механизм-армы — eval-риги** (бэкенд не умеет logical/carryover/diff/wide-read); A0/A0′ — реальный бэкенд. §1.2.
5. S2 «свежий сцен-вебновелл» → **S2′ синтетическая склейка ПЕРВЫХ 节 蛊真人** (решение владельца): швы=ground-truth сцен-границы; РАЗБЛОКИРУЕТ платные Q1/Q3; репорт помечается «синтетика+претрейн, предварительно до чистого S2» (§1.14). Свежая новелла = чистовое подтверждение, НЕ гейт.

### §1.13 Гейты владельца — ЗАКРЫТЫ (2026-07-17)

- **A. S2-материал → S2′ (склейка ПЕРВЫХ 节 蛊真人), решение владельца.** Правила пре-рег — §1.14. Разблокирует Q1/Q3;
  предварительно (синтетика+претрейн), свежая новелла = чистовое подтверждение, не гейт. ✅
- **B. Gender подписан:** `人祖`=male (канон D19.3), `古月`=n-a (клан). Применено, seed re-hash §1.1, T-gen полноценно. ✅
- **C. Бюджет/судьи подтверждены:** $13.13/$8.64 в $15; grok-4.3 (reasoning-ON, **wire-чек ДО платных**) + mistral-large-3
  (слаг **live-фактчек ДО платных**); Q4a=deepseek-v4-pro; майнер kimi-k2.6 (из {openai/kimi/gemini}). ✅

### §1.14 S2′ — синтетическая сцен-склейка (пре-рег правила, решение владельца 2026-07-17)

Построение (`eval/exp15/build_s2prime.py`, детерминир., $0): конкатенация N ПЕРВЫХ последовательных 节 蛊真人 (opening-арка,
第一卷) в единый текст; ПЕРЕД склейкой — стрип 第X节-заголовков на швах (шов = НЕЯВНАЯ сцен-граница, без явного маркера).
Каждый шов = записанная ground-truth граница (rune-offset + пара соседних 节-id).
- **(б) Ручная классификация каждого шва:** «scene-shift» (реальная смена времени/места/POV/сцены) vs
  «continuation-cliffhanger» (节 обрывается посреди сцены, следующий продолжает). Раздельные страты; continuation-швы =
  **negative-boundaries** («здесь резать НЕЛЬЗЯ»). Классификация — чтением контекста шва; рационал per-шов в леджер §2.
- **(в) Q1-контраст на size-matched бюджете ~3–4k ток:** greedy vs logical — ОДИН бюджет, различие только в выравнивании
  разрезов на швы. Метрика границы (вторичная): доля scene-shift-швов, на которые разрез попал (выше=лучше) vs доля
  continuation-швов, разрезанных (ниже=лучше). Размер-эффект (1500 vs 3–4k) — домен Q2, НЕ Q1.
- **Трапы** размещаются straddling швов (кросс-граничные); T-* привязаны к scene-shift-швам (где граница ДОЛЖНА чинить).
- **(г) Оговорка репорта:** S2′ = синтетическая пере-нарезка IN-претрейн книги → результаты ПРЕДВАРИТЕЛЬНЫ; чистое
  подтверждение — на свежей вне-претрейн новелле, когда появится (не гейт запуска).

---

## §2 — Профили срезов + трап-леджер

**Структурные профили (`eval/exp15/structural_profile.py`, $0, ДО прогона — проверка «срез задействует рычаг»):**

| Срез | chars | median cjk/строка | term/100c | dialogue-opener | орнамент-строк | scene_marked | flat_LPS | вывод |
|---|---|---|---|---|---|---|---|---|
| S1 (guzhenren whole) | 7.99M | 29 | 4.46 | 0.19 | **0** | False | True | плоский фоллбек-режим ✓ |
| **S2′ (склейка 节1-12)** | 36,186 | 32 | 4.34 | 0.21 | 0 (швы неявные) | False | True | сцен-структура НЕЯВНАЯ на швах (§2 ниже) |
| S3 (isekai ja) | 232,921 | 46 | 3.26 | 0.45 | 86 (`＝`) | True | False | line-per-utterance + разделители ✓ |
| S4 (fifty-shades en) | 873,697 | 57 (mean 107) | 0.51 | 0.53 | 3 | True (blank-run 0.99) | False | длинно-абзацный ✓ |

**S2′ шов-леджер (`exp15/S2prime.txt`, `S2prime_seams.json`, `S2prime_seam_labels.json`):** 12 первых 节 蛊真人
(opening-арка), заголовки стрипнуты → 11 швов = ground-truth сцен-границы (rune-offsets: 3372/6496/8981/12214/14479/
17050/19960/23363/26698/29527/32558). Ручная классификация (полигон, рационал+цитата per шов — self-review в labels):

| Страта | швы | роль в Q1 |
|---|---|---|
| **scene-shift** (резать ХОРОШО) | 1,2,3,6,7,8,9 (7 шт; soft: 1,7) | logical-стратегия ДОЛЖНА выровнять разрез |
| **continuation** (negative-boundary, резать ПЛОХО) | 4,5,10,11 (4 шт) | разрез здесь = штраф (анафора/референт через шов) |

Примеры: шов4 (节4→5) — 节4 обрывается на «古月方源！», 节5 продолжает (自己 через шов) = negative; шов9 (节9→10) —
«已已三天三夜了» скачок 3 дня + POV→方源 = scene-shift. ⚠ S2′ = синтетика IN-претрейн → ПРЕДВАРИТЕЛЬНО (§1.14г).
Если трап-квота (T-tense/T-ana ≥20 straddling scene-shift) недоберётся на 7 швах — расширить N节 ДО платных вызовов.

**Трап-леджер:** заполняется после майнинга (kimi-k2.6) + ручного отбора, ДО платных вызовов (стратификация,
ожидаемое поведение per трап, общий знаменатель в A0).

## §3 — Результаты по Q (первичка/вторичка раздельно)

### Q2b — реюз exp14 sizecurve, $0 генерации (`eval/exp15/reflow_omission.py`, `exp15/q2b_omission.json`)
Reflow-инвариантный entity-omission (lemma-match pymorphy3). **Оркестратор-амендменты вшиты:** (1) match по ЛЕММЕ,
inflection вне decl.forms = `inflection_gap` ФЛАГ (span-чек), НЕ omission; (2) variance-чек→ceiling; (3) content-floor
бэкстоп (не сработал); (4) провенанс БАЙТ-идентичен (`chapter_source` = `exp14_sizecurve.py:30-32`). **Валидирован на
вручную-вычитанном ch13-whole** (0 ложных omission; term-drift глава→старейшина корректно НЕ omission).

Результат (ch13/17 × 800/1600/3200/whole, 0 err-фолбэков): **within-chapter size-span ch13=0.059, ch17=0.0 — НЕТ
монотонного size→omission тренда.** ВСЕ raw-флаги (`класс А`,`класс В`,`культивация`) = **TERM-DRIFT артефакты**, не
потеря контента: sizecurve-выходы (2026-07-11) ПРЕДшествуют reseed класс/разряд (D38.5, 07-12), рендерят 甲等/丙等 как
«разряд» (grep-verified) → **истинный entity-omission ≈0 на ВСЕХ размерах.**

**Вердикт: ПОТОЛОК ИНСТРУМЕНТА (амендмент 2)** — это НЕ «размер безопасен»: именованные сущности выживают на любом
размере по природе; тихая потеря крупного чанка (если есть) — на уровне КЛАУЗЫ/детали, невидима entity-присутствию.
Центральный вопрос size↔omission требует SPAN-СУДЕЙ (платный **Q2a**), как и заявляет дизайн («Q2b не ратифицирует
edit=глава, только Q2a»). Побочно: подтверждён term-drift класс/разряд — glossary-consistency ось, отдельно от omission.

_(Q1/Q3 — платные на S2′; стартуют после wire-чеков §1.13-C и трап-майнинга.)_

## §4 — Дерево решений §D5 применённое
_(после результатов.)_

## §5 — Деньги
Спент этой сессии: **$0.00043 / $15** (только wire-чек: grok $0.00031 + mistral $0.00004 + glm-5 $0.00008 —
`exp15/wirecheck.json`). Q2b — $0 (реюз sizecurve). **Остаток $14.99957.** Прогноз полного пакета $13.13 /
несущего $8.64 (`exp15/budget_calc.py`). Пер-call predicted-cost гейт + пер-Q стоп-гейт — в run-скриптах платной сессии.

## §6 — Самопроверка + отклонения от пре-рега
Ревью ИСПОЛНЕНИЕМ в каждом скрипте: gender idempotency-реран (applied=0, hash-стабилен) + byte-diff; hand-proofread
omission-валидация ch13-whole; wire-гейт асерты (reasoning_tokens>0 и т.д.). Отклонения от §D — §1.12 (зафиксированы
ДО прогона). **Полигон-само-ловля (D32.4-класс):** первичная Q2b verdict-логика ложно показала «discriminating» —
`omission_rate_span` смешивал cross-chapter baseline (17 всегда 2 флага) с size-вариацией; поймано и исправлено на
within-chapter size-span ДО записи вывода. «0 ошибок ≠ 0 ошибок» соблюдён: raw-флаги НЕ приняты за omission без term-drift-дизамбигуации.

---

## ХЕНДОФФ — платная сессия Q1/Q3 (полигон, 2026-07-17)

> Старт свежей сессии: `docs/POLYGON_SEGMENTATION_EMPIRICS_SESSION_PROMPT.md` + этот §1 фриз + этот хендофф.
> **ПРЕ-РЕГ ПЕРЕ-СОЧИНЯТЬ ЗАПРЕЩЕНО** — любое изменение армов/метрик/порогов/дерева = НОВЫЙ experiment-ID.
> Бэкенд-дерево ЗАМОРОЖЕНО оркестратором до конца платных армов (якорь A0 стабилен). Пол `人祖`=male, `古月`=n-a — подписаны.

**(а) Позиция в порядке §D2.** СДЕЛАНО: пре-рег фриз (коммит) → wire-гейт → **Q2b** (потолок инструмента; size↔omission → span-судьи).
СЛЕДУЮЩЕЕ: **Q1 + Q3 (несущие) на S2′** → затем Q2a/Q2c → Q4 → Q0. Двойной якорь A0↔A0′ на S2′ (floor шума) — ДО интерпретации любого Q.

**(б) Пины и артефакты.**
- Фриз-коммит **`b9272a1`**. Бэкенд HEAD `68032f7` (≥ d3f6b34). Сид `guzhenren-seed-v2.yaml` sha256 **`175a67ad2f05caeaec8fc5b8c8d304334e8dc73eebd3caf5fc3b4b8be0c408f4`**. Промпты: translator `35d3ad6e…`, editor `878b0da3…`.
- Спент **$0.00043 / $15**; остаток $14.99957.
- Скрипты (ВНЕ git, зона `eval/exp15/`, лендит оркестратор): `preflight_models.py`, `gender_transport.py`, `structural_profile.py`, `build_s2prime.py`, `budget_calc.py`, `fertility_calib.py`, `reflow_omission.py`, `wirecheck.py`.
- Артефакты (ВНЕ git, `/home/ubuntu/books/gu-zhenren/exp15/`): `freeze_facts.json` (цены/кэш/риски), `preflight_models.json`, `gender_signoff.yaml`, `S2prime.txt` + `S2prime_seams.json` + `S2prime_seam_labels.json`, `fertility_calib.json`, `q2b_omission.json`, `wirecheck.json`, пре-gender бэкап `guzhenren-seed-v2.pre-gender.yaml`.
- Реюз $0: `exp14/sizecurve/*` (Q2b done), `exp14/material.json→trap_chunks` (9), `exp14/arms/A-ref-prev|both` (Q3), `rerun/records.json` (ch13/17 source БАЙТ-идентичен sizecurve — `chapter_source`).

**(в) Мягкие находки / гочи (несущие — не потерять).**
1. **Инъекция A0 — ТОЛЬКО из реального `tmctl translate`** (нет $0-пути; порт `exp14b_reseed_promote.py` ПОВЕДЕНЧЕСКИ УСТАРЕЛ — до-trust-gate longest-match, разойдётся на draft-nests-over-approved). Читать `retrieval_state.injected_ids` из SQLite; при расхождении верить Go.
2. **Механизм-армы = eval-риги** (бэкенд не умеет logical/carryover/lookahead/diff/wide-read). Q1 logical-граница = Python-порт §B1.5-DP; carryover/lookahead — §B3. A0/A0′ — единственные из реального бэкенда.
3. **A0 draft deepseek `reasoning:"off"` в pipeline-c1.yaml = NO-OP** (echoMineViolation принуждает thinking-ON) → reproduce thinking-ON.
4. **Q1 size-match: фертильность 1.20·cjk+0.39·other** (`fertility_calib.json`, R²=0.96, glm-4.6-токены; placeholder 0.75/0.25 занижал ~60%). Бюджет Q1 ~3–4k ток; greedy vs logical — ОДИН бюджет, различие только в выравнивании разрезов на швы.
5. **S2′ soft-швы 1 и 7** (scene-shift, LOW confidence: шов1 = топик-переход к экспозиции, шов7 = смена локации по анонсу) — взвесить осторожно, при желании пере-читать. Negative (continuation): 4,5,10,11. Scene-shift: 1,2,3,6,7,8,9.
6. **Трап-квота:** если T-tense/T-ana ≥20 straddling scene-shift-швов недоберётся на 7 швах → расширить N节 (`build_s2prime.py N`, N>12) + пере-классифицировать новые швы ДО платных вызовов. Майнер `kimi-k2.6` (семейно чист), исключён из судей.
7. **DeepSeek peak-surge:** платные DeepSeek-армы ВНЕ 01–04 & 06–10 UTC (Beijing ×2, `freeze_facts.json`), либо ×2 бюджет; ре-чек цен у 24.07-катовера.
8. **Судьи подтверждены живьём:** grok-4.3 reasoning-ON (262 rt), mistral-large-latest резолвится, glm-5 PAYG доступен. Gemini как 3-й судья — эмпир-верификация thoughts-accounting ДО опоры на его usage.
9. **`reflow_omission.py` реюзабелен** для детерм. вторички (entity-omission), НО ПОТОЛОК (сущности выживают) — первичка Q1/Q3 = trap-точность span-судей; term-substitution (класс/разряд) = glossary-drift-ось, не omission.
10. **Метрика границы Q1 (вторичка):** доля разрезов на scene-shift-швы (выше=лучше) vs continuation-швы (ниже=лучше); первичка — T-tense+T-ana точность (общий знаменатель в A0).

---

## §7 — ИСПОЛНЕНИЕ ПЛАТНОГО Q1/Q3 (полигон, 2026-07-18)

> Исполнено по хендофф-промту + курс-коррекциям оркестратора/владельца (три раунда решений по ходу).
> Пре-рег §1 НЕ пере-сочинялся; все отклонения от него — явно в §7.7. Скрипты — `eval/exp15/` (ВНЕ git,
> лендит оркестратор); артефакты/выходы — `/home/ubuntu/books/gu-zhenren/exp15/` (ВНЕ git).

> **⚠ РЕВИЗИЯ 2 (2026-07-18, пост-верификация оркестратора).** Оркестратор верифицировал первый прогон по
> сырью (6 осей) и нашёл, что **три заголовка НЕ лендятся** — не из-за арифметики (она воспроизводится до
> цента), а из-за **артефакта рига** и **пропущенного floor-гейта**. Ключевое: судейский head-excerpt
> (`HEAD_CHARS=1100`) показывал судье лишь первые 1100 символов каждого финала; в оракул-арме зависимый
> спан сидит в СЕРЕДИНЕ бо́льшего seam-выровненного чанка → его рендер уходил ЗА окно → судья видел
> «отсутствует» = wrong/катастрофа ПО ПОСТРОЕНИЮ. Именно это, НЕ граница, дало заголовок «оракул −0.564».
> Данная ревизия: **полно-чанковый пере-суд Q1b** (окно снято, весь финал), **полно-чанковый FLOOR** (A0
> vs A0′, шум-пол), **re-analysis Q3a/Q0** (floor-relative, обе оценки, пул-fix-rate, TOST). Первый прогон
> (§7.4-v1) сохранён как провенанс. Полный список правок — §7.8. Пре-рег §1 НЕ пере-сочинялся.

### §7.0 Итог одной строкой (РЕВ.2)
Судейский **шум-пол ≈ 0.126** (FLOOR: A0 vs A0′, mean|Δ|; сходится с 0.119/0.115 из двух независимых прокси)
**больше любого маргинального эффекта** на этом срезе → **ни граница (Q1), ни carryover (Q3a), ни редактор
(Q0) не отличимы от судейского шума**. Заголовок v1 «оракул хуже (−0.564)» = **артефакт head-excerpt** (пере-суд
полными чанками сдвинул на **+0.689** → T-ana **+0.125** на самом полу, LOO-хрупко): вывод «граница ВРЕДИТ»
**отозван** — seam-выравнивание НЕ вредит и НЕ является ратифицируемым рычагом; единственный устойчивый сигнал —
слепые greedy-разрезы иногда **рвут сущностную кореференцию** (T-ent катастрофы flat 15 vs оракул 1). Базовый
flat-A0 (greedy-1500 + глоссарий) держит бо́льшую часть кросс-граничных анафор — кросс-граничные сбои РЕДКИ.
Ось решения — **слепое чтение владельца** (метрики номинируют, чтение ратифицирует) + больший/трудный корпус.

### §7.1 Материал (актуальный — отклонение от пре-рег S2′-12节)
- Пре-рег S2′ (12 节, склейка) нёс **пустые строки на швах** (`\n\n\n`) → бэкендовый `splitParagraphs` видит
  их как абзацы → greedy A0 режет на ВСЕХ 11 швах → **премиса Q1 нарушена** (A0 не «слеп» к сценам). Диагностика
  байт-верифицирована (Δ2=индент на всех швах; §7.7-D2).
- **Фикс (решение оркестратора):** collapse `\n\n→\n` = **flat** (швы неявные, greedy слеп). Старый blank-line
  анкор (aligned_a0, режет на истинных швах) **не выброшен — стал ОРАКУЛ-армом Q1b** (оракул-коррекция).
- **Расширение (решение владельца, полная мощность):** срез **节 1–45→30** (после проекции time/money).
  Итог: **S2prime_big_flat.txt** (30 节, 87.5k рун, **flat-A0-30 = 51 чанк** greedy-1500) + **blanklines**-версия
  (**oracle-30 = 63 чанка**, режет на 29 швах + бюджет). Sid-покрытие здорово до 节60 (медиана ~16 термов/节) *[испр. оркестратором: расчёт не персистирован — сессионный; к пере-выводу скриптом при переиспользовании]*.

### §7.2 Порт инъекции — валидирован БАЙТ-В-БАЙТ (несущее)
`eval/exp15/mem_select.py` — полный Python-порт Go `Select` (memnorm нормализация + Aho-Corasick +
trust-gated `suppressContained` + sticky depth-2 + budget + render). Валидация **методом оркестратора**
(`LOG_LLM_BODIES=1 LOG_LEVEL=debug LOG_FORMAT=json` → байт-дифф 2-го system-msg против отрендеренного Go-блока):
**L1 injected_ids + L2 translator-блок = 24/24 (оракул), 51/51 (flat-A0-30), 51/51 (flat-A0′-30)** — БАЙТ-идентично.
Ключи к идентичности: frozen entry order = `ORDER BY src,sense,since_ch,until_ch,status,dst` (glossary.go:178);
`injected_ids` слеп к sticky (валидировать против блока, НЕ ids). Greedy-чанкер тоже портирован
(`chunker.py greedy_chunks`, воспроизводит A0-границы точно). Арм-риг промпт байт-совпал с бэкендом (773c translator).

### §7.3 Трап-сет (детерм-первый + kimi-обогащение; guard 1/3)
`final_traps.json` — **44 трапа, все straddling flat-A0-30-границу** (общий знаменатель):
- **T-ana = 19** (первичка, carryover-дискриминирующая): 7 детерминистических (anaphor-head) + 12 kimi-обогащения
  на границах (батчами, $0.68, 0 ретраев). *19 — на 1 ниже квоты ≥20; честно-недомощно.*
- **T-ent = 23** (NEGATIVE CONTROL): глоссарий-инъекция уже держит каноническую dst в обоих чанках → carryover
  не должен добавить; контроль квантует size-конфаунд.
- **T-ell = 2** (вторичка; коротко — honest-power).
- **T-tense/T-cat/T-gen/T-reg = «undecidable a priori на материале»** (guard 3): плотность 3/80 в майнинге =
  свойство прозы, не размер среза; НЕ имитировали.
- Найдено ключевое: kimi-майнинг (11 окон, $1.45) дал 80 кандидатов, но ЛОКАЛЬНЫХ (не straddling) — 4/77
  пересекали границу; детерминистический entity/anaphor-детект на границах + таргет-обогащение — верный метод.

### §7.4 Результаты по Q (РЕВ.2 — floor-relative; судьи grok-4.3 reasoning-ON + mistral-large-latest, оба порядка, 6→10, LOO, катастроф-скрин)

**§7.4.0 FLOOR — судейский шум-пол (A0 vs A0′, полные чанки, $1.24, 404 вызова, n=21 первичных, 0 транспорт-ошибок).**
A0 и A0′ = два независимых прогона ОДНОГО конфига (разный семпл-сид) → истинно эквивалентны; любой |Δ| = шум
судьи+генерации. Результат: **mean|Δ| = 0.126** (median 0.000, max 1.0 — бимодально: 12/21 ячеек ровно 0, хвост
до полного разворота), signed mean **−0.019** (нет системного смещения), катастрофы **58/58 симметрично**. Сходится
с прокси a0↔a0 из Q3a-данных (0.115) и оценкой оркестратора (0.119). **ГЕЙТ ИНТЕРПРЕТАЦИИ (фриз §1.5): любой
|эффект| < ~0.126 не отличим от судейского шума.**

**Q1a — детекция ($0):** §B1.5-DP-чанкер восстанавливает **0/7** истинных швов на flat (точное рунное совпадение;
= слепой greedy, тоже 0/7). *[v1 сообщал 1/7 — из СТЕЙЛ `q1_setup.json` (mtime до flat-фикса); пере-прогон рига
даёт 0/7 у обоих.]* Судей не жгли.

**Q1b — граница (оракул seam-aligned vs flat blind). ⚠ ПЕРЕ-СУЖДЕНО ПОЛНЫМИ ЧАНКАМИ ($1.72, 556 вызовов, 0
транспорт-ошибок).** [+diff = оракул лучше; сравнение с 0 + шум-полом 0.126]
| тип | n | mean_diff (v2 полн-чанк) | CI90 | катастрофы оракул/flat | v1 (head-excerpt, АРТЕФАКТ) |
|---|---|---|---|---|---|
| **T-ana (первичка)** | 18 | **+0.125** | [+0.008, +0.243] | 55/71 | ~~−0.564~~ |
| T-ana+T-ell (primary) | 20 | **+0.072** | [−0.052, +0.196] | 65/72 | — |
| T-ent (контроль) | 10 | +0.112 | [−0.001, +0.225] | **1/15** | ~~−0.308~~ |
| T-ell | 2 | ≈−0.4 | (n=2) | — | ~~−0.834~~ |

- **Артефакт head-excerpt подтверждён и снят.** v1 заголовок T-ana **−0.564** был целиком следствием усечения
  1100 символов (в оракуле зависимый спан — в середине, за окном → судья «не видит» → wrong/катастрофа). Полный
  чанк сдвинул T-ana на **+0.689** (полная смена знака). Диагностический тест: split по позиции зависимого в
  оракул-чанке — v1 дал **dep-в-окне +0.238 / dep-вне −0.872** (сигнатура артефакта); v2 полными чанками
  **+0.176 / +0.028** — split **СХЛОПНУЛСЯ** (артефакт устранён). Катастроф-асимметрия v1 (168/43) тоже была
  артефактом → v2 почти симметрично (65/72).
- **Скорректированный вывод: seam-выравнивание НЕ вредит и НЕ является ратифицируемым рычагом.** Первичка
  (T-ana+T-ell) **+0.072 — В ПРЕДЕЛАХ шум-пола 0.126**; T-ana **+0.125 на самом полу** и **LOO-хрупко**: grok видит
  оракул лучше (+0.307), mistral ~нейтрально (−0.029) — судьи расходятся по знаку. T-ell (n=2) оба судьи ниже нуля.
- **Единственный устойчивый сигнал** (оба судьи согласны, +0.11): на **T-ent** слепые greedy-разрезы иногда рвут
  сущностную кореференцию через границу → катастрофы (T-ent-1 5, T-ent-6 1, T-ent-12 9 = flat 15), которых
  seam-выравнивание избегает (оракул 1). Это реальный механизм, но класс — негативный контроль, эффект на полу.
  **НЕ вычитаем T-ent из T-ana** (пост-хок size-контроль −0.31 из v1 сам нёс тот же артефакт — не лендится).
- Оговорка (оркестратор): **17/18 трапов оракул НЕ разрезал на швах** (0 на seam) → механизм «оракул режет
  continuation-клиффхэнгеры» НЕ протестирован ни одним трапом; тест — про качество когезии ВНУТРИ разного чанкинга.
  T-ana-33 исключён из Q1b (оракул-чанк 12 = cjk_artifact, editor-skip; оракул-чанк 42 — тот же класс, трапов на него не мапилось). *[испр. оркестратором:]* T-ana-33 присутствует ТОЛЬКО в FLOOR; Q3a/Q0/Q1b-v1 судились на n=18 (в сессии-1 он не входил ни в один блок).

**Q3a — carryover (пере-АНАЛИЗ существующих данных; артефакт head-excerpt Q1b-специфичен — у Q3a обе стороны
flat-чанкинг, зависимый в ГОЛОВЕ у обеих → усечения-асимметрии нет; $2.32, 1303 голоса).** Обе оценки + CI90:
- **Первичка (T-ana+T-ell), парная**: src **−0.005** [−0.12,+0.11], draft −0.008, final **−0.055**; маргинальная
  arm-acc ≈ парной (src −0.005). **ВСЕ ниже шум-пола 0.126 → не интерпретируемы.** (Заголовок v1 «+0.042» —
  пост-хок ТОЛЬКО T-ana; по пре-рег §1.5 первичка = T-ana+T-ell.)
- **Преимущества последовательного final-соседа НЕ обнаружено НИГДЕ**: точечная оценка ≤0 в обеих метриках и во
  всех LOO-срезах (final: парная −0.055, LOO без-grok −0.061 / без-mistral −0.038). «Цена параллелизма ≈0» v1 —
  подмена метрики (arm-acc −0.0002 vs парная −0.047 для final); честно: **цена параллелизма НЕ исключена до
  ~0.05–0.10** (MDE≈0.18, p≈0.5); «не ратифицированный зелёный свет», не «безопасно».
- **§D5 fix-rate = пул-определение 2/6 = 33% во ВСЕХ режимах** (v1 «25/25/0%» — артефакт пере-суженных per-mode
  знаменателей: A0 пере-суждён отдельно на режим). A0-провалено 6 трапов (пул a0<0.5).
- **Раскрытие T-ell-43** (катастрофа «победителя»): a0 1.0 → арм src 0.0 / draft 0.125 / final 0.042; src
  cat_arm 11 vs a0 0 — source-carryover САМ создал грубую ошибку там, где flat был идеален.
- LOO src меняет знак по судье; final устойчиво-отрицателен.

**Q0 — do-nothing (draft) vs A0 (editor final); эквивалентность НЕ установлена ($0.99, 578 голосов).** Точка
mean(A0−do-nothing) **+0.041** верна, но **TOST ПРОВАЛЕН**: sd 0.155, **90% CI (−0.008, +0.089)** — верх за
маржой M=0.05 → по правилу фриза **«данных мало», ветка §D5 «мандаты редактора пересматриваются» НЕ триггерится**.
Симметрия (в заголовок рядом с carryover-плюсом): редактор **режет катастроф-голоса** T-ana 66→52 (−21%, размер
как у Q3a-плюса). Единицы: это ГОЛОСА, не трапы (distinct трапов-с-катастрофой editor 8 vs donothing 11); редактор
добавил флаги на 5/18 трапов, чистый срез тянут T-ana-32 (13→0) и T-ell-40 (6→0). ⚠ Каветка v1 в силе: трап-сет —
когезия, которую редактор и не адресует (стиль/reflow/глоссарий-энфорс ЗДЕСЬ не мерен).

### §7.5 Дерево решений §D5 (РЕВ.2 — floor-relative)
- **Q1 (граница):** первичка **+0.072 в пределах шум-пола** + Q1a 0/7 → **строить §B1.4/B1.5-DP НЕ показано; граница
  не является ратифицируемым рычагом когезии на этом срезе.** Но вывод v1 «граница ВРЕДИТ» **ОТОЗВАН** (был артефакт):
  seam-выравнивание нейтрально-к-слабо-позитивно и режет сущностные катастрофы разрезов. Практический итог тот же
  (граница вторична), но по ВЕРНОЙ причине (sub-floor null, не вред).
- **Q3a (carryover):** все эффекты ниже пола; преимущества последовательного final-соседа не обнаружено нигде
  → **оживление carryover НЕ ратифицируется**; source-carryover в волне 1: вреда не видно выше шум-пола (MDE≈0.18 — вред до ~0.05–0.10 не исключён), пользы не доказано. Недомощно
  (база держит бо́льшую часть, ~6 провалов) → человеческий эндпоинт + больший/трудный корпус.
- **Q0 (редактор):** эквивалентность на когезия-трапах **НЕ установлена** (CI за M) → **мандаты редактора НЕ
  пересматриваются по этим данным** (данных мало); редактор режет катастроф-хвост; его стиль/reflow-ценность — ВНЕ
  этого трап-сета (не мерена).
- **Финал:** ни одна ветка не даёт прод-кандидата ТОЛЬКО по метрикам (все — на/под судейским полом); гейтящий
  эндпоинт — **слепое чтение владельца** (`exp15/monitor/blind_read_packet.md`, метки перемешаны; ключ отдельно) +
  больший корпус. Метрики НОМИНИРУЮТ, чтение РАТИФИЦИРУЕТ (планка ≤2 претензии/глава).

### §7.6 Деньги (РЕВ.2)
Глобальный спент **$12.79 / $15** (маржа ~$2.2). Сессия-1 (первый прогон) $9.82 [авторитетный учёт оркестратора,
2541 биллинг-строка, 0 расхождений — включает tmctl-генерацию анкоров, которой НЕТ в Python-леджерах]. Сессия-2
(ревизия): **FLOOR полн-чанк $1.24 + Q1b пере-суд полн-чанк $1.73 = $2.97**. Гейты: пер-call predicted-cost
($0.04) + **ГЛОБАЛЬНЫЙ потолок $14.5** (seed = $9.82 + новые леджеры; фикс review-I8: раньше per-block потолок
суммировался в ~4×бюджета). Ошибки: **0 транспорт-ошибок; 3 parse-drop / 2313 голосов = 99.87% успех** (v1 «0
ошибок» уточнён). **«~46 таймаутов» УБРАН** — артефакта нет (max latency 66.5s при timeout 240s; литеральных
таймаутов 0). Rate-limit: FLOOR полн-чанк показал mistral 48% retry-fails @1.3s (max lat 64.7s), grok 0% →
интервал mistral расширен до 2.6s для Q1b *[испр. оркестратором: retry-fail-rate не изменился, 49.5%→48.2% — эффект интервала не подтверждён леджерами; транспорт-ошибок 0, все ретраи успешны]*. **Q4a вынесен ВНЕ этого капа** (отдельная долинная
мини-сессия, ~$2, дефолт-да владельца — §7.8/дев.9).

### §7.7 Самопроверка + ОТКЛОНЕНИЯ от пре-рега (явно)
**Ревью ИСПОЛНЕНИЕМ поймал 9 багов ДО искажения платных результатов** (мандат самопроверки в действии):
адверсариальный ревью рригов (5) + sanity-гейты (4). Ключевые:
- (A) **arms.py editor-context double-inject** (HIGH) — 3 q3a-режима слали контекст в оба стейджа; фикс: shared
  src-carryover draft → 3 редактора (только target-side разнится). Поймано sanity-гейтом.
- (B) **predict_cost под-предсказывал kimi-reasoning** → потом ЭТОТ фикс уронил grok в судьях (гейт-блок $0.033>$0.03);
  фикс: judge max_tokens=1500. Поймано judge-selftest'ом.
- (C) mistral 429 rate-limit → retry+backoff+per-model delay. (D) trap_curate `cut<=hi` off-by-one + grid-dedup.
  (E) arms draft finish=length → draft_max 16000. (F) mem_select entry-order (byte-diff). (G) mem_select
  editor transitive-валидация. (H) S2′ CRLF/seam-offset дрейф (36186 vs 35289). (I) стейл seam-файл.
**Отклонения от §D/пре-рег (санкционированы оркестратором/владельцем):**
1. S2′-12节 → **flat 30节** (материал-баг + полная мощность); aligned = оракул-арм (не выброшен).
2. Механизм-армы = eval-риги (бэкенд не умеет), НО инъекция БАЙТ-валидирована против Go (не «верить на слово»).
3. Трапы: **детерм-первый** (entity-straddle + anaphor-head) + kimi таргет-обогащение НА границах (не seam-окна).
4. **T-tense/cat/gen/reg = undecidable a priori** (плотность прозы, не размер) — НЕ имитированы.
5. Q1 декомпозирован: Q1a-детекция ($0) + Q1b-оракул-контраст. Судьи grok+mistral (апекс-gemini инфизибл, §1.12).
6. T-ana=19 (на 1 ниже квоты). Голоса 6→10, оба порядка, LOO — как §1.6.
7. **Q4a вынесен ВНЕ капа exp15** в отдельную долинную мини-сессию (~$2, дефолт-да владельца; пин: draft =
   deepseek-v4-pro, суб-арм do-nothing обязателен, судейские окна полно-evidence — HEAD_CHARS-класс НЕ наследовать).
   Дизайн — Q4a-дополнение оркестратора (концерн №1 «сильный переводчик»; слой-3 контракт t/e). Причина выноса:
   полн-чанк Q1b+FLOOR при капе $15 не оставляют Q4a места без урезаний — решение оркестратора/владельца (не резать).
8. Q2a/Q2c/Q3b/Q3a′/Q5 — не исполнены (бюджет/приоритет; §D2-порядок, стоп-гейт легитимен).
9. **T-ent-контроль кап 10/23** (только код `--tent-control`; для бюджета судейского сэмпла) — раскрыто.
10. **Маркер §1.14г:** материал S2′ — СИНТЕТИЧЕСКАЯ сцен-склейка + PD-претрейн-канон → все эмпирические выводы §7
    **ПРЕДВАРИТЕЛЬНЫ** до вебновелл-среза (не претрейн). Планка чистовика — тот же пилот на непретрейн-корпусе.
11. **D30.10 (леджер-дисциплина):** ad-hoc kimi-пробы (~$0.24) шли без леджера — впредь персистить; Q1b-v1-леджер
    сохранён как `judge_costs_Q1b_v1_headexcerpt.jsonl` (НЕ сброшен — провенанс артефакта); v2 пишет свежий.

#
*[испр. оркестратором при лендинге — дополнение списка девиаций по пере-верификации:]*
12. **Q1b-пере-суд отказался от пре-рег size-matched ~3–4k-бюджета** (§1.5/§1.14в): судились greedy-1500 flat (51 чанк) vs oracle (63); честность размера держится на парности судимых чанков (flat≈oracle 0.95×), не на пре-рег дизайне.
13. **Holm-коррекция (§1-пин) нигде не применялась** — репортились CI90 без множественной коррекции.
14. Восстановление T-ell в primary и пропуск floor-гейта в v1 — задокументированы в §7.8, входят в этот список по ссылке.

## §7.8 Раунд коррекции методологии (2-й рубеж самопроверки: верификация оркестратора → фикс-лист)
Мандат самопроверки сработал на ДВУХ рубежах: (1) сессия-1 — ревью исполнением поймал 9 багов ДО спенда (§7.7);
(2) **пост-хок верификация оркестратора при лендинге (author≠reviewer)** — 6 осей по сырью: арифметика чистая
(2541 строка, 0 расхождений), судейская механика чистая (оба порядка 69/70, эскалация-инварианты 0 нарушений),
но **3 заголовка не лендятся**. Это ровно тот случай, ради которого правило существует.

**Что чинилось (полн-чанк пере-прогон, санкция оркестратора; пре-рег НЕ пере-сочинялся):**
- **Q1b CRITICAL:** `HEAD_CHARS=1100` усекал финал → в оракуле зависимый спан за окном → −0.564 = артефакт.
  Фикс: **полные чанки** (окно снято; flat≈oracle по размеру 5565/5263 → size-конфаунда нет; зависимый+якорь
  всегда видны). Пере-суд: T-ana −0.564 → **+0.125** (сдвиг +0.689); dep-split схлопнулся. Заголовок отозван.
- **Пропущенный floor-гейт:** добавлен **FLOOR-блок** (A0 vs A0′ полн-чанк) → шум-пол 0.126 → все маргиналы
  Q3a/Q0 sub-floor (не интерпретируемы). Это пре-регнутый §1.5-гейт, которого в v1 не было.
- **Q3a/Q0 пере-анализ** (без пере-суда — артефакт Q1b-специфичен): первичка = T-ana+T-ell (не пост-хок T-ana),
  обе оценки+CI, пул-fix-rate 2/6, T-ell-43 раскрыт, TOST (Q0 экв. НЕ установлена).

**Адверсариальный ревью риггов (2-й, ДО спенда, 4 линзы + синтез)** — 10 находок; реальные закрыты $0-верифицированно:
- **windowing** (I3): oracle-выбор чанка не проверял якорь (короткие пробы <8 симв. коллидируют) → **anchor-guard**
  (чанк с ЯКОРЕМ+зависимым; иначе skip). Дал повод перейти на полные чанки (I7: FLOOR не валидировал бы окна).
- **per-vote** (I4): cat булев через bool() («"false"»→True) + tolerant-parse ронял cat/ev → нормализация +
  regex-восстановление. Плюс **per-vote персист** (сырые вердикты в результатах — катастроф-LOO аудит).
- **budget** (I8): per-block потолок суммировался в ~4×бюджета → **глобальный seed** ($9.82 floor + новые леджеры,
  потолок $14.5); gate-block отделён от parse-fail (`budget_truncated`-флаг — не скорить недобранную ячейку);
  retry-fails в леджер (видимость).
- **rate-limit** (эмпирика FLOOR): mistral 48% retry @1.3s → интервал 2.6s.

Все скрипты пере-прогона: `eval/exp15/{judge_run,judges,exp15_llm,q1b_reanalysis,q3a_reanalysis,q0_reanalysis}.py`.
Артефакты: `judge_results_{FLOOR,Q1b}.json`, `q{1b,3a,0}_reanalysis.json`, `S2prime_big_seam_profile_1_29.json`
(швы 12–29 доклассифицированы: 30节 = 15 scene-shift / 14 continuation / soft {1,7,15}), v1-провенанс
`*_v1_headexcerpt.*`. Слепой пакет владельца НЕ трогался (его эндпоинт — полные тексты, чист).

## §7.9 — СЛЕПОЕ ЧТЕНИЕ: вердикт владельца + un-blind (аддендум оркестратора при лендинге, 18.07)

**Ключ (вскрыт ПОСЛЕ вердикта владельца):** V1 = oracle-30 (seam-aligned) · V2 = q3a-src (source-carryover) · V3 = flat-A0-30 (**прод-базлайн**).

**Вердикт владельца (гейтящий эндпоинт): планка «≤2 претензии» НЕ пройдена ни одним армом.** Претензии владельца по V1 (лучшему на чтении): (1) род реплики «отнял мою невинность → я мечтал» (муж. род при очевидно женском говорящем); (2) стих-аллюзия (青山落日…朝如青丝暮成雪 — Ли Бо/Ян Шэнь) отрендерен плоской прозой; (3) «терем» — русско-сказочный регистр в сянься; (4) построчный ритм/«китайские паузы» («…столу. Стол был трёхъярусным…»). Обе исторические претензии (абзацы/конвенции + смысл) живы.

**Кросс-версия по буллетам владельца (оркестратор):** род — V3(прод) ЕДИНСТВЕННЫЙ верно («мечтала»), V1/V2 муж.; «терем» — V2 единственный избежал («здание»), V1/V3 «терем»; стих — все три одинаково плоско; ритм-спот «стол» — V1 худший (повтор существительного), V2 («…стол чёрного лака; в три яруса…») и V3 (придаточным) — слитно. **Дефекты РАСПРЕДЕЛЕНЫ по армам, ни один не доминирует — читательский уровень подтверждает метрический null (§7.0): армы различаются ТЕМ, ГДЕ ошиблись, а не классом/числом ошибок.**

**Внешние слепые читки:** ChatGPT: V1→V3→V2; V1 «готов к короткой редактуре»; поймал системные классы: **时辰-конверсия** (三个时辰 = ~6 часов, «три часа» в V1 И V3 — системно), **масштаб чисел** (千万→«тысячи», 数十万→«десятки тысяч» — класс b1), **гендер-инверсия Бай Нинбин в V3** («её» при 此子/他 в исходнике — ровно класс gender:hidden D19.3, поле сида). Claude Opus (QA инструмента, с ключом): **слепота фактически сломана** — V2 само-идентифицируется браком (непереведённые 待遇/一步登天, «дракан», «магнатадемона»), V1 — хвостом за границей референса (баг генератора пакета: oracle-покрытие по кумулятивной длине vs референс = первые 6 flat-чанков); 3-арм микс размывает тонкий вопрос; пер-версионный zh↔ru леджер Opus принят оркестратором.

**Интерпретация V2-брака (несущая):** армы eval-рига идут БЕЗ прод-гейтов — санитайзер v6 (fold-first) поймал бы 待遇/一步登天 как cjk_leak; брак V2 = (рига-контекст без гейтов) + вероятный механизм «source-carryover подаёт больше исходника в контекст редактора → выше вероятность CJK-протечки» (фиксируется как гипотеза к пере-прогону, где carryover не строится). V2-брак НЕ говорит о carryover как рычаге когезии.

**Следствия (ратификация D39.8):** (1) вывод D39.7 «сцен-детекцию/carryover-машинерию не строить» подтверждён и на читательском уровне; (2) битва за качество пере-прогона — в ДЕФЕКТ-КЛАССАХ, все банко/пак/гейт-уровня: 时辰-юниты (детерминированная конверсия в пак пары — НОВЫЙ класс), числа-масштабы (b1, свежая эмпирика), gender-enforce по полю сида (Бай Нинбин hidden→male-до-reveal) + диалог-род говорящего (Ф2-annotator), стих/аллюзии (пак-политика + сноски-на-аллюзии lever), регистр-лексикон (негатив-лист «терем»-класса в пак); (3) **инструмент-фиксы будущих слепых пакетов:** авто-QA до человека (CJK-в-ru/битые формы/род-консистентность), обрезка всех версий по общему финальному предложению, 2-way пакеты для тонких контрастов, тир-структура претензий (критические/смысловые/редакторские) вместо плоского «≤2».

## §7-Q4a — ИСПОЛНЕНИЕ Q4a «сильный переводчик» (отложенный арм, мини-сессия, 2026-07-18)

> **B-hybrid, санкция оркестратора/владельца 18.07.** Свой кап **$2, ВНЕ $15 exp15**. Скрипты `eval/exp15/q4a_*.py`
> (аддитивные; существующие риги НЕ редактировались), артефакты `/home/ubuntu/books/gu-zhenren/exp15/q4a/`, леджеры
> `q4a_*.jsonl` — ВСЁ ВНЕ git, лендит оркестратор. Pro-генерация — в DeepSeek-долине (все вызовы UTC≈14–17, вне пиков 01–04/06–10).

> **⚠ РАУНД КОРРЕКЦИИ (2026-07-18, адверс-верификация результатов, author≠reviewer).** Первый DET-прогон нёс
> **ИНФЛИРОВАННЫЙ заголовок «pro омитит 6×»**, пойманный пост-хок адверс-верификатором (как HEAD_CHARS в §7.8): «6 омиссий
> pro» = **1 truncation** (pro_raw/7.0.s0 finish=length — reasoning съел max_tokens 8000, хвост с a1/a2/d2 потерян; НЕ
> «омиссия модели») **+ 2 локатор-ложных** (a1/d1 локаторы ловили лексикон flash, мимо валидных синонимов pro Сказание/незнакомо,
> будь…не) **+ 1 genuine** (b2 s0). Фиксы: max_tokens draft 8000→16000 + reject finish=length; truncated-ячейка перегенерена
> (finish=stop); a1/d1/d2-локаторы уточнены симметрично (d2 переанкорен на lament-структуру — generic 'если бы/а то' ловили ЧУЖИЕ
> контрфактивы чанка). Self-test 19/19. **Скорректированный итог — ниже; заголовок «pro омитит» ОТОЗВАН.** Ядро вывода (pro НЕ
> ратифицируется; редактор = слабое звено) НЕ изменилось и УСИЛИЛОСЬ.

### §7-Q4a.0 Итог одной строкой (СКОРР.)
**Верность НЕ покупается на стадии перевода.** DET-скорер смысл-трапов (floor-immune): **и flash, и pro черновики верны на
6/9 трапах** (a1/a2 двойн-отриц, b1/b2 числа, c1 ранг, d1 контрфактив — все 1.0). flash **25 fix / 0 fail / 27 (покрытие
26/27)**; **pro НЕ точнее и слегка ХУЖЕ — роняет контрфактив d2** (0.333 vs flash 1.0; 2 fail), **покрытие РАВНОЕ (26/27 = 26/27;
differential genuine омиссия pro ≈ 1 — b2 s0, НЕ 6)**, при **COGS ×3.67**. → **Pro-арм НЕ ратифицируется** (§D5-знаменатель ПУСТ: flash не валит ни одного трапа; pro
чинить нечего, а сам слегка хуже). Реальные смысл-катастрофы рождает **glm-редактор** (инвертирует 丙→разряд **Б**, 族长→**старейшина**;
**4 fail на flash_glm, 4 на pro_glm**; editor-delta flash −0.185, pro −0.093) — прямое подтверждение D38 «слабое звено = редактор,
не черновик». Ось — DET-истина + чтение (все ключевые вердикты сверены с реальными рендерами).

### §7-Q4a.1 Дизайн (B-hybrid; развилка §3-аддендума решена)
Концерн №1 «может ли ЧЕРНОВИК быть ~верным сразу». Развилка (A) S2′-когезия-трапы (судьи, floor-уязвимо) vs (B) exp14
смысл-трапы (DET, floor-immune) → **владелец/оркестратор выбрали B-hybrid**: материал = 7 exp14-чанков с 9 DET-смысл-трапами
exp14b (a1/a2 двойн-отриц = катастроф-класс, b1/b2 числа, c1 ранг = кат, c2/c3 ранг/роль, d1/d2 контрфактив); **PRIMARY =
$0 DET-скорер** (иммунен к судейскому полу 0.126, что утопил все S2′-блоки); **SECONDARY = судейский мини-пасс grok+mistral**
(калибровка судейского пола НА смысл-трапах + design-комплаенс). Интент пина «те же чанки» = **ПАРНОСТЬ** сравнения — сохранена.
Полный **квадрат 2×2** {flash, pro} × {сырой черновик, +glm-редактор}, **×3 seed**, 84 ячейки. draft=`deepseek-v4-pro`
(mistral исключён — судейская семья); суб-арм do-nothing = сам pro-черновик; редактор `glm-5`.

### §7-Q4a.2 Целостность пар — байт-верифицирована (несущее, пин оркестратора «парность превыше»)
flash и pro черновики собраны **байт-идентичными** промптом/инъекцией (exp14 `bilingual_glossary`→черновик,
`editor_constraint`→редактор; injected_ids-реконструкция БЕЗ sticky — несовершенство, ОБЩЕЕ обеим сторонам, НЕ «улучшалось»
mem_select-портом). Подтверждено: `flash_raw` и `pro_raw` каждого чанка — `prompt_tokens`=идентично (напр. 6.0: 1605/1605).
Единственная переменная строки черновика = модель; редактор (glm-5 discourse) идентичен обеим сторонам → editor-delta модель-чист.
Флэш-сторона **перегенерена** (не reuse on-disk backend-flash) ради ГАРАНТИРОВАННОЙ парности с pro (backend-flash = иная,
sticky-инъекция; оставлен как провенанс-кросс-чек). Провенанс: свежий flash_raw DET-сверен с backend-flash + arm C —
совпадает, кроме a1/c1 (backend — единичный неудачный семпл с инверсией; по 3 seed flash их держит) → sampling-вариация, не баг.

### §7-Q4a.3 Инструмент (DET) + честность пре-регистрации
Правила exp14b **переписаны как additive-оверрайды** в `q4a_traps.py` (риг exp14b НЕ редактировался): sentence-scoping
(raw≈editor сопоставимы), double-neg faithful=fix (a1/a2), **FAIL-ветка контрфактива** (d1/d2 — иначе класс DET-слеп к своему
провалу), b1 требует ОБА числа, b2 «сотых»+склонения, c1/a1 anchors сужены, stray 'мёртв'→fix снят. В раунде коррекции: a1/d1
локаторы расширены на pro-синонимы (Сказание/незнакомо, будь…не), **d2 переанкорен на lament-структуру** (generic 'если бы/а то'
ловили ЧУЖИЕ контрфактивы чанка → ложные вердикты). **Self-test 19/19.** Калибровка на exp14b-армах + probe- И финал-рендерах
(та же книга) — **симметрична к модели** (уточнения ловят синонимы ОБЕИХ сторон), **не к исходу** (d2-фикс ВЫЯВИЛ pro-хуже, не
подгонял под pro-лучше). '?' исключается из ставок, репортится отдельно (addendum §2). **Кавета: контрфактив-класс (d1/d2)
DET-СЛАБ** (пред-ревью F2 предсказал) — предложение-феномен тонет среди других контрфактивов; вердикты d1/d2 ниже-доверие, чем
a/b/c. Инструмент-здоровье: flash_raw 25fix/**0fail**/2'?'; **a1/a2/b1/b2/c1/d1 = 1.0 во всех 4 ячейках** → устойчивы.

### §7-Q4a.4 Результаты (СКОРР. после раунда коррекции)
**(i) 2×2 fix-rate (PAIRED, n=9 — трапы decided во ВСЕХ 4 ячейках; marginal совпал). Покрытие = доля из 27 (9×3), где
фраза-феномен ЛОКАЛИЗОВАНА (рендер):**

| | сырой черновик (fix-rate / покрытие) | +glm-редактор (fix-rate / покрытие) |
|---|---|---|
| **flash** | **1.0** / **0.963** (25fix 0fail; 1 miss = d1-локатор, НЕ омиссия) | 0.778 / 0.889 |
| **pro** | **0.889** / **0.963** (23fix **2fail=d2**; 1 genuine омиссия b2 s0) | 0.889 / 1.0 |

Per-trap: a1/a2/b1/b2/c1/d1 = **1.0 во ВСЕХ 4 ячейках** (оба черновика верны на двойн-отриц, числах, ранге, cicada-контрфактиве).
Единственные не-1.0: **c2** (flash_glm 0.0, pro_glm 0.5 — редактор), **c3** (flash_glm 0.333 — редактор), **d2** (pro_raw 0.333,
pro_glm 0.0 — pro роняет контрфактив).

**(ii) COVERAGE / ОМИССИЯ — заголовок «pro омитит» ОТОЗВАН (раунд коррекции):** покрытие **РАВНОЕ: flash_raw 26/27 = pro_raw
26/27**. Первичный «pro 6 омиссий» распался: **3 = 1 truncation** (pro_raw/7.0.s0 finish=length — перегенерена), **2 = локатор-
ложные** на ВАЛИДНЫХ pro-рендерах (a1 s1 «Сказание…не было незнакомо ни одному», d1 s2 «будь цикада не так слаба…» — локаторы
уточнены симметрично), **1 = genuine** (b2 s0 — pro finish=stop, но пропустил предложение 44%). Стохастическая полн-омиссия
существует (sanity-семпл 6.0.s0 выкинул опенинг), но по probe РЕДКА (~1/11) и **НЕ даёт систематического преимущества flash**.

**(iii) EDITOR-RESTORATION (СКОРР.):** «pro restored 5» инфлировано truncation-recovery; **genuine restored = 1** (b2 s0:
pro_raw без 44% → pro_glm вернул «сорока четырёх сотых высоты апертуры» — редактор видит исходник). flash: restored 0, **broke 2**
(c2 s0, d2 s2). Направление реально (билингв-редактор доб. потерянное), но масштаб = 1, не 5.

**(iv) EDITOR-DELTA (T-inv/D38 «редактор ломает верное черновика») — ПОДТВЕРЖДЁН (несущее, read-verified):** editor-delta
**flash −0.185** (breaks **c2, c3**), **pro −0.093** (breaks **c2, d2**). Редактор ввёл **4 fail на flash_glm + 4 на pro_glm** vs
**0 fail на сырых черновиках flash / 2 на pro**. Верифицировано чтением: flash_glm c2 = «Фан Юань — разряд **Б**» (черновик держал
«разряд В»=丙 верно → редактор ИНВЕРТИРОВАЛ грейд + спутал имена «Фан Юань…Фан Юань»); c3 = «Четвёртый **старейшина** рода»
(черновик: «глава рода» верно). Seed-non-unanimity (DET-пол): сырые черновики стабильны (flash 0.0, pro 0.111), **редактор
добавляет вариативность (0.111/0.125)**.

**(v) COGS-дельта (метрика iii, фриз-цены, долина):** flash-черновик **$0.02431** vs pro-черновик **$0.08926** = **×3.67**
(сходится с фриз-оценкой ×3.1). Pro-черновик дороже ×3.67 при НУЛЕВОМ приросте точности (слегка ХУЖЕ на d2), покрытие равное.

**(vi) Судейский мини-пасс (secondary, grok-4.3 reasoning-ON + mistral-large-latest, оба порядка, 6→10, LOO, per-trap seed
где ОБЕ стороны рендерят; 496 голосов, 0 parse-fail, 0 truncation):** ключевой мета-вывод — **судейский пол НА смысл-трапах =
mean|Δ| 0.261** (floor-контраст flash-s0 vs flash-s1, ЭКВИВАЛЕНТНЫЕ входы) — **БОЛЬШЕ, чем S2′-пол когезии (0.126)**: судьи
ещё шумнее на этих трапах (a2 0.583, c2 0.792 — огромные Δ на DET-РАВНЫХ черновиках). *Это прямо ВАЛИДИРУЕТ выбор DET-primary:
судьи не смогли бы ответить на Q4a.* Отметка: floor тут = верхняя граница (судейский шум + seed-content-вариация, review F11).
- **main (pro vs flash): diff −0.001, mean|Δ| 0.268 ≈ пол** → преимущества pro НЕТ, и судья слишком шумен, чтобы что-либо
  различить (a2 −0.958, c2 +1.0 — дикий разброс на DET-равных ячейках, mean washes out). Сходится с DET (оба верны при рендере).
- **editor (pro_raw vs pro_glm): diff −0.102 ≈ DET editor-delta −0.093** → судья И DET СОГЛАСНЫ, что редактор слегка деградирует
  pro; **слом d2 подтверждён ОБОИМИ** (судья Δ −0.917, LOO-устойчиво: без-grok −1.0 / без-mistral −0.833, оба судьи arm_acc≈0;
  DET=fail). Единственный сигнал выше шума на судейской стороне — editor-слом, совпадает с DET.

### §7-Q4a.5 Дерево решений §D5 применённое (СКОРР.)
**§D5 [INSUFFICIENT-POWER / вакуумно]:** знаменатель «flash-черновик валит смысл-трап» = **0** (flash держит все 9 при рендере,
25fix/0fail) → «pro чинит ≥0.5 flash-провалов» неопределимо. **Вывод: пре-мисса «нужен сильный черновик для верности»
опровергнута** — flash-черновик уже верен на смысле; **pro НЕ точнее, а слегка ХУЖЕ (роняет d2-контрфактив), покрытие равное,
цена ×3.67.** → **арм «структура у переводчика» НЕ ратифицируется; подтверждается путь D38 «сильный редактор»** (свап
glm→mistral/deepseek-pro как редактор): реальные смысл-катастрофы — на **editor-стадии** (c2-грейд 丙→Б, c3-роль 族长→старейшина —
4 fail из чистого черновика; d2-контрфактив), там же и restoration-омиссий. **Каветы (честно):** (1) вакуумность §D5 ХРУПКА —
свежий 3-seed flash держит a1/c1, но САМ прод-бэкенд-черновик (records.json) ИХ ВАЛИТ (a1 инверсия «не знал ни один», c1 «среди
людей») → на шипнутом семпле знаменатель ≥2 и вопрос «чинит ли pro» был бы жив; not-ratify держится на **COGS+нет-прироста**, не
на «flash идеален». (2) **Контрфактив-класс (d1/d2) DET-СЛАБ** (пред-ревью F2 предсказал): локаторы уточнялись пост-хок под lament/
subjunctive-формы — d2-сигнал «pro хуже» вторичен (n мал, класс хрупок); заголовок держат a/b/c + editor-breaks + равное покрытие,
НЕ зависящие от d1/d2. (3) n=9 трапов (honest-power); материал = exp14 in-претрейн канон — ПРЕДВАРИТЕЛЬНО до вебновелл-среза.
Гейтящий эндпоинт остаётся — чтение владельца на большем/трудном корпусе.

### §7-Q4a.6 Деньги (свой кап $2)
Генерация (84 ячейки + 1 перегенер-ячейка + sanity + провенанс-диаг + omission-probe, ВСЁ персистировано, D30.10): **$0.602**.
Судейский мини-пасс (3 контраста × 9 трапов, 496 голосов): **$0.716**. **Итого $1.317 / $2** (маржа **$0.683**). Гейты:
per-call predicted-cost + свой Spender seed=gen-spend, hard-cap $2 (НЕ наследует exp15 seed $9.82/$14.5). Ошибки: генерация
**0/84**, судьи **0 parse-fail / 0 truncation**. Все pro-вызовы — в долине (UTC≈14–17).
**A-мини (сокращённый S2′-когезия судейский пасс) — ПРОПУЩЕН (решение по правилу оркестратора).** Формально остаток $0.683 ≥
порог $0.5, НО: (1) «ответ его класса известен» (S2′-судейский null, §7.4); (2) потребовал бы НОВОЙ S2′-pro-генерации (не просто
судейства); (3) Q4a-судейский пол на смысл-трапах (0.261) уже демонстрирует судейскую-шумовую проблему на ЭТОМ материале
СИЛЬНЕЕ, чем S2′ (0.126) — A-мини добавил бы шум к чистому результату. «Пропустить без сожалений» (формулировка оркестратора).

### §7-Q4a.7 Самопроверка + ОТКЛОНЕНИЯ (явно)
**Ревью ИСПОЛНЕНИЕМ, 3 рубежа (мандат владельца) — сработал, поймал ИНФЛИРОВАННЫЙ заголовок ДО лендинга:**
(1) **pre-spend 4-линзовый адверс-ревью** (workflow, author≠reviewer) → **11 находок**, все закрыты ДО первого платного вызова:
§D5 без power-гейта → min-denom≥3 + completeness; контрфактив без fail-ветки; span-scoping; polarity_envy ложный fail; b1
or-логика; matrix не-парная → paired headline; budget_truncated контаминация → drop; judge gate-block/ретрай → задокументированы.
(2) **sanity-гейт** поймал стохастическую омиссию + editor-restoration + b2/a1 локатор-гэпы ДО полного прогона → 3 seed +
coverage-метрика. (3) **ПОСТ-ХОК адверс-верификация результатов** (independent agent, author≠reviewer) — **поймала, что заголовок
«pro омитит 6×» ЛОЖЕН**: 3/6 «омиссий» = 1 truncation (finish=length не отклонялся — БАГ рига; «0/84 ошибок» его пропустил),
2/6 = локатор-ложные на валидных pro-рендерах (a1/d1 локаторы под лексикон flash), + моя ручная «верификация чтением» ОШИБЛАСЬ
(спутал truncated s0 с валидным s1). **Фиксы раунда коррекции:** reject finish=length + max_tokens 16000, перегенер truncated-
ячейки, a1/d1/d2-локаторы уточнены симметрично (d2 переанкорен — generic-маркеры ловили чужие контрфактивы). Пере-скор →
покрытие РАВНОЕ, заголовок отозван, ядро вывода усилилось. **Это ровно тот случай (как HEAD_CHARS §7.8), ради которого 2-й
независимый рубеж существует.**
**Отклонения (санкционированы/задекларированы):** материал=exp14 не S2′ (санкция оркестратора); редактор=exp14b discourse не
A0 editor.md (матч материала; editor-delta = реальный glm-5); DET-правила = additive-оверрайды (exp14b-риг не тронут);
флэш-сторона перегенерена (не reuse) ради парности; judge seed выбирается per-trap где обе рендерят (омиссия — отдельная
метрика). exp14b DET-правила a1/a2/b1/b2/c1/d1/d2 признаны дефектными ревью и НЕ использованы as-is (пинг оркестратору: если
exp14/exp14b пере-читаются — брать оверрайды из q4a_traps.py, не исходные rule_*).

### §7-Q4a.8 Артефакты
`q4a_det_results.json` (полн. per-trap × seed × cell), `q4a_omission_probe.json`, `q4a_judge_results_{floor,main,editor}.json`,
ледж `q4a_gen_costs.jsonl`/`q4a_judge_costs.jsonl`, ячейки `q4a/{flash,pro}_{raw,glm}/{chunk}.s{seed}.txt`. Скрипты
`eval/exp15/q4a_{traps,generate,score,judge,probe}.py`.
