diff --git a/docs/research/30-arhitektura-otvet.md b/docs/research/30-arhitektura-otvet.md new file mode 100644 index 00000000..65f432ab --- /dev/null +++ b/docs/research/30-arhitektura-otvet.md @@ -0,0 +1,304 @@ +# research/30 — Ответ на два вопроса владельца: оптимальна ли связка и что даёт качество на длине + +> **Полигон-сессия фазы Д, 03.09.2026.** Написано по прямому указанию владельца («давай это оформим +> в ресёрч, чтоб не потерялось»). ⚠ `docs/research/` — зона ОРКЕСТРАТОРА; файл заведён полигоном по +> слову владельца, ревью и ратификация за оркестратором. +> +> **Основание:** ресёрч-2 (54 агента, 1198 обращений к первоисточникам, 38 находок), полная вычитка +> его результата (9 срезов, 176 пунктов упущенного), три круга адверсариальной правки промтов +> Fable-скептиком, вычитка 17 глав боевого перевода (17 агентов Opus), проба редактора по четырём +> осям ($6.17 из $9.50), слепое чтение в двух редакциях (219 судей Opus). +> +> **Как читать:** §1 — исправления к тому, что сама эта сессия успела сказать неверно. §2–3 — ответы +> на два вопроса. §4 — что нашлось снаружи. §5 — план. Числа без ссылки в этом файле не приводятся. + +--- + +## 1. ⛔ ЧЕТЫРЕ ФОРМУЛИРОВКИ, КОТОРЫЕ НАДО СНЯТЬ ПЕРВЫМИ + +Все четыре ходили внутри проекта как факты, в том числе в докладах этой сессии владельцу. +Каждая опровергнута НАШИМ ЖЕ замером, а не внешним источником. + +### 1.1 «Сильная модель ПЕРЕПИСЫВАЕТ ВЕСЬ ТЕКСТ» — неверно + +Замерено: редактор меняет **4.0–5.8% знаков** черновика, касаясь **~40% предложений** +(`23-editor-tier.md:15` и `:7471`; `eval/dovodka/KONSILIUM-30-08.md` п.1: «Редактор — ремонтник +ЛЁГКОГО КАСАНИЯ»). + +⇒ **Развилка «точечная правка против полного переписывания» — ложная.** Наш редактор уже +**точечный по объёму и сплошной по охвату**. Всякий раз, когда мы обсуждали «заменить перепис на +дифф-интерфейс», мы обсуждали замену механизма на его же поведение с другим протоколом доставки. +Это же снимает половину доводов за V6 п.5 и за патч-протокол. + +### 1.2 «Единственное внешнее число подтверждает связку» — неверно, и своё число сильнее + +У нас есть СОБСТВЕННЫЙ факторный замер на замороженных черновиках: +**A/F3 +2.50 (Холм 0.0004)** и **A_law/F3 +2.81 (Холм 0.0098)** (`21-role-topology.md`, §2.1). +Внешнее 88.9 против 85.7 (arXiv:2605.13368 Table 6) — не единственное и не главное. + +⚠ И оно не одно с другой стороны: на художественном материале есть **минусовые** внешние числа — +пост-редактура поверх слабого черновика сохраняет 31% эмоциональных пиков против 46% у самого +черновика (Emotion Profiling, Table 3), а по COMET постредактура ухудшает обе модели GPT +(Table 2). Слово «единственное» из отчётов убрать. + +### 1.3 «K7 не мерен ни разу» — неверно: одна его нога измерена и пала + +`K7` = однопроходка → майнинг банка из её выхода → канон-фиксер. **Нога «канон-фиксер по флагам» +замерена и опровергнута:** `C2/A_law −3.75` (Холм 0.0006), `C2/F3 −0.94` — «при реальной детекции +не лучше черновика, который чинит» (`21-role-topology.md:1121-1148`, §17). Обещание эксп-20 +«$0.0002 чинит всё» мерилось **при идеальных флагах** на посаженных дефектах и пало на реальной +детекции. + +⇒ K7 остаётся кандидатом только как **«однопроходка + источник банка»**, без ноги фиксера. + +### 1.4 «Связка = черновик → банк → редактор → гейты → судья» — судьи в движке нет + +**Судья в боевом коде не построен и не вызывался ни разу**; все судьи проекта — полигонный стенд. +Всё, что говорилось про «→ судья», описывает эксперименты, а не движок. + +--- + +## 2. ВОПРОС 1: оптимальна ли связка «черновик + перепис под банк памяти» + +### 2.1 Прямой ответ + +**Лучшая из испытанных. Не доказанный оптимум. Доказать оптимум нельзя материалом, а не деньгами.** + +При истине у нижней границы доверительного интервала нужно **n≈128–192**, а в корпусе после дедупа +**всего 60 уникальных единиц** (`21-role-topology.md:670-671`). Маршрут «доказать» закрыт. + +### 2.2 Что связка покупает на самом деле — три измеренных механизма + +Это главное содержательное уточнение сессии: **связка покупает не «качество прозы», а три +конкретные вещи**, и каждая замерена. + +1. **Буфер под слабого жильца.** `glm-5` РЕДАКТОРОМ над боевым черновиком неотличим от + `deepseek-v4-pro`; он же ОДНОПРОХОДКОЙ различимо хуже. Вердикт устоял в трёх замерах. + ⇒ связка покупает **устойчивость к дешёвому жильцу**, а не превосходство как таковое. +2. **Источник банка.** Без черновика терминологу не из чего собирать банк (контр-довод владельца, + записан и не опровергнут): «на одной главе банк не нужен, на книге в 1500 глав имена разъедутся». + Это механическая, а не эстетическая причина, по которой связка не сводится к однопроходке. +3. **Вынесенный из скрытого канала артефакт.** У `deepseek-v4-pro` медиана **96% предложений + финального текста встречается в трейсе размышления ДОСЛОВНО**. ⇒ черновик — не лишний шаг, а тот + же самый черновик, который дорогая модель всё равно пишет внутри себя, только вынесенный наружу + и переиспользуемый. Самый сильный внутренний аргумент за топологию. + +### 2.3 Отказной режим связки — и он есть только у неё + +**Эхо-мина дешёвого черновика:** связка покрыла **9 из 10** подряд идущих глав против **10/10** у +однопроходки. ⇒ связка не безусловно лучше: у неё есть режим отказа, которого у однопроходки нет, +и движку нужен фолбэк (вариация ре-гена · эскалация модели черновика · деградация в однопроходку). +Фолбэк не построен. + +### 2.4 Экономика — 90% денег в одной роли, и есть замена в 6 раз дешевле + +| | на книгу 1500 глав Гу | +|---|---| +| боевая связка | **$127**, из них **редактор $114 (90%)** | +| тот же черновик + редактор `glm-5` | **$20** (×6.3 дешевле) **при неразличимом качестве** | +| однопроходка `pro` | $62 | + +⚠ Правило сметы: считать **по `total_tokens`, а не по длине перевода** — иначе любая новая идея +будет оценена неверно (размышление биллится внутри `completion_tokens`). +⚠ Ходившее по докам «редактор = 73% денег» — **фантом**; реальных знаменателя два: 49.3% всего +прогона и 81.3% внутри порции П1. Причина большой доли **не установлена**. + +### 2.5 Что связка НЕ покупает + +**Ось верности она не двигает** — редакторская стадия покупает беглость и термин. Обратное +утверждение («платим верностью за беглость») было выдвинуто и снято той же сессией 31.08. +И **кросс-главный эффект банка — центрального узла связки — не замерен ничем**. + +### 2.6 Внешний мир: связки, которая бьёт нашу, не найдено + +Поиск 03.09 по шести областям с журналом запросов: **ни одной работы**, показывающей обратное +любому из наших чисел на художественном или длинном тексте. Три кандидата разобраны: + +- **AIDA Agents** (`2026.eamt-2.4`): NMT-черновик под тем же постредактором **лучше** LLM-черновика + (zh 48.1 против 41.5), а параллельные черновики с арбитром хуже одиночного. ⚠ Знак **против нас**, + но прибор — только BLEU, человека в Table 1 нет, а в Table 2 (единственной с человеком) **инверсия: + по BLEU система выигрывает 6/6, по человеческой оценке проигрывает 5/6**. Своей контр-улики на + прозе у нас нет — это честная открытая угроза, а не отбитая. +- **ReflectMT** (`2604.19144`): требует своих весов (LoRA + RL), единица — предложение. И в его же + Table 1 явный второй проход поверх готовой модели обыгрывает RL-интернализованный. +- **AIDAterm** (`2026.acl-industry.63`): батчевая подача глоссария роняет точность на 22.4 п.п., + **но в той же Table 4 поднимает консистентность 87.3 → 89.8** — по нашей целевой функции работает + против собственного вывода. + +--- + +## 3. ВОПРОС 2: качество и консистентность на длине + +### 3.1 Где мы сейчас — по вычитке 17 глав боевого перевода + +**59 блокирующих претензий на 17 глав = 3.5 на главу** при планке владельца ≤2 (`PROGRESS.md`, +«Полигон» 03.09). В планку уложилась 1 глава из 17. При этом все 17 вычитчиков независимо ответили +«читается как книга» = да. + +**Остаток, который не берёт никакой детерминизм: 12 искажений смысла + 6 сломанных мизансцен = +1.1 на главу** — ниже планки. То есть **потолок механизации известен**. + +### 3.2 Три дыры прибора, каждая с готовой дешёвой починкой + +1. **Дрейф ВНУТРИ составного имени невидим** ни пост-чеку движка, ни presence-метрике: + `古月方源 → «Гу Юэ Фан Юань»` при каноне «Гуюэ» (`23-editor-tier.md:7609`, Д50.3). + Починка названа там же: **проверять алиас-ключ на собственную канонную форму**. + Внешний урок того же класса — BOOKCOREF Table 3: MUC **83.1** при CEAFφ4 **2.4** на одном выходе + ⇒ **прибор консистентности обязан печатать две метрики парой**; расходятся — вердикта нет. +2. **$0-гейты насыщены нулём:** род 0/15, язык 0/15 у всех четырёх армов (`KONSILIUM-30-08.md` п.5); + прогон `RunCheapGates` по 11 цитатам вычитки — **1 срабатывание** (`PROGRESS.md:292`). + Вывод «зелено по гейтам ⇒ приемлемо» — **мёртв** (там же, п.6). +3. **Глоссарный чекер: precision 0.067** — 14 ложных на 1 верное (N=3015, ратифицировано D39.39). + Внешняя планка: QE обязана достичь **>80% F1**, прежде чем помогать, иначе подсветка якорит + правки в 2–4.6× независимо от точности (`16-reader-ide-alignment.md:80-84`). + ⇒ **чинить или отключать до того, как строить что-то поверх.** + +### 3.3 Банк памяти: не подан, течёт, и его форма подачи — измеримая ось + +- **Подписанный канон существует и не подключён:** сид 58 записей / 53 `approved`, ключа + `glossary_seed` в конфиге стенда нет (`PROGRESS.md`, «Полигон» 03.09). + При подписи банк даёт **99.3–100%** консистентности (Д50.2, 375–548 пар). +- **Но «канон в сид» замерен как несработавший** у автора `booktrans`: «разведка молча переименовала + заглавие при живом каноне, а бюджет промпта обрезал цикл на второй книге из четырёх» — + и заменён **принудительным детерминированным гейтом** (`pipeline.py:3061-3070`). + ⇒ сид подаётся **как вход гейта, а не как инструкция модели**. +- **Хвост майнера невидим навсегда:** 2110 ранжированных → 442 годных → **117 внутри окна потолка**, + **325 невидимы постоянно** (строка бэклога 223); кап инъекции при этом **течёт на 40–60%**. +- **Форма подачи — измеримая ось, а не данность.** Внешний контролируемый A/B: батчевая подача + роняет точность на **22.4 п.п.**, посегментная — нет; разбавление глоссария **верными, но + нерелевантными** записями роняет точность по нужным терминам до **50.1**. + ⚠ Наш `research/15:149` «контролируемого A/B форматов глоссария не существует» — **опровергнут**. + ⚠ И по нашей целевой функции число 22.4 работает **против** переделки: консистентность у батча выше. +- **Внешнее предупреждение:** механизм памяти этого класса умеет **ухудшать** консистентность + (+415.75% ошибок связности на одной из клеток ConWriter). ⇒ любой замер банка обязан нести + **активный ноль «без банка»**. + +### 3.4 Наш прибор терминов измеряет не то, что мы думаем + +Внешний замер против человека (n=500, 3 эксперта): **exact-match точность терминов τ 0.195**, +хуже COMET (0.322) и много хуже LLM-судьи (0.514). И сам вопрос «термин верен» ненадёжен даже у +экспертов (**κ 0.58–0.61**), тогда как «термин не переведён» надёжен (**κ 0.94–1.0**). + +⇒ Наши «взвешенные промахи 0.23% / эффективная консистентность 100.0%» измеряют **совпадение +строки**, а не то, что человек назовёт верным термином. Практический вывод для промтов: спрашивать +**«пропущен / не переведён»**, а не «верен ли». + +### 3.5 Прибор translationese: переводность ≠ качество + +Набор из 45 морфосинтаксических признаков отличает переводной русский от непереводного с +**macro-F1 0.92–0.94**, но на задаче «хороший/плохой перевод» **проигрывает тупому классификатору** +(68% против 73%). При книго-раздельных фолдах абсолютные числа падают с 89–99% до **59.44–84.44%**. + +⇒ Правиловый детектор (образец — `inkos/ai-tells.ts`: чистые правила, язык вынесен в данные, пороги +по вариативности длин и частоте хеджей) годится как **дескриптор и как $0-гейт грубого брака**, но +**не как гейт качества** — и не как замена суждению. Формулировку «валидировано на русской художке» +из `29-...-codex.md:368` надо снять: она стоит на наивном 10-fold. + +--- + +## 4. ЧТО НАШЛОСЬ СНАРУЖИ И ЧЕГО У НАС НЕТ + +Все пункты — механизмы, не выводы; переносится конструкция, не число. + +1. **AskQE** (`2504.11582`) — прототип **прибора верности**: вопросы генерируются из ИСХОДНИКА, + ответы берутся по ПЕРЕВОДУ, эталон не нужен. Это ровно класс нашего непостроенного прибора. + ⚠ Числа не переносить (другой домен); брать **конструкцию**. + ⚠ И ограничение, замеренное на художественном тексте: прибор понимания (10 вопросов) **упирается + в потолок** — как дискриминатор качества на художке Q&A не работает. ⇒ строить как + **двусторонний** (пропущенное И приписанное), а не как тест на понимание. +2. **Long-CIRT** — готовая форма измерения **потери фактов на длине**: обратный прогон при + фиксированном решателе, печатается **собственный пол на непереведённом исходнике**, ось разложена + по длине 0.5k–16k. Ровно та форма («отрицательный результат только с положительным контролем»), + которую требует наш `NORMY-ZAMEROV.md`. +3. **Привязка упоминаний к канону имён** (BOOKCOREF): при **известном списке имён** — то есть в нашей + ситуации, у нас банк — Character Linking **F1 86.3**, CoNLL **80.5 на полной книге**, а дешёвый + детектор по шаблонам — точность **95.6**. Числа 41–47, которые сессия сперва подала как + отрезвляющие, относятся к системам **без** списка имён. +4. **Четыре механизма `wenyi`**, которых нет ни в одной строке наших доков: индекс улик с подсчётом + вхождений термина (`BookEvidenceIndex` / `term_occurrences`), **детектор циклов** в ревью-петле, + учёт **伏笔** (заготовок-предвестий) и **half-life** — затухание веса памяти. + ⚠ Их же ограничение: пулловый индекс **не опрашивается**, пока дешёвый локальный критик не нашёл + кандидата ⇒ термин, испорченный единообразно по всей книге, не находится никогда. +5. **Нормы выборочной вычитки** (LifeBook): `n ≥ ln(1−conf)/ln(1−q)` на страту, доверие релиза = + минимум по стратам, **новый сид после починки**. ⚠ Наши 17 глав — **сплошной блок 26–42**, один + кластер: книжного доверия он не даёт **ни при каком исходе**, и повтор по тем же главам после + починки запрещён. +6. **Жюри с обучёнными весами** (один вес отрицательный, −1.29) окупается **асимметрией исправлений**, + а не точностью. ⚠ Наш вывод «консилиум моделей не окупается» (D39.102) замерен на **равноправном** + совете — этот режим он не покрывает, формулировку надо сузить. + +### 4.1 Что снаружи протухло за пять недель + +`LinguaGacha` (★2396) с 31.07.2026 **строит агентный редактор**: 305 коммитов за 25.07–03.09, 104 из +них в агентных каталогах, восемь скилов, обзор по четырём осям. Наш `research/22:285` печатает +обратное: «явно НЕ в мульти-агент/редактор». ⇒ **эррата в `research/22` и `29`** (зона оркестратора); +срок годности харнесс-обзора — **недели, а не месяцы**. + +--- + +## 5. ПЛАН + +Порядок задан не ценностью, а **зависимостями**: каждый следующий шаг бессмыслен без предыдущего. + +### Шаг 0 — то, без чего остальное неизмеримо ($0, полигон) + +1. **Починить или отключить глоссарный флаг** с precision 0.067. Пока он даёт 14 ложных на 1 верное, + любая затравка ревью гейтами приедет с мусорным входом. +2. **Починить измеритель критика:** подтверждения критика уходят фиксеру как задания (18.3% и 23%, + два независимых замера). Лечение уже написано на соседней ветке (`zakhod.py:142`). + Без этого **любой замер критик→фиксер завышен на ~20% шума** — включая тот, которым мы его + отвергли. +3. **Алиас-ключ на собственную канонную форму** — закрывает дыру «дрейф внутри составного имени». +4. **Пара метрик в приборе дрейфа:** presence и выравнивание идентичности печатаются рядом с + шум-полом; расходятся — вердикт не печатается. + +### Шаг 1 — прибор верности ($0, назван в наших доках и не построен) + +`23-editor-tier.md:7897-7900`: **двусторонний контроль объёма** (гейт ловит обрушение длины, а рост — +нет) плюс **счётчик добавленного содержания на абзац**. Конструкция AskQE берётся как образец +двусторонности, **не как источник чисел**; форма отрицательного результата — от Long-CIRT +(собственный пол на непереведённом исходнике). + +⚠ Ограничение назвать сразу: контроль длины — **известный источник ложных срабатываний** +(в индустриальных чекерах цель длиннее на 20% флагается по умолчанию). + +### Шаг 2 — бэкенд, по уже заказанным строкам (зона оркестратора) + +Экран целевого языка (строка 46) · заголовки глав (160/161/162, 201) · включение петли ремонта +(13, решение владельца) · морфо-гейт рода (82) · вынос вердикт-полей из хеша запроса (49, спека в +`backend/docs/`). +⚠ И **ратифицированный, но не построенный** механический пре-гейт перед редактором (D39.117): брак +5 клеток против 10/23 при **половинной цене**. Он выше в очереди, чем любой непроверенный K7. + +### Шаг 3 — покупка длины (~$2, после шагов 0–1) + +15 глав подряд с засеянными характер-листами (Д38.6). ⚠ Со **стратами** (заголовок · диалог · +описание · имена и термины · числа) и **случайным сидом**: сплошной блок книжного доверия не даёт. + +### Шаг 4 — только с прибором в руках + +`K7` **без ноги фиксера** (она измерена и пала): однопроходка как **источник банка**, а не как +замена связке. И **фолбэк на эхо-мину** — режим отказа, который есть только у связки. + +### Чего не делать + +- Не строить дифф-интерфейс и патч-протокол: редактор **уже** правит 4–6% знаков, менять протокол + доставки того же поведения — трата (и D39.108 «диффы откладываются»). +- Не покупать судейских панелей: парный судья назвал победителя в **29 голосах из 30 на чистом шуме**. +- Не переносить внешние числа: 38 находок из 38 содержали число, работающее против собственного + вывода карточки. +- Не считать «китайские и русские источники недоступны»: четыре китайских открыты полным текстом; + барьером был отказ инструмента, а не отсутствие источника — тот же класс ошибки уже описан в + `research/29` §5.3. + +--- + +## 6. ЧЕГО ЭТА РАБОТА НЕ ДАЛА + +- **Ни архитектуры, ни прибора** — только кандидаты в замер и порядок их проверки. +- **Внешнее подтверждение планки владельца ≤2 претензии на главу** — издательских норм в доках нет, + планка не откалибрована ничем. +- **Кривой деградации консистентности на сотнях глав** по-прежнему нет ни у кого; наш прибор дрейфа + на 17 главах (0.74% книги) остаётся единственным в переводческой постановке. +- **Классы источников, не тронутые вовсе:** отраслевые отчёты локализации, издательская наука, + препринт-площадки. Китайская и русская индустрия задеты частично.