Compare commits

...

5 commits

8 changed files with 13389 additions and 2 deletions

View file

@ -596,6 +596,35 @@
## Полигон ## Полигон
**📌 02.09 · ПИНГ ОРКЕСТРАТОРУ (два входа в бэкенд) + ИТОГ СЛЕПОГО ЧТЕНИЯ. Решения владельца от 02.09 внутри.**
Носители: пре-реги и результаты — `eval/dovodka/blind-read/` (`PREREG-BLIND-READ.md` + `RESULT-BLIND-READ.md` с семью эрратами, `PREREG-2-BLIND-READ.md` + `RESULT-2-BLIND-READ.md`), прибор дрейфа — `eval/dovodka/dreif.py`.
* **РЕШЕНИЯ ВЛАДЕЛЬЦА 02.09 (ратификация за оркестратором).** (1) **Дефолт редактора — `low`**, бремя доказательства на том, кто включает дорогой режим. (2) Вопрос «`off` против `low` по качеству» **закрыт как неизмеримый этим прибором** — судейских реплик не покупать. (3) Питон-прибор дрейфа пишет полигон (сделано), **настоящий прибор — в движок, это пинг ниже**. (4) Покупка 50 глав на длину **отложена до прогона в бэкенде** (слово владельца).
* **⚠ ВХОД 1 — офлайн-пересчёт по уже оплаченному тексту (`tmctl recheck` или равное).** Проверки движка исполняются ТОЛЬКО в момент генерации; готовый текст в базе перепроверить нечем, и потому частота ложных тревог пост-чека не измерима без покупки. Полигон закрыл дыру питон-двойником (`dreif.py`), но **это не тот же прибор**: у движка стеммер целевого языка и сохранённые формы, у двойника — сопоставление по началу слова. Два «детерминированных» прибора с разными ответами — тихий дрейф нормы; строку в бэклог просит полигон, решение за оркестратором.
* **⚠ ВХОД 2 — пост-чек банка не имел ВХОДА, а не только был выключен.** В пробе `gates.coverage.enabled: false` и блока `gates.glossary` нет — это известно; но сверх того: из 102 записей банка **ни одна не доведена до `approved`, и `decl` пуст у ВСЕХ**. Пост-чек проверяет подписанные термины (`membank/mempostcheck.go`), значит молчал он по двум причинам сразу. Условие включения жёсткого режима записано в самом коде — «после того, как владелец подтвердит точность», а точность мерить не на чем, пока банк не подписан. Порядок для бэкенда: подписать банк → заполнить формы → замер ложных тревог → решение владельца.
* **ИТОГ СЛЕПОГО ЧТЕНИЯ (две редакции, 219 судей Opus, $0.66 на реплику `low₂`).** Редакция 1 дала 18:6 «дешёвая рука лучше» — **вывод СНЯТ**: судьям показывали усечённый черновик (стадия `edit` склеивает несколько draft-чанков; в 10 юнитах из 15 опора покрывала 5579%). Редакция 2 на склеенном по манифесту черновике (покрытие 99100%) плюс **активные нули** (`low₁` против `low₂`): **судьи назвали победителя в 29 голосах из 30 на чистом шуме**, перекос на шуме (80%) БОЛЬШЕ боевого (70%). Первичные исходы: точность 12:10:8 (p=0.842), художественность 19:8:3 (p=0.070, Холм **0.141**) ⇒ **различие НЕ ПРЕДЪЯВЛЕНО**. Механика вскрыта: в **73 голосах из 74** побеждал вариант с меньшим числом претензий, а счётчик упирался в потолок в половине голосов. Текстовый шум одной руки (0.799) больше межрежимного (0.820).
* **ПРИБОР ДРЕЙФА, первые числа ($0, на уже купленном).** Терминов с более чем одной передачей в тексте — 1316% от измеренных; сменивших форму между главами — 68%. Независимым путём (поле `spread`, считает сам движок): **30 записей из 102 несут >1 передачу, максимум 7 форм у одного ключа** (`元石`: «юаньши · камень юань · изначальный камень · первородный камень…»). ⚠ Разброс МЕЖДУ режимами (0.31.9%) **не превышает шум-пола** (2.4%, снят по паре реплик одной руки) ⇒ дрейф на этом отрезке — свойство черновика и банка, **не редактора**; экономия на редакторе к нему отношения не имеет.
* **⚠ Мои ошибки этого пака, названные вслух:** первая редакция пре-рега имела невалидный первичный тест (ничьи в знаменателе против H₀=50% дают ошибку I рода 17.8%) и правило решения с непокрытым пространством исходов; гейт слепоты искал `[A-Za-z]{2,}` и пропускал одиночные латинские буквы (2325 на руку, слепота при этом не пробита — асимметрия 8%); первый гейт покрытия мерил долю совпавших слов и срезал 14 юнитов из 15, потому что смешивал «нет опоры» с «сильно правил»; первый парсер банка искал `src:` вместо формата «ключ⇥передача» и печатал «дрейф 0%» на пустых вариантах — отказ пойман гейтом парсера, который теперь в приборе. Сверка с нормами оркестратора post-hoc: риг нарушил «оба порядка» (обе редакции), «полно-evidence окна» (редакция 1), «шум-полы измерены» (редакция 1), «детерминированный скорер > судьи» и D39.61 «вывод на агрегате до вскрытия единиц».
**📌 02.09 · ПРОБА РЕДАКТОРА ПО ЧЕТЫРЁМ ОСЯМ КУПЛЕНА И ЗАКОНЧЕНА. Ответ на вопрос владельца «почему редактор дорог» получен: ОН ДУМАЕТ, А НЕ ПИШЕТ.**
Отчёт — `docs/experiments/23-editor-tier.md` **Д54**. Пре-рег стенда — `eval/dovodka/prereg-4axes/PREREG.md` (фризы `c08b547` и `590256a`), журнал исполнения со всеми находками — `eval/dovodka/prereg-4axes/ISPOLNENIE.md`. Стенд — `~/books/gu-zhenren/probe-4axes/`. **Израсходовано $5.524817 из санкции $9.50; остаток $3.98 НЕ добирался.**
* **E0 — ответ на вопрос.** Размышление = **77.9%** цены редактора без ручки (`p7-off`) и **76.6%** (`p9-off`); с `low` — 45.7% и 46.7%; у `glm-5` с выключенным thinking — **0.0%**. Ретраи: 39.3% и 26.3% цены руки против 1.8% и 6.0% у `low`.
* **E1 (главный) — эффект ЕСТЬ.** Вилкоксон-Пратт, n=17, **p=7.6e-05**, Ходжес-Леман **×0.283**, ДИ **[0.175; 0.431]**. 19 пар из 40 цензурированы ⇒ величина — **нижняя граница**: `low` режет размышление **минимум втрое**.
* **E2 — цена доставленного знака падает в 2.5 раза** (боевая ×0.407 [0.326; 0.605]). Все ЧЕТЫРЕ заранее объявленных варианта, включая строгое `delivered` и кэш-независимую цену, согласны по знаку и величине.
* **E3 (ось промпта) — НИЖЕ РАЗРЕШЕНИЯ** (p=0.487). **E4 (взаимодействие) — ниже разрешения** (p=0.854), описательный по построению.
* **E5 — опасение плана ОПРОВЕРГНУТО: `low` БЕЗОПАСНЕЕ.** Эхо-клеток у `∅` 2, у `low` **0**; обрывов по длине 10 и 9 против **1 и 1**. Критерий риска не предъявлен. ⚠ Эхо считается по СЫРОМУ ответу: санитайзер его вырезает, и по отгружаемому тексту эхо не видно вовсе.
* ⛔ **ИЗ ЭТОГО НЕ СЛЕДУЕТ РЕКОМЕНДАЦИЯ СТАВИТЬ `low` В БОЙ.** Качество не судилось — прямо вне скоупа. Проба даёт цену рычага и снимает подозрение по эху; следующий шаг — судейство качества `low` против `∅`, и теперь его стоит купить.
**⛔ ГЛАВНАЯ НАХОДКА О ДВИЖКЕ, КОТОРОЙ ПЛАН НЕ ЗНАЛ: АВТО-БАНК РАСТЁТ МЕЖДУ ПОКУПКАМИ.** Терминолог перезапускается в каждой руке и, пока у него есть бюджет, доращивает банк — а банк есть ВХОД РЕДАКТОРА. В базе `consolidated=51`, в первой же руке 81, `memory_version` уехал, edit-снапшот сдвинулся, движок потребовал `--resnapshot`. Без гарда это проявилось бы на втором юните уже с оплаченными клетками, а хуже — банк мог вырасти ПО-РАЗНОМУ в разных руках, дав редактору разный вход при внешне исправном кресте. Лечение: гонять базу конфигом БЕЗ стадии `edit` до неподвижной точки, где терминальное условие — **ноль свежих платных строк И ни одного отказа по деньгам** (одного «`memory_version` не изменился» НЕДОСТАТОЧНО). Стоило $0.0352.
**⭐ И ещё три находки, полезные любому следующему замеру.** (1) **Проводная улика СУЩЕСТВУЕТ** вопреки §3 плана: `LOG_LLM_BODIES=1` + `LOG_LEVEL=debug` пишет сырое тело запроса (`obs/logging.go:72``llm/httpllm.go:415`), только тела, без URL и заголовков — снято, что у `low`-рук в теле стоит `reasoning_effort:"low"`, у `∅`-рук ключа НЕТ, у `glm-5``thinking:{type:disabled}`. (2) **Ось креста можно доказать ЗА $0**: потолок «база + малая сумма» отказывает первой edit-резервации, но снапшот и джоб к этому моменту уже вычислены; ⚠ потолок обязан лежать НИЖЕ редакторской резервации, но ВЫШЕ батча терминолога, иначе ложная точка выглядит тишиной. (3) **`tmctl manifest` бесплатен и даёт `units_total` ДО покупки** — `n` пинится числом, а не «сколько получится» (здесь 17 глав → 20 юнитов, а не ожидавшиеся 24).
**Самопроверка исполнением (мандат промта §7):** агент-контролёр на `fable` вёл всю сессию по распоряжению владельца и поймал у меня **шесть ошибок**, из них четыре — одного класса «показания собственного инструмента приняты за факт о мире»: слепой к эху E5, ковариата по первому чанку вместо суммы (15 юнитов из 20), ложная неподвижная точка банка, дефект регулярки, выданный за находку о проводе. **Все пойманы ДО того, как повлияли на результат**; реестр с классами — Д54.5. Я, в свою очередь, опровергла исполнением одну его находку и одну свою.
**⚠ ЧТО ПРЕДЪЯВЛЕНО, А НЕ СПРЯТАНО:** гард «зелень на пустоте» прошёл ВПРИТЫК — у `p7-off` пустых ровно 4/20 = 20% при правиле «>20% ⇒ отказ», а по строгому определению доставки было бы 25% и прибор отказал бы; четыре оплаченных `decode_error` в `p7-off` на $0.689 (34.5% цены руки), все на ретраях после обрыва, при нуле в трёх других руках; три юнита выброшены из E1 по `R̂ ≤ 0`, и два из них — `low`-клетки с почти нулевым размышлением, то есть выброс делает вывод КОНСЕРВАТИВНЕЕ. Полный список — Д54.4.
**📌 29.08 · ФАЗА Д — НА ОБА ГЛАВНЫХ ВОПРОСА ВЛАДЕЛЬЦА ОТВЕЧЕНО, ВОПРОС 0 ОСТАЁТСЯ ОТКРЫТЫМ. Сессия $0, ни одного платного вызова.** **📌 29.08 · ФАЗА Д — НА ОБА ГЛАВНЫХ ВОПРОСА ВЛАДЕЛЬЦА ОТВЕЧЕНО, ВОПРОС 0 ОСТАЁТСЯ ОТКРЫТЫМ. Сессия $0, ни одного платного вызова.**
**«Отвечено», а не «закрыто», и разница существенная:** на Вопрос 2 ответ дан в форме СЛАБЕЕ, чем звучит сам вопрос — минимакс не проверен (худший ВОЗМОЖНЫЙ жилец не искался), вендоро-независимость архитектуры НЕ проверена (буфер двухвендорен: черновик делает DeepSeek). Первая редакция этой шапки писала «ЗАКРЫТЫ», хотя буллеты под ней несли оговорки — поправлено адверсариальной приёмкой. **«Отвечено», а не «закрыто», и разница существенная:** на Вопрос 2 ответ дан в форме СЛАБЕЕ, чем звучит сам вопрос — минимакс не проверен (худший ВОЗМОЖНЫЙ жилец не искался), вендоро-независимость архитектуры НЕ проверена (буфер двухвендорен: черновик делает DeepSeek). Первая редакция этой шапки писала «ЗАКРЫТЫ», хотя буллеты под ней несли оговорки — поправлено адверсариальной приёмкой.
Отчёт — `docs/experiments/23-editor-tier.md`, секции **Д35Д38**. Агент-сессий 154 → **186 из 200**. Деньги не тронуты: резерв пака $1.2634 из $18.30 как был. Отчёт — `docs/experiments/23-editor-tier.md`, секции **Д35Д38**. Агент-сессий 154 → **186 из 200**. Деньги не тронуты: резерв пака $1.2634 из $18.30 как был.

View file

