# Нормы судейских замеров: что фаза Д подтвердила ценой денег и четырёх суток **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 | судьям показывали 55–79% черновика в 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 не отвечает ни один наш прибор**. Все панели мерят художественность ОДНОЙ главы; консистентность тысячи — ортогональная ось, и она не мерилась ни разу». **Что изменилось.** Впервые есть **прибор** на эту ось и первые числа — бесплатно, на уже оплаченном: 9–12% терминов имеют больше одной передачи, 6–8% меняют форму между главами; независимым путём (`spread` движка) — **30 записей банка из 102 несут >1 передачу, максимум 7 форм у одного ключа** (`元石`: юаньши · камень юань · изначальный камень · первородный камень…). Реальный дрейф после чистки ложных тревог: «Фан Юань / Фанъюань», «Мо Бэй / Мобэй», «гу-мастер / мастер гу», «дом Мо / клан Мо / род Мо». **И жёстко подтверждено, что судьями эту ось не взять:** панель на изолированном куске доказанно реагирует на шум так же, как на сигнал. ⚠ Прибор меряет 17 глав = 0.74% книги, а дрейф накопителен. Ось открыта, но не пройдена. ### Вопрос 1: оптимальная архитектура пайплайна Фаза **не испытывала топологий** (это бумажные ресёрчи `research/29`). Продвижение — в другом: - **Локализация проблемы.** Дрейф терминов **не зависит от режима редактора**: разница между режимами 0.5–1.8% против шум-пола 2.4%. Значит консистентность рождается на стадии черновика и банка, и искать её надо там, а не в редакторе, куда уходит 85–95% денег. - **Найден разрыв в цепи, а не в механизме.** Штатный детектор консистентности не просто выключен (`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 — предупреждение. Три вопроса остаются открытыми, и это правильный статус, а не осторожность.