textmachine/eval/dovodka/blind-read/PREREG-2-BLIND-READ.md

158 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Пре-регистрация 2: слепое чтение на ИСПРАВЛЕННОМ материале + активные нули
**Заморожено 02.09 ДО первого суждения и ДО платного вызова.** Заменяет
`PREREG-BLIND-READ.md`, чьи семь эррат перечислены в `RESULT-BLIND-READ.md`.
Первая редакция дала счёт 18:6:6 — он НЕ является входом сюда и НЕ влияет на правила ниже.
## 1. Что чиним и зачем
Первая редакция сломалась в двух местах, и оба чиним здесь:
- **Э-1 (главное).** Судьям показывали черновой чанк 0, тогда как стадия `edit` СКЛЕИВАЕТ
несколько черновых чанков (35 draft-единиц против 20 edit-единиц). В 10 юнитах из 15 опора
покрывала лишь 5579% судимого текста, и линза точности на трети материала работала вслепую.
⇒ Здесь черновик = **склейка всех draft-чанков, покрывающих edit-единицу**, с гейтом покрытия.
**Это дефект СБОРКИ ПАКЕТА, а не базового прогона.** Проверено исполняющей сессией пробы по
финальным черновикам (35 чанков): `finish=stop` 9 · `banknote_export` 26 · `length` **0**
обрезанных среди отгруженных нет ни одного. Единственный обрыв черновой волны (гл. 17 чанк 0)
починил ретрай. Прежняя формулировка «усечённый черновик» могла читаться как обвинение
материалу — материал цел, неверно резал его мой сборщик.
**Границы юнита берём из МАНИФЕСТА ДВИЖКА**, а не из эвристики: `<project_db>.manifest.json`,
поле `chapters[].units[]` даёт `first_chunk_idx` и `chunk_count`. Юнит собирается из чанков
`first_chunk_idx … first_chunk_idx + chunk_count 1`; недостающий чанк ⇒ юнит ОТСУТСТВУЕТ,
а не склеивается частично.
**Это капкан СТЕНДА, а не разовая описка** (установлено сверкой с сессией пробы: тот же
дефект независимо возник у неё в ковариате длины входа, где `chunk_count > 1` у 15 юнитов из 20).
Ключ `(глава, индекс)` у edit-юнита и у draft-чанка СОВПАДАЕТ, поэтому неверная склейка не даёт
ни исключения, ни пустоты, ни бросающегося в глаза расхождения длин — только тихо неверное
число. В этой книге юнит редактуры почти всегда шире одного чанка черновика.
- **Э-5.** Первичный тест был математически невалиден (ничьи в знаменателе против H₀=50% дают
ошибку I рода 17.8%). ⇒ Здесь тест — **точная перестановка меток на уровне ЮНИТА**, которая
ничьи трактует корректно и разом решает вопрос зависимости пар.
## 2. Активные нули — контроль, которого не было
Прежний нулевой контроль сравнивал текст с его побайтной копией и доказывал лишь, что судья
узнаёт копию. Референсного распределения для перекоса у замера НЕТ.
**Здесь: 10 пар `low₁` против `low₂`** — двух независимых прогонов ОДНОЙ дешёвой руки (`p9-low`)
при `temperature: 0.4`. Это чистый шум генерации: рука, промпт, усилие, черновик, снапшот и
конфиг совпадают.
**Как получается `low₂`:** копия базы `p9-low.db`, из которой удалены артефакты стадии `edit`
(чекпойнты, `chunk_status`, статус `jobs`), после чего движок вызывается тем же конфигом. Кэш
пуст ⇒ вызовы уходят заново. Ничего, кроме кэша, не меняется; стадии `draft` и `terminology`
не трогаются вовсе. ⚠ `--resnapshot` НЕ применяется. Процедура и её проверка — §7.
## 3. Материал
Те же 15 юнитов, 30 боевых пар (15 × 2 промпта), `off` против `low` на одном промпте.
Плюс 10 нулевых пар `low₁`/`low₂`. Итого 40 материалов × 3 линзы = **120 судей Opus**.
Линзы, порядок вариантов, блочная балансировка позиций и обезличенные имена файлов — как в
первой редакции (там они отработали: ключ цел, 662 цитаты из 688 лежали в своей руке, 0 в чужой).
## 4. Первичные исходы — их ДВА, и они объявлены здесь
| | Линза | Роль |
|---|---|---|
| **P1** | **точность относительно черновика** | **блокирующий**: именно он был сломан Э-1 и именно он защищает тезис «не хуже» |
| **P2** | **художественность** | содержательный: в первой редакции нёс весь сигнал (19:8, p=0.052) |
**Тест для обоих:** точная перестановка знака метки руки на уровне юнита (2¹⁵ = 32768 масок),
двусторонняя, статистика — разность числа побед. **Поправка Холма на два первичных исхода.**
**Линза естественности — вторичная и описательная.** Она в первой редакции голосовала за более
далёкий от черновика вариант в 25 случаях из 28: это детектор величины правки, а не качества.
**«Консенсус 2 из 3» первичным исходом НЕ ЯВЛЯЕТСЯ** и публикуется только как описание. Причина
записана заранее: линзы не независимы (каппа естественность×точность = 0.32, согласие ниже
случайного), и мажоритарное правило усиливает одну ось вместо усреднения трёх.
**Полный список публикуемых сравнений** (фиксируется до чисел, иных не будет): P1, P2, линза
естественности, консенсус, гард нулей, позиционный биас, связь победы с длиной, связь победы с
близостью к черновику, покрытие черновика. Девять. Вторичные подаются только с пометкой, что
поправку они не проходили.
## 5. Правило решения — покрывает всё пространство исходов
Проверяется СТРОГО в этом порядке; первая сработавшая строка и есть исход.
| № | Условие | Заключение |
|---|---|---|
| **0** | Гард нулей провален (см. §6) | ⛔ **ПРИБОР НЕГОДЕН.** Боевые числа не читаются вовсе. |
| **1** | Гейт покрытия провален (§6) | ⛔ Материал негоден, замер не состоялся. |
| **2** | P1: `low` проигрывает по точности, Холм-p < 0.05 | **Цена качества ЕСТЬ.** Экономия платится содержанием. `low` в бой не ставить. |
| **3** | P2: `low` выигрывает, Холм-p < 0.05, и строка 2 не сработала | **`low` не хуже по точности и лучше художественно** на этом материале. Гипотеза сильная, но объёмный тест обязателен. |
| **4** | P1: `off` не выигрывает значимо И P2 не значим | **Различие не предъявлено.** Ни одна рука не показала превосходства на этом n. |
| **5** | P2: `off` выигрывает, Холм-p < 0.05 | **Дорогая рука лучше художественно.** Экономия имеет цену. |
**Ни один исход не означает «ставить `low` в бой».** Решение о бое требует ещё и проверки на
объёме, где живёт дрейф терминов и голосов к нему этот прибор слеп по построению 8).
## 6. Гарды (проверяются ДО чтения боевых чисел)
1. **Гард нулей.** На 10 парах `low₁`/`low₂` тем же тестом. Перекос с p < 0.05 по любой из двух
первичных линз строка 0: прибор награждает шум, боевой счёт не читается.
Ожидание при исправном приборе: перевес около нуля, много ничьих.
**ДОПОЛНЕНО 02.09 — точный статус, потому что «до чисел» тут было бы неправдой.**
Панель отдала результат на диск в **21:49:10**, дополнение закоммичено в **21:59:40**
на десять минут ПОЗЖЕ. Числа при этом не читались: `atime` файла результата равен его `mtime`
(21:49:10), то есть до коммита файл не открывался, и автор дополнения чисел не видел.
Это **не пре-регистрация в строгом смысле**, а поправка, написанная вслепую к уже
существовавшему результату. Слабее фриза; засчитывать её как пре-рег нельзя, и при чтении
итога это ограничение действует. Повод (замечание сессии пробы: как отличить «прибор врёт»
от «нулей мало») от этого не теряет силы. Посчитано: при n=10 порог p<0.05 достигается ТОЛЬКО на
раскладах 9:1 и 10:0; расклад 8:2 даёт p=0.109 и гард его пропустит. Мощность: если прибор
реально награждает шум с силой боевого перекоса первой редакции (75%), гард сработает лишь в
**25% случаев**. Поэтому:
- **Непрохождение гарда НЕ ЕСТЬ доказательство исправности прибора.** Формулировка «нули
чисты» без оговорки о мощности запрещена.
- **Основной диагностический критерий не p, а СРАВНЕНИЕ С БОЕВЫМИ.** Считаются две величины:
(а) доля определившихся (не-ничьих) на нулях против доли на боевых парах точный тест
Фишера на таблице 2×2; (б) перекос среди определившихся на нулях против боевого.
- **Толкование:** если судьи объявляют победителя на чистом шуме так же охотно, как на разных
руках (Фишер p 0.05, то есть разницы в доле ничьих НЕ видно), это улика, что прибор не
различает шум и сигнал, **даже когда сам перекос на нулях незначим**. Такой исход
переводит результат в «ослаблен»: боевые числа публикуются с явной пометкой, что часть
сигнала может быть шумом, и вывод строки 3 не объявляется.
- **Дополнительный порог:** если перекос на нулях среди определившихся 0.5 боевого перекоса,
это то же предупреждение независимо от p.
- Эти критерии диагностические; блокирующей остаётся только строка 0 с p < 0.05.
2. **Гейт покрытия.** Для КАЖДОГО материала: доля текста варианта, покрытая показанным черновиком,
0.90 (выравнивание по словам). Материал ниже порога в пакет не идёт. Прежние 5579%
не прошли бы этот гейт ни разу.
3. **Гейт слепоты, исправленный после Э-3:** одиночные латинские буквы тоже считаются (прежний
искал `[A-Za-z]{2,}` и пропустил 2325 букв на руку). Порог не ноль, а СИММЕТРИЯ: разница
между руками 20%, иначе рука опознаваема.
4. **Ключ отложен**, судьям уходит только текст; md5 ключа фиксируется здесь и сверяется после.
5. **Позиции сбалансированы блочно**, 7 юнитов из 15 ставят дорогую руку первой на каждом промпте.
## 7. Процедура `low₂` и её проверка (исполняется ДО судейства)
1. `cp p9-low.db low2.db` работаем только с копией.
2. Удалить из копии артефакты стадии `edit`; `draft`, `terminology`, снапшоты и банк не трогать.
3. Сверить ДО вызова: снапшот `edit` совпадает с `p9-low`, `memory_version` совпадает,
`draft`-тексты совпадают побайтно. Расхождение остановка, вызовов не делать.
4. Потолок: `--ceiling-usd` на базу + резерв одной волны; ожидаемая цена **$0.66** по факту
`request_log` первой редакции. Расход сверх $1.20 остановка и доклад владельцу.
5. После прогона сверить: `draft`-тексты не сдвинулись; `edit`-тексты ОТЛИЧАЮТСЯ от `low₁`
(иначе кэш не был сброшен и «активный ноль» вырожден тогда гард нулей не исполнен, строка 0).
## 8. Чего замер не даст (унаследовано и не чинится здесь)
- **Дрейф терминов и голосов между главами** пары судятся изолированно; прибор слеп.
- **Воспроизводимость дорогой руки:** `reasoning: "off"` не эмитит параметр, едет вендор-дефолт,
который DeepSeek двигал 31.07 и 30.08; фактическое усилие в артефактах не записано.
- **Неравный потолок вывода:** мысль биллится внутри `completion_tokens`, поэтому дорогая рука
упиралась в лимит в 10 и 9 клетках из 20 против 1 и 1. Ось остаётся грязной в пользу `off`.
- **Переносимость:** 0.63% книги, холодный банк, 13 из 15 юнитов начала глав.
- **Планка владельца 2 претензии (D39.20)** этим прибором неизмерима: счётчик дефектов кэпится
на 4 (Э-6). Не публикуется вовсе.
- **Мощность:** n=30 при перестановочном тесте различает сдвиг примерно от 25 п.п. Отрицательный
результат меньшую разницу не исключает.