@ -7966,3 +7966,488 @@ V4-Pro and V4-Flash now support three thinking effort levels: low / high / max»
смотреть **каталог артефактов**, а не только свою ветку доков — `ls ~/books/<книга>/` дешевле любого смотреть **каталог артефактов**, а не только свою ветку доков — `ls ~/books/<книга>/` дешевле любого
грепа по `docs/` и отвечает на вопрос прямо. Это девятый случай класса «показания инструмента грепа по `docs/` и отвечает на вопрос прямо. Это девятый случай класса «показания инструмента
приняты за факт о мире» (реестр — Д52.5): здесь инструментом была моя собственная ветка. приняты за факт о мире» (реестр — Д52.5): здесь инструментом была моя собственная ветка.
## Д54. ⭐⭐ КОНТРОЛИРУЕМАЯ ПРОБА РЕДАКТОРА ПО ЧЕТЫРЁМ ОСЯМ: КУПЛЕНА, ОТВЕТ ПОЛУЧЕН
> Исполнитель — полигон-сессия `textmachine-2f`, 02.09.2026, ветка `polygon`.
> Закон — `eval/dovodka/PLAN-01-09.md` (фриз документа `dc602e9`). Промт — `eval/dovodka/PROMPT-PROBE-4AXES.md`.
> Пре-рег стенда — `eval/dovodka/prereg-4axes/PREREG.md` (фриз №1 `c08b547`, фриз №2 `590256a`).
> Журнал исполнения со всеми находками и отступлениями — `eval/dovodka/prereg-4axes/ISPOLNENIE.md`.
> Стенд и все артефакты — `~/books/gu-zhenren/probe-4axes/`.
**Вопрос владельца был: ПОЧЕМУ редактор дорог.** Ответ: **он думает, а не пишет.**
---
### Д54.1 ОТВЕТ НА ВОПРОС — E0, разложение цены по статьям
```
$ ./eval/.venv/bin/python eval/dovodka/chetyre.py --stand ~/books/gu-zhenren/probe-4axes \
--manifest eval/dovodka/prereg-4axes/prereg.json
```
| статья | `p7-off` | `p9-off` | `p7-low` | `p9-low` | `glm-5@off` |
|---|---|---|---|---|---|
| вход | 7.7% | 8.2% | 19.0% | 18.7% | 41.0% |
| кэш | 0.2% | 0.2% | 0.2% | 0.2% | 0.1% |
| видимый выход | 14.2% | 14.9% | 35.2% | 34.4% | 58.9% |
| **РАЗМЫШЛЕНИЕ** | **77.9%** | **76.6%** | **45.7%** | **46.7%** | **0.0%** |
| ретраи, от цены руки | 39.3% | 26.3% | 1.8% | 6.0% | 0.0% |
**Три четверти цены редактора без ручки — это размышление.** С ручкой `low` доля падает до
4647%, а с моделью, у которой размышление выключено тумблером (`glm-5`), она равна нулю по
построению, и вся цена там — вход плюс видимый текст.
**Строка «ретраи» у `p7-off` наполовину СЕТТЛЕНА ПО ОЦЕНКЕ, а не по факту:** $0.405 из $0.785 —
это четыре таймаута, у которых вендор не вернул usage, и движок списал верхнюю границу
(32 000 · $3.96/1M + вход). Доли статей это не искажает (строки без usage в статьи не входят), но
число «ретраи 39.3%» несёт эту оговорку, а не читается как факт вендорского счёта.
**Одна статья невосстановима никакой пробой и была объявлена заранее:** сколько из подорожания
дали новые веса `0813` и смена вендор-дефолта. Июльское состояние сервинга не вернуть.
---
### Д54.2 ЭНДПОЙНТЫ — правило решения §4, записанное ДО чисел, применено без изменений
**E1 (главный): усилие `low` против `∅`, по-юнитный контраст `log R̂`, попытка 0.**
```
Вилкоксон (zero_method='pratt'): W=3.0 p=7.629e-05 n=17 юнитов
Ходжес-Леман: медиана log = -1.2634 ⇒ отношение ×0.283
95% ДИ (Уолшевы средние, руками): ×[0.175; 0.431]
пар с цензурой: 19 из 40 ⇒ ВЕЛИЧИНА ЕСТЬ НИЖНЯЯ ГРАНИЦА
```
**`low` режет размышление МИНИМУМ втрое**, точечно — вчетверо (медианы `R̂` попытки 0:
`p7-off` 13 242, `p9-off` 12 686 против `p7-low` 3 090, `p9-low` 3 112).
⛔ Величина читается со знаком **«≥»**: 19 из 40 пар несут цензуру на потолке 16 000, и цензура
занижает эффект по построению. ⚠ **И рядом, а не сноской:** у **5 клеток `low` из 40** восстановленное
`R̂ < 700`, где относительная ошибка формулы 2070% (граница объявлена планом до покупки), а у двух
из них `R̂ ≤ 0` вовсе. То есть у самых сильных случаев среза прибор величину НЕ измеряет — он их
теряет, и вывод от этого консервативнее.
**E2 (цена доставленного знака) — четыре варианта, объявленные ДО чисел, и все согласны:**
| вариант | p | медиана | 95% ДИ |
|---|---|---|---|
| попытка 0, фактическая цена (ОСНОВНОЙ) | 1.22e-04 | ×0.528 | [0.422; 0.661] |
| итог юнита, боевая цена (ретраи включены) | 1.83e-04 | **×0.407** | [0.326; 0.605] |
| попытка 0, СТРОГОЕ `delivered` | 2.44e-04 | ×0.512 | [0.407; 0.626] |
| попытка 0, КЭШ-НЕЗАВИСИМАЯ цена | 1.22e-04 | ×0.538 | [0.451; 0.656] |
**Боевая цена доставленного знака падает в 2.5 раза.** Согласие кэш-независимого варианта с
основным доказывает, что несимметричный порядок, выпавший при запиненном сиде, вывод не двигает.
Медианы цены за 1000 доставленных знаков (боевая, командой):
`p7-off` **$0.0111** · `p9-off` **$0.0091** · `p7-low` **$0.0036** · `p9-low` **$0.0038** ·
`glm-5@off` **$0.0018**.
**Перекрёстная проверка E1 и E2 — независимо от рангового теста, по медианам.** Ранговый тест мог
бы дать «эффект есть» и на кривых данных, поэтому обе величины пере-считаны вторым, элементарным
способом:
```
E1 по медианам R̂ попытки 0: P7 3090.2/13241.6 = ×0.233 Ходжес-Леман дал ×0.283
P9 3111.5/12685.5 = ×0.245
E2 по медианам $/1000 знаков: P7 0.0036/0.0111 = ×0.324 Ходжес-Леман (боевая) дал ×0.407
P9 0.0038/0.0091 = ×0.418
```
Оба сходятся по порядку и по знаку. Расхождение медиан отношений с Ходжесом-Леманом ожидаемо:
это разные оценки (отношение медиан против медианы по-юнитных отношений), и они не обязаны совпадать.
**E3 (ось промпта):** `p=0.487`, ×0.794 [0.540; 1.383] ⇒ **НИЖЕ РАЗРЕШЕНИЯ ЗАМЕРА.** Это НЕ
«эффекта нет». Прогноз плана «|эффект| < ×1.25» не подтверждён и не опровергнут: ДИ его накрывает,
но простирается до ×0.54.
**E4 (взаимодействие промпт×усилие):** `p=0.854`, ×1.068 [0.509; 2.836] ⇒ ниже разрешения.
Описательный по построению, выводов не несёт.
**E5 (безопасность). ⛔ ЭХА НЕ БЫЛО НИ В ОДНОЙ ИЗ СТА КЛЕТОК.** Флаг `cjk_artifact` (доля CJK
выше 0.15) не сработал ни разу — проверено по всем пяти базам. То, что первая редакция этой секции
назвала «эхо-клетками», — это **утечки в 410 иероглифов на 5.79.5 тыс. знаков** (доля 0.00050.001),
все вычищенные санитайзером:
| рука | клеток | CJK@сырой | кир<0.99 | flagged | обрыв@0 | санитайзер | малый |
|---|---|---|---|---|---|---|---|
| `p7-off` | 20 | **1** | 4 | 5 | **10** | 1 | 1 |
| `p7-low` | 20 | **0** | 0 | 0 | **1** | 0 | 1 |
| `p9-off` | 20 | **1** | 1 | 2 | **9** | 1 | 0 |
| `p9-low` | 20 | **0** | 0 | 0 | **1** | 0 | 2 |
| `glm-off` | 20 | 2 | 0 | 2 | 0 | 2 | — |
```
p7-off ю(2,0): CJK 4 из 7329 знаков ⇒ доля 0.00055 glm-off ю(3,0): 5 из 5698 ⇒ 0.00088
p9-off ю(2,0): CJK 4 из 7331 знаков ⇒ доля 0.00055 glm-off ю(8,0): 10 из 9534 ⇒ 0.00105
```
⇒ **Критерий §4 «у `low` эхо-клеток ≥3 сверх `∅`» НЕ предъявлен, потому что эха нет вовсе.**
Утечки CJK: `∅` — 2 клетки (обе на ОДНОМ юните (2,0), то есть свойство материала), `low` — 0,
референс — 2. При таких долях **разница ниже разрешения замера**, и «`low` безопаснее по эху»
утверждать НЕЛЬЗЯ. Что утверждать МОЖНО: **эхо-риск `low`, которого боялся план, не подтвердился.**
⚠ Замерено по **СЫРОМУ** ответу попытки 0, а не по отгружаемому: санитайзер CJK вырезает, и по
отгружаемому тексту утечка не видна вовсе (улика — Д54.5, ошибка 4).
**Где `low` действительно отличается — это ПРОВАЛЫ ДОСТАВКИ, и они только у `∅`:**
обрывы по длине 10 и 9 против **1 и 1**; ретраи 10 и 9 против **1 и 1**; все пять клеток с нулевой
доставкой — в `∅`-руках (4 таймаута в `p7-off`, 1 пустой ответ в `p9-off`), у `low`**ни одной**.
Медиана латентности попытки 0: `∅` **204 и 188 с**, `low` **87 и 83 с**, референс **33 с**.
**Ковариата длины входа.** Контраст от длины черновика НЕ зависит: Спирмен ρ=+0.083 (p=0.751), МНК
наклон +0.92±2.30 (p=0.695). Между-юнитный наклон: **при удвоении длины черновика размышление
×2.97**, но оценка слабая — наклон **1.57 ± 1.26, p=0.23**, то есть совместима и с наклоном exp19
(0.87 при ×2.78 на ×3.24 входа), и с НУЛЁМ. ⇒ «сходится с exp19» утверждать нельзя; можно только
«не противоречит».
---
### Д54.3 ⭐ КЛЕЙМО ВЫВОДА — обязательный шаблон §3-БИС плана
> **У `deepseek-v4-pro` (веса 0813) на паре zh→ru при нашей нарезке (~2 тыс. знаков исходника на
> юнит), потолке вывода 16 000, банке в неподвижной точке и на промпте `editor.md` — ручка
> `reasoning_effort:"low"` против неотправки ключа режет объём размышления в **2.35.7 раза**
> (медиана ×0.283, 95% ДИ [0.175; 0.431]; это НИЖНЯЯ ГРАНИЦА среза: 19 из 40 пар цензурированы
> потолком со стороны `∅`) и снижает цену доставленного знака почти вдвое (попытка 0 ×0.528
> [0.42; 0.66]; с ретраями ×0.407 [0.33; 0.61] на 15 юнитах, где доставили все четыре руки).
> Размышление — 7778% цены у `∅` против 4647% у `low`; ретраи 2639% против 26%.
> **Эха не было ни в одной из 100 клеток**; провалы доставки — только у `∅` (4 таймаута по 480 с и
> 1 пустой ответ). Ось промпта и взаимодействие — ниже разрешения (p=0.49 и p=0.85).
> Замерено 02.09.2026 — на **3-й день** после смены таблицы маппинга эффорта 30.08.**
**Число без этого квалификатора — ошибка класса Д52.5.** Что НЕ установлено (§3-БИС):
«размышление вообще» — в реестре четыре разных механизма; семейство DeepSeek — у `flash` другие
веса; перенос на английскую пару. Срок годности: до следующей смены вахты у вендора, и
пере-снимается пред-полётной парой, а не цитируется.
---
### Д54.4 ⛔ ЧТО НЕ УДАЛОСЬ И ЧТО НЕ ПРОВЕРЕНО
Секция обязательна и не косметическая: пустой пробы не бывает.
1. **Ковариатная модель §4 плана НЕ ИСПОЛНЕНА в том виде, как записана, и это не нехватка
библиотеки.** `log R̂ ~ effort + prompt + log(len_draft) + (1|unit)` вырождена как проверка
устойчивости E1/E3: длина черновика — величина УНИТ-УРОВНЕВАЯ (все четыре руки редактируют ОДИН
черновик — это и есть блокировка трудности), а в сбалансированном внутри-юнитном дизайне такая
ковариата не меняет оценок усилия и промпта ПО ПОСТРОЕНИЮ. Обе величины, которые модель дала бы,
посчитаны руками (Д54.2). `statsmodels` **не установлен**; ⚠ причина НЕ «нет сети» — сеть есть и
колесо под cp314 существует, проверено.
2. **Три юнита из двадцати выброшены из E1** по `R̂ ≤ 0`: (7,0) `p7-low` R̂=56, (9,0) `p9-low`
R̂=161, (11,0) `p7-off` (провалившийся вызов, cmpl=0). ⚠ Два из трёх — `low`-клетки, где
размышления практически не было, то есть выброс убирает случаи с САМЫМ большим эффектом:
**E1 занижен, вывод консервативен.**
3. **Пять юнитов пропущены в E2** (пустая доставка в какой-либо руке креста), шесть — в строгом
варианте. Согласие всех четырёх вариантов — единственное, что здесь предъявлено.
3-БИС. **Пятый провал доставки — не «пусто», а размышление, съевшее ответ.** `p9-off` ю(4,0):
попытка 0 — `length` на 16 000 при НУЛЕ знаков контента; ретрай на 32 000 — `finish=stop`,
3 327 токенов и снова **ноль знаков**. Отдельный механизм провала `∅`, и он не таймаут.
4. **⛔ Гард «зелень на пустоте» прошёл ВПРИТЫК.** У `p7-off` пустых **4 из 20 = ровно 20%**, а
правило — «>20% ⇒ прибор ОТКАЗЫВАЕТ». Ещё одна пустая клетка — и результат по E2 не был бы
напечатан вовсе. **По СТРОГОМУ определению доставки было бы 5/20 = 25%, то есть прибор отказал
бы.** Мягкое определение объявлено основным ДО чисел и после чисел не менялось, но читатель
обязан это видеть.
5. **⛔ ЧЕТЫРЕ ТАЙМАУТА, все в `p7-off`.** Движок классифицировал их как `decode_error`
(«2xx with an unreadable body — billed, conservatively settled», `disposition.go:67`), но
латентность выдаёт истинную причину: **480 390 / 480 505 / 480 577 / 480 528 мс = ровно
2 × `attempt_s: 240`** (`models.yaml:59`). Это таймаут чтения, а не нечитаемое тело: вызов
оплачен и **сеттлен ПО ОЦЕНКЕ**, а не по факту вендорского счёта.
**Две законные цифры, и путать их нельзя:** сами четыре строки — **$0.475893 = 23.8%** цены
руки; ЮНИТЫ целиком, вместе с их попытками 0, — **$0.689215 = 34.5%**.
Три из четырёх — ретраи на 32 000 после обрыва по длине, четвёртый — сама попытка 0.
**Те же юниты в трёх других руках прошли `ok`.** `p9-off` имеет 9 обрывов и НОЛЬ таймаутов,
`p7-off` — 10 обрывов и 4. Все четыре пришлись на последние 2.3 часа пачки (11:06, 12:06,
12:19, 13:22), тогда как успешные ретраи `p7-off` до того шли 149226 с, а ретраи `p9-off` в то
же окно — 98326 с. **Свойство руки или эпизод сервинга — проба при n=4 сказать не может, и это
не выдаётся за вывод.**
**Пинг оркестратору, не наша зона:** таймаут чтения маскируется под ошибку декодирования и
биллится по оценке — это дефект движка, а не свойство модели.
6. **Сигнатура: 1 юнит из 20 вне допуска** (Δ=6099 вместо 79). Это тот же юнит (11,0) с
`decode_error` и нулевым usage — провалившийся вызов, а не расхождение сигнатуры. 5% < 20%,
проба не аннулируется даже при засчитывании его нарушением. ⚠ **Исключать `decode_error` из
гейта я не стала: это была бы правка правила ПОСЛЕ просмотра чисел.**
7. **Банк консолидирован не полностью:** 101 терм из 108, `unanswered` 7 (бюджет терминолога
исчерпан). Одинаков во всех пяти руках — на оси не влияет, но входит в область переноса.
8. **Качество НЕ судилось** — вне скоупа по §12 промта. Проба говорит о цене и о $0-гейтах, и
ничего не говорит о том, стал ли текст хуже. **Рекомендация ставить редактору `low` из этой
пробы НЕ следует** без отдельного замера качества.
9. **Ставка платформы не калибровалась** — гейчено отдельно.
10. **Проводная улика снята на одном юните** (пред-полёт) и на первом юните пачки (референс), а не
на всех ста клетках: канал сырых тел включался точечно.
---
### Д54.5 ЧТО Я НАПУТАЛА — реестр собственных ошибок с классами
**Сквозной класс — тот же, что у одиннадцати ошибок предыдущей сессии: показания инструмента
(своего кода, своего грепа, своего гарда) приняты за факт о мире.** Четыре из шести — ровно он.
| # | что утверждала | чем опровергнуто | класс |
|---|---|---|---|
| 1 | «руки без своего `pairs/` ТИХО перекупят черновики ×5» | без `pairs/` прогон падает ГРОМКО (код 10), а дженерик-умолчания нарезки в `pipeline.go:895-905` побайтно равны пар-слою ⇒ снапшот не двигается. Прочитала код, не исполнила | чтение кода за факт о мире |
| 2 | «$0-гард показал, что банк стабилен» | потолок `база+$0.0001` блокировал и ТЕРМИНОЛОГА, а его отказ — не остановка, а `break` с логом (`terminologist.go:807`). `grep -c 'denied by a USD ceiling'` = **2 в каждом из пяти логов гарда** при **0** в логе базы. Ложная неподвижная точка | показания своего инструмента за факт |
| 3 | «у `low`-рук `reasoning_effort` на провод НЕ уехал» | дефект МОЕЙ регулярки: тело логируется экранированным (`\"reasoning_effort\":\"low\"`). `grep -c` давал 1 там, где регулярка давала 0 | дефект инструмента предъявлен как находка |
| 4 | E5 считал эхо по ОТГРУЖАЕМОМУ тексту | санитайзер CJK вырезает: на холодном прогоне отгружено 0 иероглифов при **10 в сыром ответе**. Эндпойнт, блокирующий любую рекомендацию, был слеп к своему предмету. Поймал агент-контролёр | прибор мерил не то, что называл |
| 5 | ковариата брала первый чанк юнита вместо суммы | у **15 юнитов из 20** `chunk_count > 1`, а ключ `(глава, индекс)` совпадает ⇒ ошибка не дала бы ни исключения, ни пустоты, только тихо занижённую длину. Поймал контролёр | тихая ошибка без симптома |
| 6 | `$0`-альтернатива лечения `budget_usd: 0` в руках | не загрузилась бы вовсе: `pipeline.go:1078` отказывает при `budget_usd ≤ 0` у включённого гейта. Прочитала планировщик, не прочитала валидатор | чтение части кода за целое |
**И семь ошибок ПЕРВОЙ РЕДАКЦИИ ЭТОГО ОТЧЁТА — пойманы адверсариальным проходом контролёра по уже
написанному тексту, до того как отчёт кто-либо прочёл:**
| # | что писала первая редакция | чем опровергнуто | класс |
|---|---|---|---|
| 7 | «эхо-клеток у `∅` 2, у `low` 0 ⇒ `low` безопаснее» | флаг `cjk_artifact` не сработал **ни разу за 100 клеток**. «Эхо» было 4 иероглифа на 7329 знаков (доля 0.00055) и 4 на 7331; у референса 5 и 10. Это УТЕЧКИ, а не эхо, и разница между руками ниже разрешения | термин применён шире, чем его определение |
| 8 | «режет размышление не менее чем в 3.5 раза» | верх 95% ДИ ×0.431 = ÷2.3. Правильно «в 2.35.7 раза» | величина заявлена сильнее, чем её несёт интервал |
| 9 | «на 21-й день после смены маппинга 30.08» | 30.08 → 02.09 = **3-й день**. 21 день — от смены ВЕСОВ 13.08, а обязательный шаблон §3-БИС требует маппинг | арифметика в самом клейме вывода |
| 10 | «`decode_error` = 2xx с нечитаемым телом» | латентность 480 390480 577 мс = ровно 2 × `attempt_s: 240` ⇒ это ТАЙМАУТЫ, а формулировка — классификация движка, а не механизм | ярлык инструмента принят за механизм |
| 11 | «$0.689 = 34% цены руки» | это цена ЮНИТОВ целиком; сами четыре строки — $0.475893 = 23.8%. Оба числа законны, но подпись не говорила, какое | число без своего определения |
| 12 | «между-юнитный наклон 1.57 сходится по порядку с exp19 (0.87)» | 1.57 ± 1.26, p=0.23 — совместим и с 0.87, и с НУЛЁМ. «Сходится» утверждать нельзя, можно «не противоречит» | согласие заявлено там, где оценка неинформативна |
| 13 | «ретраи 39.3% цены руки» без оговорки | $0.405 из $0.785 сеттлены ПО ОЦЕНКЕ (вендор не вернул usage), то есть это верхняя граница, а не факт счёта | число без команды, которой оно получено |
**И одна поправка К КОНТРОЛЁРУ, снятая мной:** он написал «5 клеток `low` < 700 плюс 2 с `R̂ ≤ 0`
= 7 из 40». Двойной счёт: клетки с `R̂ ≤ 0` уже входят в «< 700». Верно **5 из 40** (2 в `p7-low`,
3 в `p9-low`, из них 2 с `R̂ ≤ 0`).
Плюс две операционные: `git commit -- <пути> -m <msg>` (git прочёл сообщение как pathspec) и
`.gitignore:24` (`*.db.*.json`), который молча выбросил бы из фриза манифест движка — пойман
проверкой индекса перед коммитом.
**Все шесть пойманы ДО того, как повлияли на результат.** Четыре — агентом-контролёром на `fable`,
поднятым по распоряжению владельца; две — собственным исполнением после его наводки.
---
### Д54.6 НАХОДКИ О ДВИЖКЕ, КОТОРЫХ ПЛАН НЕ ЗНАЛ
1. **⭐ Проводная улика СУЩЕСТВУЕТ.** План §3 «Дыра 2»: «побайтной улики у движка нет». На деле
`internal/obs/logging.go:72` `LogLLMExchange` пишет сырое тело запроса при `LOG_LLM_BODIES=1` +
`LOG_LEVEL=debug` (вызов — `internal/llm/httpllm.go:415`), только тела, никогда URL и заголовки.
Снято на пред-полёте:
```
p7-off reasoning_effort — max_tokens 16000 temperature 0.4 model deepseek-v4-pro
p7-low reasoning_effort ['low'] max_tokens 16000 temperature 0.4 model deepseek-v4-pro
p9-off reasoning_effort — max_tokens 16000 temperature 0.4 model deepseek-v4-pro
p9-low reasoning_effort ['low'] max_tokens 16000 temperature 0.4 model deepseek-v4-pro
glm-off …\"thinking\":{\"type\":\"disabled\"}
```
Три РАЗНЫХ механизма на проводе, ровно как их описывает реестр моделей. Требование §14 «потолок
вывода одинаков во всех руках» — исполнено НА ПРОВОДЕ, а не выведено из кода.
2. **АВТО-БАНК РАСТЁТ МЕЖДУ ПОКУПКАМИ — главная угроза дизайну, которой план не предвидел.**
Терминолог перезапускается в КАЖДОЙ руке и, пока у него остался бюджет, доращивает банк, а банк
есть вход редактора. В базе `consolidated=51`, в первой же руке — 81, `memory_version` уехал,
edit-снапшот сдвинулся, движок потребовал `--resnapshot` (запрещён). Без гарда это проявилось бы
на ВТОРОМ юните уже с оплаченными клетками; хуже — банк мог вырасти по-разному в разных руках,
дав редактору РАЗНЫЙ вход при внешне исправном кресте.
**Лечение:** гонять базу конфигом БЕЗ стадии `edit` до неподвижной точки. Терминальное условие —
не «`memory_version` не изменился», а **ноль свежих платных строк И ни одного отказа по деньгам**
(иначе купленный батч, ничего не сконсолидировавший, выглядит точкой). Три итерации, банк
51→101, стоило **$0.0352** при потолке $0.0538, выведенном из замороженных бюджетов.
3. **Ось можно доказать ЗА $0.** Потолок «база + небольшая сумма» отказывает первой edit-резервации,
но до этого движок бесплатно поднимает черновики, гоняет майнинг и терминолог по чекпойнтам,
**вычисляет edit-снапшот и заводит edit-джоб**. Пять разных `edit`-снапшотов, один общий
`draft`-снапшот и одинаковый `memory_version` установлены ДО первой траты.
⚠ Потолок гарда обязан лежать НИЖЕ редакторской резервации, но ВЫШЕ батча терминолога — иначе
ложная точка выглядит тишиной (ошибка 2 выше).
4. **`preflightBackup` роняет прогоны, стартовавшие в одну секунду:** точка восстановления
именуется с точностью до секунды и не перезаписывается. Пять рук в одном каталоге ⇒ три из пяти
упали кодом 1. В пачке из ста клеток это остановило бы прогон посреди ночи.
5. **Цикл §9.3 плана содержал три дефекта, каждый молчаливый:** `rc=$?` после `| tee` без
`set -o pipefail` возвращает код `tee` (проверено: `$?`=0 против `PIPESTATUS[0]`=4);
`VOLUME CEILING:` печатается на КАЖДОМ ограниченном прогоне (`render.go:130`), так что `break 2`
рвал бы цикл после первой клетки; `--config` грузит `book.yaml`, а §9.2 звал арм-файл копией
`pipeline`.
6. **Мина нумерации слабее, чем боялся план:** чанкер разбирает `第二十六节` и печатает в манифесте
«Глава 26»…«Глава 42» при позиционных `number` 1…17, то есть соответствие восстанавливается из
артефакта прогона, а не только из пре-рега.
7. **⚠ КАПКАН СТЕНДА, В КОТОРЫЙ НЕЗАВИСИМО ПОПАЛИ ДВЕ СЕССИИ: юнит редактуры ШИРЕ чанка
черновика.** В этом стенде 35 draft-чанков против 20 edit-юнитов, и у **15 юнитов из 20**
`chunk_count > 1`. Ключ `(глава, индекс)` у юнита и у чанка СОВПАДАЕТ, поэтому «взять первый
чанк вместо суммы» не даёт ни исключения, ни пустоты, ни заметного расхождения длин — только
тихо неверное число. Здесь он испортил ковариату длины входа (поймано контролёром, исправлено
`unit_draft_lengths()` с прямым тестом); в параллельной сессии слепого чтения тот же капкан
лишил блокирующую линзу точности опоры на трети текста. **Лечение одно: собирать юнит из чанков
`first_chunk_idx … first_chunk_idx+chunk_count1` по манифесту движка, а неполный юнит помечать
отсутствующим, а не полусуммой.**
⚠ И отдельно, потому что это проверялось по чужому поводу: **базовый прогон обрезанных
черновиков НЕ отгружал** — среди 35 финальных `finish=length` ноль (`stop` 9,
`banknote_export` 26); единственный обрыв черновой волны (глава 17 чанк 0) починен ретраем до
5951 знака = 123% медианы.
8. **`tmctl manifest` бесплатен и даёт `units_total` ДО покупки** — `n` можно и нужно пинить числом,
а не «сколько получится». Здесь: 17 глав → **20 юнитов**, а не ожидавшиеся ~24.
---
### Д54.7 ДЕНЬГИ — факт против потолка
```
$ ./eval/.venv/bin/python eval/dovodka/chetyre.py --stand … --manifest … (секция «ДЕНЬГИ»)
база (после стабилизации банка) $0.308102
потрачено вне текущих баз $0.018243 ⚠ ушло провайдеру из БД, которая была пере-создана;
улика logs/orphaned-spend-p7-low.tsv, sha256 2b15d1e7…
p7-off леджер $2.308142 база ⇒ $2.000040
p7-low леджер $0.980793 база ⇒ $0.672691
p9-off леджер $1.899771 база ⇒ $1.591669
p9-low леджер $0.964030 база ⇒ $0.655928
glm-off леджер $0.586246 база ⇒ $0.278144
─────────────────────────────────────────
ИЗРАСХОДОВАНО $5.524817 из САНКЦИИ $9.50
ОСТАТОК $3.975183 — НЕ израсходован и добираться не будет
```
**Смета плана завышала цену клетки, и это тоже находка.** Закладывалось `∅` $0.09 и `low` $0.05;
факт по медианам попытки 0 — `∅` $0.0660.070 и `low` $0.0280.030. ⛔ **Остаток НЕ основание
добирать юниты:** рамка выборки заморожена ДИАПАЗОНОМ ГЛАВ, и §12 промта прямо запрещает добор
после просмотра чисел.
**Смета недооценила другое: ретраи.** У `p7-off` они дали 39.3% цены руки, у `p9-off` — 26.3%,
и большая часть этого — четыре оплаченных `decode_error`. Дорога в руках `∅` не только сама
генерация, но и её обрывы.
---
### Д54.8 ЧТО ЭТО ЗНАЧИТ ДЛЯ КНИГИ — и чего из этого НЕ следует
На книге в 2283 главы редакторская стадия при нынешней конфигурации (`∅`, то есть вендор-дефолт)
проецируется по медиане клетки `$0.0660.070` и пропорции 20 юнитов на 17 глав:
**2283 × (20/17) × $0.068 ≈ $183** в пиковых терминах. При `low`**≈$77**.
⚠ Это ПРОЕКЦИЯ по медиане на 20 юнитах одной книги, а не смета: разброс цены клетки внутри руки
велик, и хвост обрывов на длинных главах в неё не заложен.
**Из пробы НЕ следует рекомендация переключить боевой редактор на `low`.** Проба измерила цену и
$0-гейты. **Качество при сниженном усилии не судилось — это прямо вне скоупа (§12 промта).** Между
«вдвое дешевле и не хуже по $0-гейтам» и «можно ставить в бой» лежит замер качества, которого нет.
Что проба даёт для такого решения: **цена рычага известна**, **эхо-риск `low`, которого боялся план,
не подтвердился** (эха не было ни в одной из 100 клеток), и **все пять провалов доставки пришлись на
`∅`, ни одного на `low`**. ⚠ Но «`low` безопаснее» из этого не следует: утечки CJK в 410 иероглифов
встретились и там и там, разница ниже разрешения, а качество ТЕКСТА не мерилось вовсе. Следующий шаг —
судейство качества `low` против `∅`, и теперь его стоит купить: цена рычага делает его окупаемым, а
подозрение по эху с него снято.
⛔ И отдельно: правка боевого `pipeline-c1.yaml` пинит тест `echo_mine_test.go:217` и двигает
снапшот edit-волны ⇒ `--resnapshot` и перекупка волны. Это не «поменять строчку».
---
### Д54.9 ЧТО ВИДНО В САМИХ ТЕКСТАХ — $0-разбор по запросу владельца
**Границы этой секции.** Качество НЕ судится (§12 промта). Ниже — только детерминированные
счётчики и одно наблюдение по оси целевого языка, то есть по $0-гейтам. **Тексты никто из
исполнителей не читал глазами**, и впечатлений здесь нет намеренно.
**Материал.** Юнитов, у которых финальный текст непуст во ВСЕХ пяти руках — **15 из 20**. Выпали
ровно провалы `∅`: (4,0) `p9-off` пустой ответ и (11,0), (13,1), (14,0), (17,0) — таймауты `p7-off`.
⇒ **ни один оборванный или пустой текст в сравнительный материал не попадает.**
Клетки с флагом `sanitizer_stripped` в материале ОСТАЮТСЯ, и это безопасно: **CJK в финальных
текстах всех пяти рук по всем 15 юнитам — ровно 0** (утечка в 4 иероглифа была в СЫРОМ ответе и
вычищена санитайзером).
**Совпадение версий (по словам, `difflib` с `autojunk=False`, n=15):**
| ось | медиана | минимум |
|---|---|---|
| усилие при P9 | 0.851 | 0.643 ю(6,0) |
| усилие при P7 | 0.901 | 0.679 ю(12,1) |
| промпт при `∅` | 0.902 | 0.829 ю(16,0) |
| промпт при `low` | 0.858 | 0.651 ю(12,1) |
| `glm-5` против `deepseek` | 0.901 | 0.706 ю(3,0) |
**Мера считается ПО СЛОВАМ и с `autojunk=False` — и это не педантизм.** Первая редакция считала
посимвольно с умолчанием, где `SequenceMatcher` на текстах в 510 тыс. знаков объявляет мусором
каждую частую букву; числа расходились втрое. Ловится положительным контролем: «половина текста
заменена» обязана дать 0.500, и даёт.
**Единого юнита-выброса нет:** на разных осях низшие разные, диспозиции у них `ok`, длины пяти
версий различаются на 15%. Это обычный разброс генерации на побайтно одном входе, а не поломка.
**⛔ Строка про авторский рефрен — эффекта НЕ ПРЕДЪЯВЛЕНО, двумя независимыми мерами.**
Единственное содержательное различие двух промптов — оговорка «повтор в параллельных позициях
исходника есть авторский рефрен, сохраняй его». Проверено:
· **выживаемость повторов** — 5-словные n-граммы, встречающиеся в черновике ≥2 раз, сохранившиеся
≥2 раз в выходе: `p7-off` 1/12, `p9-off` 2/12, `p7-low` 0/12, `p9-low` 0/12. Знаково-ранговый
**p=1.000**. ⚠ Материал метрике не даёт работать: кандидатов всего 12 на 3 юнита из 15.
· **доля повторяющихся 3-грамм** — черновик 0.0209; `p7-off` 0.0222, `p9-off` 0.0178, `p7-low`
0.0167, `p9-low` 0.0166. Контраст P9 P7: медиана **0.00135**, **p=0.107**, причём направление
ПРОТИВОПОЛОЖНО предсказанию строки.
⇒ Согласуется с E3 (`p=0.487`). **Для чтения владельцем это значит: ось промпта — наименее
перспективное место, куда тратить внимание.**
**⛔ ДЕФЕКТ ЦЕЛЕВОГО ЯЗЫКА У РЕФЕРЕНСА, КОТОРЫЙ $0-ГЕЙТЫ НЕ ПОЙМАЛИ.** `glm-5` шесть раз оставил
английское `cultivation` в русском тексте — один раз в ю(6,0), пять в ю(8,0):
```
«Сейчас я только начал cultivation, моя сила — начальный уровень первого ранга…»
«…увидев, что Фанъюань собирается продолжать cultivation, тут же забеспокоился…»
```
У всех четырёх deepseek-рук латиницы **ноль**. Санитайзер и чекеры это пропустили: они ищут CJK и
кириллическую чистоту, а **непереведённая латиница в целевом тексте под гейт не попадает**.
⚠ Это НЕ вывод об оси усилия — референс в крест не входит. Это (а) находка для гейтов и (б) причина
НЕ включать `glm-5` в слепое чтение: по этому артефакту рука опознаётся мгновенно.
**Годность материала для слепого чтения владельцем.** Пометок банка, служебных скобок, заголовков,
сносок и обрывов на многоточии — по нулю во всех руках; суммарные длины пятнадцати юнитов лежат в
пределах 1.3% друг от друга (110 496 … 111 938 знаков). ⇒ Четыре руки креста **неразличимы по
форме**, материал честный. Оговорки: `glm-5` опознаётся по латинице и оказывается самым длинным в
8 юнитах из 15 ⇒ **в слепое чтение его включать не следует**; и выборку юнитов для чтения должен
делать не тот, кто видел числа.
---
### Д54.10 ⭐⭐ РЕПЛИКАЦИЯ НА НЕЗАВИСИМОМ ПОВТОРНОМ ПРОГОНЕ — и σ, замеренная на zh
Параллельная сессия слепого чтения купила по санкции владельца **второй независимый прогон руки
`p9-low`** (`arms/low2.db`, $0.659678) как активный нуль для своего судейства. Для НАСТОЯЩЕЙ пробы
это оказался подарок: **реплика, которой в дизайне не было.** Разбор ниже — $0, на чужих данных.
**Материал тождествен, проверено:** у `p9-low` и `low2` совпадают draft-снапшот `8d5721f65596`,
edit-снапшот `b76ab168d95b` и `memory_version e1815faab405`. То есть это чистый повторный розыгрыш
той же конфигурации на том же черновике и том же банке, а не другой замер.
**Эффект воспроизводится:**
| контраст | n | медиана | p |
|---|---|---|---|
| пара P9 с `low₁` (исходный) | 19 | **×0.230** | 0.0014 |
| пара P9 с `low₂` (реплика) | 20 | **×0.307** | 0.024 |
| шум ВНУТРИ руки (`low₂` `low₁`) | 19 | ×1.590 | **0.225 — ниже разрешения** |
То же по цене клетки: эффект ×0.473 (p=1.05e-04) с `low₁` и ×0.428 (p=0.002) с `low₂`; шум внутри
руки ×1.106 при p=0.898.
**Вывод E1 держится при подстановке независимого прогона вместо исходного.** Знак, порядок
величины и значимость сохраняются; систематического сдвига между двумя прогонами одной руки не
предъявлено.
**⭐ И главное побочное: σ ОДНОГО РОЗЫГРЫША ЗАМЕРЕНА НА zh.** Разность двух прогонов одной руки
имеет sd = σ√2, отсюда:
```
sd(log R̂(low₂) log R̂(low₁)) = 1.493 по n=19 ⇒ σ = 1.493/√2 = 1.056
```
План строил мощность на σ=1.2, а эррата Д47.7 давала **1.02 — но на АНГЛИЙСКОЙ паре и с прямой
оговоркой «на zh не переносится»**. Замерено: **1.056**. ⇒ **Переносится.** Это закрывает долг,
который план объявил открытым, и делает его таблицу мощности применимой к паре zh→ru.
**Что это значит для разрешающей способности:**
| | MDE |
|---|---|
| n=17, плановая σ=1.2 | ×2.31 |
| n=17, **замеренная σ=1.056** | **×2.09** |
| наблюдённый эффект | **÷3.53** ⇒ ВЫШЕ разрешения |
Эмпирическая sd самого контраста E1 — **0.791** по 17 юнитам, что не противоречит теоретическому
«sd контраста в кресте 2×2 равен σ» (план §4 «Мощность»).
**И честная половина той же находки, которую принесла параллельная сессия:** по СОВПАДЕНИЮ ТЕКСТА
два прогона одной руки расходятся сильнее (медиана 0.799), чем разные руки между собой (0.820).
**Это не противоречит E1 и не ослабляет его.** Разные величины: совпадение формулировок и объём
размышления — разные вещи, и одна конфигурация свободно даёт разные слова при том же расходе
токенов. Но для ЛЮБОГО замера, который судит ТЕКСТ, это предупреждение первого порядка: там шум
розыгрыша крупнее межрукового различия, и без активного нуля такой замер награждал бы шум. Наша
проба защищена парным дизайном по 20 юнитам — и, теперь, прямой репликацией.

