textmachine/eval/dovodka/NORMY-ZAMEROV.md

125 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Нормы судейских замеров: что фаза Д подтвердила ценой денег и четырёх суток
**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 — предупреждение.
Три вопроса остаются открытыми, и это правильный статус, а не осторожность.