13 KiB
Нормы судейских замеров: что фаза Д подтвердила ценой денег и четырёх суток
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. Что фаза Д добавляет к норме (этого в носителях не было)
- Ничья определяется ПОРОГОМ, а не совпадением текстов. Схема первой панели давала судье поле «тексты идентичны», и ничья фактически привязалась к побайтному совпадению: на активных нулях судьи объявили победителя в 29 голосах из 30, потому что два непустых текста всегда чем-то различаются. Ничья обязана быть исходом «различие ниже порога», иначе её не будет.
- Потолок списка дефектов становится метрикой. В схеме стоял
maxItems: 6; в 73 голосах из 74 побеждал вариант с меньшим числом претензий, а половина списков упиралась в потолок. Судья считал дефекты, а счётчик насыщался — вердикт стал функцией потолка. - Мощность гарда объявляется вместе с гардом. Гард нулей на 10 парах берёт порог значимости только на раскладах 9:1 и 10:0; перекос 8:2 он пропускает. Непрохождение такого гарда не есть доказательство исправности прибора, и это надо печатать рядом с ним.
- Правило решения обязано покрывать ВСЁ пространство исходов. Первая редакция дала 60% при пороге 70% и p<0.05 — исход не попал ни в одну ветку, и выбор ветки стал свободой после чисел.
- Знаменатель фиксируется один. Доля бралась из n=30, а значимость из n=24; при последовательном счёте срабатывала ветка с ПРОТИВОПОЛОЖНОЙ диспозицией.
- Тест, где ничьи в знаменателе, а H₀=50%, — невалиден: при доле ничьих 0.20 ошибка I рода 17.8%, а не 5%.
3. Нормы для детерминированных приборов (из dreif.py)
- Шум-пол печатается рядом с КАЖДЫМ числом, а не в конце отчёта. Порог — консервативный (наибольшая из шумовых оценок): ось, где шум случайно вышел 0.0%, иначе объявит значимым любое ненулевое различие.
- Гейт на нулевой знаменатель и на пустой разбор. Прибор напечатал «дрейф 0%», потому что
парсер искал
src:вместо формата «ключ⇥передача» и не совпал ни разу. Ноль на заведомо непустом входе — отказ прибора, а не результат. (Тот же класс: Д50, гейтassert_measured.) - Второй, независимый путь к тому же числу. Дрейф считается и сопоставлением по тексту, и
полем
spread, которое печатает сам движок. - Прибор проверяется на себе. Замер ложных тревог
dreif.py: 2 из 12 (17%) — основа «Гао Ван» находилась внутри «Гао Вань», где в тексте 82 вхождения и все одной формы. Починено схлопыванием укороченных форм. - Печатать, чего прибор НЕ проверяет — секцией в самом выводе.
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 — предупреждение. Три вопроса остаются открытыми, и это правильный статус, а не осторожность.