View file

@ -0,0 +1,685 @@
# research/29-harness-topology-survey-codex — архитектура харнесса художественного перевода
**Независимая research-сессия Codex, 31.08.2026.** Дельта-срез относительно репозитория на
31.08.2026. Пишется отдельным файлом с суффиксом `-codex` по прямому указанию владельца, поскольку
параллельная сессия независимо готовит `29-harness-topology-survey.md`. Это исследование не меняет
код, не ратифицирует архитектуру и не рекомендует внедрение: ниже только факты, измерения и границы
переноса.
## 1. УЖЕ ПОКРЫТО
Блокирующий синк выполнен **до первого интернет-запроса**. Команды снятия инвентаря:
```bash
find docs/research -maxdepth 1 -type f | sort | wc -l
for f in $(find docs/research -maxdepth 1 -type f | sort); do rg -n '^#{1,3} ' "$f"; done
sed -n '1,360p' docs/experiments/README.md
```
**Поправка владельца 31.08 выполнена исполнением:** исходный синк по экспериментам был неполон —
он читал только README и структурно не видел `docs/experiments/*.md`. Перед повторной оценкой
находок весь дельта-фильтр переснят командами вида:
```bash
rg -n -i --glob '*.md' --glob '!29-harness-topology-survey*.md' \
'ТОЧНЫЙ_ID|НАЗВАНИЕ|КОНЦЕПТУАЛЬНЫЙ_СИНОНИМ' docs/research docs/experiments
```
Точные неплейсхолдерные patterns и фактические результаты приведены per-finding в §2.0. Оба
текущих 29-файла исключены: собственный отчёт иначе находил бы сам себя, параллельный отчёт другого
агента нарушил бы независимость исследования.
Дата в таблице — дата создания файла по `git log --follow --diff-filter=A --format=%as`; это не
означает свежесть всех его фактов. Вердикт учитывает ревью-шапку, если она есть.
| Тема | Файл | Дата | Вердикт одной строкой |
|---|---|---:|---|
| Рынок и спрос | `research/01-market.md` | 04.07 | Фактура сегментов жива; прежний SAM снят как завышенный. |
| Конкуренты | `research/02-competitors.md` | 04.07 | Ландшафт продуктов/OSS до июля; тезис о пустом ru-рынке снят. |
| Agentic/doc/literary MT | `research/03-academic-agentic-mt.md` | 04.07 | Уже покрыты TransAgents, DelTA, DRT, TEaR, selection/synthesis и literary-eval; вывод «generate-then-select — ядро» superseded. |
| Провайдеры | `research/04-api-providers.md` | 04.07 | Цены/модели/роли быстро устаревают; архитектурной дельтой не считаю. |
| Память и глоссарий | `research/05-memory-glossary.md` | 04.07 | Уже покрыты lorebook, иерархические summary/RAG, DelTA и токен-бюджет. |
| Локальные модели | `research/06-local-models.md` | 04.07 | Роли и экономика моделей под малую VRAM; не топология харнесса. |
| Методология литперевода | `research/07-translation-methodology.md` | 04.07 | Уже покрыты профпроцесс, series bible, редактура и анти-translationese. |
| Юридическое/ToS | `research/08-legal.md` | 04.07 | Юридическая рамка жива, провайдерская часть superseded. |
| Go-прайор-арт транспорта | `research/10-vojo-ai-bot-review.md` | 04.07 | Адаптеры/роутинг/телеметрия, вне предмета топологий качества. |
| 18+ маршрутизация | `research/11-gap-2.md` | 04.07 | Enforcement-факты, но состав канала пересобран; не дублирую. |
| Selection vs refinement | `research/11-gap-3.md` | 04.07 | Развилка и пилот уже спроектированы; собственного книжного вердикта нет. |
| Ru-экосистема | `research/11-gap-4.md` | 04.07 | Опровергает «ru никто не обслуживает»; рынок не пуст. |
| Спрос/прайсинг | `research/11-gap-5.md` | 04.07 | SAM/SOM снизу вверх; вне архитектурной дельты. |
| Общие режимы отказа | `research/12-common-failures.md` | 09.07 | Непрозрачный LLM-провенанс, числа без источников не наследуются. |
| Отзывы читателей | `research/12-consumer-feedback.md` | 04.07 | Каталог жалоб и похвал; не измерение топологии. |
| Академические таксономии | `research/12-error-taxonomies.md` | 04.07 | DITING/BlonDe/MQM/LitEval/LAIT уже разложены по механизмам. |
| Ошибки ja→ru | `research/12-failure-modes-ja.md` | 04.07 | Языковые отказы уже каталогизированы; не пересказываю. |
| Ошибки →ru | `research/12-failure-modes-ru-target.md` | 04.07 | Русская целевая сторона уже каталогизирована; не пересказываю. |
| Ошибки zh→ru | `research/12-failure-modes-zh.md` | 04.07 | Китайская исходная сторона уже каталогизирована; не пересказываю. |
| Валидация банка | `research/13-memory-bank-validation.md` | 04.07 | Dense/hybrid retrieval, детерминизм и режимы отказа банка уже проверены; ревью-шапка первична. |
| Адаптивная память | `research/14-adaptive-memory.md` | 05.07 | ICL-демонстрации, LoRA/kNN и adaptive retrieval уже разобраны; ревью-шапка первична. |
| Голос и scene-state | `research/15-voice-and-state.md` | 09.07 | Профили голоса, exemplars, scene/reader state и pre-pass уже покрыты. |
| Ридер-IDE/HITL | `research/16-reader-ide-alignment.md` | 11.07 | Выравнивание, доверие и ручная редактура; не повторяю как топологию. |
| Независимая критика | `research/17-external-critique.md` | 11.07 | Уже есть чистый-лист по состоянию, верности, литературности, цене и судье. |
| Рычаги качества (GPT) | `research/18-quality-levers-chatgpt.md` | 11.07 | Гранулярность, discourse-reflow и двухступенчатый замер уже отработаны. |
| Рычаги качества | `research/18-quality-levers.md` | 11.07 | Независимая карта сведена с проектом и построена; не источник новых идей. |
| Нарезка/когезия | `research/19-chunking-cohesion.md` | 16.07 | Chunking, STM/carryover, волны и t/e-контракт уже исследованы и измерены exp15. |
| Майнинг банка | `research/20-bank-mining.md` | 17.07 | Термы, алиасы, консолидация и слепые зоны уже покрыты и измерены exp16. |
| Транспорт харнессов | `research/21-llm-transport-survey.md` | 23.07 | Wire/API-квирки уже разобраны; явно вне этого обзора. |
| Доменные харнессы | `research/22-domain-harness-survey.md` | 24.07 | AiNiee/GalTransl/LinguaGacha и др. разобраны по коду; critique-loop отмечен, публичных quality-замеров почти нет. |
| Engine↔platform | `research/23-engine-platform-seam.md` | 02.08 | Интеграционный шов, не топология перевода; transport-часть superseded. |
| Арбитраж банка | `research/24-bank-arbitration.md` | 04.08 | Консилиум, self-consistency, селекция и confidence проверены на банк-термах; не переносить молча на прозу. |
| Холодное ревью шва | `research/25-seam-cold-review.md` | 05.08 | Ратифицированная форма платформенного шва; вне предмета. |
| Agent-harness guidance | `research/26-anthropic-guidance-digest.md` | 09.08 | Общие правила долгих агентных сессий уже абсорбированы; не MT-замер. |
| Детекция глав | `research/27-chapter-detection.md` | 09.08 | Структура ingest книги; дизайн не ратифицирован, но не переводческая топология. |
| API-контракт | `research/28-contract-review.md` | 16.08 | Контракт фронт↔платформа; вне предмета. |
| Провайдерские/архитектурные эксперименты | `experiments/0314b` | 0415.07 | Модель черновика не дала эффекта; промпт/редактор/смысловые ловушки уже измерены на интерим-материале. |
| Нарезка и банк | `experiments/1516` | 2224.07 | Когезия ниже floor; майнинг WHICH подтверждён, WHAT отправлен человеку/банкноте. |
| Редакторский провод/контракт/роль | `experiments/1820` | 0408.08 | Закон-блок нужен; diff-контракт исправен, но дорог/опасен; поиск дефекта дороже идеального ремонта. |
| Топология ролей | `experiments/21` | 08.08 | Закрытый замер: на его tested slice draft→editor сильнее голого черновика; точечный repair/feedback/routing отклонены. |
| Жильцы редактора | `experiments/22` | 16.08 | Закрыт с поздними errata: en-эффект редактора жив, исходный широкий клейм второго прохода сужен. |
| Тир и промежуточные схемы | `experiments/23` | 29.08 | **ИДЁТ**: `--final` красный, acceptance параллельна; порядок arm-ов и price-выводы пока позиционно confounded. |
Следствие дельта-фильтра: находкой ниже может стать только (а) первичная работа новее тематического
локального среза либо (б) отсутствующая здесь ось/новое измерение. Повтор известного допустим только
как внешний контрсигнал с явно указанной дельтой.
## 2. Находки
### 2.0 Реестр дельт и исполняемая проверка
Статус **измерено** ниже означает только то, что число есть в таблице/рисунке первоисточника;
это не означает переносимость на наш конвейер. Команды запускались из корня репозитория 31.08.2026.
`Ø` означает нулевой вывод; «есть» — найденный локальный предшественник, относительно которого ниже
названа более узкая дельта.
| ID | Ось | Статус | Дельта относительно репозитория | Чем проверено |
|---|---|---|---|---|
| F1 | смысловой скелет → стиль, multi-agent topology | измерено людьми | `research/17:243,287` уже знал статью и направление; новое — ставший доступным full text, точный дизайн, выборка и эффекты после прежнего 403. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' 'target\.25081\|Workflow matters\|stylistic lift\|LCD-MAS\|PD-MAS' docs/research docs/experiments` → только `research/17` |
| F2 | гранулярность и раунды refinement | **дубль результата; верификация библиографии** | Полный grep показал результат в восьми старых файлах; вместе с первоначальной строкой этого отчёта он действительно оказался девятым местом. Новое — лишь закрытый состав пар и exact human tables/границы. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' '2605\.13368\|acl-long\.268\|What Does LLM Refinement Actually Improve' docs/research docs/experiments``research/{03,11,14,17,18}` + `experiments/{09,12,23}` |
| F3 | память через длинный документ | измерено автоматически; код только заявлен | DelTA и adaptive retrieval покрыты, но translation-specific 3E-памяти с обученным выбором контекста Loong нет. Частный тезис «плохой контекст хуже пустого» уже есть в `research/13,14` и находкой не считается. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' 'LoongDocMT\|2605\.30274\|3E memory\|observe.{0,8}and.{0,8}act' docs/research docs/experiments` → Ø; широкий grep `near.?miss\|лучше (ничего\|пуст)``research/13,14` |
| F4 | отдельный диагност → редактор; число раундов | измерено автоматическими метриками и latency | В локальных файлах нет этой ACL-работы; это внешний контрсигнал к отклонённой нами feedback/repair-схеме, но на e-commerce. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' '2026\.acl-industry\.115\|Diagnose.{0,15}Then Repair\|two-stage MQM' docs/research docs/experiments` → Ø |
| F5 | thinking и creative prompting | измерено людьми + автоматически | Нет paired-task `Beyond Reproduction`: 23 модели, thinking-варианты и четыре creative-промпта на UCP. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' 'Beyond Reproduction\|2026\.findings-acl\.2030\|2604\.18169' docs/research docs/experiments` → Ø |
| F6 | валидность литературного судьи | измерено людьми + автоматически | `Creativity Bias` в `research/18` только названа; controlled source-visible/source-hidden sentence-pair опыта и точных modality/genre таблиц там нет. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' '2026\.unlp-1\.8\|Semantic Fidelity Versus Literary Quality\|source.?hidden\|2605\.13596\|2026\.eamt-1\.43\|Creativity Bias' docs/research docs/experiments` → только `research/18` (Creativity Bias) |
| F7 | бесплатные сигналы «машинности» | частично валидировано на русском | Локально уже перечислены MTLD/distinct-n/длины/повторы/пассив; новое — отделение machine detection от human translationese и русский RuATD baseline. | `rg -l -i --glob '*.md' --glob '!29-harness-topology-survey*.md' 'MTLD\|distinct-[nN]\|уменьшитель\|translationese\|машинност' docs/research docs/experiments``research/{03,07,12-consumer,12-taxonomies,12-ja,12-zh,15,18-chatgpt,18,22,28}` + `experiments/{21,23}` |
| F8 | измеритель «не отходит от канона» | частичные метрики; единого прибора нет | LTCR, BlonDe, BWB, SEGALE, mStyleDistance и поздний D50/`canon_gaps` уже лежат локально. Первый проход, ошибочно переоценив ru-specificity, пропустил zh→en L-Anno, source-grounded TRANSGRAPH cohesion judge и англоязычный CONSTORY-CHECKER; CoTERM и MetaDocEval также новые для локального корпуса. | Полный `rg -n -i --glob '*.md' --glob '!29-harness-topology-survey*.md' '2024\.lrec-main\.583\|true consistency\|false consistency\|TRANSGRAPH\|2026\.eacl-long\.75\|ConStory\|CONSTORY\|2026\.findings-acl\.410\|CoTERM\|MetaDocEval' docs/research docs/experiments` → Ø; старые `LTCR|BlonDe|BWB|SEGALE|mStyleDistance|canon_gaps|effective consistency` найдены в обоих деревьях |
### F1. Full text уточняет известный контрсигнал: fluency выросла вместе с добавлениями
**Источник.** Lulu Wang, Sanjun Sun, Xing Wang, Jinghang Gu, Kanglong Liu, 01.06.2026,
[*Workflow matters: Comparing human translators and multi-agent LLMs in literary translation*](http://www.jbe-platform.com/deliver/fulltext/10.1075/target.25081.wan/target.25081.wan.pdf),
`Target` 38:3, pp. 422453. Это одна GPT-4o-версия (`gpt-4o-2024-11-20`) в обеих схемах, то есть
изолирован именно workflow, а не жилец роли.
**Что сравнили.** PD-MAS имитирует ISO-процесс: анализ/термы → переводчик → reviser → reviewer →
proofreader. LCD-MAS режет главу на смысловые блоки примерно по 300 китайских знаков и делает:
глобальные summary+strategy → для каждого блока перевод смысла → accuracy-revision → style guide →
стилистический rewrite → после склейки ещё global style-guide и editor. Исходный корпус — 28 глав
примерно по 3 000 китайских знаков из 15 опубликованных произведений 14 авторов и пяти поджанров;
это Methods §§3.13.2/Table 1. Оценка — 30 слепо рандомизированных отрывков, средняя длина
источника 166 знаков (Table 1),
zh→en fiction.
**Измерено (Results 4.14.3, Table 2).** Два профессора перевода оценивали accuracy, два native
English writing experts — fluency. По accuracy медиана у всех трёх вариантов равна 8, Friedman
`χ²(2)=0.37, p=.832`; LCD против human `p=.920, r=.02`. По fluency LCD имеет медиану 8 против 7 у
human и 7.5 у PD; LCDhuman `p<.001, r=.71`, LCDPD `p=.024, r=.49`. Для трёх парных сравнений
применена поправка Bonferroni. В отдельном preference-голосовании `n=120` (30 фрагментов × четыре
эксперта) LCD получил 52/120 (43.33%), PD 39/120 (32.50%), human 29/120 (24.17%); для этих долей
инференциального теста нет.
**Что ограничивает клейм.** LCD был существенно длиннее: 149.5 английских слова против 113.4 у
human и 99 у PD (Table 1). Сами эксперты назвали систематические добавления главным дефектом;
пример включает отсутствующие в источнике «quiet beauty», «molten fire» и «fragile sense of hope».
Планировщик распознавал культурные реалии, но обещанные пояснения иногда не доходили до финала.
Следовательно, измерено превосходство по **fluency**, а не по точности или авторскому голосу.
Книга целиком не оценивалась, стоимость, токены и число API-вызовов не опубликованы.
**Дельта.** `research/17:243,287` уже ссылался на эту работу как на counter-signal и знал
«stylistic lift with occasional additions»; исходный full text тогда был недоступен. Здесь новое
только на уровне восстановленной улики: точная LCD-/PD-MAS topology, human sample, effect sizes и
failure межагентной передачи плана. Общая идея «разделить смысл и стиль» новой не является.
### F2. В WMT24-Literary наиболее устойчивой была full-document input → local rewrite emission
**Статус после полного дедупа: не самостоятельная находка.** Тот же paper/result уже находился в
восьми старых файлах (`research/03,11,14,17,18`, `experiments/09,12,23`); первоначальная запись
здесь делала его девятым местом. Пункт оставлен только как проверка первоисточника и закрытие
локального TODO о составе языковых пар, а не как новая архитектурная дельта.
**Источник.** Shaomu Tan et al., июль 2026,
[*What Does LLM Refinement Actually Improve? A Systematic Study on Document-Level Literary Translation*](https://aclanthology.org/2026.acl-long.268.pdf),
ACL 2026 Long Paper, Tables 1, 37. Девять моделей; WMT24-Literary, семь направлений:
en→{cs,de,es,ja,ru,zh} и ja→zh. Документ около 2 048 слов; полный source и initial translation
видны refiner при любой единице эмиссии, температура 0, до четырёх раундов.
**Измерено автоматически.** MQM-FSP judge в этом блоке — Claude-3.5-Sonnet (§3). Из девяти
комбинаций granularities наиболее устойчивой оказалась
`document MT → segment refinement`: segment-rewrite менял обычно 2540% токенов, тогда как
whole-document refinement у большинства моделей менял менее 5% и давал ограниченный/нестабильный
прирост (Table 1, §4.2). На DeepSeek-V3 simple general rewrite дал `+3.6 MQM-FSP`, а
step-by-step — `+1.4`; у step-by-step accuracy/fluency/style+term равны `0.9/1.3/0.4`
(Table 3). Confidence исходных слов не предсказывал места правок: 43 631 слово, средний ROC AUC
0.503 по log-prob и 0.504 по entropy (Table 7). Это broad projection в распределение редактора,
не locate-and-fix.
**Измерено людьми.** Профессиональный vendor покрыл outputs полного WMT24-Literary: 16 систем
(4 модели × 4 стратегии), семь направлений, свыше 1 млн переведённых слов, human MQM и DA
(Table 4). Но annotators видели contiguous chunks, а не целый документ (Appendix A.5): это полное
покрытие test set, не whole-document human judgment. General был лучшим для всех четырёх моделей;
его MQM/DA дельты: GPT-OSS-120B
`+12.2/+3.7`, Qwen3-235B `+4.4/+1.3`, DeepSeek-V3 `+7.8/+3.1`, GPT-5.2 `+5.6/+2.0`.
Step-by-step у тех же моделей дал MQM `3.3, 1.5, 4.2, 7.2`. В targeted A/B на `n=102`
200300-словных chunks en→de/en→es (размер восстанавливается из процентов Table 5:
16/35/51 = 15.7/34.3/50.0%) refined DeepSeek-V3 выиграл без ничьих 76.1% по accuracy,
97.5% по fluency и 93.1% по style+term; во всех трёх строках `p<10⁻⁴` (Table 5). Поправка на три
эти теста в статье не указана; для большой Table 4 доверительные интервалы/поправка также не
даны.
**Перенос.** Это литературный документ и среди пар есть en→ru и en→zh, но числа Table 4
агрегированы по направлениям; отдельного human-эффекта для en→ru нет. Segment-level здесь означает
локальную **полную перегенерацию блока при полном документе в контексте**, а не список правок.
**Дельта.** `research/11` уже правильно пересказал механизм по майскому препринту, а `research/17`
уже отметил ACL-final. Реальная дельта этого пункта — снятие явного TODO о составе пар и exact
human tables вместе с chunk-level границей их чтения; архитектурной новинкой результат не считаю.
### F3. Loong обучает не саму память, а выбор полезного контекста; литературная улика пока автоматическая
**Источник.** Yutong Wang, Xuebo Liu, Derek F. Wong et al., 28.05.2026,
[*Loong: A Human-Like Long Document Translation Agent with Observe-and-Act Adaptive Context Selection*](https://arxiv.org/html/2605.30274),
arXiv:2605.30274; заявленный код —
[`YutongWang1216/LoongDocMT`](https://github.com/YutongWang1216/LoongDocMT).
**Заявлено.** После каждого сегмента 3E-memory пополняет (1) Essence —
LLM-summary, (2) Exemplars — все предыдущие sourcetarget пары, (3) Entities — структурные записи.
Encoder сначала достаёт top-K summary/exemplars и все упомянутые entities; observe-and-act агент
последовательно фильтрует три типа. Политика выбора обучена SFT/DPO на предпочтениях из собственных
траекторий. В inference псевдокод делает три reasoning-шага выбора (Algorithm 1), translation, summary и entity
update; поэтому это не «один переводческий вызов с RAG». Размер сегмента в самом источнике
**внутренне противоречив**: §4.1 задаёт `l=5` предложений, Limitations — десять. Ни одно из двух
значений нельзя выдавать как однозначно установленное.
**Измерено (автоматически).** Основное обучение — примерно 500 news-документов на каждую пару
en↔{zh,de,fr} (§4.1/A.4); human-eval нет. В OOD GuoFengV1 zh→en webnovel (12 документов, средняя длина 1 445
слов, Table 4/A.4) Loong против DelTA дал sCOMET `76.2 vs 74.2`, dCOMET `73.1 vs 70.5`,
GPT-4.1 judge `67.3 vs 63.0` (Table 4). Ablation Table 3 — News Commentary V18.1,
En→{zh,de,fr} aggregate, Llama3.1-8B, sCOMET+dCOMET+GPT-4.1 judge: средний score Loong 80.2,
без контекста 77.4, без tuning 75.4. Поправка на множественные сравнения не указана.
Отдельная демонстрация перевела первые 12 глав известного *Journey to the West* zh→pt
(51 854 слова), но Figure 1 даёт только автоматические кумулятивные curves; известный классический
текст и отсутствие человека делают это предварительной stability-уликой, не книжным quality-тестом.
**Цена и воспроизводимость.** Авторы прямо признают дополнительный computational overhead, но не
дают токены, latency, API calls или деньги. На 31.08.2026 открытое дерево linked-репозитория
содержит только `README.md`, а не implementation: фраза статьи «code is released» фактически не
подтверждена кодом.
**Дельта.** `research/05` знает multi-level memory DelTA, `research/14` — adaptive retrieval, а
`research/15` — exemplars. Новое их пересечение: обученный translation-specific выбор между
summary/exemplar/entity с OOD-webnovel таблицей. На сотни глав, zh→ru и человеческий голос перенос
не измерен.
#### Проверка тезиса «плохо отобранный контекст хуже пустого»
**Вердикт: подтверждён внутри Loong, но не является нашей новой находкой.** Чистая улика — не
сравнение `w/o Tuning=75.4` с `w/o Context=77.4` в Table 3: эти arms различаются и обучением, и
политикой контекста, поэтому такое сравнение confounded. Прямее §4.4/Figure 4: авторам удалось
впрыснуть 3050 предложений из других документов; у двух selection-free baselines sCOMET, dCOMET
и GPT-4.1-score последовательно падали относительно pseudo-context length `0`, тогда как Loong
оставался почти стабильным. Figure 4 не печатает точные значения и significance test; основа —
News Commentary/WMT24++, не книга и не human judge.
Полный локальный grep вернул [`research/13:42`](13-memory-bank-validation.md) с буквальным принципом
«лучше ничего, чем мусор» и [`research/14:75`](14-adaptive-memory.md) с `near-miss`-дистрактором;
поэтому это внешняя репликация уже известного вывода, не F3-дельта. Более ранние Power of Noise и
Yoran et al. там относятся к QA/RAG, а не к MT; Loong впервые в этом наборе даёт прямой MT-тест,
но только автоматический.
### F4. Отдельный evaluator→post-editor выигрывает на e-commerce, но это не наш diff-контракт
**Источник.** Ji Hun Wang, Siyu Wu, июль 2026,
[*Diagnose, Then Repair: A Two-Stage MQM-Guided Post-Editing Framework for Domain-Specific Machine Translation*](https://aclanthology.org/2026.acl-industry.115.pdf),
ACL Industry 2026, Tables 14, 710.
**Топология.** Claude Opus 4.5 один раз выдаёт MQM `issue_id/span/category/severity/suggested_fix`
с retrieved TM-exemplars; отдельный post-editor получает report и обязан минимально исправить
только диагностированные места. Важно: post-editor возвращает **полную новую hypothesis плюс edit
log** (§3.4), не исполнимый список search/replace-операций.
**Измерено.** Внутренний e-commerce test — 5 000 сегментов для каждого из en→de/it/es/fr/zh/ja;
KB 135184 тыс. пар (Table 10), initial MT Claude 3.5 Sonnet, семь post-editor моделей. На en→de
no-edit COMET/CometKiwi `86.39/82.66`; one-stage Opus `89.38/82.84`; two-stage P3+Sonnet 4.5
`89.93/84.50`. На en→zh соответственно `87.76/81.60`, `88.70/79.57`, `90.80/83.19`
(Table 1). Two-stage COMET выше one-stage у 4/7 моделей en→de и 6/7 en→zh, но CometKiwi у ряда
моделей падает (complete Table 5), поэтому фраза абстракта «consistently improves both» шире тела.
Статзначимость/поправка на множественность не приведены; judge результата — только COMET-22 и
CometKiwi.
На en→de второй repair-round ухудшил COMET в 6/7 клеток; единственный плюс Sonnet 4.5 равен +0.14, а
GPT-OSS-120B дал 1.86 (Table 4). Latency на `n=50`: evaluator mean/median/p95
14.34/7.80/54.38 s, post-editor 3.30/3.10/5.04 s, end-to-end 17.64/10.90/59.41 s (Table 8;
языковая пара для latency source не указана).
Прайс-лист моделей дан, но фактические токены и dollar cost прогона не даны.
**Перенос под вопросом.** Короткие повторяющиеся товарные сегменты и automatic metrics — другой
класс, чем глава прозы. Более того, заявленные в abstract «agreement with human MQM» и «human
editor preferences» не имеют в полном тексте методики или таблицы human study; их здесь не считаю
измеренными.
**Дельта.** Это не опровергает наш дорогой list-of-edits: формы выхода различны. Оно даёт лишь
внешний контрсигнал к локально отклонённой топологии «diagnose отдельно → repair отдельно» и
измерение того, что второй раунд чаще регрессирует.
### F5. Source-comprehension thinking и translation prompting дают неоднородные эффекты
**Источник.** Ran Zhang, Steffen Eger, Arda Tezcan, Wei Zhao, Simone Paolo Ponzetto, Lieve Macken,
июль 2026, [*Beyond Reproduction: A Paired-Task Framework for Assessing LLM Comprehension and
Creativity in Literary Translation*](https://aclanthology.org/2026.findings-acl.2030.pdf), Findings
ACL 2026; код/данные заявлены в [`NL2G/Beyond-Reproduction`](https://github.com/NL2G/Beyond-Reproduction).
Проверяемые пути репозитория: `task2_ucp/task2_evaluator.py`,
`task2_ucp/step2_batch_task2_translation.py`, `prompt_openrouter.py`.
**Две разные задачи и судьи.** Task 1 — `n=299` English claimreasoning items из 11 классических
романов разных жанров, средний excerpt 186 tokens; языковой пары нет, это source comprehension
(§3.1). Gold прошёл трёх Prolific-аннотаторов на item, затем проблемные случаи — первого автора и
двух trained annotators; всего участвовали 33 Prolific и два expert annotators (§3.1, §3.3).
Task 2 — по 20 UCP-rich excerpts из восьми романов для en→zh и en→nl, 78/76 target-текстов,
398/374 размеченных units of creative potential (Table 1). Human gold создали один опытный
Chinese и один Dutch annotator; масштабируемый judge — Qwen3-Next-80B, `F1=.710` на en→zh
validation subset из 12.8% human-annotated paragraphs (§3.2). Затем сравниваются 23 модели ×
четыре prompts; поправка на множество model/prompt сравнений не указана.
**Измерено.** На Task 1 thinking-пары немонотонны: Qwen3-235B-Thinking лучше обычного,
Qwen3-30B-Thinking хуже, Claude 3.7 Thinking даёт лишь небольшой эффект (§5.1); это результат о
понимании источника, не о качестве перевода. Масштаб модели связан с macro-F1 слабо и незначимо
(`ρ=.311, p=.149`, Figure 2). На Task 2 прямые пары также расходятся: Qwen3-235B avg/max
`.065/.036`, Thinking `.048/.108`; Qwen3-30B `.045/.060`, Thinking `.033/.024` (Table 13).
Распределения четырёх prompts сильно перекрываются; лишь 7/23 систем достигают личного максимума
на самом explicit P3. Только Mistral-Large (0.167), Mistral-Small-Creative (0.107) и
Qwen3-235B-Thinking (0.108) вообще превысили creativity 0.1 при human baseline 0.246 (Figure 3,
Table 13). У DeepSeek-V3.2, Jamba-Large и Llama3.1-405B больше creative freedom снизило score.
**Цена отдельно.** Статья не сообщает reasoning tokens, latency или dollar cost; следовательно,
она отвечает на quality-ось, но не на cost-ось thinking. Отрывки в среднем около 218 source-токенов,
не главы; перенос на книгу и →ru под вопросом.
**Дельта.** Локально уже есть DRT и отрицательный результат decomposition/`translate again`.
Здесь новое — прямой paired benchmark «понимание не равно creative transfer», thinking-варианты и
четыре уровня creative prompting на литературных UCP, а не общая MT-метрика.
### F6. Два новых контроля показывают, что «литературный judge» меняет сам конструкт
#### F6a. На sentence pairs одной книги тот же judge переворачивает рейтинг, если скрыть источник
Dmytro Chaplynskyi, Ivan Kulynych, Maria Shvedova, Lesia Ivashkevych, май 2026,
[*Semantic Fidelity Versus Literary Quality*](https://aclanthology.org/2026.unlp-1.8.pdf), UNLP
2026, Tables 24. Корпус покрывает одну целую известную книгу, *Animal Farm*, en→uk: семь
human-переводов и GPT-5.2/DeepL/Lapa, 1 367 aligned sentences, из них 1 128 valid. Единица
автоматической и pairwise оценки — выровненные предложения, не book-level чтение. Семь neural MT
metrics поставили
все три AI в top-3. AIAI против humanhuman: LaBSE 0.941/0.711, XCOMET round-robin 0.886/0.627,
COMET-22 0.881/0.750 (Table 2); одновременно AI имели MTLD 311 против 377 у людей (18%) и 0.47
против 1.23 diminutives на тысячу токенов (2.6× меньше).
Контроль удерживал GPT-5.2-judge неизменным: около 750 pairwise сравнений с source и 750 без него;
ещё 1 034 judgments дали четыре профессиональных en→uk переводчика с source, A/B порядок
рандомизирован (Table 3). При source-visible AI ranks были GPT-5.2 #1, DeepL #3, Lapa #4; без
source все три упали ровно на пять позиций — #6/#8/#9 (Table 4), а top-5 заняли люди. Формальных
significance tests/поправки для rank reversal нет, GPT-5.2 одновременно кандидат и judge, книга
известна pretraining. Поэтому это сильный within-judge construct-control, но лишь одна пара/книга.
#### F6b. Профессиональная creativity-аннотация не совпадает с MQM-judge
Kyo Gerrits, Rik van Noord, Ana Guerberof Arenas, июнь 2026,
[*Creativity Bias: How Machine Evaluation Struggles with Creativity in Literary Translations*](https://aclanthology.org/2026.eamt-1.43.pdf),
EAMT 2026, Tables 45, 1112; протоколы —
[`INCREC/Creativity_bias`](https://github.com/INCREC/Creativity_bias), каталоги `Evaluations/`,
`MT/`, `Statistical analysis/`. Шесть коротких текстов
97182 слова, три жанра (poem/short story/thriller), en→nl, en→ca, ru→nl; три modalities HT/PE/MT.
Четыре профессиональных литературных переводчика создали HT/PE и MQM errors, три doctoral
translator-annotators разметили creative shifts. GPT-5.2 high-reasoning — LLM judge.
Профессиональный creativity index HT/PE/MT равен 62.2/28.9/15.9 для en→nl,
30.0/15.2/31.6 для en→ca и 60.1/32.2/50.8 для ru→nl (Table 4). Среди девяти automatic metrics
максимальная корреляция с creative shifts всего 0.20, с errors 0.39, с combined CI 0.35
(Figure 2). GPT-5.2 часто нашёл другие errors: например, по агрегату Table 5 его match означает
совпавший span, не совпавшую категорию; 15/38 professional Kudos он назвал ошибкой. GLM показал,
что judge чаще человека ставит ошибки HT (`z=2.07, p=.038`) и реже — MT (`z=6.16, p<.001`). Для
различий professional modalities применён post-hoc HolmBonferroni (Table 12); для сетки
metric-correlations отдельная поправка не заявлена.
**Общая дельта F6.** `research/03` и `18` уже знают, что literary metrics/LLM judges расходятся с
читателем; тезис не новый. Новые измерения — controlled source-visibility на sentence pairs,
покрывающих одну книгу, и genre×modality creativity annotation, включая русский источник. Они
объясняют, почему внешний F1 может одновременно иметь высокий fluency/preference и систематические
добавления, но book-level голос/когезию F6a не измеряет.
### F7. Бесплатные детекторы «машинности»: книжные сигналы есть, надёжного long-form прибора нет
Здесь важно не смешать три разных конструкта: (а) **machine-generated vs human-written**,
(б) **переводной vs оригинальный русский** (`translationese`) и (в) бедность/сжатие литературного
стиля. Один и тот же бесплатный признак может разделять один конструкт и инвертироваться на другом.
«Бесплатный» ниже означает без платного LLM/API-вызова; локальные tokenizers, taggers и classifiers
всё равно требуют вычислений и, для supervised detector, обучающих данных.
| Бесплатный сигнал/прибор | Где проверен | Что реально доказано | Граница |
|---|---|---|---|
| Dist-{1,2,4}, Ent-{1,2,4}, TTR, CTTR, длина; открытый TF-IDF→SVD→logistic baseline | Shamardina et al., 03.06.2022, [RuATD-2022](https://arxiv.org/html/2206.01583), русский; весь split 130k/21k/32k/32k, MT-часть 35 860 samples | Private-test accuracy TF-IDF `0.64223`, BERT `0.79666`, top `0.82995`, crowd `0.66666` (Table 5). Значит, открытый русский ATD benchmark и работающие classifiers существуют. | MT-тексты от OPUS-MT/M-BART50/M2M-100 имеют в среднем 11.5 tokens и фильтр 525; это не современный LLM-литперевод и не книга. TTR для MT: human `.98`, machine `.97`; CTTR `2.08/1.97` (Table 4) — малый сдвиг. |
| Lexical richness, perplexity, число символов/предложений, POS-TF-IDF, пунктуация, sentiment, readability | Та же RuATD, анализ решений §5 | Эти дополнительные признаки давали лишь ограниченную пользу; ни одна top-3 система их не использовала. | Это не валидация отдельного порога: выигрыш принадлежит обученному classifier, а не «MTLD ниже X». |
| MTLD, hapax/top-100, частицы, уменьшительные, function-word Cosine Delta, dispersion ratio длины, попарный chrF | Chaplynskyi et al., [UNLP 2026](https://aclanthology.org/2026.unlp-1.8.pdf), одна en→uk книга, 7 human + 3 AI | На этом корпусе AI: MTLD `311` против `377`, частицы примерно до 2× реже, уменьшительные `0.47` против `1.23`/1k tokens; AI outputs также сильнее сходятся между собой. Это релевантная книжная проверка класса сигналов, хотя не нашей пары. | Не classifier и нет held-out threshold/accuracy. Языково-зависимые признаки вроде частиц/уменьшительных требуют переопределения для English target; MTLD, dispersion и межсистемная сходимость переносятся как конструкты напрямую. |
| 45 структурных/лексических частот: пассив, non-finite/deverbal forms, pronoun classes, connectives, clause types, lexical density/TTR, dependency distance, sentence/clauses statistics | Kunilovskaya, Lapshinova-Koltunski, Mitkov, сентябрь 2021, [Russian fiction translationese](https://aclanthology.org/2021.ranlp-1.84/): оригинальная русская проза vs человеческие переводы на русский из 11 языков, RNC | Binary classification `8292%`; structural features стабильнее lexical (Results/abstract, Appendix Table 2). Значит, бесплатная морфосинтаксическая панель на русской художке валидировалась. | Она распознаёт **в том числе живой человеческий перевод** как переводной русский; использовать её как machine-detector означает ложноположительно штрафовать сам объект работы. |
**Исполнительный вердикт.** Кроме уже локально названных MTLD/distinct-n/дисперсии длин/повторов,
существуют n-gram entropy, function-word distance, частицы, lexical density, морфологические классы,
связки, типы клауз, dependency distance, expansion dispersion и простые обучаемые TF-IDF/POS
classifiers. RuATD и русский translationese-классификатор подтверждают работоспособность семейства,
а en→uk book experiment — применимость части сигналов на книжном переводе. Главный пробел не в
языковой паре: **не найден пороговый detector с held-out quality/false-positive validation на
длинном современном LLM-литпереводе вообще**. Поэтому эти числа — диагностические оси/регрессия
внутри одной книги, а не доказательство «текст машинный».
### F8. «Не отходит от канона»: есть частичные приборы, но единого long-range score нет
Вопрос не о механизме памяти, а о наблюдаемом результате. По первоисточникам приборы распадаются
на три несовместимые задачи: (1) одинаково ли переведены повторные сущности/термы; (2) совпадает ли
выбор с утверждённым каноном; (3) остаётся ли различимым голос персонажа.
| Прибор | Что нужно на входе | На чём валидирован | Что доказывает / не доказывает |
|---|---|---|---|
| **Наш `canon_gaps` / D50 `bank.py`** ([exp23 §Д32.4, §Д50](../experiments/23-editor-tier.md)) | source triggers + подписанный bank `dst decl.forms` + candidate output; полный reference не нужен | Частичные zh→ru webnovel runs: 375548 (term, chunk) пар; presence `96.998.9%`, weighted misses `0.231.29%`, effective consistency `99.3100%` (§Д50.2). Exp23 в целом ещё **ИДЁТ**. | Это уже прямой измеритель adherence к явному канону терминов. Но ручное чтение поймало `古月方源 → «Гу Юэ Фан Юань»` вместо «Гуюэ», невидимое обоим автоматам из-за fullname-alias (§Д50.3). Следовательно, даже наш самый близкий прибор — монитор с известным blind spot, не proof книги. |
| **LTCR** — доля совпавших пар переводов повторного source-word среди `C(k,2)` ([Lyu et al., EMNLP 2021](https://aclanthology.org/2021.emnlp-main.262/)) | source + candidate + word alignment; полный reference не нужен | Gold-aligned ZHEN: 268 docs/6 741 sentences; tests: zh↔en news 509 docs/5 146 sentences, TED zh↔en/en→fr 46 docs/4 632 sentences. Human test `n=500` сравнивал системы в целом, а не валидировал LTCR против ручной term-consistency. | Это прямо релевантное zh→en свидетельство внутренней лексической самосогласованности. Ограничение конструкта, а не языка: стабильно неверная форма получает 100%, identity/aliases/coreference не строятся. Уже подробно покрыто `research/05,13,14,15,19,20` и `experiments/15,16`. |
| **L-Anno / true-consistency test set** — LTCR только на повторных словах, которые действительно обязаны совпадать ([Lei et al., LREC-COLING 2024](https://aclanthology.org/2024.lrec-main.583.pdf)) | Для released test-set: source + candidate + alignment + gold-разметка source-position pairs «вариативность допустима/недопустима»; target reference при scoring не нужен. Но создание такой разметки для новой книги требует bilingual source/reference и людей. | Формально zh→en: 310 news documents/5 051 sentences, avg 16; статьи были изначально написаны по-английски и профессионально переведены на китайский, то есть тест делает reverse translation Chinese translationese→English original. 2 bilingual linguistics students, overlap 42 docs, IAA F1 `.96`. Из 30 667 пар повторных source words, одинаково переведённых в human target, 17 292 (`56.4%`) были true consistency, 13 375 (`43.6%`) — false consistency; `49.8%` true pairs разнесены на ≥5 предложений. | Исправляет conceptual defect LTCR: не штрафует всякую допустимую вариативность. Но это короткие reverse-origin news-документы, четыре старых NMT systems, без LLM/романов; score проверяет одинаковость требуемых pairs, а не правильность английской формы. В локальном корпусе точного источника не было. |
| **SemenovBojar terminology consistency** ([WMT 2022](https://aclanthology.org/2022.wmt-1.41/)) | source + candidate; terms/alignments; pseudo-reference = первое или самое частое candidate-употребление. Полного reference нет. | cs→en, 33 коротких legal agreements ELITR; WMT21/22 systems. Корреляция с human DA лишь косвенная: DA взята на **другом news dataset**; авторы называют оценку preliminary. | Ловит one-to-many drift без эталона, но превращает first/majority error в «канон» и не знает правильности. Это ровно известная локально опасность LTCR-first-wins. |
| **CoTERM** — HHI для accuracy + consistency + допустимой вариативности ([Hazem & Kageura, LREC 2026](https://aclanthology.org/2026.lrec-1.682/)) | Для `CoTERM+` достаточно annotated source terms + term-only canon допустимых targets + candidate; полный framework и `CoTERM` дополнительно предполагают sentence references. | en→fr TICO-19 (30 docs, 2 100 annotated sentences) и en→ja ASPEC (1 300); 1 250 system sentences/309 term pairs оценили 3 native Japanese specialists. Correlation с людьми умеренная: Kendall `.41.47`, Pearson `.46.57` (Table 6), хотя abstract говорит “strongly”. | Может отличить допустимые варианты от ошибок, то есть ближе всего к «держит утверждённый термин». Языковая пара не мешает перенести формулу на zh→en при наличии term list; реальный предел — sentence/term-level human validation, тогда как document/corpus validation оставлена будущей работой. |
| **BlonDe** — F1 по ENTITY/TENSE/PRONOUN/discourse categories ([Jiang et al., NAACL 2022](https://aclanthology.org/2022.naacl-main.111/)) | candidate + **полный human reference**, English NER/POS/rules | BWB zh→en webnovels: 384 книги; train 377, printed test 80 chapters/2 632 sentences, dev 79; chapter 1846 sentences, median 30. Error study: 8 professional translators; correlation study: 4 translators + 4 native-English revisers, 5-sentence blocks. BlonDe.F1 `r=.417` adequacy/`.358` fluency. | Это наиболее прямо релевантный найденный zh→en literary benchmark, и для English target его инструменты подходят без языкового порта. Но score остаётся reference-based category-count overlap, не book-level identity/coreference/alias tracking и не автономный контроль 2 000 глав. Уже покрыта `research/03,11,12,15,22`. |
| **BWB gold discourse benchmark/protocol** ([Jiang et al., ACL 2023](https://aclanthology.org/2023.acl-long.435.pdf)) | source + full target reference с entity IDs, term-span flags, coreference chains и quotation structure; system output; ручная либо task-specific automatic сверка. Term flag — категория, не готовый список допустимых canonical strings. | Zh→en webnovels: test 80 chapters/2 633 sentences из 6 novels; 8 professional translators. §3 печатает 8 585 EN + 6 070 ZH = **14 655** mentions, тогда как abstract конфликтно заявляет 15 095; бесспорным считаю разложенное число. Отдельно 4 zh→en experts размечали document errors; ENTITY `43.3%`, COREF `34.0%`, TERM `19.2%`, ZEROPRO `17.3%`, QUOTE `1.1%` (категории пересекаются). | Это gold bilingual resource/protocol для отдельных entity/term/coreference/quotation audits, не один воспроизводимый production canon score. Нужны annotated source/reference и task-specific evaluator либо человек; межглавная дистанция и character voice не покрыты. Полный локальный дубль `research/17,18-chatgpt` и семейств BlonDe; дельты источника нет, была ошибка моей интерпретации. |
| **MetaDocEval** — contrastive тест самих метрик ([Dahan, Bawden, Yvon, EAMT 2026](https://aclanthology.org/2026.eamt-1.19/)) | perturbations + source/reference/system outputs; это meta-evaluation, не production score | en→fr/es/de WMT24++, 59150 docs на perturbation/pair, average 11.3 sentences. Document-quality human scores не собирались; один annotator проверил лишь perturbation validity en→fr: `n=31/26/19/40` для tense/lexical/conjunction/pronoun (Appendix A.6). | Отрицательный результат: ни одна текущая метрика не ловит document coherence надёжно; reference-free COMETKiwi/MetricX-QE к `w=9` едва около chance, LLM scorers деградируют, лучший компромисс ≈3 предложения. Style/register и deep coreference не покрыты. |
| **TRANSGRAPH source-grounded cohesion probe** ([Pham et al., EACL 2026](https://aclanthology.org/anthology-files/pdf/eacl/2026.eacl-long.75.pdf), §3.3.5) | English source + candidate; Gemini-2.5-Flash ставит tags только source pronouns/coreferents и conjunctions, затем отмечает корректность target realization; полный reference для score не нужен | ACL 60/60: 5 technical talks, 6 en→de/fr/ja/pt/ru/zh directions; avg 84.2 sentences/1 746 tokens, max 101/2 031. Spot-check — только docs 111/410, без числа tags, annotators и IAA: coreference annotation `97.2/98.8%`, evaluation `100/100%`; conjunction annotation `98/100%`, evaluation `93.9/98.4%`. | Новый reference-free LLM probe для English-source pronoun coreference/conjunction внутри system paper, не отдельно meta-validated metric; human-quality correlation нет. На zh→en не проверен: нужна валидация Chinese source tagging/prompts. Терминология и произвольные entity names этим probe не оцениваются. |
| **mStyleDistance** ([Qiu et al., Findings ACL 2025](https://aclanthology.org/2025.findings-acl.869/)) + character-quote verification ([Michel et al., LaTeCH-CLfL 2024](https://aclanthology.org/2024.latechclfl-1.15/)) | target-only quote aggregates с известным speaker; reference не нужен, но для preservation нужен baseline/profile, которого статьи не валидируют | mStyleDistance обучен на 9 языках; AV — Greek/Spanish/Dutch (avg ROC-AUC `.66`). Fictional Voices особенно релевантен English target: 28 English novels, 1 606 chapterwise queries; LUAR character-character AUC `.816`, но quote attribution `.536` против semantic `.551`. | Это style/distinguishability proxy, не human-correlated character voice fidelity. Ни одна работа не валидирует сохранение голоса **при переводе** или через сотни глав; именно это, а не отсутствие русского, остаётся пробелом. Локально ось уже есть в `research/15`; боевые `first_person`/`speech` пусты `0/49` (`experiments/23:4355`). |
| **CONSTORY-CHECKER / Consistency Error Density** ([Huang et al., Findings ACL 2026](https://aclanthology.org/2026.findings-acl.410.pdf)) | только целевая длинная история; o4-mini извлекает и попарно проверяет противоречащие цитаты по 5 dimensions/19 subtypes; external reference/canon не нужен | English fiction, **prompted** на 810k words; фактическая длина diagnostic отдельно не дана. Diagnostic: 200 stories, 1 000 injected errors от Qwen3-235B-A22B-Thinking; 2 professional webnovel writers выступали competing detectors против injected ground truth. Checker: precision `.884`, recall `.550`, F1 `.678`; character F1 `.742`, factual `.718`, narrative/style `.507`; union людей F1 `.374`. | Target-only internal-contradiction detector, валидированный на синтетически внедрённых, не естественных ошибках; human correlation нет. Он не доказывает adherence к source/canon и пропускает последовательный, но неверный перевод. English/Western fiction, одна judge model, не multi-chapter. В локальном корпусе работы не было. |
Два близких названия не надо ошибочно превращать в дополнительные canon-scores. [SEGALE
(Wang et al., EMNLP 2025)](https://aclanthology.org/2025.emnlp-main.1645.pdf) переносит COMET/MetricX
на неразмеченный поток произвольной длины через cross-lingual segmentation/alignment и допускает
reference-free QE. В book experiment модели переводили отдельные 1k/2k/4k/8k-token inputs,
нарезанные из одной zh→en книги; MetricX/null-alignment trends там не перепроверялись людьми.
Это полезный **транспорт оценки**, но не проверка межсегментной когерентности, сущностей, фактов или
голоса; основная validation — WMT24 en→de/en→es/ja→zh с synthetic 10% deletions/merges и
segment-level MQM, где annotators не просили учитывать discourse. Источник уже есть в `research/19`.
[S-VoCAL (Berthe-Pardo et al., LREC 2026)](https://aclanthology.org/2026.lrec-1.860/) действительно
имеет 952 characterbook pairs из 192 English books и восемь voice-related attributes, но измеряет вывод age/gender/origin
для выбора **акустического** голоса аудиокниги, а не устойчивость речевого стиля персонажа в
переводе. Это book-wide static character-attribute inference benchmark, не voice/style/temporal
stability metric; концептуально он повторяет audiobook-passport donor из `research/15`. Поэтому оба
источника очерчивают инфраструктуру, но не закрывают искомый конструкт.
Отдельной family-wise multiplicity correction для перечисленных model/metric grids в просмотренных
Results не заявлено; там, где даны correlations/accuracy, они не превращались здесь в более широкий
клейм, чем конкретный corpus/task.
**Ответ на вопрос о reference-free.** Узкий прибор у нас уже есть: D50 считает соблюдение
подписанного term/name bank без полного эталона, но известный fullname-alias drift прошёл сквозь
него. После повторного поиска без ru-фильтра найден **набор частичных, пока не скомпонованных
диагностик**, а не готовый стек: D50/CoTERM проверяют заданный term canon; L-Anno — lexical sameness
на заранее размеченных обязательных pairs; TRANSGRAPH — две English-source discourse relations;
CONSTORY-CHECKER — target self-consistency; BWB — отдельные gold-аудиты на zh→en chapters. Эти
приборы имеют разные inputs, направления, домены и units и совместно на одной zh→en книге не
валидировались. LTCR и SemenovBojar без канона доказывают только **самосогласованность**.
Следовательно, на 31.08.2026 нет одной валидированной метрики «канон держится на сотнях глав» и
нельзя заявить, что перечисленные компоненты уже доказательно складываются. Есть эмпирические
части для отдельной проверки терминов, обязательного единообразия, некоторых source relations и
внутренних narrative contradictions. Самые слабые места — стабильно неверный относительно source
факт, межглавная identity/alias resolution и сохранение именно **речевого голоса персонажа при
переводе**: CONSTORY-CHECKER имеет narrative/style F1 `.507` только на injected internal shifts, а
не на сходстве с голосом китайского оригинала.
#### Контрольная сводка четырёх клеймов из запроса
| Клейм | Вердикт после исполнения | Насколько широко можно говорить |
|---|---|---|
| Бесплатные detectors по diversity/diminutives | **Частично.** ATD classifiers и structural translationese-панели валидированы; MTLD/diminutive signals проверены на одной en→uk книге. | Язык не обнуляет класс сигналов, но языково-зависимые features надо переопределять. Нет held-out detector для длинного современного LLM-литперевода; отдельный scalar не годится как machine label. |
| Source visibility переворачивает systems ranking | **Да, по Table 34 F6a:** один и тот же GPT-5.2 judge, те же pairs; все AI systems падают ровно на 5 ranks без source. | Одна en→uk книга, sentence pairs, self-judge, без significance test; не универсальный закон. |
| LLM чаще человека объявляет ошибкой human translation | **Да, F6b:** GLM `z=2.07, p=.038` для HT; одновременно judge реже ставит ошибки MT (`z=6.16, p<.001`). | Один GPT-5.2 judge, 6 текстов по 97182 слова, en→nl/en→ca/ru→nl; без →ru и без книги. |
| Плохо отобранный context хуже пустого | **Да для injected distractors**, Loong §4.4/Figure 4; **нет** для наивного сравнения `w/o Tuning` vs `w/o Context` из-за confound. | Automatic metrics на News/WMT; точных figure-values/significance нет. Локально это уже прямой дубль `research/13,14`, поэтому не новая находка. |
## 3. Противоречия нашим выводам
### C1. Прямая внутренняя коллизия: цена diff в промте устарела относительно review-header
[`Жёсткий контур задания`](../../eval/dovodka/PROMPT-RESEARCH-HARNESS.md) пересказывает локальный
diff как «1.52 раза дороже». Первичный артефакт
[`experiments/19-editor-contract-q4b.md`](../experiments/19-editor-contract-q4b.md) в принятой
review-header даёт три реплики отношения diff/full: **2.913, 1.677, 2.468**, а позднейшая поправка
сужает взаимодействие до model×target: dspro **ru 2.83, en 0.67**. Команда проверки:
```bash
rg -n '2\.913|1\.677|2\.468|ru 2\.83|en 0\.67|1\.52' \
eval/dovodka/PROMPT-RESEARCH-HARNESS.md docs/experiments/19-editor-contract-q4b.md
```
Это не меняет локальный вердикт для боевой ru-клетки («full-regen остаётся»), но опровергает
упрощённую универсальную магнитуду и особенно важно рядом с F4: его «edit contract» нельзя считать
внешней репликацией нашего формата.
### C2. Внешний counter-signal к «feedback/point repair отклонены», но не опровержение
[`experiments/21-role-topology`](../experiments/21-role-topology.md) отклонил точечный ремонт,
обратную связку и routing на нашей прозе/нашем риге. Более близкий аналог — critic→full rewrite
`Z1` в [`experiments/23-editor-tier`](../experiments/23-editor-tier.md): ставка semantic
critic→fixer не подтверждена и схема оказалась самой дорогой среди проверенных, но exp23 ещё идёт,
а rank-order позиционно confounded. Внешний [F4-paper](https://aclanthology.org/2026.acl-industry.115.pdf)
получил рост two-stage evaluator→repair в 4/7 en→de и 6/7 en→zh COMET-сравнениях и регрессию
второго раунда в 6/7 en→de клеток (Tables 5, 4). Условия не изоморфны: F4 — e-commerce segments,
RAG из 135184k TM, full-hypothesis output, automatic metrics, без significance. Поэтому закрытый
вывод exp21 не снят, а exp23 не ратифицирован; внешний результат лишь показывает, что направление
первого repair-step не является универсальным MT-законом.
### C3. «Архитектура улучшает качество» расщепляется по измеряемой оси
Закрытый [`exp21`](../experiments/21-role-topology.md) показывает преимущество
draft→whole-chapter rewriter по локальному прибору; exp23 здесь не используется как ратифицированная
улика. [F1](http://www.jbe-platform.com/deliver/fulltext/10.1075/target.25081.wan/target.25081.wan.pdf)
на той же модели показывает эффект другой
topology лишь по fluency (`r=.71` LCDhuman), ноль по accuracy (`r=.02`) и одновременно
систематические additions. [F2](https://aclanthology.org/2026.acl-long.268.pdf) также находит
основной выигрыш refinement во fluency/style, а accuracy — слабой/неоднородной. Это не опровергает
локальную дельту, но противоречит её широкой трактовке как единого scalar «качества»: topology
может улучшать fluency без доказанного улучшения accuracy; fidelity-эффект неоднороден, а voice в
F1/F2 не измерен.
## 4. ЧЕГО НАЙТИ НЕ УДАЛОСЬ и ЧТО НЕ ПРОВЕРЕНО
1. **Нет matched-замера «список исполнимых правок vs полный переписанный текст» на литературе.**
F4 оказался ложным кандидатом: structured list выдаёт evaluator, но editor возвращает full
hypothesis. F2 тоже делает rewrite сегмента. Внешнего подтверждения/опровержения нашему
Q4b-формату не найдено.
2. **Нет human book-length сравнения topology.** F1 переводит главы, но судит 30 коротких отрывков;
F2 генерирует документы примерно по 2 048 слов, но human annotators судят contiguous chunks;
F3 имеет 12 глав классики, но только automatic curves; F6a покрывает корпус одной книги, но
сравнивает отдельные sentence pairs, не читает книгу/голос/когезию. Перенос «отрывок/глава →
1 5002 300 глав» не проверен.
3. **Нет измеренной памяти через сотни глав.** Ни retention имён/обращений/голоса на поздних главах,
ни окупаемости whole-book pre-pass/series bible с человеческим судьёй не найдено. Loong —
ближайший прототип, но его literary human-eval и опубликованный код отсутствуют.
4. **Thinking: quality и cost одновременно не закрыты.** F5 измеряет quality кратких literary UCP,
но не reasoning tokens/деньги; Loong признаёт overhead без чисел. Локальный DRT даёт token
multiplier, однако новой литературной pricequality frontier после нашего среза не найдено.
5. **Pair-specific →ru calibration не найдена, но это не блокирует архитектурный вывод.** F2
включает en→ru, однако human Table 4 агрегирует семь направлений; F6b имеет ru→nl, не →ru.
Для проверки самих constructs данные zh→en/en→uk/en→ja засчитываются; отдельная пара нужна лишь
для калибровки языково-зависимых extractors, morphology и thresholds.
6. **Не найдены debates/jury топологии с книжным human-замером.** Selection/synthesis/debate уже
покрыты локально; свежего более сильного literary evidence дельта-фильтр не дал.
7. **Market/OSS-поиск не дал хронологической или измерительной дельты.** Три пропуска
`research/22` оказались старше его среза 24.07, а их механизмы повторяют уже известные слои:
Balint Taborski, 07.06.2026, [BookTranslate Copilot](https://www.booktranslate.ai/blog/towards-agentic-mtpe-translation-copilot)
заявляет Finalizer→Naturalizer→ThreadWeaver→reviewable edits; неподписанная
[BookFoundry company page](https://bookfoundry.ai/ai-book-translation/) с live-total stamp
17.07.2026 — book brief→chunk translation→native-voice rewrite; GitHub
[`OYcedar/novel-translator`](https://github.com/OYcedar/novel-translator) — stable IDs,
glossary, summary, resumability и guards (`main.py`, `prompts/novel_translation_system.md`,
`skills/novel-translator/SKILL.md`). Ни один не публикует comparative literary quality corpus,
пары, human judge и статистику. Поэтому отсутствие имён в `research/22` — omission старого
среза, не основание выдавать их за новую находку.
8. **Multiplicity часто отсутствует.** Она есть у F1 pairwise fluency/accuracy (Bonferroni) и у
F6b modality post-hoc (HolmBonferroni); не заявлена у F2 Table 4/трёх Table 5 tests, F3, F4,
F5 model×prompt grid и F6a rank reversal. Значимость там не достраивалась мной из процентов.
9. **Цена вызовов F1/F2/F3 не опубликована.** Поэтому число стадий не превращалось в выдуманный
COGS: F1 не даёт calls/tokens; F2 — токены/cost; F3 — overhead/call count в агрегате.
10. **Платных закрытых источников, несущих уникальную таблицу, в итог не включено.** HTML `print`
F1 отдавал 403 при финальной перепроверке; официальный publisher PDF открылся после redirect
с HTTP 200. Остальным несущим источникам доступны официальные PDF/HTML.
11. **Два claims первоисточников остались неподтверждёнными телом.** [Loong](https://arxiv.org/html/2605.30274)
пишет «code is released», но linked [repo](https://github.com/YutongWang1216/LoongDocMT) на
31.08 содержит только README. [F4](https://aclanthology.org/2026.acl-industry.115.pdf) abstract
заявляет agreement с human MQM/preferences, но в Methods/Results нет human-study/table. Это
source self-contradictions, не противоречия локальному выводу; claims выше не считаются measured.
12. **Не найден long-form literary machine-detector ни на одной подходящей паре.** RuATD
валидирует short-form ATD, RANLP-2021 — human translationese, а en→uk book study даёт сигналы,
но не classifier. Пробел — held-out accuracy, threshold и false-positive rate на длинных
переводах современных LLM, а не конкретно русский язык.
13. **Не найден единый reference-free canon score; найдены нескомпонованные частичные приборы.**
D50/CoTERM закрывают term-only canon, L-Anno — обязательность единообразия на gold subset,
TRANSGRAPH — две English-source relations, CONSTORY-CHECKER — внутренние contradictions, BWB —
дорогую gold-разметку четырёх discourse-осей. Не валидированы их совместное применение на одной
zh→en книге, межглавная identity/alias resolution и работа на сотнях глав.
14. **Не найден валидированный MT character-voice preservation score.** CONSTORY-CHECKER уже
распознаёт внутренние POV/tone/style shifts на English fiction (narrative/style F1 `.507`), а
style/authorship embeddings различают персонажей. Но ни один прибор не проверен как
source-character voice → translated-character voice; MetaDocEval также показывает размывание
общих document metrics на коротких окнах.
Отдельно исключён как дубль Wu, Aycock, Monz,
[*Please Translate Again*](https://arxiv.org/html/2506.04521): `research/15:158,272` уже содержит
его главную дельту (decomposition не помогает, первый простой refinement даёт основной выигрыш).
Повтор не стал находкой.
## 5. ЧТО Я НАПУТАЛ
Ниже журнал не косметических правок, а ошибок, которые могли изменить вывод.
| Ошибка до самопроверки | Класс | Как поймана | Что стало в отчёте |
|---|---|---|---|
| Сначала счёл `Please Translate Again` новой осью reasoning. | дубль | `rg -n -i '2506\.04521\|translate again' docs/research` нашёл `research/15:158,272`. | Источник вынесен в §4 как осознанно исключённый дубль. |
| Сначала счёл refinement-paper новой topology. | дубль/overclaim | Первичный grep смотрел `docs/research` и только `docs/experiments/README.md`. Полный `rg -l ... docs/research docs/experiments` нашёл **8 старых файлов**: `research/{03,11,14,17,18}` и `experiments/{09,12,23}`; эта запись была девятым местом. | F2 понижен до библиографической верификации/закрытия TODO; все delta-команды переведены на полный корпус и исключают оба параллельных 29-файла. |
| Записал Loong как однозначно 10-sentence segmentation. | внутреннее противоречие source | §4.1 задаёт `l=5`, Limitations — 10. | Число снято из описания topology; обе несовместимые величины и их секции названы явно. |
| Принял `w/o Tuning=75.4 < w/o Context=77.4` за доказательство «плохой context хуже пустого». | confounded arms | §4.3 меняет training/context policy одновременно; §4.4 отдельно инъецирует 3050 чужих предложений и имеет baseline length 0. | Клейм опирается только на Figure 4; Table 3 прямо исключена как чистая проверка. Сам клейм отмечен дублем `research/13,14`. |
| Был готов назвать все translationese-признаки machine-detectors. | construct mismatch | RANLP-2021 обучен отличать **человеческие переводы** от оригинальной русской прозы; RuATD — другой target. | F7 разделяет ATD, translationese и stylistic compression; порогового long-form literary LLM detector не заявляет. |
| Использовал отсутствие русского как слишком сильный отрицательный фильтр. | неверная граница переноса | В контуре проекта zh→en — приоритетная пара; LTCR проверен на zh↔en, а BlonDe — прямо на zh→en webnovels. Для entity/term-consistency язык меняет инструменты извлечения, но не сам измеряемый конструкт. | F7/F8 и §4 переписаны: zh→en evidence засчитывается полностью; caveat оставлен только для morphology/NER/alignment/thresholds и действительно отсутствующей long-range validation. |
| Сначала исправил только формулировки, не перезапустив discovery без языкового фильтра. | неполная коррекция search scope | После прямого вопроса владельца выполнен новый primary-source поиск и полный дедуп по обоим деревьям. Он нашёл отсутствующие локально zh→en L-Anno, TRANSGRAPH cohesion probe и CONSTORY-CHECKER; BWB был локально известен, но не распознан мной как gold audit resource. | F8 переисследован: добавлены точные inputs, samples, human validation и границы; итог расширен от одних term monitors до нескольких частичных диагностик. |
| После пере-поиска преждевременно назвал несовместимые диагностики «составным измерительным стеком». | композиционный overclaim | Оба повторных reviewer-а независимо указали: L-Anno — reverse-origin news/gold subset; TRANSGRAPH — English-source technical probe; CONSTORY — target-only injected contradictions; BWB — reference benchmark и локальный дубль. Совместной zh→en book validation нет. | «Готовый стек» снят. F8 теперь говорит о нескомпонованных частичных приборах; уточнены direction/reference/validation, конфликт BWB `14 655` vs `15 095` и segment-only book experiment SEGALE. |
| Почти назвал LTCR/стилевые embeddings единым canon score. | consistency≠correctness / proxy≠validation | Формула LTCR даёт 100% стабильно неверной форме; mStyleDistance AV не валидирован на переводе; MetaDocEval показывает collapse с длиной. | F8 разделён на internal consistency, term-only correctness и unvalidated character-voice proxy; итог — единого прибора нет. |
| В первом ответе на вопрос о каноне сказал только «внешнего единого прибора нет» и пропустил наш D50. | тот же дефект неполного experiments-grep | Полный поиск `canon_gaps|effective consistency` поднял `experiments/23` §Д32.4/Д50: 375548 пар и известный невидимый fullname drift. | D50 поставлен первой строкой F8: узкий reference-free monitor уже есть, но его собственный false negative запрещает называть его proof. |
| Сначала слишком грубо описал CoTERM как обязательно требующий полного перевода-эталона и перенёс `79` dev chapters BlonDe в test. | неточная граница reference-free / ошибка split | Повторный `evidence_audit`: CoTERM+ использует source terms и набор допустимых целевых терминов без полного sentence reference; Table 1 BlonDe печатает **80 test / 79 dev** chapters. | В F8 разведены CoTERM+, CoTERM и полный framework; split и human-correlation BlonDe исправлены по таблице. |
| Сжал результат F7-grep до `research/12-*` и не перечислил `research/28`. | неточная запись дедупа | Финальный буквальный повтор той же команды дал 13 файлов: 11 research и 2 experiments; из семейства 12 — только consumer/taxonomies/ja/zh. | Реестр F7 заменён точным списком вывода, команда переключена с `-n` на согласованный с результатом `-l`. |
| По названию «edit contract» почти приравнял F4 к нашему diff. | construct mismatch | Полный PDF §3.4: editor outputs `new hypothesis` и `edit log`. | В F4 и §4 явно записано: это full output, matched diff-vs-full замера нет. |
| Перенёс из задания «diff 1.52× дороже». | stale summary / позднее противоречие | Review-header `experiments/19` первична: 2.913/1.677/2.468; позднее ru 2.83/en 0.67. | Исправлено и вынесено отдельным C1. |
| Был готов повторить F4 abstract про human MQM agreement/preferences. | abstract вместо таблицы | `find`/поиск `human` по 16-страничному PDF не нашёл human-study в Methods/Results. | Claim помечен неподтверждённым и не используется как measured evidence. |
| Принял фразу Loong «code is released» за наличие реализации. | claim/code mismatch | Открыто дерево linked GitHub: только README, implementation отсутствует. | F3 разделяет paper algorithm и фактически отсутствующий public code. |
| Счёл `Creativity Bias` целиком новой. | частичный дубль | grep нашёл ссылку и общий вывод в `research/18:326`. | F6b оставлен только ради отсутствующих локально точных modality/genre/human таблиц. |
| Почти выдал 12 глав *Journey to the West* за книжную проверку качества. | перенос/слабый judge | Table/Figure и Limitations Loong: известная классика, automatic metrics, без human eval. | В F3 это только preliminary stability evidence; в §4 book-length human gap остаётся открытым. |
| Title-only grep ошибочно объявил F1 полностью новой. | ложная дельта/дубль | Adversarial `delta_transfer_audit` нашёл DOI и «stylistic lift with occasional additions» в `research/17:243,287`. | F1 сужен до восстановленного full text, exact design/sample/effects; grep расширен DOI/авторами. |
| Назвал F2 human-оценку документной. | перенос единицы оценки | `delta_transfer_audit` проверил Appendix A.5: outputs document-level, annotators видели contiguous chunks. | В F2 и §4 разделены document generation и chunk-level human judgment. |
| Назвал F6a контролем «на целой книге». | перенос corpus→unit | `delta_transfer_audit` проверил Methods §4: corpus покрывает книгу, pairwise unit — два предложения. | F6a понижен до sentence-pair construct-control; voice/cohesion не приписываются. |
| Слил статус exp2123 и выдал exp23 price/rank за готовый. | поздняя review-header | Adversarial-аудит поднял `experiments/README`: exp23 **ИДЁТ**, `--final` красный; D48.5 нашёл position confound. | §1 разделяет exp21/22/23; C2/C3 не используют exp23 как ратифицированный результат. |
| Сравнил F4 только с exp21 point repair. | неверный ближайший аналог | `delta_transfer_audit` нашёл более близкий exp23 `Z1` critic→full rewrite. | C2 сравнивает обе формы и явно помечает exp23 provisional. |
| Выдал три рыночных пропуска `research/22` за новинки после его среза. | хронологическая ложная дельта | Adversarial-аудит сопоставил даты BookTranslate/BookFoundry/OYcedar со срезом 24.07. | F7 удалён из находок; источники оставлены в §4 как старые omissions без quality baseline. |
| Приписал F1/F2 возможное ухудшение voice. | construct overclaim | Оба агента указали: voice не мерили; F1 accuracy равна, additions качественные. | C3 теперь говорит только о fluency без доказанного accuracy-gain; fidelity неоднородна, voice unmeasured. |
| В F5 смешал Task 1 comprehension с Task 2 translation. | task/judge conflation | `evidence_audit` развёл §3.1/§5.1 и Table 1/13. | Добавлены `n=299`, отдельные judges/пары и прямые thinking-сравнения Task 2 из Table 13. |
| Ссылка F1 `print` оказалась нестабильной (403). | URL verification | `evidence_audit` повторил запрос; затем `curl -s -I -L` publisher PDF дал redirect→200. | Все F1-ссылки заменены открывшимся publisher PDF; 403 записан в §4. |
| Delta-grep после создания файла находил сам отчёт. | невоспроизводимый артефакт | Повторный запуск вернул строки `29-…-codex.md` вместо ожидаемого Ø. | Во все команды добавлен `--glob '!29-harness-topology-survey-codex.md'`, результаты пересняты. |
### Исполнимая финальная сверка
Ссылки в F1F8 и §4 были открыты по одной; числа сверены не с abstract, а с названными
Tables/Results/Methods. Механические проверки артефакта перед сдачей:
```bash
# ровно пять требуемых разделов верхнего уровня
rg -n '^## [1-5]\.' docs/research/29-harness-topology-survey-codex.md
# запрет placeholder и прескриптивного языка до самого технического блока; ожидается Ø
awk '/^### Исполнимая финальная сверка/{exit}{print}' \
docs/research/29-harness-topology-survey-codex.md | \
rg -n -i 'Заполняется|TBD|PLACEHOLDER|рекомендую внедрить|надо внедрить|нужно внедрить|следует внедрить|стоит внедрить|лучший выбор|robust.?рецепт'
# все внешние URL до этого технического блока (список для повторного открытия)
awk '/^### Исполнимая финальная сверка/{exit}{print}' \
docs/research/29-harness-topology-survey-codex.md | rg -o 'https?://[^ )]+' | sort -u
```
### Артефакт открытия ссылок
Проверено 31.08.2026; `200` означает, что открылось тело, а не только search result.
| URL | Фактический результат |
|---|---|
| [publisher PDF F1](http://www.jbe-platform.com/deliver/fulltext/10.1075/target.25081.wan/target.25081.wan.pdf) | `curl -s -I -L`: 301→200, `content-type: application/pdf`; прежний HTML `print` — 403. |
| [F2 ACL PDF](https://aclanthology.org/2026.acl-long.268.pdf) | 200; открыты §3, Tables 1, 37, Appendix A.5. |
| [F3 arXiv HTML](https://arxiv.org/html/2605.30274) | 200; открыты Algorithm 1, Tables 14/A.4. |
| [F3 GitHub](https://github.com/YutongWang1216/LoongDocMT) | 200; public tree содержал только README. |
| [F4 ACL PDF](https://aclanthology.org/2026.acl-industry.115.pdf) | 200; открыты §3.4, Tables 15, 8, 10. |
| [F5 ACL PDF](https://aclanthology.org/2026.findings-acl.2030.pdf) | 200; открыты §§35, Tables 1, 13. |
| [F5 GitHub](https://github.com/NL2G/Beyond-Reproduction) | 200; открыты root и `task2_ucp/` paths. |
| [F6a ACL PDF](https://aclanthology.org/2026.unlp-1.8.pdf) | 200; открыты Methods §4, Tables 24. |
| [F6b ACL PDF](https://aclanthology.org/2026.eamt-1.43.pdf) | 200; открыты Tables 45, 1112. |
| [F6b GitHub](https://github.com/INCREC/Creativity_bias) | 200; открыты каталоги protocols/data/statistics. |
| [RuATD 2022](https://arxiv.org/html/2206.01583) | 200; открыты Tables 25 и §§4.45. |
| [Russian fiction translationese](https://aclanthology.org/2021.ranlp-1.84/) | 200; открыты Results и Appendix Table 2. |
| [LTCR](https://aclanthology.org/2021.emnlp-main.262/) | 200; открыты формула (1), Tables 1, 4, 7, 9. |
| [SemenovBojar](https://aclanthology.org/2022.wmt-1.41/) | 200; открыты algorithm, Tables 13, Limitations. |
| [CoTERM](https://aclanthology.org/2026.lrec-1.682/) | 200; открыты §§3, 4, 69, Tables 2, 56. |
| [BlonDe](https://aclanthology.org/2022.naacl-main.111/) | 200; открыты BWB/Table 1, formula, human study. |
| [L-Anno zh→en](https://aclanthology.org/2024.lrec-main.583.pdf) | 200; открыты §§23, Tables 16, Appendix A. |
| [BWB discourse protocol](https://aclanthology.org/2023.acl-long.435.pdf) | 200; открыты §§25, Tables 17, Appendix E; зафиксирован конфликт abstract `15 095` vs §3 `8 585+6 070=14 655`. |
| [TRANSGRAPH cohesion judge](https://aclanthology.org/anthology-files/pdf/eacl/2026.eacl-long.75.pdf) | 200; открыты §§3.13.3.5, Tables 2, 7, 9. |
| [CONSTORY-CHECKER](https://aclanthology.org/2026.findings-acl.410.pdf) | 200; открыты §§23, Tables 17, Limitations и prompts. |
| [SEGALE](https://aclanthology.org/2025.emnlp-main.1645.pdf) | 200; открыты §§3, 56, Tables 13, Figure 3 и Limitations. |
| [S-VoCAL](https://aclanthology.org/2026.lrec-1.860/) | 200; проверены task, 8 attributes, 952 characterbook pairs и scope аудиокниг. |
| [MetaDocEval](https://aclanthology.org/2026.eamt-1.19/) | 200; открыты §§3, 57, Table 1/Figures. |
| [mStyleDistance](https://aclanthology.org/2025.findings-acl.869/) | 200; открыты language list, Tables 12, ru dataset appendix. |
| [Distinguishing Fictional Voices](https://aclanthology.org/2024.latechclfl-1.15/) | 200; открыты §3 and Table 2. |
| [BookTranslate](https://www.booktranslate.ai/blog/towards-agentic-mtpe-translation-copilot) | 200; author/date/topology проверены в body. |
| [BookFoundry](https://bookfoundry.ai/ai-book-translation/) | 200; неподписанная company page, stamp и topology проверены в body. |
| [OYcedar](https://github.com/OYcedar/novel-translator) | 200; root paths/README открыты. |
| [Please Translate Again](https://arxiv.org/html/2506.04521) | 200; удалён из находок как локальный дубль. |
### Артефакт adversarial-review
Одновременно работали **два** read-only reviewer-а, кроме основной сессии; модель обоим задана
явно: `gpt-5.6-sol`, reasoning `high`. `evidence_audit` проверял claimed/measured, tables, judges,
URLs и обязательную форму; `delta_transfer_audit` — дубли, short→book, поздние review-header и
переносимость. Оба запретили себе правки файлов и вернули нумерованные вердикты.
**Принято и исправлено:** скрытый дубль F1 в `research/17`; ACL-final F2 уже там же; chunk-level
human unit F2; sentence-pair unit F6a; смешение двух задач F5; нестабильная ссылка F1; неполные
judge/pair metadata F2F4; source-vs-itself C4 перенесён из §3; обе ссылки добавлены C1C3;
provisional/position-confounded статус exp23; ближайший локальный аналог F4; ложная рыночная
хронология F7; voice-overclaim C3; self-matching delta-grep и неисполняемая вторая F6-команда.
Каждая содержательная ошибка имеет отдельную строку в таблице выше.
**Принято частично:** reviewer предлагал удалить либо полностью демотировать F2 как дубль.
Архитектурный клейм демотирован, но запись сохранена, потому что она закрывает явный локальный TODO
о составе пар и добавляет exact human tables/границу chunk-level judging. Иных содержательных
замечаний не отклонено. Оба reviewer-а отдельно подтвердили пять разделов в нужном порядке,
transfer caveats, отсутствие рекомендации внедрения и корректность `n=102` F2/`6 из 7` F4.
Для отдельного вопроса №8 обоим reviewer-ам был независимо отправлен второй, одинаково
сформулированный запрос именно про **измеритель** канона, а не про память. `delta_transfer_audit`
повторил полный локальный поиск одновременно по `docs/research/*.md` и `docs/experiments/*.md` и
нашёл пропущенный D50 вместе с его false negative `古月方源 → «Гу Юэ Фан Юань»` вместо `Гуюэ`.
`evidence_audit` независимо пересчитал формулы, выборки и human-validation LTCR, CoTERM, BlonDe,
MetaDocEval, mStyleDistance и Fictional Voices. Приняты его поправки о term-only reference
CoTERM+, умеренных, а не универсально сильных корреляциях CoTERM, split **80 test / 79 dev**
BlonDe и крайне узкой ручной проверке perturbations MetaDocEval. Совместный отрицательный итог
обоих аудитов сохранён в F8: есть несколько частичных приборов, включая наш reference-free D50,
но ни один не валидирован как единая мера сохранения сущностей, терминов, фактов и голоса на
сотнях глав без полного эталонного перевода. Reviewer-ы файлов не изменяли.
После замечания владельца о допустимости zh→en выполнен новый discovery-pass без языкового
фильтра, а затем **оба** reviewer-а получили третий независимый запрос уже по новым источникам.
Они подтвердили числа L-Anno, TRANSGRAPH, CONSTORY-CHECKER, SEGALE и S-VoCAL, но независимо сняли
мою формулировку «составной измерительный стек». Приняты все их существенные поправки:
reverse-origin/reference-dependent construction L-Anno; только en→XX technical validation
TRANSGRAPH; target-only/injected-error nature CONSTORY; BWB как полный локальный дубль и gold
resource, а не canon scalar; SEGALE как segment wrapper, не межглавный book meter; S-VoCAL как
static TTS-attribute extraction. Дополнительно `evidence_audit` нашёл внутренний конфликт BWB:
abstract сообщает `15 095` mentions, тогда как §3 печатает `8 585+6 070=14 655`; в F8 оставлено
разложенное число и записано противоречие. Reviewer-ы файлов не изменяли.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,107 @@
# Результат 2: слепое чтение на исправленном материале с активными нулями
**Исполнено 02.09 по `PREREG-2-BLIND-READ.md`.** 120 судей Opus, 40 материалов × 3 линзы,
0 ошибок агентов. Материал: черновик склеен по манифесту движка, покрытие 99100%.
Куплена реплика `low₂` — $0.659678 (ожидалось $0.656). Всего по фазе $6.17 из $9.50.
## 1. ГЛАВНОЕ: прибор назначает победителя там, где его нет
10 пар `low₁` против `low₂` — два прогона ОДНОЙ руки, отличающиеся только случайностью
генерации. Правильный ответ по построению — ничья.
| Линза | low₁ | low₂ | ничьих | определилось |
|---|---|---|---|---|
| точность (первичная) | 6 | 4 | **0** | **10/10** |
| художественность (первичная) | 8 | 2 | **0** | **10/10** |
| естественность | 7 | 2 | 1 | 9/10 |
**Судьи объявили победителя в 29 случаях из 30 на чистом шуме.** Доля ничьих на нулях
неотличима от доли на боевых парах (точный тест Фишера: p = 0.165 / 0.560 / 1.000) — то есть
прибор реагирует на шум РОВНО ТАК ЖЕ, как на разные режимы.
Хуже: **шумовой перекос БОЛЬШЕ боевого.** По художественности шум одной руки даёт 8:2 (80%),
а разные руки — 19:8 (70%). По точности 60% против 55%.
⚠ Блокирующий порог §5 строки 0 (p < 0.05 на нулях) НЕ сработал: 0.754 и 0.109. Но он и не мог
при n=10 его берут только расклады 9:1 и 10:0 (посчитано в дополнении §6.1 до чтения чисел).
**Непрохождение блокирующего порога исправность прибора не доказывает**, а диагностический
критерий того же дополнения сработал по обеим первичным линзам.
## 2. Первичные исходы — различие не предъявлено
Тест: точная перестановка метки руки на уровне юнита (2¹⁵ масок), поправка Холма на два первичных.
| | low | off | ничьих | p | Холм |
|---|---|---|---|---|---|
| **P1 точность** (блокирующий) | 12 | 10 | 8 | 0.842 | **0.842** |
| **P2 художественность** | 19 | 8 | 3 | 0.070 | **0.141** |
Вторичное (поправку не проходило): естественность 16 : 11 : 3, p = 0.414.
Описательно, консенсус 2 из 3: low 17, off 8, ничьих 5.
**Исход по правилу §5 — строка 4: РАЗЛИЧИЕ НЕ ПРЕДЪЯВЛЕНО.** Ни одна рука не показала
превосходства. Строка 3 («low лучше») не объявляется: Холм-p = 0.141.
## 3. Что стало с результатом первой редакции
Первая редакция дала консенсус 18 : 6 : 6 и подавалась как «дешёвая рука чаще лучше».
Здесь на исправленном материале консенсус 17 : 8 : 5 — **похожая картина**, но теперь известна
её цена: **два прогона одной руки дают перекос того же размера и даже больше**.
**Наблюдавшийся перевес неотличим от случайности розыгрыша.** Вчерашняя находка была
артефактом отсутствующего контроля, и первая редакция не могла этого увидеть, потому что
активного нуля в ней не было.
## 4. Почему так вышло — измеренная причина
Текстовый разброс ВНУТРИ режима больше межрежимного:
```
совпадение low₁ / low₂ (один режим, два запуска) медиана 0.799
совпадение low₁ / off (разные режимы) медиана 0.820
```
Одна и та же настройка, запущенная дважды, расходится с собой сильнее, чем с конкурентом.
При такой структуре шума парное сравнение одного куска не может отделить режим от розыгрыша:
судья честно видит разницу — но это разница между двумя случайными реализациями, а не между
настройками.
⭐ Независимое подтверждение с другой стороны (сессия пробы, на этой же реплике): по деньгам и
объёму размышления эффект режима воспроизводится (×0.230 → ×0.307, знак и значимость держатся),
а шум внутри руки ниже разрешения (p = 0.225). **Расходится именно ТЕКСТ, а не расход.** То есть
режим устойчиво меняет цену и не устойчиво — формулировки.
## 5. Что теперь честно утверждать
**Можно:**
- «На 15 юнитах различие в качестве между режимами НЕ ПРЕДЪЯВЛЕНО ни по точности (p = 0.84),
ни по художественности (Холм-p = 0.14).»
- «Разница между режимами по тексту, если она есть, не превышает разброса между двумя запусками
ОДНОГО режима — измерено: 0.820 против 0.799.»
- «Судьи-модели на изолированном куске не отличают шум генерации от смены режима: на чистом шуме
они назвали победителя в 29 случаях из 30.»
- «Экономический эффект режима при этом устойчив и воспроизводится на реплике.»
**Нельзя:**
- «Дешёвый режим лучше» — опровергнуто настоящим контролем.
- «Дешёвый режим не хуже» — отсутствие доказательства не есть доказательство отсутствия;
мощность n=30 различает ~25 п.п.
- «Прибор годен, нули чисты» — блокирующий порог не сработал по слабости, а не по чистоте.
- Переносить на книгу: 0.63% книги, холодный банк, 13 из 15 юнитов — начала глав, и к дрейфу
терминов между главами этот прибор слеп по построению.
## 6. Что это значит для решения о деньгах
Вопрос «платить ли втрое за высокое усилие редактора» ($2.00 против $0.67 на p7) этим замером
**не закрывается в пользу качества**: превосходства дорогого режима не видно, но и равенство не
доказано. Решение остаётся за владельцем, и оно теперь опирается на честную рамку, а не на
артефакт.
**Чего стоил бы ответ.** Чтобы отделить режим от розыгрыша при измеренном шуме, нужно сравнивать
СРЕДНИЕ по нескольким репликам каждой руки, а не одиночные тексты: порядка 35 реплик на руку и
не меньше 4060 юнитов. Это кратно дороже нынешнего и, по совокупности §5, вероятно измеряет не
то, что решает судьбу продукта.
**Более дешёвый и более полезный поворот:** мерить то, что этот прибор увидеть не может и что
прямо задевает цель владельца, — **дрейф терминов и голосов на длине книги**. Он живёт между
главами, детерминирован, ловится без судей-моделей и не тонет в шуме розыгрыша.

File diff suppressed because it is too large Load diff

248
eval/dovodka/dreif.py Normal file
View file

@ -0,0 +1,248 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""dreif.py — ДЕТЕРМИНИРОВАННЫЙ прибор дрейфа передач термина. Платных вызовов НЕ делает.
Заведён 02.09 по решению владельца (п.3 развилки фазы Д): «пишешь код на питоне, оркестратору
пинг про завести этот прибор». Настоящий прибор должен жить в движке (`tmctl recheck`) этот
питон-двойник его НЕ заменяет, см. §«ЧЕГО ПРИБОР НЕ ДЕЛАЕТ».
ЧТО МЕРИТ. Для каждого ключа банка: сколько РАЗНЫХ русских передач встречается в переводе и
меняется ли доминирующая передача от главы к главе. Это цель владельца 1 («консистентные
термины на всю книгу»), и она измерима без судей и без денег.
ГЛАВНЫЙ УРОК ФАЗЫ, ВШИТЫЙ В ПРИБОР: **шум-пол считается ПЕРВЫМ и печатается рядом с каждым
числом.** Слепое чтение фазы Д дало «дешёвая рука лучше» (18:6), и вывод рухнул, когда появился
активный ноль: два прогона ОДНОЙ руки расходились сильнее (0.799), чем разные руки (0.820).
Поэтому здесь любая величина, измеренная МЕЖДУ руками, обязана печататься рядом с той же
величиной, измеренной ВНУТРИ одной руки (low₁ против low₂). Разница, не превышающая шум-пол,
объявляется НЕ ПРЕДЪЯВЛЕННОЙ это не осторожность, это цена, уже заплаченная фазой.
ПОЧЕМУ ДРЕЙФ, А НЕ ПРОМАХИ. Пост-чек движка ищет ОТСУТСТВИЕ принятой формы и потому обязан знать
все падежи; без заполненных decl-форм наивное сопоставление даёт 1836% ложных тревог
(`membank/mempostcheck.go:24-27`, замерено проектом). Дрейф так не ломается: «юаньши» против
«изначальный камень» разные ЛЕКСЕМЫ, а не падежи одной.
"""
import argparse
import json
import os
import re
import subprocess
import sys
import sqlite3
from collections import Counter, defaultdict
B = os.path.expanduser("~/books/gu-zhenren/probe-4axes")
TMCTL = f"{B}/bin/tmctl"
# low2 — вторая реплика ТОЙ ЖЕ конфигурации, что p9-low. Пара (p9-low, low2) — шум-пол.
ARMS = ["p7-off", "p7-low", "p9-off", "p9-low", "low2"]
NOISE_PAIR = ("p9-low", "low2")
def pairs(arm):
"""export --pairs: исходник рядом с переводом. $0, читает уже оплаченное."""
cfg = f"{B}/arms/{arm}.book.yaml"
out = subprocess.run([TMCTL, "export", "--config", cfg, "--pairs"],
capture_output=True, text=True)
if out.returncode != 0:
sys.exit(f"⛔ export отказал для {arm}: {out.stderr[:300]}")
d = json.loads(out.stdout)
return {(c["chapter"], c["chunk_idx"]): c for c in d["chunks"]}
def bank(arm):
"""Ключи банка и все передачи, которые для них вообще предлагались."""
con = sqlite3.connect(f"file:{B}/arms/{arm}.db?mode=ro", uri=True)
rows = con.execute("select src, dst, type, status from glossary where src!=''").fetchall()
out = {}
for src, dst, typ, status in rows:
out[src] = {"dst": dst, "type": typ, "status": status, "variants": set()}
# bank-stop.txt печатает, какие передачи переводчик предлагал для ключа — это сырьё дрейфа.
# ⚠ ФОРМАТ СНЯТ С ФАЙЛА, НЕ УГАДАН: заголовок записи — «<ключ>\t<передача>» БЕЗ ведущих
# пробелов, поля записи — с отступом в два пробела. Первая редакция искала «src: <ключ>»,
# не совпадала НИ РАЗУ и оттого печатала «дрейфа 0%» на пустых вариантах — ровно тот отказ,
# за который фаза уже платила (Д50: вывод на нулевом знаменателе). Отсюда гейт ниже.
stop = f"{B}/arms/{arm}.db.bank-stop.txt"
parsed = 0
if os.path.exists(stop):
cur = None
for line in open(stop, encoding="utf-8"):
if line.strip() and not line.startswith((" ", "\t")) and "\t" in line:
cur = line.split("\t", 1)[0].strip()
continue
m = re.match(r"^\s+drafts:\s*(.+)$", line)
if m and cur and cur in out:
for part in m.group(1).split("|"):
v = re.sub(r"\s*×\d+\s*$", "", part.strip()).strip()
if v:
out[cur]["variants"].add(v)
parsed += 1
# spread — НЕЗАВИСИМЫЙ путь к тому же числу: движок сам посчитал разброс передач
m = re.match(r"^\s+origin=.*?\bspread=(\d+)", line)
if m and cur and cur in out:
out[cur]["spread"] = int(m.group(1))
# ГЕЙТ ПАРСЕРА: банк заведомо непуст, значит ноль разобранных передач = сломанный формат
if os.path.exists(stop) and parsed == 0:
sys.exit(f"{arm}: из bank-stop.txt не разобрано НИ ОДНОЙ передачи — формат не тот, "
f"что ждёт парсер. Это отказ прибора, а не отсутствие дрейфа.")
return out
def observed(term_variants, ru_text):
"""Какие из известных передач реально видны в переводе. Возвращает Counter."""
seen = Counter()
for v in term_variants:
if len(v) < 3:
continue # односимвольные/двухбуквенные — шум сопоставления
# ⚠ сопоставление по НАЧАЛУ слова: русский падёж меняет хвост, а не начало.
# Это ослабленная замена decl-форм, которых в банке нет НИ У ОДНОГО термина
# (все 102 записи status=draft/auto, decl пуст) — оговорено в §«ЧЕГО НЕ ДЕЛАЕТ».
stem = v[: max(4, len(v) - 2)]
if re.search(r"(?<![А-Яа-яЁё])" + re.escape(stem), ru_text, re.IGNORECASE):
seen[v] += 1
return seen
def measure(arm):
"""Дрейф по одной руке: {термин: {главы: {передача}}}."""
px, bk = pairs(arm), bank(arm)
per_term = defaultdict(lambda: defaultdict(set))
fired = Counter()
for (ch, ci), c in px.items():
src_text, ru_text = c.get("source", ""), c.get("final_text", "")
if not src_text or not ru_text:
continue
for term, meta in bk.items():
if term not in src_text:
continue # ключ в этом куске не встретился — термин не «выстрелил»
fired[term] += 1
vs = set(meta["variants"]) | ({meta["dst"]} if meta["dst"] else set())
for v in observed(vs, ru_text):
per_term[term][ch].add(v)
return per_term, fired, bk
def stats(per_term, fired):
"""Две величины: разных передач на термин и сколько терминов меняют форму МЕЖДУ главами."""
multi = 0 # термин показал >1 передачи за отрезок
switched = 0 # доминирующая передача сменилась от главы к главе
measured = 0
for term, bych in per_term.items():
allv = set().union(*bych.values()) if bych else set()
if not allv:
continue
measured += 1
if len(allv) > 1:
multi += 1
doms = [sorted(v)[0] for ch, v in sorted(bych.items()) if v]
if len(set(doms)) > 1:
switched += 1
return {"terms_fired": len([t for t in fired if fired[t]]), "measured": measured,
"multi": multi, "switched": switched}
def spread_stats(bk):
"""НЕЗАВИСИМЫЙ путь: разброс, посчитанный САМИМ движком (поле spread в bank-stop).
Норма приёмки число двумя независимыми путями; здесь второй путь не зависит ни от
моего сопоставления, ни от падежей."""
sp = [m.get("spread", 0) for m in bk.values() if "spread" in m]
multi = sum(1 for v in sp if v > 1)
return {"with_spread": len(sp), "multi_spread": multi,
"max_spread": max(sp) if sp else 0}
def main():
ap = argparse.ArgumentParser(description="детерминированный дрейф передач, $0")
ap.add_argument("--selftest", action="store_true")
a = ap.parse_args()
if a.selftest:
return selftest()
print("ПРИБОР ДРЕЙФА — детерминированный, платных вызовов нет\n")
res = {}
sp_res = {}
for arm in ARMS:
pt, fired, bk = measure(arm)
res[arm] = stats(pt, fired)
sp_res[arm] = spread_stats(bk)
s = res[arm]
# ГЕЙТ (урок Д50): нулевой знаменатель — ОТКАЗ, а не «дрейфа нет»
if s["measured"] == 0:
sys.exit(f"{arm}: измерено 0 терминов — прибор НЕ ИЗМЕРИЛ, число печатать нельзя")
print(f" {arm:8} терминов выстрелило {s['terms_fired']:3}, измерено {s['measured']:3} · "
f"с >1 передачей {s['multi']:3} ({s['multi']/s['measured']:.0%}) · "
f"сменили форму между главами {s['switched']:3} ({s['switched']/s['measured']:.0%})")
print("\n НЕЗАВИСИМЫЙ путь к тому же — разброс, посчитанный САМИМ движком (поле spread):")
for arm in ARMS:
q = sp_res[arm]
print(f" {arm:8} записей со spread {q['with_spread']:3} · из них >1 передачи "
f"{q['multi_spread']:3} ({q['multi_spread']/max(1,q['with_spread']):.0%}) · "
f"максимум передач у одного ключа {q['max_spread']}")
n1, n2 = NOISE_PAIR
print("\n" + "=" * 70)
print("ШУМ-ПОЛ ПЕРВЫМ (иначе число между руками читать нельзя)")
print("=" * 70)
floor_multi = abs(res[n1]["multi"] / res[n1]["measured"] - res[n2]["multi"] / res[n2]["measured"])
floor_sw = abs(res[n1]["switched"] / res[n1]["measured"] - res[n2]["switched"] / res[n2]["measured"])
print(f" {n1} против {n2} — ОДНА конфигурация, два розыгрыша:")
print(f" расхождение по «>1 передачи»: {floor_multi:.1%}")
print(f" расхождение по «смене между глав»: {floor_sw:.1%}")
# ⚠ Шум-пол снят по ОДНОЙ паре реплик: это точечная оценка, а не распределение.
# Ноль по одной оси НЕ означает «шума нет» — он означает «на одном розыгрыше не проявился».
# Поэтому порогом берём КОНСЕРВАТИВНУЮ величину: наибольшую из шумовых оценок. Иначе ось,
# где шум случайно вышел 0.0%, объявляла бы значимым любое ненулевое различие — ровно та
# ловушка, в которую фаза уже попала со счётом 18:6.
floor = max(floor_multi, floor_sw)
print(f" ⇒ консервативный порог (наибольшая из оценок, одна пара реплик): {floor:.1%}")
print("\n между РЕЖИМАМИ (то же на разных руках):")
for hi, lo in (("p7-off", "p7-low"), ("p9-off", "p9-low")):
d_multi = abs(res[hi]["multi"] / res[hi]["measured"] - res[lo]["multi"] / res[lo]["measured"])
d_sw = abs(res[hi]["switched"] / res[hi]["measured"] - res[lo]["switched"] / res[lo]["measured"])
for name, d in (("«>1 передачи»", d_multi), ("«смена между глав»", d_sw)):
v = "ВЫШЕ порога" if d > floor else "НЕ ПРЕДЪЯВЛЕНО (в пределах шума)"
print(f" {hi} против {lo}: {name:20} {d:.1%}{v}")
print("\n" + "=" * 70)
print("ЧЕГО ПРИБОР НЕ ДЕЛАЕТ (норма: гейт обязан печатать, чего он НЕ проверяет)")
print("=" * 70)
print(""" · НЕ пост-чек движка. Тот ищет ОТСУТСТВИЕ принятой формы и требует заполненных decl-форм.
В этом банке их нет НИ У ОДНОГО из 102 терминов (все status=draft/auto, decl пуст), и ни один
не доведён до approved поэтому штатный детектор в пробе молчал не только из-за выключенного
гейта, но и потому, что ВХОДА у него не было.
· НЕ измеряет частоту ложных тревог пост-чека мерить не на чем, пока банк не подписан.
· НЕ ловит падежи как движок: здесь сопоставление по началу слова, а не по сохранённым формам.
Значит редкая передача, отличающаяся только началом, может быть пропущена.
· НЕ судит КАЧЕСТВО передачи: «изначальный камень» может быть лучше «юаньши» прибор лишь
считает, что их две.
· НЕ переносится на книгу: 17 глав = 0.74%. Дрейф накопителен, и короткий отрезок его занижает.""")
def selftest():
print("СЕЛФТЕСТ dreif.py")
ok = True
def check(name, cond):
nonlocal ok
print(("" if cond else "") + name)
ok = ok and cond
check("движок на месте", os.path.exists(TMCTL))
for arm in ARMS:
check(f"конфиг руки {arm}", os.path.exists(f"{B}/arms/{arm}.book.yaml"))
# сопоставление: падежная форма ловится, чужое слово — нет
c = observed({"юаньши"}, "он отдал пятьсот юаньши за это")
check("падежная форма ловится", bool(c))
c2 = observed({"юаньши"}, "он отдал пятьсот монет за это")
check("чужой текст НЕ даёт ложного попадания", not c2)
c3 = observed({"изначальный камень"}, "поднял изначальный камень")
check("многословная передача ловится", bool(c3))
print("\n" + ("ПРИБОР ГОДЕН" if ok else "⛔ ПРИБОР НЕ ГОДЕН"))
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())

View file

@ -338,8 +338,15 @@ content_hash: p7-off = p7-low = e3db15ac06a4ff04…
Остаток `2310 0.3644·7605 = 461` (20% от completion). Отрицательный — значит размышления нет Остаток `2310 0.3644·7605 = 461` (20% от completion). Отрицательный — значит размышления нет
вовсе, а коэффициент 0.3644 просто не подходит чужому токенизатору. План это предупреждал; для E1 вовсе, а коэффициент 0.3644 просто не подходит чужому токенизатору. План это предупреждал; для E1
референс не используется, и «R̂ = 0 по построению» остаётся верным. референс не используется, и «R̂ = 0 по построению» остаётся верным.
⚠ Проводная улика референса НЕ снята: его клетка куплена $0-гардом без канала тел. Снимется на **Проводная улика референса СНЯТА на первом юните пачки** (канал включён именно там):
первом юните пачки — канал включён именно там.
```
glm-off, тело запроса: …\"thinking\":{\"type\":\"disabled\"}}
```
Тем самым провод доказан для ВСЕХ ПЯТИ рук: у `low`-рук в теле стоит `reasoning_effort:"low"`,
у `∅`-рук этого ключа НЕТ вовсе, у референса — `thinking:{type:disabled}`. Три РАЗНЫХ механизма
на проводе, ровно как их описывает реестр моделей.
--- ---
@ -379,3 +386,23 @@ glm-off $0.012870
факт — ∅ $0.0340.064 и low $0.0130.026. Причина в том, что `low` режет размышление сильнее факт — ∅ $0.0340.064 и low $0.0130.026. Причина в том, что `low` режет размышление сильнее
закладывавшегося. ⛔ **Это НЕ основание добирать юниты:** рамка выборки заморожена диапазоном глав, закладывавшегося. ⛔ **Это НЕ основание добирать юниты:** рамка выборки заморожена диапазоном глав,
и §12 промта запрещает добор после просмотра чисел. Остаток санкции остаётся неизрасходованным. и §12 промта запрещает добор после просмотра чисел. Остаток санкции остаётся неизрасходованным.
---
## ИТОГ ПАЧКИ И КУДА СМОТРЕТЬ ДАЛЬШЕ
Пачка отработала 19 юнитов (юнит 1 куплен пред-полётом), итого **100 клеток**. Наборы ключей юнитов
побайтно одинаковы во всех пяти руках — блокировка трудности выдержала все сто клеток.
**Израсходовано $5.524817 из санкции $9.50; остаток $3.98 НЕ добирался** (рамка заморожена
диапазоном глав, добор после чисел запрещён §12 промта).
**Результат, реестр ошибок и всё, что не удалось, — в отчёте `docs/experiments/23-editor-tier.md`
§Д54.** Здесь он не дублируется: одно число в двух местах рано или поздно разойдётся.
**Отчёт и запись в `docs/PROGRESS.md` НЕ ЗАКОММИЧЕНЫ намеренно:** §12 промта разрешает этой сессии
единственный класс коммитов — пре-рег-фриз (`c08b547`, `590256a`). Лендит оркестратор.
**Адверсариальный проход по готовому отчёту** (мандат §7.3) нашёл в его первой редакции ещё семь
ошибок — все записаны в Д54.5 с классами. Главные три: «эхо» там, где флаг `cjk_artifact` не
срабатывал ни разу за 100 клеток; «минимум втрое» при верхней границе ДИ ÷2.3; «21-й день» вместо
3-го в обязательном клейме вывода.