textmachine/eval/dovodka/NORMY-ZAMEROV.md

13 KiB
Raw Blame History

Нормы судейских замеров: что фаза Д подтвердила ценой денег и четырёх суток

02.09, полигон. Не новые нормы. Почти всё ниже проект уже знал — и фаза Д собрала грабли заново. Файл заведён именно поэтому: норма, записанная там, где её не читают перед работой, не работает.

0. Главное признание: активный ноль был ратифицирован в июле

D39.7 (18.07) несёт риг-стандарт: per-vote персист · полно-evidence окна · floor-гейт. Дословно оттуда: «все floor-относительные; floor судейского шума = 0.126 per-cell, A0↔A0 matched full-chunk». A0↔A0 — это два прогона ОДНОЙ конфигурации, то есть ровно тот активный ноль, который фаза Д «открыла» 02.09, купив реплику low₂ за $0.659678.

eval/README.md:9 перечисляет этот стандарт первым инвариантом полигона.

⇒ Первая редакция слепого чтения нарушила ратифицированную норму, объявила результат (18:6 «дешёвая рука лучше») и сняла его только после того, как норма была исполнена. Стоимость незнания: реплика + две панели (219 судей) + четверо суток.

1. Что обязана нести любая судейская панель

Норма Носитель Как её нарушила фаза Д
Активный ноль (floor-гейт) — пара прогонов ОДНОЙ руки, того же размера, что боевая выборка D39.7, eval/README.md:9 в редакции 1 отсутствовал; результат оказался неотличим от шума
Полно-evidence окна — судье показан ВЕСЬ материал, к которому относится вопрос D39.7 судьям показывали 5579% черновика в 10 юнитах из 15
Оба порядка — пара судится и как (A,B), и как (B,A) норматив оркестратора нарушено в ОБЕИХ редакциях
per-vote персист D39.7 исполнено
Слепые метки авто-QA D39.20 исполнено (имена файлов обезличены после того, как первая раскладка называла их p7-…/null-…)
Детерминированный скорер > судьи, где возможен норматив оркестратора не применялся вовсе; применён только 02.09 (dreif.py)
Вывод на агрегате до вскрытия единиц запрещён D39.61 вывод редакции 1 сделан на агрегате

2. Что фаза Д добавляет к норме (этого в носителях не было)

  1. Ничья определяется ПОРОГОМ, а не совпадением текстов. Схема первой панели давала судье поле «тексты идентичны», и ничья фактически привязалась к побайтному совпадению: на активных нулях судьи объявили победителя в 29 голосах из 30, потому что два непустых текста всегда чем-то различаются. Ничья обязана быть исходом «различие ниже порога», иначе её не будет.
  2. Потолок списка дефектов становится метрикой. В схеме стоял maxItems: 6; в 73 голосах из 74 побеждал вариант с меньшим числом претензий, а половина списков упиралась в потолок. Судья считал дефекты, а счётчик насыщался — вердикт стал функцией потолка.
  3. Мощность гарда объявляется вместе с гардом. Гард нулей на 10 парах берёт порог значимости только на раскладах 9:1 и 10:0; перекос 8:2 он пропускает. Непрохождение такого гарда не есть доказательство исправности прибора, и это надо печатать рядом с ним.
  4. Правило решения обязано покрывать ВСЁ пространство исходов. Первая редакция дала 60% при пороге 70% и p<0.05 — исход не попал ни в одну ветку, и выбор ветки стал свободой после чисел.
  5. Знаменатель фиксируется один. Доля бралась из n=30, а значимость из n=24; при последовательном счёте срабатывала ветка с ПРОТИВОПОЛОЖНОЙ диспозицией.
  6. Тест, где ничьи в знаменателе, а H₀=50%, — невалиден: при доле ничьих 0.20 ошибка I рода 17.8%, а не 5%.

