textmachine/docs/experiments/14-quality-empirics.md

48 KiB
Raw Blame History

Эксперимент 14. Эмпирика рычагов качества zh→ru (нарезка × ПРОМПТ + фронтир-диагностика + кривая нарезки)

Статус: полигон-сессия exp14 (D36, приоритет №1). Мандат — docs/POLYGON_QUALITY_EMPIRICS_SESSION_PROMPT.md + D35/D36. Пре-скрин планки «2 претензии владельца» (ИНТЕРИМ, D35 — НЕ пилот Ф2.5). Смену дефолта ратифицирует ОРКЕСТРАТОР (D-блоком) — не эта сессия. Зона: eval/ + этот файл + секция PROGRESS «Полигон» + курация глоссария (вне git). Бэкенд не трогаю (2 живые сессии; git status перед касанием дерева; стейджинг не нужен — не коммичу код). Артефакты: сэмплы/выходы/сырьё судей — /home/ubuntu/books/gu-zhenren/exp14/ (ВНЕ git; в доке — только числа и цитаты ≤15 слов). Каждый платный скрипт персистит usage/cost (D30.10). Полигонное Python-зеркало ↔ Go: при расхождении верить Go.


0. Онбординг-факты (контракт, на которых стоит дизайн)

  • Триггер (D35): пере-прогон 25 глав связкой (draft deepseek-v4-flash v1-reflow → editor glm-5 v2-bilingual-reflow + сид v2 + reflow + санитайзер) → вердикт владельца «лучше (из-за сида), но крайне слабо художественно»: (1) нет логической редактуры абзацев / конвенций РЯ; (2) места, где модель не понимает связей/смысла. Диагноз «Ф2-недострой + near-term рычаги, НЕ баг» верифицирован исполнением.
  • Ключевая невыжатая ось (D35.3): exp04/12/13 крутили только МОДЕЛЬ в фикс-нарезке с уже-вшитым reflow-промптом. exp14 крутит нарезку × ПРОМПТ.
  • Вход-ресёрч (D36): research/18-quality-levers.md (Claude, ACCEPT_WITH_FIXES) + research/18-quality-levers-chatgpt.md (ACCEPT). Скелет протокола — из ChatGPT §C; содержание дискурс-reflow-промпта (5 техник Ван Цуй) + COGS-модель — из Claude §C. §A обоих заморожены до чтения стека; вывод «потолок скорее в ОРГАНИЗАЦИИ (нарезка/промпт/контекст), не в сырой дешёвой модели» — гипотеза к ЗАМЕРУ, не факт.
  • Механизм-как-есть (backend/prompts/{translator,editor}.md, chunker.go): по-чанково draft → по-чанково bilingual edit; каждый чанк в ИЗОЛЯЦИИ; единственная кросс-чанк-память — глоссарий. Обе reflow-инструкции ПРИСУТСТВУЮТ в промптах и практически ИНЕРТНЫ (замер: медиана 1 предл./нарратив-абзац, ниже §1.3).
  • Провайдер-квирки (experiments/00-provider-quirks.md, обязательно): deepseek thinking ON ВСЕГДА (эхо-мина; disabled→эхо на плотном CJK); gemini слаг ТОЛЬКО gemini-3.1-pro-preview, mandatory thinking, additive_total-биллинг, PROHIBITED_CONTENT неконфигурируем; grok reasoning-ON = аддитивный биллинг, grok на архаичной ch1 — эхо-риск D22.5 (исключён из ch1-армов); glm thinking {type:disabled}; gpt-5 — max_completion_tokens, без temperature, reasoning_effort.
  • Уроки судейского слоя (exp12/13, мемо eval-aggregation-no-manufactured-convergence): ложная «сходимость» ловилась ДВАЖДЫ. Судьи span-цитирующие, reasoning-ON, стиль/верность РАЗДЕЛЬНО, кросс-семейно (author≠reviewer, self-family exclusion), ≥3 повтора со свапом, leave-one-judge-out, катастроф-скрин к ПОБЕДИТЕЛЮ тоже, per-call кап (НЕ group-level — exp13 переоврал +10%). НИКОГДА не гейтить художественность на BLEU/COMET (zh→ru инверсия WMT24).
  • Fidelity re-gate (D34.3, rerun/FIDELITY_REGATE_HANDOFF.md) — гоню ПАРАЛЛЕЛЬНО, независимо (§3 ниже). Пере-прогон НЕ засчитан до пройденного re-gate.
  • Харнес-факты (реплика eval/): call-ядро — refusal_bench.call_provider (eval/refusal_bench.py:151); usage→$ с тремя reasoning-режимами subset/additive/additive_total (exp13_translate.py:106, ветвление по models.yaml reasoning:); цены — backend/configs/models.yaml (единственный источник, prices_checked 2026-07-10); токенайзеры — tokenizers.Tokenizer.from_file (glm-4.6, deepseek-v3.2 присутствуют; deepseek-v4/kimi-k2 — БЕЗ tokenizer.json, использую deepseek-v3.2 как прокси BPE-семейства); реконструкция инъекции — retrieval_state.injected_ids + exp12_blocks.py (боевой блок не персистится, детерминированно пересчитывается); блайнд — seeded-shuffle + отдельный ключ-файл (exp13_monitor.py).

