textmachine/docs/experiments/15-segmentation-empirics.md

538 lines
74 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.

# exp15 — эмпирика сегментации/когезии/контракта t-e (research/19 §D, трек B)
> Полигон-сессия, 2026-07-17. Промт: `docs/POLYGON_SEGMENTATION_EMPIRICS_SESSION_PROMPT.md`.
> Дизайн-оф-рекорд: `docs/research/19-chunking-cohesion.md` §D (Q0Q5). Зона: `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 Корпус S1S4 (структурные профили — ДО прогона; `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 бюджете **~34k ток** (различие ТОЛЬКО в выравнивании разрезов на швы; размер-эффект 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 НЕ закрывает центральный конфликт. Двойной якорь A0A0 до интерпретации любого 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 кластер) генерализация на «любую книгу» = декларированное ограничение, закрываемое S1S4-разнообразием;
один первичный контраст на Q + Holm-Bonferroni; мощность честно: на 812 главах разрешимы средн./крупн. эффекты
первичны ТРАПЫ.
- **Слепота владельца:** финалисты слепые пакеты (`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 доли** на первичках) A0do-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.252.50/0.200.40/2.505.00 (reasoning additive out); mistral-large-3 0.50//1.50; kimi-k2.6 0.95/0.16/4.00;
gemini-3.1-pro 24/0.20.4/1218 (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-часы (0104 & 0610 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):** заменён geminimistral как бюджетная поправка 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.91.10.
2. Голоса 610 (не «~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 бюджете ~34k ток:** greedy vs logical ОДИН бюджет, различие только в выравнивании
разрезов на швы. Метрика границы (вторичная): доля scene-shift-швов, на которые разрез попал (выше=лучше) vs доля
continuation-швов, разрезанных (ниже=лучше). Размер-эффект (1500 vs 34k) домен 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 (节45) 节4 обрывается на «古月方源!», 节5 продолжает (自己 через шов) = negative; шов9 (节910)
«已已三天三夜了» скачок 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 НЕТ
монотонного sizeomission тренда.** ВСЕ raw-флаги (`класс А`,`класс В`,`культивация`) = **TERM-DRIFT артефакты**, не
потеря контента: sizecurve-выходы (2026-07-11) ПРЕДшествуют reseed класс/разряд (D38.5, 07-12), рендерят 甲等/丙等 как
«разряд» (grep-verified) **истинный entity-omission ≈0 на ВСЕХ размерах.**
**Вердикт: ПОТОЛОК ИНСТРУМЕНТА (амендмент 2)** это НЕ «размер безопасен»: именованные сущности выживают на любом
размере по природе; тихая потеря крупного чанка (если есть) на уровне КЛАУЗЫ/детали, невидима entity-присутствию.
Центральный вопрос sizeomission требует 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 ~34k ток; 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-армы ВНЕ 0104 & 0610 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** (оракул-коррекция).
- **Расширение (решение владельца, полная мощность):** срез **节 145→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.050.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(A0do-nothing) **+0.041** верна, но **TOST ПРОВАЛЕН**: sd 0.155, **90% CI (0.008, +0.089)** верх за
маржой M=0.05 по правилу фриза **«данных мало», ветка §D5 «мандаты редактора пересматриваются» НЕ триггерится**.
Симметрия (в заголовок рядом с carryover-плюсом): редактор **режет катастроф-голоса** T-ana 6652 (21%, размер
как у Q3a-плюса). Единицы: это ГОЛОСА, не трапы (distinct трапов-с-катастрофой editor 8 vs donothing 11); редактор
добавил флаги на 5/18 трапов, чистый срез тянут T-ana-32 (130) и T-ell-40 (60). Каветка 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: вреда не видно выше шум-пола (MDE0.18 вред до ~0.050.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 ~34k-бюджета** (§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`
(швы 1229 доклассифицированы: 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: V1V3V2; V1 «готов к короткой редактуре»; поймал системные классы: **时辰-конверсия** (三个时辰 = ~6 часов, «три часа» в V1 И V3 системно), **масштаб чисел** (千万→«тысячи», 数十万→«десятки тысяч» класс b1), **гендер-инверсия Бай Нинбин в V3** её» при 此子/ в исходнике ровно класс gender:hidden D19.3, поле сида). Claude Opus (QA инструмента, с ключом): **слепота фактически сломана** V2 само-идентифицируется браком (непереведённые 待遇/一步登天, «дракан», «магнатадемона»), V1 хвостом за границей референса (баг генератора пакета: oracle-покрытие по кумулятивной длине vs референс = первые 6 flat-чанков); 3-арм микс размывает тонкий вопрос; пер-версионный zhru леджер 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 по полю сида (Бай Нинбин hiddenmale-до-reveal) + диалог-род говорящего (Ф2-annotator), стих/аллюзии (пак-политика + сноски-на-аллюзии lever), регистр-лексикон (негатив-лист «терем»-класса в пак); (3) **инструмент-фиксы будущих слепых пакетов:** авто-QA до человека (CJK-в-ru/битые формы/род-консистентность), обрезка всех версий по общему финальному предложению, 2-way пакеты для тонких контрастов, тир-структура претензий (критические/смысловые/редакторские) вместо плоского «≤2».