diff --git a/eval/dovodka/blind-read/PREREG-2-BLIND-READ.md b/eval/dovodka/blind-read/PREREG-2-BLIND-READ.md new file mode 100644 index 00000000..25f3aaf1 --- /dev/null +++ b/eval/dovodka/blind-read/PREREG-2-BLIND-READ.md @@ -0,0 +1,132 @@ +# Пре-регистрация 2: слепое чтение на ИСПРАВЛЕННОМ материале + активные нули + +**Заморожено 02.09 ДО первого суждения и ДО платного вызова.** Заменяет +`PREREG-BLIND-READ.md`, чьи семь эррат перечислены в `RESULT-BLIND-READ.md`. +Первая редакция дала счёт 18:6:6 — он НЕ является входом сюда и НЕ влияет на правила ниже. + +## 1. Что чиним и зачем + +Первая редакция сломалась в двух местах, и оба чиним здесь: + +- **Э-1 (главное).** Судьям показывали черновой чанк 0, тогда как стадия `edit` СКЛЕИВАЕТ + несколько черновых чанков (35 draft-единиц против 20 edit-единиц). В 10 юнитах из 15 опора + покрывала лишь 55–79% судимого текста, и линза точности на трети материала работала вслепую. + ⇒ Здесь черновик = **склейка всех draft-чанков, покрывающих edit-единицу**, с гейтом покрытия. + + ⚠ **Это дефект СБОРКИ ПАКЕТА, а не базового прогона.** Проверено исполняющей сессией пробы по + финальным черновикам (35 чанков): `finish=stop` 9 · `banknote_export` 26 · `length` **0** — + обрезанных среди отгруженных нет ни одного. Единственный обрыв черновой волны (гл. 17 чанк 0) + починил ретрай. Прежняя формулировка «усечённый черновик» могла читаться как обвинение + материалу — материал цел, неверно резал его мой сборщик. + + ⭐ **Границы юнита берём из МАНИФЕСТА ДВИЖКА**, а не из эвристики: `.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: прибор награждает шум, боевой счёт не читается. + Ожидание при исправном приборе: перевес около нуля, много ничьих. +2. **Гейт покрытия.** Для КАЖДОГО материала: доля текста варианта, покрытая показанным черновиком, + ≥ 0.90 (выравнивание по словам). Материал ниже порога в пакет не идёт. Прежние 55–79% + не прошли бы этот гейт ни разу. +3. **Гейт слепоты, исправленный после Э-3:** одиночные латинские буквы тоже считаются (прежний + искал `[A-Za-z]{2,}` и пропустил 23–25 букв на руку). Порог — не ноль, а СИММЕТРИЯ: разница + между руками ≤ 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 п.п. Отрицательный + результат меньшую разницу не исключает.