129 lines
11 KiB
Markdown
129 lines
11 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. Результаты
|
||
|
||
*(заполняется после прогона)*
|