430 lines
41 KiB
Markdown
430 lines
41 KiB
Markdown
# 19. Контракт редактора: ДИФФ против FULL-REGEN (арм Q4b) + покрытие инъекции
|
||
|
||
**Полигон-сессия 04–05.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; редактор без блока ломает 5–12 из 20 канонических клеток черновика (два розыгрыша);
|
||
и он же вносит собственные дефекты (тихий обрыв при `finish=stop`, 五百年→«полувекового»).
|
||
|
||
**Чего проба 18 не могла сказать:** является ли это свойством МОДЕЛИ или свойством КОНТРАКТА
|
||
роли. Действующий контракт — full-regen с обязательной ДИСКУРС-ПЕРЕВЁРСТКОЙ и прямым мандатом
|
||
«варьируй лексику» (`editor.md`), то есть модель просят переписать текст целиком. Целевой контракт
|
||
(`09-target-architecture.md` §Слой 3, спека `research/19` §C1–C2) — узкие правки диффом. Разницу
|
||
никто не мерил.
|
||
|
||
### §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 на дифф-армах;
|
||
- канон (пп.2–3) и 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.5–2×» | **кэш-нейтрально ×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 |
|
||
|
||
> ### ⚠ САМЫЙ КРУПНЫЙ ЭФФЕКТ ПРОБЫ (в первой редакции отчёта эта строка не была посчитана)
|
||
> **Без блока дифф держит канон 19–20 из 21, full-regen обваливает его до 6–12 из 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 колеблется 18–24.
|
||
|
||
### 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%»).
|
||
|
||
| Контракт | сайтов починено |
|
||
|---|---|
|
||
| **дифф** | 2–3 из 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.5–2 раза ДОРОЖЕ 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` нет вовсе
|
||
(`low`→`high`, 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.95–0.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.95–0.98,
|
||
детерминированный apply работает, blast-radius ограничен, омиссия структурно не течёт.
|
||
2. **Но окупается он только там, где выход ≠ размышление.** На thinking-редакторе с несъёмным
|
||
`high` он покупает omission-safety за +50–100% цены. Это торг, а не улучшение.
|
||
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.95–0.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).
|
||
|
||
Средние исходы печатаются как «неопределённо», не абсорбируются. Девиации объявляются.
|