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

16 KiB
Raw Blame History

Пре-регистрация 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 ДО получения чисел судейства (замечание сессии пробы: как отличить «прибор врёт» от «нулей мало»). Посчитано: при 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 п.п. Отрицательный результат меньшую разницу не исключает.