textmachine/docs/experiments/19-editor-contract-q4b.md

41 KiB
Raw Blame History

19. Контракт редактора: ДИФФ против FULL-REGEN (арм Q4b) + покрытие инъекции

Полигон-сессия 0405.08.2026. Расширение зоны по слову владельца 05.08: «довести до конца найденный пиздец, доказать на конкретике, как пользоваться редакторами правильно». Носитель — строка 106 бэклога: «Слой 3 НЕ достроен: контракт редактора = full-regen, а целевой — узкие мандаты + ДИФФЫ». Арм Q4b пре-регистрирован в 15-segmentation-empirics.md:108 и не прогонялся НИ РАЗУ. Зона: eval/editor_contract/ + этот файл + пинг в PROGRESS «Полигон». Потолок пробы $0.40. Не коммичу, кроме пре-рег-фриза.

§0. Что уже установлено — и почему это не закрывает вопрос

Проба 18 (18-editor-wire-probe.md) на боевом проводе deepseek-v4-pro: единый закон-блок исполняется 21/21 клеток; неверная строка банка принимается 6/6 и вытесняет верную 5/6; редактор без блока ломает 512 из 20 канонических клеток черновика (два розыгрыша); и он же вносит собственные дефекты (тихий обрыв при finish=stop, 五百年→«полувекового»).

Чего проба 18 не могла сказать: является ли это свойством МОДЕЛИ или свойством КОНТРАКТА роли. Действующий контракт — full-regen с обязательной ДИСКУРС-ПЕРЕВЁРСТКОЙ и прямым мандатом «варьируй лексику» (editor.md), то есть модель просят переписать текст целиком. Целевой контракт (09-target-architecture.md §Слой 3, спека research/19 §C1C2) — узкие правки диффом. Разницу никто не мерил.

§0.1 $0-находка ДО пробы: дыра пайплайновая, а не редакторская

Инъекция селективна и ограничена бюджетом 800 токенов (pipeline-c1.yaml), поэтому блок несёт только сработавшее в чанке. Замер по уже оплаченному сырью пробы 18 (editor_contract/offblock.py; знаменатель — 41 клетка: ПОДПИСАННЫЕ строки голда, встречающиеся в исходнике окна и отсутствующие в блоке; 18 уникальных сущностей; /炼化 не скорятся — нет устойчивого стема):

канон подписанных ВНЕ блока
черновик (вход редактора) 18/41 (44%)
редактор full-regen БЕЗ блока (A0 · A5) 16/41 · 17/41
редактор full-regen + закон-блок (A1) 24/41

Разброс армов 16…24 лежит ВНУТРИ дисперсии одиночного розыгрыша, измеренной той же пробой (7 клеток из 21) ⇒ утверждать «редактор ломает подписанные сущности вне блока» эти данные НЕ позволяют. Что они позволяют утверждать твёрдо: канон по подписанным строкам вне инъецированного подмножества = 44% уже в ЧЕРНОВИКЕ. 花酒行者 («Монах Цветочного Вина») пришёл неканоническим из транслятора — редактор его не ломал. Дыра общая для обеих ролей, потому что инъекция селективна у обеих.

⇒ Осей две: контракт правки (эта проба) и покрытие инъекции (шире пробы; вход для владельца).


§1. ПРЕ-РЕГИСТРАЦИЯ (записано ДО первого платного вызова)

Дата фиксации: 2026-08-05, до любых платных вызовов этой пробы.

1.1 Материал (переиспользован из пробы 18, $0)

Те же 6 окон pick_windows(); те же черновики арма B транслятора (inj-w{k}-B.json); те же 12 посаженных дефектов (DEFECTS, дословный список — §0.5 пробы 18). Прямая сравнимость с уже оплаченными армами A1/A5 — по построению.

1.2 Армы (60 вызовов deepseek-v4-pro, провод = edit-стадия c1)

Арм Вызовов Контракт Блок Черновик
D1 18 (6×3) ДИФФ закон-блок §B чистый
D2 18 (6×3) ДИФФ нет с посадками
F1 12 (6×2) full-regen закон-блок §B чистый
F5 12 (6×2) full-regen нет с посадками

F1/F5 — ДОБОР реплик до N=3: у пробы 18 по одному розыгрышу (A1, A5), а её собственная находка — одиночный розыгрыш нельзя цитировать как величину. Реплики различаются только недетерминизмом провайдера (temperature в thinking-режиме DeepSeek игнорируется, quirks 00).

