615 lines
61 KiB
Markdown
615 lines
61 KiB
Markdown
# 21. Топология ролей перевода: чем платим за второй проход и есть ли ему замена
|
||
|
||
**Полигон-сессия, вторая редакция 07.08.2026.** Исполнение `docs/POLYGON_ROLE_TOPOLOGY_SESSION_PROMPT.md`
|
||
(оркестратор №15, санкция владельца 06.08 D39.108; расширение и санкция на траты 07.08).
|
||
Зона: `eval/role_topology/` + этот файл + пинг в PROGRESS «Полигон».
|
||
|
||
> **СТАТУС: замер закончен, вторая редакция.** Первая редакция (06.08) снята целиком: её риг
|
||
> измерял ПОЗИЦИЮ варианта в промпте, а не качество арма (§3). Ниже — только текущее состояние.
|
||
> Пре-рег второй редакции зафризен коммитом `d472599` **до первой платной покупки**.
|
||
> Потрачено второй редакцией **$1.683796** (пак целиком, обе редакции — **$4.306626**);
|
||
> потолки второй редакции соблюдены, потолки ФАЗ из промта — нет (§2.7).
|
||
> Числа сверяются `eval/role_topology/verify_report.py` — 44 проверки, ненулевой код = не сдавать.
|
||
|
||
---
|
||
|
||
## ИТОГ — вход для решения владельца
|
||
|
||
⚠ **Решения на этих числах принимать нельзя.** Пак даёт согласованные НАПРАВЛЕНИЯ, но ни один
|
||
контраст не проходит поправку Holm на пять сравнений (лучший Holm 0.0555), шумовой пол пайплайна
|
||
не измерен вовсе, и три из четырёх «значимых» контрастов несёт один судья — аварийная лёгкая
|
||
замена. Что нужно доснять, чтобы получить решаемый ответ, — §8.
|
||
|
||
**Единственное направление, устойчивое ко всему, что проверялось:** второй проход поверх дешёвого
|
||
черновика покупает качество на zh (+1.88). Переживает выброс одной и двух единиц (0 из 15 и 0 из
|
||
105), исключение единиц с механическим конфаундом (+1.65), не объясняется длиной; подтверждено
|
||
батареей (утечка ханьцзы 24→0) и слепым чтением. Ограничения: значимость несёт gemini (у luna
|
||
+0.84 [−0.72, +2.31]); Holm не проходит; покупается ЯЗЫК и ТЕРМИН, ВЕРНОСТЬ ноль не покидает.
|
||
|
||
**Не установлено — «однопроходка проигрывает связке».** Измерен арм D, то есть однопроходка
|
||
С МАНДАТОМ, который этот же отчёт признаёт вредным. Рекомендуемая однопроходка — D_; её контраст
|
||
с A не куплен, косвенная оценка −0.67 (p≈0.30). Плюс контраст `D/A` смешивает три фактора: файл
|
||
промта, наличие черновика на входе и закон-блок (у D он есть, у A нет).
|
||
|
||
**Не установлено — «второй проход покупает качество на en» (+1.00).** ДИ накрывает ноль при
|
||
выбрасывании одной единицы в 8 случаях из 12; перестановочный p=0.073; нижняя граница +0.04
|
||
зависит от розыгрыша bootstrap (ноль накрывается у 16.5% сидов).
|
||
|
||
| Вопрос | Ответ | Оговорка |
|
||
|---|---|---|
|
||
| Нужен ли второй проход | Да по направлению, у трёх инструментов | значимость несёт один судья; Holm не проходит |
|
||
| Не выгоднее ли сразу сильной моделью | **Нет** — единственный вывод, устойчивый к смене судьи | Holm не проходит (p=0.021, Holm 0.063) |
|
||
| Кто жилец роли редактора | `deepseek-v4-pro`: качество неотличимо от `glm-5`, цена вдвое ниже | — |
|
||
| Что покупает второй проход | **ЯЗЫК** (+1.11) и **ТЕРМИН** (+0.45), не верность | §2.1а |
|
||
| Что делает мандат перевёрстки | бьёт по **ФОРМЕ** (−0.47), прочие оси нулевые | контраст `D/D_` изолирует мандат НЕ чисто (§3) |
|
||
| Что покупает закон-блок | **ВЕРНОСТЬ** +0.63 [+0.33, +0.97] | суммарный перевес +0.33 гасит это осями |
|
||
|
||
**Цена (p50 / p95, промт требовал оба).** Редакторский проход `deepseek-v4-pro` $0.00388 / $0.00518;
|
||
однопроходка $0.00487 / $0.00792; `glm-5` в роли редактора $0.00892 / $0.00956. На хвосте разрыв
|
||
между связкой и однопроходкой растёт, а не исчезает — «равная цена» была свойством медианы. ⚠ Цена черновика в цену связки **не сложена**: армы правят
|
||
замороженный черновик из корпуса пакета-6, чья цена не сохранена и чей производитель по записи
|
||
не устанавливается (§2.6). Цифра «связка дешевле/дороже однопроходки» из этого замера НЕ следует.
|
||
|
||
**Четыре ограничения вывода.** (1) Материал zh моделью узнаётся (4/5); пара en чище (1/5) и даёт
|
||
то же направление. (2) Дрейф на связном отрезке глав не мерен. (3) Армы C/E/G не гнались. (4) Ни
|
||
один результат не переживает поправку на множественность — нужен либо больший n, либо сужение
|
||
таблицы до заранее объявленного одного контраста.
|
||
|
||
## §0 Пре-рег второй редакции (зафризен `d472599` до трат)
|
||
|
||
**Вопрос.** Какая топология целевая и кто жильцы ролей. Армы равноправны, «правильного ответа»
|
||
не существует, работа — замер.
|
||
|
||
**Материал.** Две пары, книги из `~/books` (в git не попадают; в отчёт печатаются только метрики).
|
||
|
||
| Пара | Книга | Контаминация (собственная проба) | Единиц |
|
||
|---|---|---|---|
|
||
| zh→ru | 蛊真人 (gu-zhenren) | узнавание **4/5**, клоуз 1/5 — книга модели ИЗВЕСТНА | 16 |
|
||
| en→ru | Kristoff, «Empire of the Dawn» | узнавание **1/5**, клоуз 0/5 — чисто | 12 |
|
||
|
||
Порог пробы объявлен там же: «узнавание ≥3/5 = книга известна»; контроль пробы — 金瓶梅
|
||
(4/5 и 3/5). Основной материал порог **превышает** — объявленное ограничение, а не умолчание;
|
||
пара en заведена именно чтобы вывод не стоял на одной узнанной книге.
|
||
|
||
Отбор единиц детерминирован: середина распределения длин, дедуп по нормализованной подписи
|
||
(снимаются заголовок главы и пробелы), ключ артефакта — хеш источника, не позиционный индекс.
|
||
Максимальная попарная близость 16 отобранных zh-единиц — 0.060. Пара en стратифицирована:
|
||
6 единиц с французским слоем (≥4 токена с диакритикой, ≥2 разных) и 6 без него.
|
||
|
||
**Армы.**
|
||
|
||
| Арм | Что | Закон-блок | Мышление |
|
||
|---|---|---|---|
|
||
| F | do-nothing пол: черновик `deepseek-v4-flash` как есть | — | — |
|
||
| A | байт-боевой бейзлайн: черновик → `deepseek-v4-pro` | нет (промт стр.29) | вендор-дефолт |
|
||
| A_law | то же С законом — деконфаунд закон-блока | да | вендор-дефолт |
|
||
| B | черновик → `glm-5` | да | **OFF** (промт стр.62) |
|
||
| D | однопроходка `deepseek-v4-pro` С мандатом перевёрстки | да | вендор-дефолт |
|
||
| D_ | она же БЕЗ мандата — деконфаунд «модель против мандата» | да | вендор-дефолт |
|
||
|
||
Контрасты: `A/F` · `B/F` · `D/A` · `D/D_` · `A_law/A`. Каждый изолирует ровно один фактор —
|
||
проверено сборкой сообщений: у A и A_law совпадают system[0] и user, различие только в наличии
|
||
закон-блока; у D и D_ совпадают закон-блок и user, различается только мандат. Текст закона
|
||
пинится промтом: `HEADER_LAW_PLAIN`, **без оговорки области**.
|
||
|
||
Пара en идёт **без закон-блока у всех армов** — объявленная девиация: подписанного глоссария для
|
||
книги нет, а выдумывать канон полигон не вправе. Следствие: контрасты пары мерят чистую
|
||
топологию, фактор банка мерится на zh контрастом `A_law/A`.
|
||
|
||
**Критерии.** Вердикт единицы засчитывается, если знак перевеса сохранился в **обоих порядках**
|
||
у **обоих судей**. Основная статистика — непрерывный перевес по единицам с bootstrap-ДИ
|
||
(5000 ресемплов, сид 20260807); порог — «интервал не накрывает ноль».
|
||
|
||
**Потолки, объявленные до трат:** армы zh ≤$0.70 · судейство zh ≤$1.70 · армы en ≤$0.55 ·
|
||
судейство en ≤$1.45 · проба судьи-замены ≤$0.10. Соблюдены все (§2.7).
|
||
|
||
---
|
||
|
||
## §1 Метрология: три независимых инструмента
|
||
|
||
Первая редакция мерила одним инструментом, и когда у него нашёлся отказ, проверить его оказалось
|
||
нечем. Здесь три контура, устроенные так, чтобы не делить общий слепой участок.
|
||
|
||
**(1) Судьи по ключам.** `gpt-5.6-luna` + `gemini-3.1-flash-lite`, оба вне семейств, населяющих
|
||
армы (deepseek, glm). Протокол — счёт типизированных ошибок по осям ВЕРНОСТЬ/ТЕРМИН/ЯЗЫК/ФОРМА,
|
||
слепые метки, персист каждого голоса отдельным файлом.
|
||
|
||
*Раскладка.* Порядок — внешний цикл: на каждую клетку (контраст × единица × судья) ровно по
|
||
одному голосу каждого порядка. Перевес единицы = среднее двух зеркальных голосов, позиция
|
||
вычитается тождественно. Проверка исправности — равенство числа голосов по порядкам (фактически 156/156 zh и
|
||
98/98 en; 160/160 — это плановая сетка, а не факт), а НЕ малость позиционной форы: зеркало убирает позицию из перевеса арма, но не из
|
||
среднего по всем голосам.
|
||
|
||
*Позиционная фора измерена и велика:* **zh +3.60**, **en +1.45** ошибки в пользу первого варианта.
|
||
Это масштаб, с которым сравнивается перевес арма: на zh перевес +1.88 МЕНЬШЕ форы — потому
|
||
небалансированная раскладка первой редакции и давала ложные вердикты.
|
||
|
||
*Замена второго судьи — внешний блокер, объявляю.* `grok-4.3` выпал на HTTP 403 «used all
|
||
available credits or reached its monthly spending limit» (250 голосов). Замена выбрана по трём
|
||
условиям промта (не из семейства армов, не из семейства первого судьи, влезает в объявленный
|
||
потолок) и проведена через **положительный контроль до трат** (D39.46б): на контрольном декое
|
||
пака поймала посаженную деградацию **6/6 в обоих порядках** со зеркальными счетами
|
||
(В1=0/В2=3 и В1=3/В2=0). Оговорка: это лёгкая модель, её согласие с luna не эквивалентно прежней
|
||
паре luna+grok.
|
||
|
||
*Отказы фильтра.* 10 клеток zh пришли **без объекта сообщения**, `finish_reason` =
|
||
`content_filter: PROHIBITED_CONTENT` — составная строка, описанная в quirks 00 (D22.6, D22.8а).
|
||
Все 10 — на одной единице. **Уточнение к quirks:** оговорка «на violence/SFW Gemini-судья жив»
|
||
на вебновелле держится не целиком — отказ приходит выборочно и молча, поэтому Google непригоден
|
||
как ЕДИНСТВЕННЫЙ второй контур на этом материале.
|
||
|
||
*Шум судьи — посылка промта стр.15, проверена.* Пере-замер на клетках разброса: абсолютный счёт
|
||
точно повторился в **1 клетке из 6**, разброс 2.5 при уровне 7.7 (≈32% относительного шума).
|
||
Посылка подтверждена. ⚠ Клейм первой редакции «судьи не выдумывают перевес на идентичных текстах,
|
||
0 из 18» **снят как тавтология**: когда в обе позиции подан побайтно один текст, совпадение счёта
|
||
гарантировано построением, а не свойством судьи.
|
||
|
||
**(2) Детерминированная батарея.** 9 проверок, судья не нужен, шума нет. Две во второй редакции
|
||
переписаны, потому что печатали числа из одних ложных срабатываний:
|
||
|
||
* `check_numbers` — китайская сторона теперь собирает составное числительное целиком, как русская
|
||
(прежде 两千三百 давало {2000, 300} против «две тысячи триста» = {2300}, то есть на безупречном
|
||
переводе печатались две потери и одна выдумка); добраны собирательные («десятки тысяч», «более
|
||
сотни»); заведён закрытый список неколичественных оборотов (`百分之一` — доля, не «сто»).
|
||
Проверка синтетикой с известным ответом: **16/16**.
|
||
* `check_gender` — кандидатом считается только форма имени, у которой есть именительный разбор:
|
||
косвенная форма по определению не подлежащее, и соседний глагол согласован с другим словом
|
||
(«Воля Фан Юаня **была** тверда»). Все 6 «рассогласований» прошлого прогона были этим классом.
|
||
|
||
**(3) Слепое чтение.** Метки армов сняты, порядок вариантов перемешан детерминированным ключом от
|
||
uid единицы, карта раскладки хранится отдельно и читателям не выдаётся. Читатели — другого
|
||
семейства, чем судьи по ключам, и задача другая: не «посчитай ошибки по осям», а «прочитай как
|
||
редактор издательства и назови места цитатой».
|
||
|
||
⚠ **Дефект инструкции, объявляю:** буквы вариантов перемешиваются на каждой единице, а читателям
|
||
это сказано не было, и они построили сквозные «профили А–Е». Профили выброшены как артефакт;
|
||
поединичные ранги расшифрованы по карте и использованы. В инструкцию читателя это надо вписать.
|
||
|
||
---
|
||
|
||
## §2 Результаты
|
||
|
||
### 2.1 zh→ru, судьи (16 единиц, 320 голосов)
|
||
|
||
```
|
||
контраст единиц за перв. за втор. ничья перевес 95% ДИ
|
||
A против F 15 3 0 12 +1.88 [+0.72, +3.02] ← не накрывает ноль
|
||
B против F 15 5 0 10 +2.33 [+0.85, +3.95] ← не накрывает ноль
|
||
D против A 15 0 1 14 −1.72 [−2.95, −0.50] ← не накрывает ноль
|
||
D против D_ 15 0 1 14 −1.05 [−2.18, −0.07] ← не накрывает ноль
|
||
A_law против A 15 0 0 15 +0.33 [−0.57, +1.18]
|
||
```
|
||
|
||
Одна единица выпала из вердиктов: на ней 10 отказов фильтра у второго судьи. Счёт побед почти
|
||
весь в ничьих, потому что правило «знак совпал в обоих порядках у обоих судей» очень строгое;
|
||
непрерывный перевес с интервалом информативнее и заказан промтом (стр.32).
|
||
|
||
|
||
### 2.1а Разбор таблицы: по судьям, по осям, с поправкой на множественность
|
||
|
||
⚠ **Эффект, который несёт один судья, есть свойство судьи.** Раздельно:
|
||
|
||
```
|
||
контраст gpt-5.6-luna gemini-3.1-flash-lite
|
||
A против F +0.84 [−0.72, +2.31] +3.03 [+2.17, +3.90] *
|
||
B против F +1.44 [−0.34, +3.41] +3.33 [+1.97, +4.73] *
|
||
D против A −1.94 [−3.62, −0.16] * −1.20 [−2.17, −0.37] * ← оба
|
||
D против D_ −0.38 [−2.16, +1.25] −1.60 [−2.73, −0.70] *
|
||
A_law против A +0.91 [−0.41, +2.25] −0.20 [−0.87, +0.47]
|
||
```
|
||
|
||
Устойчив к смене судьи ровно один контраст — `D против A`.
|
||
|
||
⚠ **Поправка на множественность.** Точный знаковый перестановочный тест по единицам + Holm по
|
||
семейству из пяти контрастов:
|
||
|
||
```
|
||
A против F p=0.0111 Holm=0.0555
|
||
B против F p=0.0117 Holm=0.0555
|
||
D против A p=0.0209 Holm=0.0626
|
||
D против D_ p=0.0933 Holm=0.1865
|
||
A_law против A p=0.5001 Holm=0.5001
|
||
```
|
||
|
||
**Ни один контраст не проходит 0.05 после поправки.** ДИ в §2.1 не скорректированы и читаются как
|
||
описание величины, а не как тест. Формально значимых результатов пак не даёт; даёт согласованные
|
||
направления при n=15.
|
||
|
||
**Разложение по осям** — суммарный перевес гасит разнонаправленные эффекты, поэтому он менее
|
||
информативен, чем покомпонентный:
|
||
|
||
```
|
||
контраст ВЕРНОСТЬ ТЕРМИН ЯЗЫК ФОРМА
|
||
A против F +0.23 [−0.22,+0.72] +0.45 [+0.13,+0.77]* +1.11 [+0.52,+1.80]* +0.10 [−0.13,+0.33]
|
||
B против F +0.85 [+0.18,+1.50]* +0.52 [+0.17,+0.85]* +1.08 [+0.47,+1.83]* −0.12 [−0.77,+0.30]
|
||
D против A −0.48 [−1.02,+0.07] −0.33 [−0.73,+0.05] −0.57 [−1.02,−0.15]* −0.33 [−0.52,−0.15]*
|
||
D против D_ +0.03 [−0.60,+0.60] −0.28 [−0.58,+0.03] −0.33 [−0.88,+0.18] −0.47 [−0.82,−0.13]*
|
||
A_law против A +0.63 [+0.33,+0.97]* +0.02 [−0.32,+0.32] −0.18 [−0.53,+0.15] −0.13 [−0.40,+0.08]
|
||
```
|
||
|
||
Каждый фактор попадает в свою ось: второй проход покупает **ЯЗЫК** и **ТЕРМИН**, а не верность;
|
||
мандат перевёрстки бьёт по **ФОРМЕ** и только по ней; закон-блок покупает **ВЕРНОСТЬ** (+0.63), и
|
||
именно этот эффект терялся в суммарном +0.33.
|
||
|
||
### 2.2 en→ru, судьи (12 единиц, 192 голоса) — переносится ли вывод на другую пару
|
||
|
||
```
|
||
контраст ед. за перв. за втор. ничья перевес 95% ДИ фр-страта plain
|
||
A против F 12 2 0 10 +1.00 [+0.04, +1.79] +0.33 +1.67
|
||
B против F 12 3 0 9 +1.31 [+0.35, +2.25] +1.75 +0.88
|
||
D против A 12 0 1 11 −0.81 [−2.58, +0.73] +0.21 −1.83
|
||
D против D_ 12 2 0 10 +0.48 [−0.83, +1.69] +1.04 −0.08
|
||
```
|
||
|
||
**Направление переносится, величина — нет.** Второй проход покупает качество на обеих парах.
|
||
Преимущество связки над однопроходкой на en вдвое меньше и ноль не покидает: на паре, где
|
||
исходник уже гипотактичен, разница между топологиями сжимается. Мандат перевёрстки на zh вредит
|
||
значимо (−1.05), на en ноль не покидает — это и есть содержание вывода «мандат = пар-данные».
|
||
|
||
### 2.3 Слепое чтение (третий контур, независимо от судей)
|
||
|
||
**zh, 16 единиц, два читателя:**
|
||
|
||
| арм | ср. ранг | первых мест | последних | против черновика F |
|
||
|---|---|---|---|---|
|
||
| A | 2.56 | 3 | 1 | 12 побед / 4 |
|
||
| A_law | 2.62 | 5 | 0 | 13 / 3 |
|
||
| B | 3.31 | 3 | 2 | 11 / 5 |
|
||
| D_ | 3.31 | 5 | 4 | 8 / 8 |
|
||
| F | 4.06 | 0 | 4 | — |
|
||
| D | 5.12 | 0 | 5 | 5 / 11 |
|
||
|
||
**en, 12 единиц:** D_ 2.50 · B 2.58 · D 3.00 · A 3.08 · F 3.83. Черновик последний, первых мест 0.
|
||
|
||
**Чтение согласуется с судьями по всем четырём значимым контрастам:** черновик хуже связок;
|
||
однопроходка с мандатом на zh хуже всех и хуже самого черновика; закон-блок неразличим
|
||
(2.56 против 2.62); на en порядок армов другой и мандат перестаёт быть решающим.
|
||
|
||
Наблюдение обоих читателей, независимо: **низ рейтинга почти всегда решает механический слой, а
|
||
не перевод** — диалоговая типографика (прямая речь в кавычках вместо тире, авторский текст под
|
||
тире, две реплики в одном абзаце), слипшиеся абзацы, непереведённые остатки (`cultivation`,
|
||
`特产ом`, китайские заголовки), протёкшая markdown-разметка. Класс ловится детерминированно.
|
||
|
||
### 2.4 Детерминированная батарея, zh (16 единиц)
|
||
|
||
```
|
||
арм ед. типогр. ханьцзы потеря вел. ты/вы микс род свер. род ошиб.
|
||
F 16 1 24 6 5 111 1
|
||
A 16 2 0 5 6 99 1
|
||
B 16 0 2 6 5 112 1
|
||
D 16 2 0 5 5 86 0
|
||
D_ 16 2 2 6 4 94 0
|
||
A_law 16 2 11 7 6 103 1
|
||
```
|
||
|
||
Единственная ось, где армы расходятся уверенно, — **утечка ханьцзы**: черновик несёт 24 знака,
|
||
редакторский проход вычищает до 0–2. Это независимое от судьи подтверждение, что второй проход
|
||
что-то делает. Оставшиеся 11 у A_law вскрыты поединично: непереведённый заголовок главы
|
||
`第二十五节:春光正明媚` и буква разряда `丙`; тот же заголовок стоит в черновике, арм без закон-блока
|
||
его вычистил, арм с закон-блоком — нет. Поединичный промах, не системная протечка: проверено, что
|
||
закон-блок даёт в промпт всего 5 иероглифов. По остальным осям армы неразличимы — печатается как
|
||
есть, не интерпретируется.
|
||
|
||
### 2.5 Французский слой (en, 6 единиц страты `fr`, судья не нужен)
|
||
|
||
```
|
||
арм фр-токенов латиница передано расщеплено
|
||
F 18 0 7 0
|
||
A 18 0 6 0
|
||
B 18 0 7 1
|
||
D 18 0 5 0
|
||
D_ 18 0 6 0
|
||
```
|
||
|
||
Латиничных утечек нет ни у одного арма, расщепление формы имени внутри окна — один случай.
|
||
Класс **имён и топонимов армы не разделяет**: `François` → Франсуа, `Rive Cœur` → Рив-Кёр,
|
||
`Fabién` → Фабьен одинаково у всех.
|
||
|
||
Разделяет другое, и видно это только чтением: **офранцуженное нарицательное**. `château` в трёх
|
||
разных фрагментах раскалывает армы одинаково — «замок» против «шато». Зеркальный случай: арм,
|
||
лучше всех прочитавший французское ИМЯ дворца, хуже всех прочитал английское НАРИЦАТЕЛЬНОЕ
|
||
`silversaint`, превратив титул в фамилию «Сильверсейнт». Ошибка включается на словах, которые
|
||
*выглядят* именем. Третий класс — вставные французские реплики (`oui`, `gens d'armes`, `Vampyr!`)
|
||
— разводит армы по стратегии, а не по качеству: сохранить латиницей · перевести · транскрибировать
|
||
кириллицей; третий путь порождает несуществующие русские слова («капитэны», «уи»).
|
||
|
||
### 2.6 Экономика
|
||
|
||
⚠ **Нога черновика не восстановима, и это ограничивает раздел.** Армы A/A_law/B правят
|
||
ЗАМОРОЖЕННЫЙ черновик из корпуса пакета-6 (`~/books/gu-zhenren/labels/raw/corpus.jsonl`). В записи
|
||
корпуса нет поля модели, usage не сохранён, цена того вызова утрачена. Черновики, купленные этим
|
||
паком (`bo2-DRAFT-*`, $0.00104 медиана), — это ПЕРЕ-ЗАМЕР цены роли на тех же исходниках, а не
|
||
нога данной связки: побайтно они с корпусными не совпадают ни на одной из 16 единиц (максимальная
|
||
близость 0.195). Складывать их в одну цифру нельзя — найдено адверсариальным ревью 07.08.
|
||
|
||
| Арм | $/единицу (собственный вызов) |
|
||
|---|---|
|
||
| F | — (цена утрачена, см. выше) |
|
||
| A | 0.00388 |
|
||
| A_law | 0.00410 |
|
||
| D | 0.00487 |
|
||
| D_ | 0.00533 |
|
||
| B | 0.00892 |
|
||
|
||
Сравнение «связка против однопроходки по цене» из этого замера **не выводится**: у связки две
|
||
ноги, и вторая не измерена. Что выводится: редакторский проход `deepseek-v4-pro` стоит $0.00388,
|
||
то есть дешевле одного прохода однопроходки ($0.00487) — при том что редактор читает И исходник,
|
||
И черновик, а однопроходка только исходник; `glm-5` в той же роли вдвое дороже ($0.00892) при
|
||
неотличимом качестве.
|
||
|
||
**Пере-замер цены черновой роли (самостоятельное число).** На 16 единицах zh — медиана $0.00104
|
||
с учётом ре-генов; **ре-ген потребовался на 6 единицах из 16 = 38%** (одна — дважды) против
|
||
документированных в quirks 15%; ожидаемая цена черновика с учётом ре-генов $0.00121, а не $0.00104. На 12 единицах en — 0 ре-генов. Эхо-мина подтверждённо привязана
|
||
к плотному CJK, а её частота — измеримое свойство материала, а не константа.
|
||
|
||
### 2.7 Деньги
|
||
|
||
**Пак целиком (обе редакции): $4.306626.** Вторая редакция — $1.683796; снятая первая — $2.622830
|
||
(её артефакты сохранены как сырьё снятого замера и в выводы не входят, но деньги потрачены).
|
||
|
||
| Блок второй редакции | Потрачено | Потолок |
|
||
|---|---|---|
|
||
| армы zh | $0.469169 | $0.70 |
|
||
| судейство zh | $0.739291 | $1.70 |
|
||
| армы en | $0.188682 | $0.55 |
|
||
| судейство en | $0.283024 | $1.45 |
|
||
| проба судьи-замены | $0.003630 | $0.10 |
|
||
| **итого вторая редакция** | **$1.683796** | — |
|
||
|
||
Потолки второй редакции соблюдены. ⚠ **Потолки ФАЗ из промта — нет.** Ф2а как стадия (обе
|
||
редакции) = $2.5862 при потолке $2.50; Ф1 = $1.0747 при потолке $1.00, причём 99% этого потрачено
|
||
ДО подъёма потолка. Обе строки относятся к первой редакции и объявлены здесь потому, что деньги
|
||
пака считаются по паку, а не по редакции.
|
||
|
||
Касса общая (`buy.Ledger`): леджер читается **с диска** по префиксам фазы, гард **проекционный**
|
||
(`потрачено + ожидание` против потолка; ожидание = p95 уже купленных вызовов той же роли). Каждая
|
||
запись несёт `usage` и `total_tokens`, поэтому цена пере-считывается из токенов;
|
||
`verify_report.independent_price` считает её вторым путём, с правилом биллинга, выписанным заново
|
||
по quirks 00 — иначе ошибка ПРАВИЛА проходит обе стороны сверки незамеченной.
|
||
|
||
Класс биллинга Gemini (`additive_total`, D22.3) реализован. ⚠ Величину недоучёта первой редакции
|
||
восстановить **нельзя**: `total_tokens` тогда не персистился.
|
||
|
||
---
|
||
|
||
## §3 Девиации текущей редакции
|
||
|
||
Читается вместе с §2: каждая девиация ограничивает то, как читать соответствующее число.
|
||
|
||
| Девиация | Причина | Что ограничивает |
|
||
|---|---|---|
|
||
| Пара en идёт **без закон-блока** у всех армов | подписанного глоссария для книги не существует, выдумывать канон полигон не вправе | контрасты en мерят чистую топологию; фактор банка мерится только на zh (`A_law/A`) |
|
||
| Пара en потребовала **своего пар-пакета промптов** (`prompts/en-ru/`) | боевой промт редактора лежит в `backend/prompts/zh-ru/` и несёт китаеспецифику в 4 местах | сравнение пар корректно лишь настолько, насколько пар-пакеты эквивалентны вне этих 4 мест (§5.2) |
|
||
| Второй судья — `gemini-3.1-flash-lite` вместо `grok-4.3` | кредиты xAI исчерпаны (HTTP 403 на 250 голосах) | лёгкая модель; согласие с luna не эквивалентно прежней паре luna+grok |
|
||
| `REPS_PER_ORDER = 1` | мощность добрана единицами (8→16), а не повторами | разброс повтора внутри клетки не оценивается; оценивается разброс по единицам (bootstrap) |
|
||
| Одна единица zh выпала из вердиктов | 10 отказов фильтра у второго судьи на ней | таблица §2.1 идёт на n=15, а не 16 |
|
||
| Три единицы en судились после смены набора | отбор был недетерминирован и починен по ходу | голоса «осиротевших» единиц лежат на диске и в свод не входят; контроль баланса считает только живые |
|
||
|
||
**Найдено адверсариальным ревью ВТОРОЙ редакции (07.08), объявляю:**
|
||
|
||
| Дефект | Следствие | Статус |
|
||
|---|---|---|
|
||
| Арм F берёт ТЕКСТ из корпуса пакета-6, а ЦЕНУ — из докупленных черновиков; тексты не совпадают ни на одной единице (близость ≤0.195), поля модели в записи корпуса нет | сложение «черновик + редактор» в одну цену снято, §2.6 переписан | исправлено в отчёте, замер не переделывался |
|
||
| Ответы слепых читателей не персистировались: модуль умел только выпускать пакеты | §2.3 была невоспроизводима | ранги сохранены в `blind/READINGS.json`, приёмник и `--score` заведены; полные разборы утрачены, требуют ре-рана |
|
||
| ДИ не скорректированы на пять сравнений | ни один контраст не проходит Holm 0.05 | добавлен §2.1а с перестановочным тестом и Holm |
|
||
| Суммарный перевес гасит разнонаправленные оси | эффект закон-блока на ВЕРНОСТИ (+0.63) терялся в суммарном +0.33 | добавлено разложение по осям |
|
||
| Значимость трёх контрастов несёт один судья — аварийная лёгкая замена | «второй проход покупает качество» опирается на один инструмент из двух | добавлен разбор по судьям; вывод переведён в «направление» |
|
||
| Контраст `D/D_` изолирует мандат НЕ чисто: у D_ своя вёрсточная строка, у D — блок из 4 правил включая не-вёрсточное про чэнъюй, системный промт ×1.92 | −0.47 по ФОРМЕ может нести любой из трёх факторов | объявлено; чистый контраст требует ре-рана с уравненными промптами |
|
||
| Термин «банкнота» употреблялся для закон-блока; по глоссарию банкнота — канал выноса кандидатов из ответа переводчика, маркера `⟦TM-BANK-v1⟧` нет ни в одном арме | требование промта стр.29 о банкноте НЕ исполнено | переименовано в «закон-блок»; сама банкнота остаётся незамеренной (§4) |
|
||
| Разброс судьи-замены на повторе не измерен (у неё измерен только декой) | шум второго инструмента неизвестен | открыто (§4) |
|
||
|
||
**Первая редакция (06.08) снята целиком.** Причина одна и структурная: её раскладка судей была
|
||
2:1 вместо зеркальной, а позиционная фора судьи (+4.65 ошибки) превышала измеряемые эффекты —
|
||
то есть таблица вердиктов отражала позицию варианта в промпте. Дополнительно четыре арма
|
||
отклонялись от промта необъявленно, и все четыре в одну сторону. Числа первой редакции не
|
||
подлежат сравнению с числами второй; её артефакты (`bo-*`, `jv-*`) сохранены как сырьё снятого
|
||
замера.
|
||
|
||
## §4 Что осталось незакрытым
|
||
|
||
1. **Дрейф на связном отрезке 8–10 глав** — швы между чанками, стабильность ты/вы, рост банка.
|
||
Промт заказывал; мерится всё на рассеянных единицах. Требует другого масштаба покупки.
|
||
2. **Армы C (точечный ремонт), E (обратная связка), G (guarded+routed)** — не гнались. Клеймы
|
||
первой редакции сняты: там C засчитывал «фиксер вернул не ту же строку», а G вообще не гнался
|
||
как арм — была только арифметическая проекция цены.
|
||
3. **Слепое чтение владельца на финалистах** (промт стр.72) — не исполнено, требует владельца.
|
||
4. **Ф1 как отбор жильцов** — скрин из 12 моделей убил 2; состав Ф2 фактически назначен ссылкой
|
||
на эксп-20. Клейм «Ф1 отобрала жильцов» снят.
|
||
5. **Оси Ф1, объявленные и не замеренные:** детерминизм повтора при T=0, p95 латентности,
|
||
batch API, отключаемость размышления как ось скрина.
|
||
6. **MQM-lite со спанами и severity, нормировка на 1000 слов, Bradley–Terry** — не реализованы;
|
||
реализован счёт ошибок по осям плюс bootstrap-ДИ по единицам.
|
||
7. **Терминолог-прогон банка среза** (Ф0.3) — карточки персонажей читаются из подписанного сида
|
||
(51 ключ), но банк терминов прогоном не строился.
|
||
8. **Величина недоучёта биллинга Gemini в первой редакции** — невосстановима.
|
||
9. **Контаминация по моделям, населяющим армы** (`deepseek-v4-pro`, `glm-5`) не мерена: проба
|
||
сделана одной моделью.
|
||
10. **Банкнота как канал** (`⟦TM-BANK-v1⟧`, вынос кандидатов из ответа переводчика) не подавалась
|
||
ни одному арму — требование промта стр.29 не исполнено, эффект канала не измерен.
|
||
11. **Разброс судьи-замены на повторе** не измерен; у неё проверен только декой.
|
||
12. **Чистый контраст мандата** — требует ре-рана с уравненными по объёму и составу промптами.
|
||
13. **Цена черновика, который реально правят армы**, утрачена: усилие «мерить на тех же единицах»
|
||
было доведено до покупки, но не до подачи купленного в армы.
|
||
|
||
---
|
||
|
||
## §5 Гипотезы, родившиеся по ходу
|
||
|
||
**5.1 Мандат перевёрстки бьёт по ФОРМЕ, и только по ней.** Разложение по осям: zh `D/D_`
|
||
ФОРМА −0.47 [−0.82, −0.13], ВЕРНОСТЬ/ТЕРМИН/ЯЗЫК ноль не покидают. Фактор попадает в ту ось, на
|
||
которую нацелен, — это косвенное свидетельство исправности судейского протокола.
|
||
|
||
⚠ **Гипотеза «мандат есть пар-данные» НЕ подтверждена и снята до гипотезы.** Я выводил её из того,
|
||
что на zh эффект значим, а на en нет; это классическая ошибка — разница между значимым и
|
||
незначимым сама не значима. Прямой тест интеракции: разница эффектов пар −1.53, ДИ [−3.28, +0.22],
|
||
p≈0.09 — ноль не покидает. Плюс на en отсутствует доза: слияние абзацев мандатом на zh −11.4
|
||
абзаца, на en −1.07, то есть в ~7 раз меньше при вдвое более узкой шкале эффектов. Данные
|
||
совместимы с ОДНИМ общим эффектом на обеих парах. Проверка требует отдельного замера с
|
||
достаточной дозой на второй паре.
|
||
|
||
**5.2 Пар-специфика ПРОМПТА редактора измерима и мала; про движок вывода НЕТ.** Диффом
|
||
`backend/prompts/zh-ru/editor.md` против заведённого `prompts/en-ru/editor.md` — 7 ханков, из них
|
||
пар-специфичных 4 (меры `时辰`/`成`, рамка «китайский паратаксис», оговорка про построчную разбивку,
|
||
пример с чэнъюй); знаменатель 42 строки включает блок FEWSHOT, который в прод не уходит.
|
||
|
||
⚠ **Клейм «новая пара стоит ~4 клауз, Go править не надо» СНЯТ.** Замер этого не показывает:
|
||
движок в паке не запускался ни разу, перенесены 3 ролевых промпта из 7 (нет classifier,
|
||
editor-mono, judge-selector, terminologist, translator-banknote), а `langpack.go` требует для пары
|
||
набор файлов данных с fail-loud и прямо оговаривает, что новое семейство исходного языка требует
|
||
новых полей пакета, парсинга и каналов майнера. Проверено только то, что **промпт редактора**
|
||
переносится правкой четырёх клауз. Полная цена новой пары этим паком не измерена.
|
||
|
||
**5.3 Частота эха — измеримое свойство модели на материале, а не константа.** Ре-ген потребовался
|
||
на 6 единицах из 16 (38%) против документированных 15%; 0 на 12 единицах en. ⇒ Ожидаемая цена черновика
|
||
обязана включать частоту ре-гена, и она пар-зависима.
|
||
|
||
**5.4 Позиционная фора судьи пар-зависима.** zh +3.60, en +1.45 при одной и той же паре судей.
|
||
Возможная причина — длина и плотность варианта. Если так, парный протокол на длинных единицах
|
||
систематически шумнее. Не проверено.
|
||
|
||
**5.5 Механический слой решает низ рейтинга, а не перевод.** Оба слепых читателя независимо
|
||
назвали главным источником непечатного текста диалоговую типографику, слипшиеся абзацы,
|
||
непереведённые остатки и протёкшую markdown-разметку. ⇒ Дешёвый детерминированный пост-процессор
|
||
снимает большую часть разрыва между армами, чем выбор редактора.
|
||
|
||
---
|
||
|
||
## §6 Диспозиции строк бэклога
|
||
|
||
* **55** (эмпирика на претрейн-классике предварительна) — **частично закрыта**: замер повторён на
|
||
контаминационно чистом материале (en, узнавание 1/5), направление вывода то же.
|
||
* **82** (прототип проверки рода) — **закрыт прототипом**: `battery.check_gender` + карточки из
|
||
подписанного сида, фильтр по именительному падежу; 86–112 сверок на арм на 16 единицах.
|
||
* **12** (HARD-детектор величин 成/万) — **закрыт прототипом**: `battery.check_numbers`,
|
||
симметричный разбор обеих сторон, синтетика 16/16.
|
||
* **46** (Hunspell в движок не строить) — **не задет**: детектор выдуманного слова остаётся
|
||
полигон-прототипом, движкового решения не предлагается.
|
||
* **65 / D39.22** (вопросы итерации №2 редакторов) — **не закрыты**: армы C/E/G не гнались.
|
||
* **106** — не задета этим паком.
|
||
|
||
---
|
||
|
||
## §8 Что нужно доснять, чтобы числа стали решаемыми
|
||
|
||
Пак даёт направления, а не решения. Ниже — минимальный набор покупок, после которого на числах
|
||
можно принимать перестройку бэкенда. Цены посчитаны по фактической стоимости голоса этого пака
|
||
($0.0024 в среднем по паре судей; grok — $0.007).
|
||
|
||
| # | Что доснять | Зачем | Оценка |
|
||
|---|---|---|---|
|
||
| 1 | **Шумовой пол пайплайна**: один арм дважды end-to-end на идентичном входе, 16 единиц | Сейчас нечем отделить разницу топологий от стохастики модели. Заказано промтом (Ф0.6), не исполнено. Без этого перевес ±1.9 не интерпретируется | $0.21 |
|
||
| 2 | **Контраст `D_` против `A`** прямым судейством | Рекомендуемая однопроходка — БЕЗ мандата, а измерена С мандатом. Косвенная оценка −0.67 (p≈0.30) решения не даёт. Армы уже куплены, нужны только голоса | $0.15 |
|
||
| 3 | **Уравненные промты `D` и `D_`** и их пере-гон | Контраст мандата смешан с объёмом промта (×1.92) и с не-вёрсточным правилом про чэнъюй | $0.35 |
|
||
| 4 | **Удвоение единиц до 32** на двух несущих контрастах | При n=15 ничто не проходит Holm; мощность добирается единицами | $0.51 |
|
||
| 5 | **Третий судья** (`grok-4.3`, нужны кредиты xAI) | Три из четырёх эффектов несёт один судья — лёгкая аварийная замена. Нужен арбитр | $1.12 |
|
||
| 6 | **Арм F из собственных черновиков**: пере-гон A/A_law/B на купленных черновиках | Сейчас текст арма F и его цена происходят из разных вызовов; провенанс замороженного черновика невосстановим | $0.56 |
|
||
| | **Итого** | | **$2.90** |
|
||
|
||
Без пунктов 1 и 5 числа останутся неинтерпретируемыми независимо от объёма остальных покупок.
|
||
|
||
**Бесплатные починки, обязательные до следующей покупки:**
|
||
|
||
* гейт ре-гена черновика проверяет ТОЛЬКО письменность исходника; принята и оплачена попытка
|
||
с долей латиницы 0.79 (английский перевод вместо русского) — гейт обязан проверять и целевую
|
||
письменность;
|
||
* из пары en выбросить единицу `129b73ad5a` — это выходные данные и библиография, а не проза;
|
||
фильтр страты `plain` («нет токенов с диакритикой») притягивает служебные страницы;
|
||
* карта раскладки слепого чтения лежит в одном каталоге с пакетами — вынести;
|
||
* судейские ответы содержат только числа (111 знаков), рассуждение не персистируется — аудит-следа
|
||
от числа к тексту нет; включить сохранение обоснования;
|
||
* три докстринга противоречат исполняемому коду (`bakeoff.py` про «черновик стоит $0» и про
|
||
«≥2 повторах из 3», `judges.py` про состав судей).
|
||
|
||
**Три провод-факта, добытых паком, ещё не занесены в `00-provider-quirks.md`** (файл вне зоны
|
||
полигона — вопрос к лендингу): fail-closed Gemini приходит БЕЗ объекта `message`, а не с пустым
|
||
`content`; `gpt-5.6-luna` без ручки эффорта выжигает бюджет на рассуждение и отдаёт пустой ответ;
|
||
`glm-5` гасится `extra_body: {"thinking": {"type": "disabled"}}`.
|
||
|
||
---
|
||
|
||
## §9 Пре-рег ТРЕТЬЕЙ редакции (объявлен до покупок)
|
||
|
||
Составлен после рецензии плана §8, проведённой ДО трат. Рецензия пере-считала мощность
|
||
исполнением и изменила план в трёх местах; ниже — итог, а не первоначальный список.
|
||
|
||
**Семейство сравнений объявляется ЗАРАНЕЕ — три первичных контраста:** `A/F`, `B/F`, `D_/A`.
|
||
Остальные (`D/D_`, `A_law/A`, вся пара en) — описательные, поправке не подлежат и решений не несут.
|
||
|
||
⚠ Это НЕ применяется задним числом ко второй редакции. На её данных семейство было из пяти
|
||
контрастов, и корректный вывод остаётся прежним: ни один не проходит Holm (лучший 0.0555).
|
||
Сужение семейства после того, как p-значения увидены, есть пост-хок отбор. Для справки: на тех же
|
||
данных семейство из трёх дало бы 0.0333 всем трём — именно поэтому оно объявляется ВПЕРЁД, а не
|
||
назад.
|
||
|
||
**Мощность посчитана, а не предположена** (знаковый перестановочный тест, Holm, 600 симуляций):
|
||
|
||
| n | A/F | B/F | D/A | D/D_ | A_law/A |
|
||
|---|---|---|---|---|---|
|
||
| 15 | 0.57 | 0.57 | 0.46 | 0.23 | 0.05 |
|
||
| 32 | 0.99 | 0.97 | 0.94 | 0.70 | 0.15 |
|
||
|
||
Объявляется вместе с ограничением: **32 достаточно только если истинный эффект равен
|
||
наблюдённому.** Если истина у нижней границы ДИ, требуется n≈128–192, а в корпусе после дедупа
|
||
**всего 60 уникальных единиц** — то есть такой замер этим материалом недостижим, и это надо знать
|
||
до покупки, а не после. Контраст `A_law/A` не достигает мощности ни при каком доступном n
|
||
(0.39 при n=80) — единицы под него не покупаются, он остаётся описательным.
|
||
|
||
**Потолки третьей редакции** (прежние кассы исчерпаны не полностью: армы $0.469 из $0.70,
|
||
судейство $0.739 из $1.70): армы ≤$1.60 · судейство ≤$3.20 · проба разброса судьи ≤$0.15.
|
||
Объявлены ДО фазы, потому что леджеры читают диск по префиксам и новые покупки лягут в те же
|
||
кассы; без пере-объявления первая же крупная покупка ушла бы в `skipped` с пустым выходом, а свод
|
||
молча выбросил бы единицу — тот же класс тихого усечения, что снял первую редакцию.
|
||
|
||
**Порядок покупок задан каскадом зависимостей** — иначе платим дважды:
|
||
|
||
| Ярус | Что | Цена | Почему в этом месте |
|
||
|---|---|---|---|
|
||
| 0 | $0-починки, пре-рег, потолки | $0 | до всего |
|
||
| 1 | Разброс судьи-замены на повторе | $0.094 | решает, нужен ли третий судья за $1.6–4.0 |
|
||
| 1 | Пол рига: `A` против `A′` на замороженном черновике | $0.212 | отрицательный контроль к декою + разделение дисперсии |
|
||
| 2 | Арм F из собственных черновиков + пере-судейство 4 контрастов | $0.884 | строго ДО добора единиц |
|
||
| 2 | Уравненные промты `D`/`D_` + пере-гон | $0.451 | строго ДО контраста `D_/A` |
|
||
| 2 | `D_` против `A` прямым судейством | $0.144 | последний из «армы уже куплены» |
|
||
| 3 | Добор до 32 единиц по всей таблице | $1.194 | после всех смен армов |
|
||
| 4 | `grok-4.3` на расходящихся контрастах | $2.00 | только как арбитраж; требует кредитов xAI |
|
||
|
||
**Три решения рецензии, принятые против первоначального плана:**
|
||
|
||
1. **Третий судья — не покупка мощности.** Разложение дисперсии: он снижает стандартную ошибку
|
||
на 4–8%, что эквивалентно +2.4 единицы за $1.6–4.0; удвоение единиц даёт −31% за $0.51.
|
||
Разброс несёт разнородность единиц, а не судейский шум. Grok остаётся оправдан как арбитр там,
|
||
где судьи расходятся (`A/F`: +0.84 против +3.03), и как покрытие молчаливых отказов Gemini.
|
||
2. **«Шумовой пол пайплайна» переименован в «пол рига» и снят с блокирующих.** При замороженном
|
||
черновике повтор одного арма меряет стохастику модели в роли редактора, а не пайплайна; и она
|
||
уже сидит внутри разброса по единицам, который берут bootstrap и перестановочный тест. Ценность
|
||
пола другая: отрицательный контроль (при отсутствии разницы перевес обязан быть нулём) и
|
||
разделение дисперсии на «разнородность единиц» против «шум вызова».
|
||
3. **Покупка «пост-процессор против арма» ($0.289) ОТМЕНЕНА до траты.** Гипотеза была, что
|
||
дешёвая детерминированная правка механического слоя закроет часть разрыва `A/F`. Замер $0:
|
||
механический брак действительно сосредоточен в черновике (73 закавыченных реплики против 11–22
|
||
у армов, 6 markdown-разметок против 0–2, 24 ханьцзы против 0), но доминирующий класс
|
||
детерминированно НЕ чинится — черновик берёт `«…»` под внутренний монолог, что в русском наборе
|
||
является нормой, а отличить мысль от произнесённой реплики требует понимания, а не правила.
|
||
Пост-процессор (`postproc.py`, правила проверены синтетикой 8/8) чинит только разметку и
|
||
служебную преамбулу — семь случаев на весь корпус, эффект заведомо нулевой.
|
||
|
||
**Добор единиц требует нормировки счёта на 1000 слов.** Проверено: на текущих 16 однородных по
|
||
длине единицах нормировка не меняет ничего (z 2.457 → 2.429), но добавляемые 16 короче — 8 из них
|
||
ниже текущего минимума на 30%, — и без нормировки они добавят дисперсии больше, чем сигнала.
|
||
|
||
---
|
||
|
||
## §7 Воспроизведение
|
||
|
||
```
|
||
eval/.venv/bin/python eval/role_topology/bakeoff.py --arms # армы zh (кэш: купленное не перекупается)
|
||
eval/.venv/bin/python eval/role_topology/bakeoff.py --judge # судейство zh
|
||
eval/.venv/bin/python eval/role_topology/bakeoff.py --score # свод zh, $0
|
||
eval/.venv/bin/python eval/role_topology/pair_en.py --units|--arms|--judge|--score
|
||
eval/.venv/bin/python eval/role_topology/blind_read.py --emit zh|en # пакеты слепого чтения
|
||
eval/.venv/bin/python eval/role_topology/verify_report.py # верификатор чисел отчёта
|
||
eval/.venv/bin/python eval/role_topology/selfcheck.py # самопроверка харнесса, $0
|
||
```
|
||
|
||
Артефакты — `~/books/role-topology/` (вне git). Текст книг в репозиторий и в отчёт не попадает.
|
||
Ненулевой код возврата `verify_report.py` = отчёт не сдаётся.
|