textmachine/docs/POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md

22 KiB
Raw Blame History

Промт: полигон-сессия 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.mdD35 и 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. Фронтир-арм — ДИАГНОСТИКА потолка (бюджеты владельцем ПОДТВЕРЖДЕНЫ D36.1 — трата разрешена в рамках ключей)

  • Capability-vs-activation 2×2: {дешёвая прод-модель | фронтир} × {baseline-промпт | дискурс-промпт} на trap-наборе + 1 главе. Разводит: фронтир верстает, дешёвая нет → gap способности; ни та ни другая → недоспецифицированный промпт; краткое правило/пример чинит дешёвую → это была активация.
  • Фронтир: GPT-5 — основной (OpenAI ~$9); Gemini 3.1 Pro (-preview) — ЭКОНОМНО (остаток €2.6, thinking = аддитив-биллинг → быстро сгорит; лучше как кросс-семейный мета-ревьюер, НЕ прогонять им всё); grok ($9) — доп, но НЕ на архаичной ch1 (D22.5, эхо-риск); НЕ Claude/Opus (нет ключа). Мета-ревьюер — self-family exclusion (не ревьюит свой выход).
  • Фронтир кросс-семейный мета-ревьюер (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-гейт).

Дисциплина / бюджет

  • Бюджеты ключей (подтверждены владельцем, D36.1 — «делай что нужно в этих рамках»): OpenAI ~$9, Gemini ~€2.6 (крошечный — беречь), DeepSeek/ZAI(glm)/Kimi/xAI(grok)/Mistral ~$9 каждый; ДРУГИХ ключей нет. Отдельный owner-ceiling-запрос НЕ нужен — работай внутри остатков. Per-call predicted-cost кап ОБЯЗАТЕЛЕН до каждого платного вызова (НЕ group-level — exp13 переоврал на +10%); в пре-регистрации разложи ожидаемую трату по ключам и держи запас (near-term дешёвые армы — первыми; фронтир GPT-5 — основная фронтир-статья; Gemini — точечно). Заканчивается ключ → останавливайся на нём, не блокируй остальные армы.
  • Каждый платный вызов персистит 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 потолок-моделей). Не собирай ложную «сходимость».