textmachine/docs/POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md

98 lines
21 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.

# Промт: полигон-сессия exp14 — эмпирика рычагов качества (нарезка×промпт + фронтир-диагностика + кривая нарезки) (2026-07-12, D36, приоритет №1)
---
## Кто ты и зачем
Ты — **полигон-сессия** TextMachine, exp14. Пере-прогон 25 глав дал вердикт владельца **«лучше, но крайне слабо художественно»** — 2 претензии: (1) нет логической редактуры абзацев / конвенций русского; (2) места, где модель не понимает связей/смысла. Диагноз (D35) верифицирован исполнением: **не баг — недострой Ф2 + невыжатые near-term рычаги (промпт/нарезка/глоссарий)**. Ресёрч research/18 (ДВА отчёта, D36, оба залендены оркестратором после верификации первоисточников — Claude ACCEPT_WITH_FIXES / ChatGPT ACCEPT) дал карту рычагов и §C-таблицы. **Твоя задача — ЭМПИРИЧЕСКИ измерить, а не утверждать:** снимает ли near-term (нарезка×промпт) бо́льшую часть претензий на дешёвом миксе, и где потолок — в дешёвых МОДЕЛЯХ или в нашей НАРЕЗКЕ/ПРОМПТЕ (фронтир-арм = диагностика этого).
**Ключевая ось, которую exp04/12/13 НЕ крутили:** они варьировали только МОДЕЛЬ в фикс-нарезке с уже-вшитым reflow-промптом. Ты крутишь **нарезку × ПРОМПТ**.
Зона: `eval/` + `docs/experiments/14-quality-empirics.md` + секция «Полигон» в `PROGRESS.md` + курация глоссария (вне git). **Бэкенд не трогать** (там могут быть живые правки; `git status` перед любым касанием дерева — часто 2 живые сессии; стейджинг тебе НЕ нужен, ты не коммитишь). Прямые API-вызовы из `eval/`-харнеса (НЕ через прод-пайплайн бэкенда — прод трогаем только чтобы воспроизвести инъекцию глоссария как якорь).
## Онбординг (порядок)
1. `CLAUDE.md` → CURRENT-STATE в `PROGRESS.md`**D35 и D36 целиком** (мандат; D36 = приёмка research/18 + этот промт).
2. **`docs/research/18-quality-levers.md` (ревью-шапка оркестратора СНАЧАЛА — там поправки к цитатам/рамке) + `docs/research/18-quality-levers-chatgpt.md` (ревью-шапка).** Твой рабочий вход — §C обоих. Скелет протокола бери из ChatGPT-§C (P0-baseline → армы с фаза-тегами → пре-рег гейты C4 → дерево решений C5 → ядро reflow-промпта C3); СОДЕРЖАНИЕ дискурс-reflow-промпта (5 техник Ван Цуй) и COGS-модель — из Claude-§C.
3. `docs/experiments/00-provider-quirks.md`: deepseek thinking ON всегда (эхо-мина); gemini слаг ТОЛЬКО `-preview`, `additive_total`, mandatory thinking, `PROHIBITED_CONTENT` неконфигурируем; grok reasoning-ON = аддитивный биллинг; **grok на архаичном хане ch1 — эхо-риск D22.5** (исключить grok из ch1-армов).
4. `rerun/FIDELITY_REGATE_HANDOFF.md` — пакет re-gate верности (гонишь ПАРАЛЛЕЛЬНО, независимо от этого эксперимента).
5. Уроки судейского слоя: шапки `docs/experiments/12-quality-diagnosis.md` + `13-translator-bakeoff.md` (ложная «сходимость» ловилась дважды — мемо `eval-aggregation-no-manufactured-convergence`).
## Пре-регистрация (закоммить §1 exp14-дока ДО первого платного вызова — D30.10; path-scoped только exp14-док)
### 0. Материал (исключить сломанное)
- Срез: те же 25 глав пере-прогона (`rerun/records.json` несёт source/draft/final по 57 чанкам). **ИСКЛЮЧИТЬ ch5.0 и ch20.0** (экспорт-баг D35.4a — финалы пусты; спутают оценку) до бэкенд-фикса; если нужен их текст — бери edit-выход из checkpoints (тело цело, дефект = ведущий `###`).
- **Trap-набор (Ступень I — ЛОВУШКИ, не «средние главы»):** разметь 68 мест ДО генерации, поле `supporting_span` + опустимый_смысл`. Типы (ChatGPT §C1): (a) нарратив-строки, которые ДОЛЖНЫ стать одним русским абзацем; (b) диалог 1:N; (c) связь, разрешимая ВНУТРИ текущего чанка; (d) связь, опора которой — ЗА границей чанка. **Обязательно включить места владельца, воспроизведённые оркестратором фактически:** gl.7 `古月族人没有一个不知道的` (двойное отрицание = «все знали» → финал инвертировал в «никто не знал»); gl.8 `物是人非` (заглавие-ключ → сплющено в «всё изменилось»). Эти два — тип (c)/verность, вход и в fidelity re-gate.
- Главы для Ступени II — 3 чистые главы разной диалого-плотности формулой (как exp12 high/mid/low), **исключая ch1 (архаика), ch5, ch20.**
### 1. Армы — ось НАРЕЗКА × ПРОМПТ (полный 2×2 — мандат D36) + аблации
Прямые вызовы, ручная упаковка; дешёвый прод-микс (draft `deepseek-v4-flash` thinking-ON → editor `glm-5` билингв) как якорь; глоссарий-инъекцию воспроизвести из `retrieval_state.injected_ids` (боевой блок, rig-фиделити как exp12 A1).
| Арм | Нарезка | Промпт | Смысл |
|---|---|---|---|
| **P0 baseline** | чанк 1.5k | ТЕКУЩИЙ прод (`v1-reflow`/`v2-bilingual-reflow`) | Нулевая точка обеих претензий (= пере-прогон, но на trap-наборе) |
| **P1a** | чанк 1.5k | **сильный дискурс-reflow** | Промпт-рычаг при фикс-нарезке |
| **P1b** | **глава целиком** | ТЕКУЩИЙ прод | ⚠ **ячейка, которую НИ ОДИН отчёт не крутил** — изолирует «бо́льшая единица САМА помогает без нового промпта?» |
| **P1c** | глава целиком | сильный дискурс-reflow | Верхняя near-term точка нарезка+промпт |
Плюс аблации (ChatGPT §C2, на базе P1a):
- **Draft-layout ablation:** перед editor заменить пустые строки/построчную разбивку draft на нейтральные сепараторы ИЛИ пронумерованные смысловые атомы (финал удаляет ID) → изолирует ЯКОРЕНИЕ редактора на форме черновика (если резко улучшает абзацы при той же модели/промпте — менять нарезку преждевременно; **это дешёвый ПРОД-МИНОР при победе**).
- **Semantic-first vs combined:** один combined-editor против двух узких пассов (билингв семантика-репэйр → target-only литературный reflow) под ОДНИМ coverage-гейтом → снимает конкуренцию мандатов у слабой модели; замерить реальный output-множитель (≤~2× editor-output).
- **±1 reference-контекст:** дать пред-source+пред-target хвост и след-source-абзац до границы сцены, явно `REFERENCE — НЕ ПЕРЕВОДИТЬ`; **три РАЗДЕЛЬНЫЕ абляции prev / next / both** (не сливать в один «context arm»). Цель — кросс-граница (тип d), нулевые подлежащие, катафора.
### 2. Фронтир-арм — ДИАГНОСТИКА потолка (владелец согласовал трату; gated на подтверждённом потолке budget)
- **Capability-vs-activation 2×2:** {дешёвая прод-модель | фронтир} × {baseline-промпт | дискурс-промпт} на trap-наборе + 1 главе. Разводит: фронтир верстает, дешёвая нет → **gap способности**; ни та ни другая → недоспецифицированный промпт; краткое правило/пример чинит дешёвую → это была **активация**.
- Фронтир: **Gemini 3.1 Pro (`-preview`)** и **GPT-5** (ключи есть); **НЕ Claude/Opus** (нет ключа); grok — можно как доп, но **НЕ на ch1** (D22.5).
- **Фронтир кросс-семейный мета-ревьюер** (span-цитаты: где ломается смысл + какой механизм чинит): **self-family exclusion** (модель НЕ ревьюит свой выход — если Gemini переводил, мета-ревьюер GPT, и наоборот).
- Гарды: эхо/refusal-скрин на всех выходах; **per-call predicted-cost кап ДО вызова** (НЕ group-level — урок exp13 +10%); пре-регистрация армов заморожена коммитом.
### 3. Кривая размер-чанка ↔ качество ↔ биллинг ↔ ретраи
- Размеры **0.75k / 1.5k / 3k / глава** × **две политики границ** (жадная упаковка | сцен/дискурс-граница) при сопоставимом бюджете — иначе размер спутается с качеством границ.
- Снимать (пре-рег): in/out/**reasoning**-токены, латентность, **retry-rate ПО ПРИЧИНАМ** (timeout/refusal/length/echo/sanitizer/decode — раздельно), **доля ПОВТОРНО ОПЛАЧЕННЫХ токенов** (не только retry-rate — урон одного крупного сбоя), coverage, слепое предпочтение, KPI-абзацы, trap-теги.
- **Бюджет чанка — в ВЫХОДНЫХ токенах на реальном токенизаторе** (кириллица-фертильность ~22.5× — Petrov NeurIPS 2023, проверено); оптимизировать на **retry-adjusted output-cost**; связность давать кэшированным carryover, НЕ размером единицы. **Cache-ordering:** статику (system+glossary) ПЕРВОЙ, volatile (running summary/reference) ПОСЛЕ — иначе кэш бьётся.
### 4. Сильный дискурс-reflow промпт — ЭТО АРМ ДЛЯ ЗАМЕРА (не «оптимальный промпт»), ядро (Claude §C1#1 + ChatGPT §C3)
СОДЕРЖАНИЕ (zh→ru, из Ван Цуй, Вестник МГУ Сер.22 — прескрипция ТЕХНИКИ, подтверждена оркестратором по телу статьи; НЕ «норма языка» — норму держат Розенталь/Правила-1956):
1. Молча определи смысловые ходы: единый фокал/наблюдатель; действие+непосредственная реакция; одна тема рассуждения; смена говорящего/времени/места/фокала.
2. Один повествовательный ход — обычно один русский абзац, ДАЖЕ если китайский разбит на однофразовые строки (паратаксис→гипотаксис). Инструмент слияния — **причастные/деепричастные обороты + подчинительные союзы/связки** (5 техник Ван Цуй: иерархия → сегментация по смыслу → маркировка вида/времени предиката → варьирование лексики → добавление связок). Не сливать ТОЛЬКО ради длины.
3. Каждая реплика — с нового абзаца через тире; слова автора при той же реплике — в её абзаце (Розенталь).
4. Разрешено объединять/делить русские предложения; ЗАПРЕЩЕНО терять смысловые атомы (число предложений/абзацев совпадать не обязано).
5. `REFERENCE`-блоки — только для разрешения связей; не переводить/не пересказывать в выходе.
Few-shot — минимальные, ортогональные: narrative N:1, dialogue 1:N, focal-shift boundary (target-side русский якорь). **Для DeepSeek-thinking сначала zero-shot против few-shot** (модель-специфика research/15; не переносить результат между моделями); ручной verbose CoT reasoning-модели НЕ добавлять.
### 5. Метрики и гейты — ПРЕ-РЕГИСТРИРОВАТЬ (C4 ChatGPT + §C10 Claude)
| Ось | Первичный показатель | Аварийный гейт |
|---|---|---|
| Претензия 1 (абзацы) | **детерминированный структурный KPI БЕЗ судьи** (распределение предложений/нарратив-абзац vs русский референс) + слепое чтение | нельзя «побеждать» только МЕНЬШИМ числом абзацев |
| Претензия 2 внутри-чанк | билингв span-цитирующая trap-accuracy (обязательный `supporting_span`) | любая инверсия действия/участника = КАТАСТРОФА независимо от среднего ранга |
| Претензия 2 кросс-граница | accuracy РАЗДЕЛЬНО prev-/next-/chapter-supported | **perturbation:** correct-context vs random/shuffled НЕ должен дать тот же результат (иначе контекст не используется — Mohammed&Niculae, проверено) |
| Полнота | покрытие смысловых АТОМОВ (не совпадение числа предложений) | пропуск заголовка/события дисквалифицирует арм на фрагменте |
| Операционность | `$`, in/out/reasoning-токены, латентность, retry-по-причинам, **повторно-оплаченные токены** | per-call predicted-cost кап; НЕ group-level |
| Робастность | leave-one-judge-out + отдельный катастроф-скрин | коррелированные колонки одного судьи ≠ независимые сигналы |
**НИКОГДА не гейтить художественность/связность на BLEU/COMET** — для zh→ru доказана инверсия (WMT24: NMT>LLM по d-BLEU без human-eval). Судьи: span-цитирующие, reasoning-ON, верность/стиль РАЗДЕЛЬНО, кросс-семейно, self-family exclusion, ≥3 повтора со свапом, parse-чек полноты ранжирования.
### 6. Ступень II — слепое чтение владельцем ТОЛЬКО 3 финалистов
После trap-гейта оставить: **baseline + лучший near-term арм + фронтир-диагностик** (НЕ 8 почти-одинаковых, как exp12). Monitor-паттерн (слепые метки, ключ отдельно, вне хостинга — копирайт). Главный исход — бинарное закрытие 2 претензий + ранжирование; вторичный — размеченные ошибки.
### 7. Дерево решений (пре-рег, ChatGPT §C5)
- P1a закрывает абзацы БЕЗ падения fidelity → катить промпт, размер НЕ менять.
- Помогает только draft-layout ablation → строить deformat/atom-rendering, не chapter-editor.
- ±1 reference закрывает большинство смысловых traps → строить малое context-window до Ф2-памяти.
- Нужна chapter-card, но whole-chapter НЕ лучше → Ф2 state-extraction.
- Whole-chapter выигрывает по fidelity И абзацам И retry-adjusted COGS → тогда проектировать per-stage гранулярность (повторить на длинной главе).
- Фронтир выигрывает обе колонки 2×2, организация почти не помогает → **model floor** (не строить сложную память ради слабой модели).
- Организация помогает ОБЕИМ, фронтир+организация даёт доп-лифт → развести near-term context-fix и премиум-тир.
## Fidelity re-gate (ПАРАЛЛЕЛЬНО, D34.3 — `rerun/FIDELITY_REGATE_HANDOFF.md`)
Независим от exp14. Span-цитирующий, reasoning-ON, раздельно стиль/верность, охота на КЛАСС ИНВЕРСИЙ редактуры (ch11/0 аутлайер: editor расширил 3009→4631, sim 0.064), катастроф-скрин терминов у победителя, author≠reviewer (не glm-5/deepseek), leave-one-out. **Пере-прогон НЕ засчитан до пройденного re-gate.**
## Deliverable
`docs/experiments/14-quality-empirics.md`: пре-регистрация (§1, заморожена коммитом) → таблицы армов (KPI-абзацы / trap-accuracy со спанами / perturbation / retry-по-причинам / цена) → кривые размер↔качество↔биллинг↔ретраи → capability-vs-activation вывод (потолок: модели vs организация) → рекомендация near-term конфига + что строить под ROI → 3 финалиста для слепого чтения владельца. Смена дефолта — ратификация оркестратора. **Ничего не коммитить, КРОМЕ пре-рег-раздела** (D30.10-гейт).
## Дисциплина / бюджет
- **Кап: предложи в пре-регистрации** (ориентир: near-term армы+судьи ~$34; фронтир-арм — отдельная строка; **суммарно держи ≤$10**). Per-call predicted-cost кап ОБЯЗАТЕЛЕН до каждого платного вызова (exp13 переоврал group-cap на +10%). **Фронтир-траты — подтверди явный `ceilings` с оркестратором/владельцем ДО первых фронтир-вызовов** (Р6 — согласие на трату; near-term армы не блокируются, идут первыми).
- Каждый платный вызов персистит usage/cost; финальная сумма в отчёте (D30.10). Полигонное Python-зеркало ↔ Go: при расхождении верить Go.
- Слепота свята; пре-рег заморожен после коммита; аномалии провайдеров → вендор-дока + `/models` (не гадать); `.env` не читать; тексты книги в git-доки не тащить (≤15 слов); 18+ регистров в раннем срезе нет — перенос на 18+ требует отдельной пробы (D22/exp10-11).
- **Методика-guard (мемо eval-aggregation — ловил ДВАЖДЫ):** fidelity-first агрегация, leave-one-out по судьям, катастроф-скрин к ПОБЕДИТЕЛЮ тоже, независимость сигналов до агрегации, ось решения (near-term-достаточность vs потолок-моделей). Не собирай ложную «сходимость».