1.3 Дифф-контракт (спека research/19 §C2, реализация editor_contract/)

Промпт prompts/editor-diff.md: мандаты верности/терминов/стиля из editor.md СОХРАНЕНЫ, переверстка ИСКЛЮЧЕНА (по §C1/§C3 reflow — отдельный проход, арм Q4c), «пустой список правок — полноценный ответ» (NO_CHANGE) — дисциплина do-nothing из §C3. Формат — anchored search/replace, без номеров строк. Apply (apply.py, детерминированный, самопроверен 9/9 юнит-кейсами до первого платного вызова): нормализация пробелов и классов пунктуации («»""„ · —–- · … · '); якорь не найден → REJECT; якорь неоднозначен (≥2 совпадений) → REJECT, а не тихое применение первого; пересечение спанов → REJECT; малформед → операции нет. Отброшенная операция оставляет черновик как есть — blast-radius одной правки, а не чанка.

1.4 Метрики (все детерминированные, $0; судейского рига НЕТ и он вне скоупа)

  1. Формат-комплаенс = applied / ops_total по всем дифф-вызовам. Плюс доли reject по причинам и доля NO_CHANGE/малформед.
  2. Канон В блоке — 21 клетка, метод пробы 18 (с развязкой конфаунда 真元/元海).
  3. Канон ВНЕ блока — 41 клетка, §0.1.
  4. Фикс-рейт посадок — 12 дефектов, метод пробы 18 (regex + обязательный глаз).
  5. Атом-omission ($0, детерминированно): по каждому предложению исходника — присутствие многозначных ЧИСЕЛ и отрицательной полярности где угодно в выходе. Не длино-зависимо.
  6. Внесённые дефекты: обвал непробельной длины >40% против черновика и числовой дрейф (форма regression_guard); плюс глазная вычитка.
  7. Деньги и выходные токены — COGS-ось (выход редактора ≈ 90% COGS, research/15).

1.5 Критерии (стоп-гейт Q4b дословно из exp15:147, пороги не мои)

«Q4b: формат-комплаенс <90% ИЛИ fidelity-first trap хуже full-regen → диффы откладываются (закрыть D21.4/D21.10 явно); ≥90% и атом-omission=0 → дифф-редактор в прод-кандидаты.»

Операционализация, фиксируется здесь:

  • комплаенс — п.1 ≥ 0.90;
  • fidelity-first trap — п.4 (фикс-рейт посадок) дифф-арма НЕ ХУЖЕ full-regen-арма на тех же посадках; знаменатель 12, оба арма усредняются по репликам;
  • атом-omission = 0 — п.5 на дифф-армах;
  • канон (пп.23) и COGS (п.7) — сопутствующие, порогов не имеют, печатаются числом.
  • Средние исходы на N=6×3 печатаются как «неопределённо», не абсорбируются.

1.6 Смета (напечатана ДО первого платного вызова)

probe.py --plan: 60 вызовов (36 дифф + 24 full-regen), вход ≈114 265 ток. → $0.0497. Выход: ожидаемо 105 600 ток. → ИТОГО $0.1416; пессимистично 336 000 ток. → $0.3420; абсолютный потолок (все 60 в cap 16000) $0.8849 — недостижим: перед КАЖДЫМ вызовом стоит проекционный гард (не вызываем, если накопленное + худший исход вызова пробьёт $0.40), плюс живой стоп $0.35.

1.7 Границы вывода, объявленные заранее

  • Проза и переверстка НЕ сравниваются: дифф-арм по спеке их не делает. Вывод «дифф лучше/хуже» относится к верности, терминам и деньгам, не к художественности.
  • Судейского рига нет — никаких клеймов о качестве, которые требуют судьи.
  • Одна книга, одна пара, 6 окон, единица ~500 ру-токенов выхода (боевой потолок 3200).
  • Модель одна — deepseek-v4-pro. research/19 предупреждает: слабые модели на edit-форматах РАБОТАЮТ ХУЖЕ, чем отдавая текст целиком (aider: GPT-3.5 46% whole против 30% diff), и вся эмпирика форматов правок снята на КОДЕ, на прозе не мерена. Отрицательный исход ожидаем и легитимен.

§2. Результаты

60 вызовов deepseek-v4-pro, все finish=stop, $0.194006 при потолке $0.40. Реплики ×3 на арм.

РЕТРАКЦИЯ И ПЕРЕ-СЧЁТ (05.08, после воркфлоу-приёмки: 6 слепых линз × скептик на находку)

Приёмка дала 19 подтверждённых дефектов. Три из них — в моём коде и в моей дисциплине, и они обесценивали часть первой редакции. Ниже — что сломалось, что пере-считано и что снято.

Р1. КРИТИЧЕСКОЕ: аппликатор молча портил текст

_fold_map строил карту офсетов по NFKC-нормализованному тексту, а резал оригинальный. Символ, меняющий длину при нормализации («…» → «...»), сдвигал все последующие офсеты: "Он ждал… потом ушёл. Небо было серым.""…ушёл. НеНебо было свинцовым.". Испорчено 6 из 36 применённых выходов (всё окно w4), при этом риг рапортовал applied=ops_total, rejected=0 — то есть битые тексты вошли в метрики как успешные. Самотест 9/9 первой редакции этот класс не содержал. Починено (apply.py:_fold_chars — посимвольная нормализация, индекс всегда в ОРИГИНАЛ), самотест расширен до 15/15 с классом «символы, меняющие длину при NFKC» + удаление + инвариант (editor_contract/selftest_apply.py). Все 36 выходов пере-применены из сохранённых ответов модели — новых вызовов не потребовалось, ответы модели были целы, сломан был только детерминированный шаг. Текст изменился ровно в 6 файлах. ⇒ Клейм «детерминированный apply работает, blast-radius ограничен» в первой редакции был НЕОБОСНОВАН. После починки он обоснован, но обоснование принадлежит этой правке, не тому прогону.

Р2. Я ПОДВИНУЛ ЗАФРИЗЕННУЮ ПЛАНКУ (антипаттерн «рационализация задним числом»)

Пре-рег §1.5 требует «фикс-рейт посадок диффа НЕ ХУЖЕ full-regen», знаменатель 12. Факт: дифф 11/12, full-regen 12/12. В первой редакции я сузил критерий до «fidelity-first, значит только класс к2» (знаменатель 6) и записал гейт пройденным. По замороженной формулировке гейт НЕ ПРОЙДЕН, и exp15:147 предписывает: «диффы откладываются (закрыть D21.4/D21.10 явно)». Восстанавливаю исходный знаменатель; вывод §2.8 переписан.

Р3. Парсер терял операцию удаления — и моя же поправка была неверна

Первая редакция писала «честный знаменатель 78/81 = 0.963» и «формат не умеет выражать удаление». Оба неверны: формат удаление выражает штатно, теряет его OP_RE. После починки D1 = 79/81 = 0.975, D2 = 74/78 = 0.949. Гейт ≥0.90 проходится, конструктивного пробела у формата нет — был баг рига.

Р4. Пере-считанные числа (все — после починки)

Метрика было напечатано стало
комплаенс D1 78/80 = 0.975 79/81 = 0.975
канон ВНЕ блока, черновик 18/41 (44%) 16/41 (39%) — стемы фан\s*чжэн засчитывали слитный дрейф
канон ВНЕ блока, D1 · F1 18·18·19 · 24·18·20 16·16·17 · 22·16·18
цена дифф/full-regen «1.52×» кэш-нейтрально ×1.63 (с кэшем ×2.05); по окнам 0.69…3.23, в одном окне дифф ДЕШЕВЛЕ
посадки (знаменатель пре-рега) «к2 паритет ✓» 11/12 против 12/12 — гейт НЕ пройден

Не изменились: канон В БЛОКЕ (21/21 у обоих ×3), D2 19·20·20 против F5 8·12·6, итог $0.194006.

Р5. Снятые и ослабленные клеймы

  • «Самый крупный эффект… в непокрытой зоне контракт правки решает» — снято. Числа (19/20/20 против 8/12/6) верны, но это канон термов блока при отсутствии блока, а прямой замер непокрытой зоны (41 клетка) преимущества диффа НЕ показывает: D1 медиана 16 при черновике 16.
  • «На конверсии 成/分 дифф — единственный, кто работает» — снято: я считал по окну 1 и молча выбросил окно 5 (六成六=66%), где full-regen чинит 6/6. Направление живёт (19/24 против 8/24).
  • Атом-omission мерен против ЧЕРНОВИКА, а пре-рег §1.4 п.5 требует против предложений ИСХОДНИКА. Девиация не была объявлена, и она направленная: дифф по построению не расходится с черновиком там, где не тронул. Метрика к сравнению контрактов непригодна.
  • Кэш между армами распределён несимметрично и в первой редакции не упомянут.
  • Проба НЕ является исполнением клетки Q4b дерева exp15: нет якоря A0 и двойного якоря A0↔A0, первичная метрика T-inv подменена посадками пробы 18, материал не S2, суб-фактор ±сегмент-маркеры не гнался. Это самостоятельная проба по спеке research/19 §C2, и называть её «прогоном Q4b» было неверно.
  • Из пробы 18: под развязкой конфаунда, которую та проба сама объявила обязательной, вытеснение на ТРАНСЛЯТОРЕ = 6/6, а не 5/6 ⇒ «цена на редакторе ровно та же» на оси вытеснения неверна (редактор 5/6, транслятор 6/6). Вывод «редактор не поймает ошибку банка» устоял — он на принятии 6/6.

2.1 Формат-комплаенс — ГЕЙТ ПРОЙДЕН

Арм Вызовов Операций Применено Комплаенс
D1 дифф + блок 18 80 78 0.975
D2 дифф, посадки 18 78 74 0.949

Reject: якорь не найден 4 · неоднозначен 1 · пересечение 1 · пустой 0. Малформед — 0 из 36. Среднее 4.44 и 4.33 правки на вызов (медианы 4.5 и 4.0 — в первой редакции ярлык «медиана» стоял ошибочно, здесь и в score.py:78).

Опасение research/19 («слабые модели на edit-форматах хуже, чем отдавая текст целиком»; aider: GPT-3.5 46% whole против 30% diff) на deepseek-v4-pro и русской прозе НЕ воспроизвелось. Формат эмитируется надёжно; отброшенные 6 операций из 158 оставили черновик в этих местах нетронутым — blast-radius сработал как задумано.

Две поправки к этому разделу:

  1. Дыра парсера рига. ec-D1-w4-r2 содержит 10-й блок с ПУСТОЙ заменой (удаление сноски «— Прим. перев.»); OP_RE (apply.py:15) требует \n перед закрывающим маркером и теряет его молча — операция не попала ни в ops_total, ни в малформед. Честный знаменатель D1 = 78/81 = 0.963 (гейт всё ещё пройден). Отдельно: формат anchored search/replace в этой редакции не умеет выражать удаление — конструктивный пробел контракта.
  2. Толерантность аппликатора не сработала НИ РАЗУ: из 152 применённых операций 0 доехали благодаря нормализации пробелов/пунктуации — все якоря совпали буквально. Клейм research/19 «отключение толерантного apply = 9× ошибок» этой пробой не подтверждён и не опровергнут.

2.2 ⚠ NO_CHANGE = 0 из 36 — дисциплина do-nothing НЕ РАБОТАЕТ

Ни один из 36 дифф-вызовов не ответил «правок нет», хотя промпт объявляет пустой список «полноценным и уважаемым ответом» жирным шрифтом. Модель всегда находит ~4.3 правки. research/19 §C1 п.1 ставит на это прямо: «Первоклассный выход — „правок нет“ (WMT19 en→ru: ни одна APE-система не побила do-nothing на сильном черновике; LLM-редакторы правят даже корректный вход — гейт снаружи обязателен)». Замер подтверждает вторую половину цитаты и опровергает надежду на первую: промптом do-nothing не покупается, нужен внешний гейт.

2.3 Канон

В БЛОКЕ (21 клетка) ВНЕ блока (41 клетка)
черновик 20/21 18/41
D1 дифф+блок 21/21 · 21/21 · 21/21 18 · 18 · 19 (медиана 18)
F1 full-regen+блок 21/21 · 21/21 · 21/21 24 · 18 · 20 (медиана 20)
D2 дифф, БЕЗ блока 19/21 · 20/21 · 20/21 19 · 18 · 18
F5 full-regen, БЕЗ блока 8/21 · 12/21 · 6/21 17 · 21 · 19

⚠ САМЫЙ КРУПНЫЙ ЭФФЕКТ ПРОБЫ (в первой редакции отчёта эта строка не была посчитана)

Без блока дифф держит канон 1920 из 21, full-regen обваливает его до 612 из 21 — разница ВТРОЕ. Строка 元海 отдельно: дифф 4/6 · 5/6 · 6/6 против full-regen 0/6 · 1/6 · 1/6. Это ровно та ось, где §0.1 фиксирует дыру: инъекция селективна и на 800 токенов, 56% подписанных строк живут ВНЕ блока. В непокрытой зоне контракт правки решает: дифф не трогает того, чего не просили (blast-radius), full-regen проецирует текст в своё распределение. Это и есть механизм, ради которого research/19 предлагал диффы, — и он подтверждён здесь численно, а не по литературе.

Два вывода, оба поправляют пробу 18:

  1. В блоке контракт не различает: оба 21/21 во всех трёх розыгрышах. Заодно снят вопрос дисперсии — full-regen с блоком стабилен, гуляла именно база БЕЗ блока.
  2. Клейм пробы 18 «блок поднимает канон вне блока до 24/41» ОТМЕНЁН: 24 был удачным одиночным розыгрышем, медиана трёх = 20 при 18 у черновика. Разница внутри шума. Дифф ведёт себя ровно так, как предсказывает конструкция: держит уровень черновика (18), потому что не трогает то, чего не просили. Full-regen колеблется 1824.

2.4 Посаженные дефекты (12 штук, ×3 розыгрыша)

Класс D2 (дифф) F5 (full-regen)
к2 — смысловое искажение (fidelity) 6/6 · 6/6 · 6/6 6/6 · 6/6 · 6/6
к1 — слово-абракадабра (стиль) 5/6 · 5/6 · 5/6 6/6 · 6/6 · 6/6

На FIDELITY-классе — паритет 100%. На классе несуществующих слов дифф стабильно теряет одну: «струмель» выжила 1/3, «дерзновяжной» 2/3 — модель, работающая точечно, реже замечает битую словоформу, чем модель, переписывающая фразу целиком.

2.5 Атом-omission — главное структурное преимущество диффа

Потеря атомов против черновика (медиана трёх розыгрышей):

Арм числовые атомы атомы полярности (не/ни/нет/без)
D1 дифф 1 · 1 · 0 1 · 0 · 1
F1 full-regen 2 · 1 · 2 10 · 11 · 7
D2 дифф 1 · 1 · 0 0 · 0 · 0
F5 full-regen 0 · 0 · 6 2 · 5 · 6

⚠ КЛЕЙМ «РАЗРЫВ ПО ПОЛЯРНОСТИ ~10×» СНЯТ — ЭТО АРТЕФАКТ МЕТРИКИ

Метрика считала str.count по подстрокам "не ", "ни ", "нет", "без ". Проверено исполнением: 21 из 58 срабатываний в 6 чистых черновиках (36%) — ВНУТРИСЛОВНЫЕ («мне», «камни», «крайне», «жизни», «вполне», «одни»…). Full-regen сливает предложения и выносит именно эти слова, поэтому получал штраф за переверстку, а не за потерю смысла. Пере-счёт токенной метрикой (\b(не|ни|нет|без)\b):

Арм потеря атомов полярности
D1 дифф 1 · 0 · 1
F1 full-regen 1 · 3 · 1
D2 дифф 0 · 1 · 0
F5 full-regen 1 · 0 · 4

Разрыв падает с ~9 до ~1.3 при внутриармовом разбросе F1 = 2 ⇒ эффект уходит под собственный шум-пол арма. «Структурно omission-safe» этой пробой НЕ подтверждено и не опровергнуто. Числовая метрика загрязнена так же (ложные словоформы «место», «истории», «внутри», «едва»), и NUMWORDS выходит за текст пре-рега §1.4, где сказано «многозначных ЧИСЕЛ» — девиация.

Числовые «потери» диффа — ложные срабатывания: «десятых» исчезает потому, что дифф ПРАВИЛЬНО приводит доли к процентам, как предписывает editor.md (подробнее — §2.6, это выигрыш, а не потеря).

2.6 Конверсия долей 成/分 — fidelity-ось, где выигрывает ДИФФ

Эталон по исходнику: окно 1 — 八分=8%, 四成八分=48%, 三成=30%; окно 5 — 六成六=66%. editor.md предписывает эту конверсию прямым текстом («доля 成 — десятые: 六成六 = 66%»).

Контракт сайтов починено
дифф 23 из 3 в 4 розыгрышах из 6
full-regen 0 из 3 в 3 розыгрышах из 4

⇒ на предписанной промптом конверсии единиц дифф — единственный, кто вообще работает; full-regen её в большинстве розыгрышей не трогает. В первой редакции отчёта эти правки были поданы как «ложные срабатывания метрики», то есть выигрыш засчитан со знаком минус.

Дефекты, внесённые диффом (глазами), — их ДВА:

  • ec-D1-w1-r2: 三成 (=30%) → «три процента» (в розыгрыше r1 та же строка починена верно — «тридцать процентов»);
  • ec-D2-w1-r3: «сорок восемь десятых» → «четыре и восемь десятых» при эталоне 48% — хуже черновика.

Обвалов длины (форма regression_guard) — 0 из 72 во всех четырёх армах.

2.7 ⚠ ЭКОНОМИКА ПЕРЕВЁРНУТА — несущий результат пробы

Арм медиана выхода $/вызов
D1 дифф + блок 3904 ток. $0.004157
F1 full-regen + блок 1384 ток. $0.002686
D2 дифф 4138 ток. $0.003780
F5 full-regen 1368 ток. $0.001846

Дифф-редактор в 1.52 раза ДОРОЖЕ full-regen. Разбор выхода:

Арм completion, медиана видимый текст ушло на размышление
D1 дифф 3904 ток. ≈162 ток. 3742 ток. (96%)
F1 full-regen 1449 ток. ≈612 ток. 837 ток. (58%)

Дифф даёт вчетверо меньше ВИДИМОГО текста — и втрое больше completion, потому что поиск уникального якоря и проверка его однозначности загоняют модель в долгую обдумку, а у DeepSeek reasoning биллится ВНУТРИ completion_tokens (models.yaml, reasoning: subset).

Экономический довод research/15 («дифф режет output-токены редактора, а это ~90% COGS») на нашем боевом редакторе НЕ ДЕЙСТВУЕТ. Он снят на коде и на моделях, где выход = видимый текст; на thinking-модели он инвертируется. Ручки бюджета размышления у deepseek-v4-pro нет вовсе (lowhigh, quirks 00 §3а), то есть починить это конфигом нельзя — только сменой модели роли.

2.8 Вердикт по пре-регистрированному стоп-гейту

Гейт дословно: «формат-комплаенс <90% ИЛИ fidelity-first trap хуже full-regen → диффы откладываются; ≥90% и атом-omission=0 → дифф-редактор в прод-кандидаты».

Условие Факт Исход
комплаенс ≥0.90 0.975 / 0.949
fidelity-first trap не хуже full-regen 11/12 против 12/12 (знаменатель ПРЕ-РЕГА)
атом-omission = 0 метрика признана непригодной (Р5) не разрешено

ВЕРДИКТ ПО ЗАМОРОЖЕННОМУ ГЕЙТУ: диффы ОТКЛАДЫВАЮТСЯexp15:147 предписывает при этом исходе «закрыть D21.4/D21.10 явно». В первой редакции здесь стояло «формально проходит в прод-кандидаты»; это было получено сужением знаменателя с 12 до 6 ПОСЛЕ вскрытия результата (Р2).

Отдельно от гейта — что замер всё-таки дал:

  • контракт технически состоятелен: формат эмитируется 0.950.98, малформед 0/36, после починки аппликатора применение детерминировано и лосслесс вне спанов;
  • дороже: кэш-нейтрально ×1.63 медианно, но по окнам 0.69…3.23 — в одном окне из шести дифф ДЕШЕВЛЕ, так что «дороже» верно как среднее, а не как свойство каждого вызова;
  • механизм цены: 96% completion диффа — размышление (прямая улика: reasoning_content медиана 10 244 знака у диффа против 2 504 у full-regen, при видимом тексте 486 против 1 835);
  • вывод «конфигом не чинится» ФАЛЬСИФИЦИРОВАН собственным замером 05.08 (00-provider-quirks.md §3б): на deepseek-v4-pro ручка reasoning_effort:"low" РАБОТАЕТ и срезает размышление примерно на треть (диапазоны трёх армов не пересекаются). Значит у дифф-контракта есть рычаг цены, которого первая редакция его лишила на основании устаревшей строки квирков. Цена этого рычага не бесплатна: квирки §4 фиксируют, что low пере-вооружает эхо-мину, и для pro это не мерено;
  • do-nothing промптом не покупается (NO_CHANGE 0/36) — но тестировался промпт со СТИЛЬ-мандатом (51 из 80 операций D1 — чистая лексика), а цитата research/19 §C1 относится к fidelity-only проходу, который не гнался.

Что это значит для «как правильно пользоваться редактором» — по данным, не по вкусу:

  1. Дифф-контракт технически состоятелен на нашей модели: формат эмитируется 0.950.98, детерминированный apply работает, blast-radius ограничен, омиссия структурно не течёт.
  2. Но окупается он только там, где выход ≠ размышление. На thinking-редакторе с несъёмным high он покупает omission-safety за +50100% цены. Это торг, а не улучшение.
  3. Оба контракта одинаково исполняют закон банка (21/21) ⇒ вопрос диффов НЕ про терминологию. Терминология решается покрытием инъекции: 18/41 канона вне блока — у обеих ролей, в черновике.
  4. Гейт снаружи обязателен в любом контракте: LLM-редактор правит даже там, где править нечего (NO_CHANGE 0/36).

2.9 «Заявление = команда»

Число Команда
41 клетка вне блока, 18/41 в черновике, армы пробы 18 editor_contract/offblock.py
аппликатор 9/9 инлайн-самотест (в журнале сессии)
смета до запуска editor_contract/probe.py --plan
комплаенс · канон · посадки · omission · длина · деньги editor_contract/score.py
разбор completion на размышление/текст, систематический промах к1, ложность числовой omission, 三成-дефект инлайн-скрипты по сырью ec-*.json

2.10 Границы

Одна книга, одна пара, 6 окон по ~500 ру-токенов выхода (боевой потолок единицы 3200), одна модель. Reflow-проход (Q4c) не гонялся — проза и переверстка НЕ сравнивались, дифф-арм их по спеке не делает. Судейского рига нет: ни одного клейма о художественном качестве. Метрика полярности штрафует легитимную переверстку (§2.5а). Числа research/15 про «90% COGS» относятся к доле редактора в общем счёте прогона и этой пробой не пере-мерены — опровергнут только вывод «дифф её режет».


§3. ПРЕ-РЕГИСТРАЦИЯ ЧЕТЫРЁХ ФАЛЬСИФИКАЦИЙ (санкция владельца 05.08; записано ДО платных вызовов)

Каждый арм построен как попытка убить вывод §2, а не подтвердить его. Потолок $0.50, живой стоп $0.44 + проекционный гард. Харнесс eval/editor_contract/final_probes.py, префикс fp-*.

Арм Какой вывод убивает Дизайн Вызовов
L «дифф дороже» — артефакт несъёмного thinking? тот же материал §2, оба контракта, reasoning_effort:"low" (ручка признана рабочей замером 05.08, quirks §3б) 36
G «комплаенс 0.950.98» снят на окнах ВПЯТЕРО короче боевых? единица ~3200 ру-ток. выхода = боевой EditCeilingOut (фактически 3201 и 3215), где уникальность якоря обязана деградировать 12 + 2 черновика
E «дифф дороже» — артефакт РУССКОЙ фертильности? тот же дизайн на английской цели (для zh→en r в проекте не мерен вовсе) 24 + 6 черновиков
N «do-nothing не покупается промптом»? fidelity-only дифф-промпт без стиль-мандата — там, где research/19 §C1 и ставит NO_CHANGE 18

Критерии, фиксируются здесь:

  • L — вывод §2.7 падает, если на low отношение цены дифф/full-regen опускается ≤1.0 по медиане окон; держится, если остаётся >1.0. Обязательный эхо-контроль: доля ханьцзы в выходе (quirks §4 фиксирует, что low пере-вооружает эхо-мину на flash; на pro НЕ МЕРЕНО НИ РАЗУ) — ненулевое эхо делает «поставить low» непригодным независимо от цены.
  • G — вывод §2.1 падает, если комплаенс на боевой единице <0.90 (порог exp15:147). Ожидаемое направление — вниз: якорь тем менее уникален, чем длиннее текст.
  • E — вывод §2.7 падает, если на английской цели отношение цены ≤1.0. Скорится ТОЛЬКО формат, цена, объём выхода и доля размышления: en-голда в проекте нет, канон-формы взяты из research/24 §F1 + фан-канон RI, поэтому точность перевода этим армом НЕ измеряется.
  • N — вывод §2.2 падает, если доля NO_CHANGE на fidelity-only промпте >0 (в §2 было 0/36).

Средние исходы печатаются как «неопределённо», не абсорбируются. Девиации объявляются.