34 KiB
Эксперимент 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-flashv1-reflow→ editorglm-5v2-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 / катафора-трапа в раннем срезе (гл.2–25, ранняя арка деревни) не нашлось дёшево — кросс-граница здесь 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 chunk0∪chunk1 внутри главы (как 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-мандату (не заменяет сверку смысла/полноту/глоссарий):
- Молча определи смысловые ходы: единый фокал/наблюдатель; действие + непосредственная реакция; одна тема рассуждения; смена говорящего/времени/места/фокала.
- Один повествовательный ход — обычно один русский абзац, ДАЖЕ если китайский разбит на однофразовые строки (паратаксис→гипотаксис). Инструмент слияния — причастные/деепричастные обороты + подчинительные союзы/связки (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 / глава × две политики границ (жадная упаковка | сцен/дискурс-граница) при сопоставимом бюджете (иначе размер спутается с качеством границ).
- Бюджет чанка — в ВЫХОДНЫХ токенах на реальном токенизаторе (кириллица-фертильность ~2–2.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), либо total−prompt−completion (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.015–0.02/чанк-edit; ~$1.5–2.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/… (судьи): ~$1–2 суммарно (кап $0.20).
- xAI (grok доп-фронтир, опц.): ≤$1 (кап $0.40), НЕ ch1.
- Итог-цель ≈ $5–8 суммарно, глубоко в остатках. Финальная сумма по ключам — в §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. Результаты (заполняется ПОСЛЕ заморозки §1 — не входит в freeze-commit)
(пусто до прогонов; sha256 замороженных промптов армов, точные D глав Ступени II, таблицы армов — KPI-абзацы / trap-accuracy со спанами / perturbation / retry-по-причинам / цена — кривые размер↔качество↔биллинг↔ретраи — capability-vs-activation вывод — рекомендация near-term конфига + что строить под ROI — 3 финалиста для слепого чтения — суммарная трата по ключам.)
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. (результаты — ниже, после прогона.)