3. Нормы для детерминированных приборов (из dreif.py)

  1. Шум-пол печатается рядом с КАЖДЫМ числом, а не в конце отчёта. Порог — консервативный (наибольшая из шумовых оценок): ось, где шум случайно вышел 0.0%, иначе объявит значимым любое ненулевое различие.
  2. Гейт на нулевой знаменатель и на пустой разбор. Прибор напечатал «дрейф 0%», потому что парсер искал src: вместо формата «ключ⇥передача» и не совпал ни разу. Ноль на заведомо непустом входе — отказ прибора, а не результат. (Тот же класс: Д50, гейт assert_measured.)
  3. Второй, независимый путь к тому же числу. Дрейф считается и сопоставлением по тексту, и полем spread, которое печатает сам движок.
  4. Прибор проверяется на себе. Замер ложных тревог dreif.py: 2 из 12 (17%) — основа «Гао Ван» находилась внутри «Гао Вань», где в тексте 82 вхождения и все одной формы. Починено схлопыванием укороченных форм.
  5. Печатать, чего прибор НЕ проверяет — секцией в самом выводе.

4. Как это повлияло на три вопроса владельца

Вопросы — по eval/dovodka/PLAN-22-08.md §1.

Вопрос 0 (метавопрос, главный): живой русский с консистентными терминами по ВСЕЙ книге

Состояние знания до фазы, дословно: «на вопрос 0 не отвечает ни один наш прибор. Все панели мерят художественность ОДНОЙ главы; консистентность тысячи — ортогональная ось, и она не мерилась ни разу».

Что изменилось. Впервые есть прибор на эту ось и первые числа — бесплатно, на уже оплаченном: 912% терминов имеют больше одной передачи, 68% меняют форму между главами; независимым путём (spread движка) — 30 записей банка из 102 несут >1 передачу, максимум 7 форм у одного ключа (元石: юаньши · камень юань · изначальный камень · первородный камень…). Реальный дрейф после чистки ложных тревог: «Фан Юань / Фанъюань», «Мо Бэй / Мобэй», «гу-мастер / мастер гу», «дом Мо / клан Мо / род Мо».

И жёстко подтверждено, что судьями эту ось не взять: панель на изолированном куске доказанно реагирует на шум так же, как на сигнал.

⚠ Прибор меряет 17 глав = 0.74% книги, а дрейф накопителен. Ось открыта, но не пройдена.

Вопрос 1: оптимальная архитектура пайплайна

Фаза не испытывала топологий (это бумажные ресёрчи research/29). Продвижение — в другом:

  • Локализация проблемы. Дрейф терминов не зависит от режима редактора: разница между режимами 0.51.8% против шум-пола 2.4%. Значит консистентность рождается на стадии черновика и банка, и искать её надо там, а не в редакторе, куда уходит 8595% денег.
  • Найден разрыв в цепи, а не в механизме. Штатный детектор консистентности не просто выключен (coverage.enabled: false) — у него не было входа: из 102 записей банка ни одна не доведена до approved, decl пуст у всех. Механизм построен, цепочка не замкнута.
  • Гибридная политика оценена без единой траты: дешёвая рука падает в $0-гейт в 2 клетках из 60 (3.3%) ⇒ книга $96 против $90 чистого дешёвого и $269 дорогого. Страховка стоит 7%.

Вопрос 2: связка моделей без привязки к вендору

Здесь фаза дала острый негативный урок, прямо в цель вопроса.

«Дорогой режим» в нашем замере — это не наш выбор уровня, а вендорский умолчальный: параметр не эмитится вовсе, едет собственный дефолт DeepSeek, который вендор двигал дважды за лето (31.07 и 30.08), и фактический уровень нигде в артефактах не записан (reasoning_tokens=0).

⇒ Мы сравнивали с движущейся мишенью, и замер невоспроизводим в строгом смысле. Для вопроса 2 это точный ответ на «зависит ли архитектура от вендора»: езда на вендор-дефолте есть скрытая привязка к вендору — не по API, а по поведению, и она не видна ни в конфиге, ни в логе.

Второй факт той же оси: единственная не-DeepSeek рука (glm-5) дала дефект целевого языка — шесть непереведённых «cultivation» в русском тексте, которых не поймал ни один $0-гейт. Мультивендорность требует гейтов на язык вывода, которых сейчас нет.

⚠ Чего фаза по вопросу 2 НЕ дала: связка мерена на ОДНОМ вендоре в двух режимах плюс один ценовой контроль. Ни бейк-офа вендоров, ни проверки «худший вендор на нашей архитектуре против лучшего на чужой» не было.

5. Что из этого — работа, а что запись

Записью закрывается только §1§3. §4 не закрывает ни один из трёх вопросов: вопрос 0 получил прибор и первое число, вопрос 1 — локализацию и цену политики, вопрос 2 — предупреждение. Три вопроса остаются открытыми, и это правильный статус, а не осторожность.