1. ПРЕ-РЕГИСТРАЦИЯ (заморожена коммитом ДО первого платного вызова — D30.10)

Всё в §1 зафиксировано до генерации армов и оценки. Промпты армов ЗАМОРОЖЕНЫ — никакого промпт-инжиниринга по ходу (урок exp04: сломанная слепота однажды уже дала дефолт-редактора). Path-scoped коммит: только этот файл.

1.0. Материал

Срез: те же 25 глав пере-прогона (rerun/records.json, 57 чанков; source/draft/final/disposition/флаги). Char-длины (замер): source min/медиана/max = 8 / 1639 / 1812; final = 0 / 5015 / 6184 (0 = 2 обнулённых чанка). Исключено (экспорт-баг D35.4a): ch5.0 и ch20.0 — единственные edit_flag='sanitizer_defect', final-длина = 0 (финалы пусты, спутают оценку). Если нужен их текст — edit-выход из checkpoints store (тело цело, дефект = ведущий ###). ch16 — единственный escalated=1 (эхо-эскалация flash→pro, RESCUED).

1.0.1. Trap-набор (Ступень I — ЛОВУШКИ, размечены ДО генерации). Поля тип/chapter.chunk/supporting_span(zh)/допустимый_смысл/P0-наблюдение/гейт. Обязательны 2 места владельца (T1/T2, воспроизведены оркестратором фактически; входят и в fidelity re-gate).

ID Тип ch.chunk supporting_span (zh, ≤15 слов) допустимый_смысл P0-наблюдение (пере-прогон) Гейт-класс
T1 (c) внутри-чанк, КАТАСТРОФА 7.0 古月族人没有一个不知道的 все/каждый в роду Гуюэ ЗНАЛИ это предание (двойное отрицание = «нет ни одного, кто не знал») «не знал в роду Гуюэ ни один человек» = НИКТО не знал — инверсия полярности (дефект в черновике, редактор НЕ починил) любая инверсия участника/действия = дисквалиф. независимо от ранга
T2 (c) внутри-чанк + глава, chengyu 8.0 (заглавие) + 8.1 物是人非 контраст «вещи/места прежние — люди уже не те» (物是 «вещи те же» + 人非 «люди иные») заглавие гл.8 и тело → «Всё изменилось» — сплющено, потерян контраст 物是 потеря смыслового атома (половина идиомы)
T3 (a) абзацы (нарратив-слияние) 10.0 прогон подряд идущих однопредложенческих нарратив-строк (один непрерывный ход) слить в ≤2 многопредложенческих русских абзаца ~1:1 строка→абзац (43 строки → 43 абзаца; reflow добавил разделители, НЕ слил) нельзя «побеждать» только МЕНЬШИМ числом абзацев
T4 (b) диалог-конвенция (КОНТРОЛЬ/регресс-гард) 9.0 обмен репликами 1:N (слова автора + реплики дядя/тётя/Фан Чжэн) реплики с «—», слова автора в своём абзаце (Розенталь) P0 в целом КОРРЕКТНО (диалог-тире работает; атрибуция на месте) арм НЕ должен СЛОМАТЬ то, что P0 сделал верно
T5 (d) кросс-граница, prev-supported 24.0→24.1 24.1 откр.: 这当然不是他的肌肤本色,而是一种铜皮蛊的效果 «это [бронзовый цвет кожи наставника, описан в 24.0] — не природный, а эффект гу медной кожи» chunk-изолированный редактор 24.1 не видит антецедент «这/他的» (в 24.0) perturbation: correct-prev vs shuffled-prev не должен совпасть
T6 (d) кросс-граница, prev-supported #2 11.0→11.1 11.1 откр.: 那隐藏在暗处的人马,见到沈翠这般出来 «те, кто прятался в засаде [люди舅父/舅母, введены в 11.0], увидев так вышедшую Шэнь Цуй…» «那…人马» без введения в изолированном 11.1 perturbation (как T5); prev-support робастность

Оговорка (честная): чистого next-supported / катафора-трапа в раннем срезе (гл.225, ранняя арка деревни) не нашлось дёшево — кросс-граница здесь prev-доминирована (T5/T6). Next/chapter-support факторизуется частично: T2 несёт chapter-supported измерение (полный вес 物是人非 раскрывается сменой отношений братьев по главе), gl.7-легенда (T1) полно рассказана в гл.13. Ограничение логирую; ±1-абляция next-плеча всё равно гонится (может не дать лифта на этих трапах — это валидный результат).

1.0.2. Главы для Ступени II (слепое чтение владельца — 3 чистые главы разной диалого-плотности). Отбор детерминированной формулой (как exp12 §1.1: D = доля символов внутри «“…”» от не-пробельных; high/mid/low), из чистых глав (все чанки disposition=ok, postcheck_miss=0, style_flags=0, 0 flagged/escalated), исключая ch1 (архаика), ch5, ch20. Заморожены:

Регистр Глава D (замер) реализованный характер чанков
нарратив/низкий диалог гл. 19 0.061 почти без прямой речи 2
смешанный (медиана) гл. 17 0.246 нарратив + диалог 2
диалого-плотный (high) гл. 18 0.440 самая чистая высоко-диалоговая глава 3

D — детерминированно (exp14_material.py dialogue_D, доля символов в «“…”»), $0 до генерации; при равенстве — меньший номер главы. Гл.9/12 плотнее по диалогу, но несут по 1 минорному postcheck_miss/style_flag → взяты чистые.

1.0.3. Trap-чанки (Ступень I — все армы гоняются на этом объединении): {7.0, 8.0, 8.1, 9.0, 10.0, 11.0, 11.1, 24.0, 24.1} = 9 чанков (T5/T6 требуют обоих чанков главы для кросс-граничной опоры).

1.0.4. Реконструкция глоссарий-инъекции (rig-фиделити, как exp12 A1). Боевой блок инъекции НЕ персистится — детерминированная функция (сид v2 + нормализованный чанк). Воспроизвожу из retrieval_state.injected_ids (JSON-массив композит-ключей src\x1fsense\x1fsince\x1funtil) приёмочного store + guzhenren-seed-v2.yaml (57 терминов, 47 approved/10 draft, status гейтит):

  • Editor-блок (renderEditorConstraintBlock): заголовок «КАНОНИЧЕСКИЕ ПЕРЕВОДЫ имён и терминов (…приводи к ним любые расхождения, склоняя по контексту…):», далее - «dst» (dst-only, CONFIRMED/approved-only, dedup по dst).
  • Translator-блок (renderGlossaryBlock): заголовок «ГЛОССАРИЙ (…):», далее src → dst, ambiguous → суффикс ⟨проверить⟩.
  • Layout: system(стабильный префикс, CacheBoundary) → system(инъекция) → user (render.go:174 MessagesWithInjection). Верификация: реконструированный injected_ids побайтно = store per-chunk. Sticky-инерция (n_sticky) — union chunk0chunk1 внутри главы (как exp12).

1.1. Армы — ось НАРЕЗКА × ПРОМПТ (полный 2×2 — мандат D36) + аблации

Прямые вызовы, ручная упаковка (НЕ через прод-пайплайн). Дешёвый прод-микс (draft deepseek-v4-flash thinking-ON @temp 0.3 → editor glm-5 билингв @temp 0.4, thinking-disabled) — якорь. Brief-vars из rerun/book.yaml: source_lang=zh, target_lang=ru, genre=вебновелла, audience=взрослые читатели вебновелл, title=蛊真人, honorifics=keep, transcription=palladius, venuti=0.6, footnotes=minimal. floor max_tokens=8000 (D24.3). Черновик держу общим для editor-армов (варьируем editor-стадию), кроме армов, где нарезка/промпт меняет и черновик.

Арм Нарезка Промпт (editor) Черновик Смысл Источник/цена
P0 baseline чанк (прод 1.5k) ТЕКУЩИЙ прод v2-bilingual-reflow flash v1-reflow Нулевая точка обеих претензий (= пере-прогон на trap-наборе) records.json reuse, $0 (rig-фиделити A1)
P1a чанк сильный дискурс-reflow (§1.2) тот же flash-draft Промпт-рычаг при фикс-нарезке glm-5 live
P1b глава целиком ТЕКУЩИЙ прод flash-draft главы (склеен) ⚠ ячейка, которую НИ ОДИН отчёт не крутил — «бо́льшая единица САМА помогает без нового промпта?» glm-5 live
P1c глава целиком сильный дискурс-reflow flash-draft главы Верхняя near-term точка нарезка+промпт glm-5 live

Аблации (на базе P1a, чанк-нарезка; ChatGPT §C2):

  • A-layout — draft-layout ablation: перед editor заменить пустые строки/построчную разбивку draft на нейтральные сепараторы ИЛИ пронумерованные смысловые атомы (финал удаляет ID) → изолирует ЯКОРЕНИЕ редактора на форме черновика. Победа = дешёвый ПРОД-МИНОР (не менять нарезку).
  • A-2pass — semantic-first vs combined: один combined-editor (=P1a) против двух узких пассов (билингв семантика-репэйр → target-only литературный reflow) под ОДНИМ coverage-гейтом → снимает конкуренцию мандатов; замерить реальный output-множитель (≤~2× editor-output).
  • A-ref-prev / A-ref-next / A-ref-both — ±1 reference-контекст: пред-source+пред-target хвост / след-source-абзац до границы сцены / оба, явно REFERENCE — НЕ ПЕРЕВОДИТЬ. Три РАЗДЕЛЬНЫЕ абляции (не сливать). Цель — кросс-граница (T5/T6), нулевые подлежащие, катафора. Только на чанках с кросс-граничными трапами (11., 24.).

1.2. Сильный дискурс-reflow промпт — ЭТО АРМ ДЛЯ ЗАМЕРА (не «оптимальный промпт»)

Ядро (Claude §C1#1 + ChatGPT §C3; содержание zh→ru — из Ван Цуй, Вестник МГУ Сер.22, прескрипция ТЕХНИКИ; норму держат Розенталь/Правила-1956). Добавляется к editor.md-мандату (не заменяет сверку смысла/полноту/глоссарий):

  1. Молча определи смысловые ходы: единый фокал/наблюдатель; действие + непосредственная реакция; одна тема рассуждения; смена говорящего/времени/места/фокала.
  2. Один повествовательный ход — обычно один русский абзац, ДАЖЕ если китайский разбит на однофразовые строки (паратаксис→гипотаксис). Инструмент слияния — причастные/деепричастные обороты + подчинительные союзы/связки (5 техник Ван Цуй: иерархия → сегментация по смыслу → маркировка вида/времени предиката → варьирование лексики → добавление связок). Не сливать ТОЛЬКО ради длины.
  3. Каждая реплика — с нового абзаца через тире; слова автора при той же реплике — в её абзаце (Розенталь).
  4. Разрешено объединять/делить русские предложения; ЗАПРЕЩЕНО терять смысловые атомы (число предложений/абзацев совпадать не обязано).
  5. REFERENCE-блоки — только для разрешения связей; не переводить/не пересказывать в выходе.

Few-shot — минимальные, ортогональные: narrative N:1, dialogue 1:N, focal-shift boundary (target-side русский якорь, ≤3). Для DeepSeek-thinking (если гоню его переводчиком/редактором с дискурс-промптом) — сначала zero-shot против few-shot (модель-специфика research/15; не переносить между моделями); ручной verbose CoT reasoning-модели НЕ добавлять. Точный текст промпта и few-shot — в eval/exp14_prompts.py, sha256 фиксируется в §2 при заморозке армов.

1.3. Фронтир-арм — ДИАГНОСТИКА потолка (capability-vs-activation)

2×2 (первичный): держу ЧЕРНОВИК константным (дешёвый flash-draft, общий), варьирую EDITOR × промпт:

baseline-промпт дискурс-промпт
дешёвая (glm-5) = P0 (reuse $0) = P1a
фронтир (gpt-5.4) F-base F-disc

Разводит: фронтир верстает/чинит, дешёвая нет → gap способности; ни та ни другая → недоспецифицированный промпт; краткое правило/пример чинит дешёвую → активация. Плюс спот-чек фронтир-как-ПЕРЕВОДЧИК на T1/T2 (2 fidelity-трапа): избегает ли сильный ЧЕРНОВИК инверсии gl.7 в принципе (потолок на translate-стадии vs edit-стадии).

Фронтир (слаги live-фактчекнуты 2026-07-11, /models): gpt-5.4 — ОСНОВНОЙ (OpenAI ~$9; standard-тир, не pro); gemini-3.1-pro-preview — ЭКОНОМНО, преим. кросс-семейный мета-ревьюер (остаток €2.6, output $12/M+thinking = быстро сгорит); grok-4.3 — доп, но НЕ на архаичной ch1 (D22.5, эхо-риск) — в exp14 ch1 и так исключена; НЕ Claude/Opus (нет ключа). Мета-ревьюер — self-family exclusion (если Gemini переводил/редактировал — мета-ревьюер GPT, и наоборот; span-цитаты: где ломается смысл + какой механизм чинит). Гарды: эхо/refusal-скрин на ВСЕХ выходах; per-call predicted-cost кап ДО вызова (НЕ group-level); пре-регистрация армов заморожена коммитом.

1.4. Кривая размер-чанка ↔ качество ↔ биллинг ↔ ретраи

  • Размеры 0.75k / 1.5k / 3k / глава × две политики границ (жадная упаковка | сцен/дискурс-граница) при сопоставимом бюджете (иначе размер спутается с качеством границ).
  • Бюджет чанка — в ВЫХОДНЫХ токенах на реальном токенизаторе (кириллица-фертильность ~22.5×, Petrov NeurIPS 2023; glm-4.6/deepseek-v3.2 токенайзеры). Оптимизировать на retry-adjusted output-cost; связность давать кэшированным carryover, НЕ размером единицы.
  • Cache-ordering: статику (system+glossary) ПЕРВОЙ, volatile (running summary/reference) ПОСЛЕ — иначе кэш бьётся.
  • Снимать (пре-рег): in/out/reasoning-токены, латентность, retry-rate ПО ПРИЧИНАМ (timeout/refusal/length/echo/sanitizer/decode — РАЗДЕЛЬНО), доля ПОВТОРНО ОПЛАЧЕННЫХ токенов (не только retry-rate — урон одного крупного сбоя), coverage, слепое предпочтение, KPI-абзацы, trap-теги.

1.5. Метрики и гейты — ПРЕ-РЕГИСТРИРОВАНЫ (C4 ChatGPT + §C10 Claude)

Ось Первичный показатель Аварийный гейт
Претензия 1 (абзацы) детерминированный структурный KPI БЕЗ судьи: распределение предложений/нарратив-абзац (P0-baseline замер exp14_material.py: медиана 1.0, среднее 1.701, доля 1-предл. абзацев 0.579, n=1378 нарратив-абзацев/55 чанков) + слепое чтение нельзя «побеждать» только МЕНЬШИМ числом абзацев (парно с atom-coverage)
Претензия 2 внутри-чанк билингв span-цитирующая trap-accuracy (обязательный supporting_span) на T1/T2 любая инверсия действия/участника (T1) = КАТАСТРОФА независимо от среднего ранга
Претензия 2 кросс-граница accuracy РАЗДЕЛЬНО prev-/next-/chapter-supported (T5/T6 prev) 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). Судьи: span-цитирующие, reasoning-ON, верность/стиль РАЗДЕЛЬНО, кросс-семейно (self-family exclusion), ≥3 повтора со свапом, parse-чек полноты ранжирования. Судьи-модели: gemini-3.1-pro-preview, gpt-5-mini, kimi-k2.6 (кросс-семейно к переводившим glm-5/deepseek/gpt-5.4/mistral — семья судьи ≠ семья арма для каждого трапа).

1.6. Заморожённая таблица моделей/цен (единый источник models.yaml; фронтир — live-фактчек 2026-07-11)

модель in $/1M out $/1M cached-in reasoning-режим роль в exp14
deepseek-v4-flash 0.14 0.28 0.0028 subset (thinking ON) черновик (общий)
deepseek-v4-pro 0.435 0.87 0.003625 subset эскалация черновика
glm-5 1.0 3.2 0.2 subset (thinking disabled) editor (дешёвый прод-якорь)
grok-4.3 1.25 2.50 1.25 additive (reasoning-ON) доп-фронтир (НЕ ch1)
gemini-3.1-pro-preview 2.0 12.0 0.20 additive_total (mandatory) судья / кросс-семейный мета-ревьюер (экономно)
gpt-5-mini 0.25 2.0 0.025 subset судья (second-opinion)
gpt-5.4 2.50 15.0 0.25 subset (reasoning⊆completion) ОСНОВНОЙ фронтир (live 2026-07-11: gpt-5.4-2026-03-05; pricing developers.openai.com — gpt-5.5/5.6=$5/$30, 5.5-pro=$30/$180 → дорого, взят 5.4)
kimi-k2.6 0.95 4.0 0.16 subset (temp=1, floor 16k) судья
mistral-large-2512 0.5 1.5 0.5 subset (не reasoning) доп-фронтир/канал-B справка

usage→$: (in·pin + (comp + reason)·pout)/1e6; reason= из completion (subset), отдельного поля (additive/grok), либо totalpromptcompletion (additive_total/gemini). Fallback-якорь неизвестной модели — цена deepseek-v4-flash (никогда $0).

1.7. Бюджет по ключам + per-call кап (обязателен ДО каждого платного вызова — exp13 +10%)

Бюджеты владельца (D36.1): OpenAI ~$9, Gemini ~€2.6 (крошечный — беречь), DeepSeek/ZAI/Kimi/xAI/Mistral ~$9 каждый. Отдельный owner-ceiling не нужен — работаю в остатках. Заканчивается ключ → останавливаюсь на нём, не блокирую остальные армы. Near-term дешёвые армы — ПЕРВЫМИ; фронтир GPT — основная фронтир-статья; Gemini — точечно.

Оценка трат (замерю точно; предельные, не group-cap):

  • ZAI (glm-5 editor-армы): P1a/P1b/P1c + 5 аблаций + Stage-II + кривая ≈ ~$0.0150.02/чанк-edit; ~$1.52.5 суммарно (кап на вызов $0.08).
  • DeepSeek (flash re-drafts для нарезки/главы): ~$0.001/чанк; <$0.3 (кап $0.03).
  • OpenAI (gpt-5.4 фронтир 2×2 + translate-спот-чек): ~11 чанков × 2 cells + 4 спот ≈ ~$2 (кап на вызов $0.40).
  • Gemini (судья/мета-ревьюер, output $12/M): держать <$1 экв. (кап $0.30); ре-джадж на gpt-5-mini/kimi если жжётся.
  • Kimi/OpenAI-mini/… (судьи): ~$12 суммарно (кап $0.20).
  • xAI (grok доп-фронтир, опц.): ≤$1 (кап $0.40), НЕ ch1.
  • Итог-цель ≈ $58 суммарно, глубоко в остатках. Финальная сумма по ключам — в §2.

predict_cost(model, in_est, max_out) = in_est·pin + max_out·pout (in_est из токенайзера/char-эвристики; max_out = потолок max_tokens); отказ ДО вызова, если > кап модели. Каждый вызов персистит usage/cost в append-only JSONL немедленно (не батчить), running spent per-key.

1.8. Дерево решений (пре-рег, ChatGPT §C5)

  • P1a закрывает абзацы БЕЗ падения fidelity → катить дискурс-промпт, размер НЕ менять.
  • Помогает только A-layout → строить deformat/atom-rendering, не chapter-editor.
  • ±1 reference (A-ref-*) закрывает большинство кросс-граничных traps → строить малое context-window до Ф2-памяти.
  • Нужна chapter-card, но whole-chapter НЕ лучше → Ф2 state-extraction.
  • Whole-chapter (P1b/c) выигрывает по fidelity И абзацам И retry-adjusted COGS → проектировать per-stage гранулярность (повторить на длинной главе).
  • Фронтир выигрывает ОБЕ ячейки 2×2, организация почти не помогаетmodel floor (не строить сложную память ради слабой модели).
  • Организация помогает ОБЕИМ, фронтир+организация даёт доп-лифт → развести near-term context-fix и премиум-тир.

1.9. Гарды сессии

Слепота свята; пре-рег заморожен после коммита (промпты армов — sha256 в §2); аномалии провайдеров → вендор-дока + /models (не гадать); .env не читать; тексты книги в git-доки не тащить (≤15 слов); 18+ регистров в раннем срезе нет (перенос на 18+ — отдельная проба D22/exp10-11). Методика-guard (мемо eval-aggregation): fidelity-first агрегация, leave-one-out по судьям, катастроф-скрин к ПОБЕДИТЕЛЮ тоже, независимость сигналов до агрегации, ось решения (near-term-достаточность vs потолок-моделей). Git-координация: git status + опознание чужого перед касанием дерева; чужое не трогать; никаких reset/rebase/checkpoint-перезаписей.


2. Результаты (пост-freeze; ПАРТИЯ 1 — near-term армы + фронтир 2×2, на trap-наборе)

Статус партии 1: прогнаны P0/P1a/P1b/P1c + аблации (A-layout/A-2pass/A-ref-prev/A-ref-both) + фронтир 2×2 (F-base/F-disc, gpt-5.4) на 9 trap-чанках. 0 ошибок на 64 арм-вызовах. Трата: ARM ZAI $0.43 + OpenAI $1.34 = $1.77; trap-судьи (gpt-5-mini $0.03 + kimi $0.46) = $0.50; итого ≈ $2.27 (глубоко в остатках). Медиана латентности: glm-5 35с, gpt-5.4 37с. ПАРТИЯ 2 (не в этой партии): кривая нарезки, слепые пакеты Ступени II владельцу, полная ранжирующая панель ≥3 повтора + leave-one-out, fidelity re-gate, 3 финалиста, хендофф оркестратору. Заморожённые промпты армов (sha256[:16]): editor_baseline ca03a921df5db728 · editor_discourse b3b4f6042e8c5673 · discourse_core ec86a5623e3c6f02 · fewshot d8f204cc4550ee99 · translator a8298f725a3b2844. Stage-II D: гл.19=0.061 / гл.17=0.246 / гл.18=0.440.

2.1. Претензия 1 (абзацы) — детерминированный структурный KPI (trap-набор, 9 чанков)

Арм нарезка×промпт mean предл./нарратив-абзац доля 1-предл. CJK-утечка len/P0 gloss
P0 чанк × прод-baseline (glm-5) 1.91 0.472 2 1.00 0.94
P1a чанк × дискурс (glm-5) 2.61 0.318 2 0.99 0.93
A-2pass чанк × семантика→target-reflow (glm-5) 3.33 0.187 2 0.99 0.93
A-layout чанк × дискурс + deformat-draft (glm-5) 3.13 0.215 39 ⚠ 1.00 0.93
A-ref-prev чанк × дискурс + ±1 prev (glm-5, 2 чанка) 2.75 0.196 0 1.00 0.85
F-base чанк × прод-baseline (gpt-5.4) 1.58 0.584 0 1.03 0.93
F-disc чанк × дискурс (gpt-5.4) 2.45 0.369 0 1.02 0.93

Вывод П1 — абзацы = ПРОМПТ/ПАЙПЛАЙН-рычаг, МОДЕЛЬ-агностичный:

  • Дискурс-промпт двигает распределение к русской норме на ОБЕИХ моделях (P1a 2.61, F-disc 2.45 vs baseline ~1.61.9). Фронтир с ТЕКУЩИМ промптом (F-base 1.58) — ХУЖЕ дешёвого baseline (P0 1.91): сильная модель зеркалит построчность черновика ещё вернее — «сильнее модель» само по себе абзацы НЕ чинит.
  • Сильнейший near-term рычаг П1 — A-2pass (билингв семантика → отдельный target-only литературный reflow-пасс): mean 3.33, доля-1-предл. 0.187, БЕЗ коллапса длины (len/P0 0.99) и БЕЗ CJK-утечки. Подтверждает DocRepair-класс (отдельный монолингв. RU reflow-пасс) на дешёвой модели. Цена — ~2× editor-output (замерено: 18 вызовов на 9 чанков).
  • A-layout (deformat черновика) — НЕ чистая победа: улучшает абзацы (3.13), но CJK-утечка 39 симв. (×20 vs baseline) — снятие построчной формы у glm-5 провоцирует эхо-осколки исходника. Регресс-гард сработал (детерм. KPI поймал). Deformat на дешёвой модели требует CJK-пост-гарда — не катить as-is.

2.2. Претензия 2 внутри-чанк (T1/T2) — capability floor

T1 (gl.7 古月族人没有一个不知道的, двойное отрицание = «все знали») — КАТАСТРОФА-класс, детерм. читаемо:

Арм рендер вердикт
P0 (glm base) «не знал в роду Гуюэ ни один человек» ✗ ИНВЕРСИЯ (никто)
P1a (glm disc) «в роду Гуюэ не знал ни один человек» ✗ ИНВЕРСИЯ (промпт НЕ починил)
F-base (gpt-5.4 base) «не знал разве что мёртвый» ВЕРНО (все знали)
F-disc (gpt-5.4 disc) «не было ни одного, кто бы его не знал» ВЕРНО

Дешёвая модель инвертирует полярность НЕЗАВИСИМО от промпта; фронтир чинит НЕЗАВИСИМО от промпта → это МОДЕЛЬ-потолок, не активация. T2 (物是人非 chengyu): P0/P1a сплющивают («всё изменилось»); F-base улучшает («стало совсем не тем, что прежде» — восстанавливает 人非-контраст). Тот же знак: фронтир-редактор ловит смысловой дефект черновика, дешёвый — нет.

2.3. Претензия 2 кросс-граница (T5/T6) — слабые трапы в этом срезе

  • T5 (ch24.1 这…铜皮蛊): все армы рендерят локально-когерентно («это не природный цвет кожи, а эффект гу Медной кожи») — предложение самодостаточно, chunk-изоляция его НЕ ломает. A-ref-prev дал БАЙТ-идентичный P1a выход (prev-контекст ничего не изменил — чинить было нечего).
  • P1c (глава целиком) на T5 — единственный, кто ЯВНО связал антецедент: «Как у этого наставника: вся его кожа бронзового цвета» — склеив 24.0+24.1, редактор соединил «этого наставника» ↔ бронзовую кожу (chunk-изолированные оставляют висячее «его»). Один датапоинт: whole-chapter даёт кросс-граничный лифт связывания, но на этом срезе кросс-граница — НЕ доминирующий сбой (в отличие от within-chunk T1).
  • Честно (пре-рег-оговорка): next-supported/катафора-трапа в раннем срезе нет; вывод по кросс-границе — предварительный (2 prev-трапа, локально самодостаточные).

2.4. Capability-vs-activation — прямой ответ на вопрос владельца

Потолок РАСЩЕПЛЁН по двум претензиям — не «модели ИЛИ организация», а «каждая претензия — своё»:

Претензия владельца Где потолок Доказательство (партия 1) Near-term ход
(1) абзацы / конвенции РЯ наша ПРОМПТ/ПАЙПЛАЙН (активация) дискурс-промпт двигает KPI на обеих моделях; F-base (фронтир+старый промпт) ХУЖЕ P0; A-2pass (дешёвый 2-пасс) — лучший (3.33) катить дискурс-промпт + отдельный target-only reflow-пасс на ДЕШЁВОЙ модели
(2) понимание связей внутри-чанк дешёвая МОДЕЛЬ (capability) T1 инверсия: glm-5 фейлит обе промпт-версии, gpt-5.4 чинит обе; T2 то же селективная фронтир-эскалация редактора на смысл-риск ИЛИ фронтир-редактор; промпт НЕ закрывает
(2) связи кросс-граница не доминирует в срезе; whole-chapter даёт лифт A-ref null (локально самодостаточно); P1c связал антецедент НЕ строить сложную Ф2-память под слабый сигнал; whole-chapter/edit=глава — кандидат под ROI

2.5. Судейская корроборация (trap-accuracy, кросс-семейно) — ЗАВЕРШЕНА

Панель gpt-5-mini + kimi-k2.6, span-цитаты, self-family exclusion (F-* армы OpenAI → судит только kimi; gpt-5-mini исключён). 50 вызовов, ~$0.50 (OpenAI $0.03 + Kimi $0.46). Свод (✓ correct / ~ partial / ✗ wrong):

Трап P0 P1a A-2pass A-layout F-base F-disc Читается
T1 (двойн. отриц., КАТАСТРОФА) ✗✗ кат ✗✗ кат ✗✗ кат ✗✗ кат ОБА судьи флагают КАТАСТРОФУ на ВСЕХ дешёвых армах; ОБА чистят фронтир → model floor корроборирован независимо
T2 (物是人非 тело) ~~ ~~ ~✗ ~ ~ дешёвый = partial, фронтир не хуже; A-layout ✗ у kimi (CJK-порча)
T2b (物是人非 заглавие) ~~ ~~ ~~ фронтир чинит заглавие-chengyu, дешёвый — partial
T5 (кросс-гр. prev) ✓✓ ✓✓ ✓~ у ВСЕХ → трап локально самодостаточен (не дифференцирует)
T6 (кросс-гр. prev #2) ~✗ ~~ ~✓ ~ шумно, без чистого паттерна → кросс-граница неинформативна в срезе
T4 (диалог-КОНТРОЛЬ) ✓✓ ✓✓ ✓✓ (ERR) диалог-оформление сохранено ВЕЗДЕ → армы НЕ ломают контроль

Корроборация (методика-guard, НЕ ложная сходимость): судьи ЕДИНОГЛАСНЫ там, где сигнал резкий (T1-катастрофа на 4 дешёвых армах 2/2 судьи + оба чистят фронтир; T4-контроль сохранён) и ЧЕСТНО РАСХОДЯТСЯ на тонком (T2 partial, T6 шум). Leave-one-judge-out на T1: любой из 2 судей в одиночку держит ✗+катастрофу на дешёвых. T1-вывод стоит на ДЕТЕРМ. полярности И независимой кросс-семейной панели — не на среднем ранге. Судейская панель ПОДТВЕРЖДАЕТ §2.4: претензия-2-внутри-чанк = capability floor; кросс-граница (T5/T6) в срезе не дифференцирует.

2.6. Дерево решений — резолюция партии 1

  • P1a закрывает абзацы БЕЗ падения длины/атомов ✓ → катить дискурс-промпт, размер НЕ менять (ветка 1 подтверждена). Сильнее — A-2pass (target-only reflow-пасс) — рекомендация near-term №1 по П1.
  • A-layout (deformat) улучшает абзацы, НО CJK-утечка → deformat/atom-rendering строить ТОЛЬКО с CJK-пост-гардом (иначе регресс).
  • ±1 reference НЕ дал лифта (трапы локально самодостаточны) → малое context-window до Ф2 под этот срез НЕ обосновано; пере-проверить, когда/если появятся next-supported/катафора-кейсы.
  • Whole-chapter (P1c) дал кросс-граничный лифт связывания (1 датапоинт) но НЕ выиграл абзацы у A-2pass → chapter state-extraction — кандидат под ROI, НЕ near-term приоритет.
  • Фронтир чинит within-chunk смысл, организация — нет (T1)model floor на претензии 2-внутри-чанк: дешёвый трек её НЕ дотянет промптом; ход — селективная фронтир-эскалация редактора по смысл-риску (не тотальный фронтир — F-base абзацы даже портит).

2.7. Предварительная near-term рекомендация (на ратификацию оркестратора — НЕ смена дефолта этой сессией)

  1. Претензия 1 (абзацы): внедрить дискурс-reflow-контент (Ван Цуй 5 техник + Розенталь) в editor-промпт — дёшево, модель-агностично, доказанный лифт (P1a); рассмотреть отдельный target-only reflow-пасс (A-2pass, лучший KPI) под COGS-замер (~2× editor-output — оценить на полной книге).
  2. Претензия 2 (смысл внутри-чанк): промпт НЕ закрывает на дешёвой модели → селективная фронтир-эскалация редактора по смысл-риску (двойное отрицание/chengyu/инверсия черновика) — точечно, не тотально (тотальный фронтир портит абзацы и жжёт COGS). Квантификация — fidelity re-gate (§3) + партия 2.
  3. CJK-гард обязателен при любом deformat-черновике (A-layout урок).
  4. НЕ строить сложную Ф2-кросс-чанк-память под этот срез (сигнал слабый); whole-chapter/edit=глава — держать кандидатом под доказанный ROI.

Оговорки (методика-guard): trap-набор мал (6 трапов, prev-boundary, без катафоры); фронтир = 1 модель (gpt-5.4), Gemini/grok переводчиками не гонялись (бюджет/эхо); T1-вывод — 1 катастроф-датапоинт (но детерм.-чистый); срез — PD-смежная ранняя арка (без 18+); это ИНТЕРИМ пре-скрин (D35), НЕ вердикт пилота Ф2.5.

3. Fidelity re-gate (ПАРАЛЛЕЛЬНО, D34.3 — независим от §1-§2)

Span-цитирующий, reasoning-ON, раздельно стиль/верность, охота на КЛАСС ИНВЕРСИЙ редактуры (ch11/0 аутлайер: editor расширил 3009→4631, sim 0.064), катастроф-скрин терминов у победителя, author≠reviewer (не glm-5/deepseek), leave-one-out. Вход — rerun/rerun-parallel.txt (57 чанков, выровнено ОРИГ|ПЕРЕВОД) + records.json. Пере-прогон НЕ засчитан до пройденного re-gate. (результаты — ниже, после прогона.)