From dd23f452d5a840ab373f5f4e00ff21daaa930f96 Mon Sep 17 00:00:00 2001 From: heaven Date: Wed, 2 Sep 2026 19:38:52 +0300 Subject: [PATCH] Freeze the blind-read pre-registration and its key before any judging, with null controls that void the instrument if judges pick winners on identical texts --- .../blind-read/KEY-do-not-show-judges.json | 299 ++++++++++++++++++ eval/dovodka/blind-read/PREREG-BLIND-READ.md | 79 +++++ 2 files changed, 378 insertions(+) create mode 100644 eval/dovodka/blind-read/KEY-do-not-show-judges.json create mode 100644 eval/dovodka/blind-read/PREREG-BLIND-READ.md diff --git a/eval/dovodka/blind-read/KEY-do-not-show-judges.json b/eval/dovodka/blind-read/KEY-do-not-show-judges.json new file mode 100644 index 00000000..e3884f01 --- /dev/null +++ b/eval/dovodka/blind-read/KEY-do-not-show-judges.json @@ -0,0 +1,299 @@ +[ + { + "pair_id": "p7-ch9-c0", + "kind": "real", + "prompt": "p7", + "chapter": 9, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "null-ch8-c0", + "kind": "null", + "prompt": "-", + "chapter": 8, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-low" + }, + { + "pair_id": "p9-ch12-c0", + "kind": "real", + "prompt": "p9", + "chapter": 12, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p7-ch8-c0", + "kind": "real", + "prompt": "p7", + "chapter": 8, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p9-ch8-c0", + "kind": "real", + "prompt": "p9", + "chapter": 8, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p7-ch5-c0", + "kind": "real", + "prompt": "p7", + "chapter": 5, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "p9-ch16-c0", + "kind": "real", + "prompt": "p9", + "chapter": 16, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p7-ch16-c0", + "kind": "real", + "prompt": "p7", + "chapter": 16, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p9-ch2-c0", + "kind": "real", + "prompt": "p9", + "chapter": 2, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p9-ch3-c0", + "kind": "real", + "prompt": "p9", + "chapter": 3, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p9-ch10-c0", + "kind": "real", + "prompt": "p9", + "chapter": 10, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p7-ch3-c0", + "kind": "real", + "prompt": "p7", + "chapter": 3, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p9-ch12-c1", + "kind": "real", + "prompt": "p9", + "chapter": 12, + "chunk": 1, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p7-ch1-c0", + "kind": "real", + "prompt": "p7", + "chapter": 1, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "null-ch7-c0", + "kind": "null", + "prompt": "-", + "chapter": 7, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-low" + }, + { + "pair_id": "p7-ch10-c0", + "kind": "real", + "prompt": "p7", + "chapter": 10, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "p7-ch13-c0", + "kind": "real", + "prompt": "p7", + "chapter": 13, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p7-ch7-c0", + "kind": "real", + "prompt": "p7", + "chapter": 7, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p9-ch7-c0", + "kind": "real", + "prompt": "p9", + "chapter": 7, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p9-ch3-c1", + "kind": "real", + "prompt": "p9", + "chapter": 3, + "chunk": 1, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p9-ch15-c0", + "kind": "real", + "prompt": "p9", + "chapter": 15, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p7-ch6-c0", + "kind": "real", + "prompt": "p7", + "chapter": 6, + "chunk": 0, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "null-ch13-c0", + "kind": "null", + "prompt": "-", + "chapter": 13, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-off" + }, + { + "pair_id": "p7-ch2-c0", + "kind": "real", + "prompt": "p7", + "chapter": 2, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "p9-ch6-c0", + "kind": "real", + "prompt": "p9", + "chapter": 6, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p7-ch12-c1", + "kind": "real", + "prompt": "p7", + "chapter": 12, + "chunk": 1, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p7-ch3-c1", + "kind": "real", + "prompt": "p7", + "chapter": 3, + "chunk": 1, + "arm_A": "p7-low", + "arm_B": "p7-off" + }, + { + "pair_id": "p9-ch9-c0", + "kind": "real", + "prompt": "p9", + "chapter": 9, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p7-ch15-c0", + "kind": "real", + "prompt": "p7", + "chapter": 15, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "p9-ch13-c0", + "kind": "real", + "prompt": "p9", + "chapter": 13, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + }, + { + "pair_id": "p7-ch12-c0", + "kind": "real", + "prompt": "p7", + "chapter": 12, + "chunk": 0, + "arm_A": "p7-off", + "arm_B": "p7-low" + }, + { + "pair_id": "p9-ch1-c0", + "kind": "real", + "prompt": "p9", + "chapter": 1, + "chunk": 0, + "arm_A": "p9-off", + "arm_B": "p9-low" + }, + { + "pair_id": "p9-ch5-c0", + "kind": "real", + "prompt": "p9", + "chapter": 5, + "chunk": 0, + "arm_A": "p9-low", + "arm_B": "p9-off" + } +] \ No newline at end of file diff --git a/eval/dovodka/blind-read/PREREG-BLIND-READ.md b/eval/dovodka/blind-read/PREREG-BLIND-READ.md new file mode 100644 index 00000000..fbdf6220 --- /dev/null +++ b/eval/dovodka/blind-read/PREREG-BLIND-READ.md @@ -0,0 +1,79 @@ +# Пре-регистрация: слепое парное чтение — цена сниженного усилия редактора + +**Заморожено 02.09 ДО первого суждения.** Правило решения, пороги и гарды записаны раньше чисел. +Материал: проба `prereg-4axes` (см. `docs/experiments/23-editor-tier.md` §Д54). Судьи — Opus. + +## 1. Вопрос + +Проба ответила на цену: снижение усилия режет размышление ×3.5 и боевую цену знака ×2.5. +Качество при этом **не судилось** — вне скоупа по построению (§12 промта пробы). + +**Вопрос замера:** стал ли текст хуже, когда редактор думал вчетверо меньше? + +⚠ Это вопрос о РЕДАКТУРЕ, не о переводе целиком: черновик у всех рук идентичен побайтно +(проверено, sha текста совпадает по 66 клеткам), различие вносит только стадия `edit`. + +## 2. Материал + +15 юнитов, у которых финальный текст (`chunk_status.final_hash`) непуст у ВСЕХ четырёх рук +deepseek. Юниты с браком выпали по построению: 4 таймаута `p7-off` + 1 пустой `p9-off`. + +⚠ `glm-off` ИСКЛЮЧЁН: опознаётся по латинице (6 вхождений «cultivation»), слепота по нему +невозможна, и ценовым контролем он в качество не проектировался. + +**30 боевых пар** = 15 юнитов × 2 промпта (p7, p9). В каждой паре — `off` против `low` на ОДНОМ +промпте, то есть чистая ось усилия. Плюс **3 нулевых контроля**, где A и B — один и тот же текст. + +## 3. Что видит судья + +Черновик (общий вход редактора) + два отредактированных варианта под метками A и B. Порядок +рандомизирован блочно: высокое усилие стоит на позиции A в 7 юнитах из 15 на каждом промпте. +Судья не знает ни рук, ни того, чем варианты различаются, ни что различие вообще существует. + +Три независимых судьи на пару, разные линзы: **естественность русского** · **точность +относительно черновика** · **художественность и голос**. Консенсус — большинство 2 из 3. + +## 4. Первичный исход и тест + +**Исход:** доля из 30 пар, где консенсус судей предпочёл руку высокого усилия. +**Тест:** двусторонний биномиальный против H₀ = 50%. Ничьи в знаменатель входят, в числитель нет. + +Кластеризация признана ограничением: p7 и p9 на одном юните делят черновик, 30 пар — не 30 +независимых наблюдений. Поэтому вторичный анализ — по 15 юнитам (пара засчитывается юниту, если +оба промпта согласны). + +## 5. Правило решения (записано до чисел) + +| Исход | Что заключаем | +|---|---| +| **E-A** доля за `off` ≥ 70% И p < 0.05 | Экономия имеет цену качества. `low` в бой не ставить без доработки. | +| **E-B** доля за `off` в [40%; 70%] ИЛИ p ≥ 0.05 | **Различие не предъявлено** на этом n. `low` допустим к проверке на объёме — но «не предъявлено» ≠ «доказано равенство». | +| **E-C** доля за `low` ≥ 70% И p < 0.05 | Сниженное усилие ЛУЧШЕ. Требует объяснения, до него в бой не ставить. | +| **E-D** нулевые контроли дали победителя в ≥2 из 3 | ⛔ **ПРИБОР НЕГОДЕН.** Результат не читается, что бы ни показали боевые пары. | + +**Мощность честно:** n=30 при трёх судьях различает сдвиг примерно от 25 процентных пунктов. +Разницу в 5–10 п.п. этот замер не увидит, и отрицательный результат её не исключает. + +## 6. Вторичные исходы (не решают, но записываются) + +- **Претензии на юнит** — планка владельца из D39.20 (≤2 на главу). Считаем среднее по рукам. +- **Классы дефектов** — что именно судьи называют; сырьё для будущих детерминированных гейтов. +- **Позиционный биас** — доля побед позиции A независимо от руки. Отклонение от 50% на боевых + парах при чистых нулевых контролях = предупреждение, не отмена. + +## 7. Гарды + +1. **Гейт слепоты пройден до сборки:** ни латиницы, ни CJK, ни служебных меток — 0 на 60 клетках. +2. **Ключ отложен** в `KEY-do-not-show-judges.json`; судьям уходит только `pairs-blind.json`. +3. **Нулевой контроль** ловит судью, который обязан выбрать победителя (см. E-D). +4. **Позиционный баланс** блочный, а не случайный — рандомизация первой редакции дала 10/30. +5. Seed рандомизации `20260902` зафиксирован до сборки пакета. + +## 8. Чего замер НЕ доказывает + +- Не сравнивает `glm-5` с deepseek — он исключён. +- Не судит ось промпта: и E3 пробы (p=0.487), и обе текстовые меры (p=1.000, p=0.107) говорят + «ниже разрешения». Пары внутри промпта, а не между ними. +- Не измеряет верность китайскому оригиналу: исходник в снапшоте не хранится, опорой служит + черновик. Искажение, унаследованное от черновика, обеими руками унаследовано одинаково. +- Не заменяет чтение владельцем. Судья-модель — прибор, а планка «≤2 претензии» — его.