Merge the polygon branch: the architecture answer as research/30, the proofreading of seventeen chapters, and the plan reconciliation arrive in main
This commit is contained in:
commit
966d8d3e6a
4 changed files with 478 additions and 2 deletions
|
|
@ -463,6 +463,36 @@
|
|||
|
||||
* **РЕШЕНИЯ ВЛАДЕЛЬЦА 02.09 (ратификация за оркестратором).** (1) **Дефолт редактора — `low`**, бремя доказательства на том, кто включает дорогой режим. (2) Вопрос «`off` против `low` по качеству» **закрыт как неизмеримый этим прибором** — судейских реплик не покупать. (3) Питон-прибор дрейфа пишет полигон (сделано), **настоящий прибор — в движок, это пинг ниже**. (4) Покупка 50 глав на длину **отложена до прогона в бэкенде** (слово владельца).
|
||||
* **⚠ ВХОД 1 — офлайн-пересчёт по уже оплаченному тексту (`tmctl recheck` или равное).** Проверки движка исполняются ТОЛЬКО в момент генерации; готовый текст в базе перепроверить нечем, и потому частота ложных тревог пост-чека не измерима без покупки. Полигон закрыл дыру питон-двойником (`dreif.py`), но **это не тот же прибор**: у движка стеммер целевого языка и сохранённые формы, у двойника — сопоставление по началу слова. Два «детерминированных» прибора с разными ответами — тихий дрейф нормы; строку в бэклог просит полигон, решение за оркестратором.
|
||||
* **⚠ ПОПРАВКА К ЭТОМУ ПИНГУ (02.09, позже в тот же день): входов НЕ ДВА, А ЧЕТЫРЕ, и «включить гейт» из них самый мелкий.** Разбор начат вопросом владельца («в бэкенде нет майнинга term — „мастер гу“ не замайнится»). Проверено исполнением: **майнинг term РАБОТАЕТ** (68 записей класса `term`, `蛊师 → гу-мастер` в банке есть), но владелец прав по сути — цепочка «намайнил → классифицировал → подписал → инжектнул как закон → проверил» рвётся в ЧЕТЫРЁХ местах, и замеренный дрейф (30 ключей из 102 несут >1 передачу, максимум 7 форм) — их следствие.
|
||||
* **(1) `term` — класс-умолчание, а не решение.** `backend/internal/pipeline/banknote.go:79` дословно: «bankTypeOK is the accepted type set; **anything else falls back to "term" (a benign default)**». Две трети банка пробы (68 из 102) сидят в этом умолчании.
|
||||
* **(2) Классификатор умеет различать `term`, но в пробе НЕ ДОБЕЖАЛ.** Определение в `backend/prompts/zh-ru/classifier.md:20-23` точное («реалия, понятие, предмет, материал, вещество, класс существ — всё, что переводится ПО СМЫСЛУ», пример `元石 term`). Однако лог пробы: `batches_planned=8 · batches_running=6 · classify_batches_dropped=4` при `budget_usd=0.05` против `estimate_usd=0.0978`; итог `unanswered=7`, `reclassified=5`. Движок сам предупредил: «this bank is PARTIALLY consolidated — a budget cut a pass, so some terms were never offered to the role at all». ⇒ типы выставила банкнота или умолчание кода, а не тот механизм, который умеет.
|
||||
* **(3) Промпт банкноты недоспецифицирует класс `term`.** `backend/prompts/zh-ru/translator-banknote.md`: просит «новых имён собственных и терминов», список типов даёт, но **определения `term` нет, а единственный пример — `师父 наставник title`**, то есть образец уводит в титулы; лимит «не более 20 строк» на фрагмент вытесняет понятия в пользу имён (имена заметнее). Правка промта — не Go и пары не касается.
|
||||
* **(4) Инжект фильтрует по ПОДПИСИ, а не по классу.** `backend/internal/membank/memory.go:663`: `status == "approved"` → `Confirmed`, иначе `Ambiguous`; `priorityRank` (там же, ниже) вытесняет неподписанное первым при token-бюджете (`glossary_token_budget: 800` на 102 записи). При `approved=0` весь банк едет «неуверенным кандидатом» — форма не объявлена законом, и удерживать её нечему. Это и есть механизм дрейфа `蛊师` («гу-мастер» / «мастер гу») и `元石` (семь форм).
|
||||
* **⚠ (5) НАБЛЮДАЕМОСТИ НЕТ на редакторской стадии.** `retrieval_state` в базах пробы держит **35 строк, все под DRAFT-снапшотом** (`8d5721f65596`), под edit-снапшотом (`b76ab168d95b`) — **НОЛЬ строк**. Доехал ли банк до редактора и сколько записей вытеснено бюджетом, из артефактов узнать НЕЧЕМ. Все счётчики на черновой стадии нулевые закономерно: банк рождается ИЗ черновика, на нём его ещё нет.
|
||||
* **Порядок, который из этого следует** (предлагается, решение за оркестратором): наблюдаемость инжекта на edit-стадии → бюджет классификатора (пять центов режут половину работы) → определение и пример `term` в промте банкноты → подпись банка и заполнение форм → и только потом жёсткий режим гейтов.
|
||||
* **⚠ ТРИ ПОПРАВКИ К МОИМ ЖЕ УТВЕРЖДЕНИЯМ ВЫШЕ, найдены консилиумом 02.09 и пере-проверены мной исполнением.**
|
||||
· **(5) сформулирован неверно в ПРИЧИНЕ.** «Ноль строк под edit-снапшотом» — не разрыв, а схема: `PRIMARY KEY (book_id, chapter, chunk_idx)` **без snapshot_id** (`store/migrate.go`), редактор мержит в ту же строку, и `snapshot_id` в ней — просто последнее записанное. Вывод «наблюдаемости нет» ОСТАЁТСЯ верным, но дыра в другом: счётчики инжекта редакторской волны не пишутся никуда (`pipeline/chunkrun.go:202`).
|
||||
· **«ни один $0-гейт не поймал латиницу» — неточно.** Детектор латиницы ЕСТЬ и вызывается всегда (`checks/cheapgates.go:192`, `lintLatinResidue`), но по построению он **наблюдатель, а не вердикт**: дословно `cheapgates.go:22-27` — «They are OBSERVABILITY, never hard gates… never changes a chunk disposition». Гейт видел и молчал, потому что так устроен.
|
||||
· **Источник «cultivation» — НЕ glm-5.** Пере-проверено по стадиям: слово рождается в ЧЕРНОВИКЕ (`deepseek-v4-flash`, 7 клеток) во ВСЕХ руках, потому что черновик общий; редакторы DeepSeek его вычищают (**0** в финальных текстах `p9-low`/`p7-off`), а `glm-5` — нет (3 клетки на edit, **2 доживают до финала**). Значит это дефект не породителя, а фильтра, и прежняя формулировка «glm-5 опознаётся по латинице» верна по факту, но неверна по причине.
|
||||
* **Улика к строке 46, а НЕ находка: полный провал языка цели.** `books/dovodka/dv-i-z8-fb9ed5709e.json` — глава пары zh→**ru** переведена целиком **на английский**: пере-считано мной, **7104 латинских знака, 0 кириллицы**, `finish=stop`. ⚠ **Прежняя формулировка «главного, чего в пинге не было» СНЯТА 03.09: это уже заказанная работа.** Строка бэклога **46** называет ровно этот случай дословно — «Экран целевого языка: „полный связный перевод на английский" проходит»; дизайн пака **заморожен владельцем** (D39.92 п.1 closed-set + D39.93 изолированный модуль), предгейт — строка **113** (фикстура ~20 off-target). ⇒ ценность вычитки здесь — не гейт придумать, а **дать строке 46 живую улику с боевого прогона**.
|
||||
|
||||
* **📌 03.09 · ВЫЧИТКА 17 ГЛАВ БОЕВОГО ПЕРЕВОДА ($0, 17 агентов Opus, по агенту на главу с исходником).** Материал — `p9-low` (дефолт редактора по решению владельца 02.09), экспорт `tmctl export --pairs`. Инструкция вычитчику разделяла ДВА уровня: «читатель споткнётся» (против них меряется планка владельца ≤2 на главу, D39.20) и «мелочь корректора».
|
||||
* **Планка НЕ взята: 59 блокирующих претензий на 17 глав = 3.5 на главу.** В планку уложилась 1 глава из 17. При этом все 17 вычитчиков независимо ответили «читается как книга» = ДА.
|
||||
* **Классы (всего / из них ловится детерминированно):** смысл-искажён 12/0 · имя-термин-непоследователен 10/10 · translationese-грубый 9/2 · род-гу 7/6 · логика-действия 6/1 · иное 5/3 · язык-не-тот 4/4 · пропуск 3/3 · меры 3/3. ⇒ **механизируемо 32 из 59 (54%) ПО ОЦЕНКЕ ВЫЧИТЧИКОВ**; ⚠ оценка завышена: прогон существующих `RunCheapGates` по 11 цитатам дал 1 срабатывание из 11 (сегодняшний код берёт заметно меньше).
|
||||
* **Остаток, который не берёт ни один детерминизм: 12 искажений смысла + 6 сломанных мизансцен = 1.1 на главу** — то есть НИЖЕ планки владельца. Образец (гл.1): «перекрыл им путь, **сделав шаг в сторону**» — по-русски «посторонился», фраза противоречит себе; в оригинале 横跨一步 = шагнул НАПЕРЕРЕЗ.
|
||||
* **⛔ Найдено проверкой самих вычитчиков (системнее, чем они доложили): заголовки глав теряются.** Исходник даёт `第二十六节:一切组织的本质` — номер И название; движок кладёт в заголовок только номер (`chunk/chunker.go` `stripHeading`/`ApplyHeading`), название сваливается в тело как обычная строка. Дальше как повезёт: **название уцелело у 11 глав из 17, потеряно у 6** ⇒ на 2283 главах это ~800 глав без названия вперемешку с озаглавленными. Ловится тривиально: заголовок состоит только из номера. Улика к строкам бэклога **160/161/162** и **201**.
|
||||
* Сырьё вычитки: `/tmp`-экспорт не сохранён (волатилен), воспроизводится командой `tmctl export --config arms/p9-low.book.yaml --pairs`; вердикты 17 агентов — в задаче воркфлоу `wfofkln2i`.
|
||||
|
||||
* **📌 03.09 · КАНОН СУЩЕСТВУЕТ, ПОДПИСАН И НЕ ПОДАН В СТЕНД (проверено исполнением).** `~/books/gu-zhenren/guzhenren-seed-v2.yaml` — **58 записей, из них 53 `status: approved`**, 16 с полем `gender`. В нём ровно те термины, на которых спотыкались вычитчики: `资质 → талант` (канон владельца D39.21), `元石 → первобытный камень` (а в пробе намайнилось 7 форм), `甲等/乙等/丙等 → класс А/Б/В` (а в переводе «категория **C**» ЛАТИНИЦЕЙ), `蛊师 → гу-мастер`. **В `~/books/gu-zhenren/probe-4axes/book.yaml` ключа `glossary_seed` НЕТ — 0 вхождений**, и шапка стенда объявляет это сознательно: «Сид НЕ подключается — банк рождается майнером + банкнотой, как в холодном прогоне».
|
||||
⇒ **Прежняя формулировка «банк не подписан» (запись 02.09) НЕТОЧНА и настоящим уточняется:** не подписан МАЙНЕНЫЙ банк, а подписанный канон просто НЕ ПОДКЛЮЧЁН. Весь измеренный дрейф (30 ключей из 102 с >1 передачей) — дрейф конвейера с отключённым каноном. Контр-факт на той же книге: с подписанным банком эффективная консистентность **99.3–100%** (Д50.2, 375–548 пар).
|
||||
⚠ Записи `蛊` в сиде НЕ ХВАТАЕТ поля `gender` (средний род прописан прозой в `note`) и стоит `allow_short: false` при `minKeyLenHan=2` ⇒ односимвольный ключ структурно вне автомата. Это две строки ДАННЫХ, не код.
|
||||
|
||||
* **📌 03.09 · СВЕРКА С ПЛАНОМ ПОСЛЕ ЗАМЕЧАНИЯ ВЛАДЕЛЬЦА — 10 «предложений» из 11 оказались уже заказанной работой.** Владелец: «вы рассуждаете без оглядки на ту архитектуру и код, что уже построена или ЗАПЛАНИРОВАНА». Замечание верное: консилиуму давали код и данные вычитки, но НЕ давали целевую архитектуру, ЕДИНЫЙ БЭКЛОГ и журнал решений. Тот же консилиум, подняв прежний контекст, прочитал план и снял свои же предложения. Сверено мной по носителям.
|
||||
* **Уже в плане:** вынести вердикт-поля из хеша = строка **49** (спека `backend/docs/D15.2-content-addressed-resume-spec.md`) · экран языка цели = строка **46** · заголовки глав = строки **160/161/162** и **201** (гейт пал словом владельца 15.08, D39.136 п.3) · петля ремонта = **построена** за `enabled:false`, включение — строка **13** (владелец) · морфо-гейт рода = строка **82** · числа и меры = строка **12** через триггер D39.79 п.4 · критик = строка **2** (владелец).
|
||||
* **Уже ПОСТРОЕНО:** род `neuter` end-to-end — **D39.69 §3** (`13-tech-debt-anchors.md`: «носитель ПОСТРОЕН»). Остаток по роду «гу» — **две строки ДАННЫХ** в сиде стенда (`guzhenren-seed-v2.yaml:291-300`: `allow_short: false`, поля `gender` нет) плюс ключ `glossary_seed`.
|
||||
* **⛔ Противоречит ратифицированному:** патч-протокол редактора ↔ **D39.108 п.1** «диффы откладываются» · критик как стадия движка ↔ **D38.4 п.2** «семантический span-судья — ОТКАЗ» · подпись ~30 ключей поимённо ↔ **D39.144** «подписывается ВЕСЬ банк ОДНИМ ОК; пер-термная масс-подпись = инерция» · канал идиом врезкой dst ↔ **D38.4 п.1** «глоссарий-сидинг чэнъюй НЕ делаем» · таблица мер ↔ **D39.79 п.4** «HARD-value-детектор НЕ строить».
|
||||
* **Что вычитка дала по-настоящему:** улики к уже открытым строкам — **46** (глава на английском), **82** (7 дефектов рода), **142/13** (классы для точечной починки), **160** (6 глав из 17 без названия ⇒ ~800 на книгу), **12** (триггер реопена по числам НАЖАТ: #46/#13/#11). Это подтверждение заказанного, а не новый список.
|
||||
* **Метод-урок, дороже находок:** сутки ушли на переоткрытие бэклога, потому что план не был подан консилиуму. **Любой панели, обсуждающей ЧТО СТРОИТЬ, план подаётся вместе с кодом** — иначе она уверенно переизобретает заказанное. ⚠ Для полигона отсюда следует и граница: строки 46/49/82/142/160/12 — **зона бэкенда**, полигон в них не лезет; его законная часть — улики и замер (см. ниже).
|
||||
* **⚠ ВХОД 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 опора покрывала 55–79%). Редакция 2 на склеенном по манифесту черновике (покрытие 99–100%) плюс **активные нули** (`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, на уже купленном).** Терминов с более чем одной передачей в тексте — 13–16% от измеренных; сменивших форму между главами — 6–8%. Независимым путём (поле `spread`, считает сам движок): **30 записей из 102 несут >1 передачу, максимум 7 форм у одного ключа** (`元石`: «юаньши · камень юань · изначальный камень · первородный камень…»). ⚠ Разброс МЕЖДУ режимами (0.3–1.9%) **не превышает шум-пола** (2.4%, снят по паре реплик одной руки) ⇒ дрейф на этом отрезке — свойство черновика и банка, **не редактора**; экономия на редакторе к нему отношения не имеет.
|
||||
|
|
|
|||
304
docs/research/30-arhitektura-otvet.md
Normal file
304
docs/research/30-arhitektura-otvet.md
Normal file
|
|
@ -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% книги) остаётся единственным в переводческой постановке.
|
||||
- **Классы источников, не тронутые вовсе:** отраслевые отчёты локализации, издательская наука,
|
||||
препринт-площадки. Китайская и русская индустрия задеты частично.
|
||||
125
eval/dovodka/NORMY-ZAMEROV.md
Normal file
125
eval/dovodka/NORMY-ZAMEROV.md
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
# Нормы судейских замеров: что фаза Д подтвердила ценой денег и четырёх суток
|
||||
|
||||
**02.09, полигон.** Не новые нормы. **Почти всё ниже проект уже знал** — и фаза Д собрала грабли
|
||||
заново. Файл заведён именно поэтому: норма, записанная там, где её не читают перед работой,
|
||||
не работает.
|
||||
|
||||
## 0. Главное признание: активный ноль был ратифицирован в июле
|
||||
|
||||
**D39.7 (18.07)** несёт риг-стандарт: *per-vote персист · полно-evidence окна · **floor-гейт***.
|
||||
Дословно оттуда: «все floor-относительные; **floor судейского шума = 0.126 per-cell, A0↔A0′
|
||||
matched full-chunk**». `A0↔A0′` — это два прогона ОДНОЙ конфигурации, то есть **ровно тот активный
|
||||
ноль**, который фаза Д «открыла» 02.09, купив реплику `low₂` за $0.659678.
|
||||
|
||||
`eval/README.md:9` перечисляет этот стандарт первым инвариантом полигона.
|
||||
|
||||
⇒ Первая редакция слепого чтения нарушила ратифицированную норму, объявила результат
|
||||
(18:6 «дешёвая рука лучше») и **сняла его только после того, как норма была исполнена**.
|
||||
Стоимость незнания: реплика + две панели (219 судей) + четверо суток.
|
||||
|
||||
## 1. Что обязана нести любая судейская панель
|
||||
|
||||
| Норма | Носитель | Как её нарушила фаза Д |
|
||||
|---|---|---|
|
||||
| **Активный ноль (floor-гейт)** — пара прогонов ОДНОЙ руки, того же размера, что боевая выборка | D39.7, `eval/README.md:9` | в редакции 1 отсутствовал; результат оказался неотличим от шума |
|
||||
| **Полно-evidence окна** — судье показан ВЕСЬ материал, к которому относится вопрос | D39.7 | судьям показывали 55–79% черновика в 10 юнитах из 15 |
|
||||
| **Оба порядка** — пара судится и как (A,B), и как (B,A) | норматив оркестратора | нарушено в ОБЕИХ редакциях |
|
||||
| **per-vote персист** | D39.7 | исполнено ✅ |
|
||||
| **Слепые метки авто-QA** | D39.20 | исполнено ✅ (имена файлов обезличены после того, как первая раскладка называла их `p7-…`/`null-…`) |
|
||||
| **Детерминированный скорер > судьи, где возможен** | норматив оркестратора | не применялся вовсе; применён только 02.09 (`dreif.py`) |
|
||||
| **Вывод на агрегате до вскрытия единиц запрещён** | D39.61 | вывод редакции 1 сделан на агрегате |
|
||||
|
||||
## 2. Что фаза Д добавляет к норме (этого в носителях не было)
|
||||
|
||||
1. **Ничья определяется ПОРОГОМ, а не совпадением текстов.** Схема первой панели давала судье
|
||||
поле «тексты идентичны», и ничья фактически привязалась к побайтному совпадению: на активных
|
||||
нулях судьи объявили победителя в **29 голосах из 30**, потому что два непустых текста всегда
|
||||
чем-то различаются. Ничья обязана быть исходом «различие ниже порога», иначе её не будет.
|
||||
2. **Потолок списка дефектов становится метрикой.** В схеме стоял `maxItems: 6`; в **73 голосах
|
||||
из 74** побеждал вариант с меньшим числом претензий, а половина списков упиралась в потолок.
|
||||
Судья считал дефекты, а счётчик насыщался — вердикт стал функцией потолка.
|
||||
3. **Мощность гарда объявляется вместе с гардом.** Гард нулей на 10 парах берёт порог значимости
|
||||
только на раскладах 9:1 и 10:0; перекос 8:2 он пропускает. Непрохождение такого гарда
|
||||
**не есть доказательство исправности прибора**, и это надо печатать рядом с ним.
|
||||
4. **Правило решения обязано покрывать ВСЁ пространство исходов.** Первая редакция дала 60% при
|
||||
пороге 70% и p<0.05 — исход не попал ни в одну ветку, и выбор ветки стал свободой после чисел.
|
||||
5. **Знаменатель фиксируется один.** Доля бралась из n=30, а значимость из n=24; при
|
||||
последовательном счёте срабатывала ветка с ПРОТИВОПОЛОЖНОЙ диспозицией.
|
||||
6. **Тест, где ничьи в знаменателе, а H₀=50%, — невалиден:** при доле ничьих 0.20 ошибка I рода
|
||||
17.8%, а не 5%.
|
||||
|
||||
## 3. Нормы для детерминированных приборов (из `dreif.py`)
|
||||
|
||||
1. **Шум-пол печатается рядом с КАЖДЫМ числом**, а не в конце отчёта. Порог — консервативный
|
||||
(наибольшая из шумовых оценок): ось, где шум случайно вышел 0.0%, иначе объявит значимым любое
|
||||
ненулевое различие.
|
||||
2. **Гейт на нулевой знаменатель и на пустой разбор.** Прибор напечатал «дрейф 0%», потому что
|
||||
парсер искал `src:` вместо формата «ключ⇥передача» и не совпал ни разу. Ноль на заведомо
|
||||
непустом входе — **отказ прибора**, а не результат. (Тот же класс: Д50, гейт `assert_measured`.)
|
||||
3. **Второй, независимый путь к тому же числу.** Дрейф считается и сопоставлением по тексту, и
|
||||
полем `spread`, которое печатает сам движок.
|
||||
4. **Прибор проверяется на себе.** Замер ложных тревог `dreif.py`: 2 из 12 (17%) — основа «Гао Ван»
|
||||
находилась внутри «Гао Вань», где в тексте 82 вхождения и все одной формы. Починено
|
||||
схлопыванием укороченных форм.
|
||||
5. **Печатать, чего прибор НЕ проверяет** — секцией в самом выводе.
|
||||
|
||||
## 4. Как это повлияло на три вопроса владельца
|
||||
|
||||
Вопросы — по `eval/dovodka/PLAN-22-08.md` §1.
|
||||
|
||||
### Вопрос 0 (метавопрос, главный): живой русский с консистентными терминами по ВСЕЙ книге
|
||||
|
||||
Состояние знания до фазы, дословно: «**на вопрос 0 не отвечает ни один наш прибор**. Все панели
|
||||
мерят художественность ОДНОЙ главы; консистентность тысячи — ортогональная ось, и она не мерилась
|
||||
ни разу».
|
||||
|
||||
**Что изменилось.** Впервые есть **прибор** на эту ось и первые числа — бесплатно, на уже
|
||||
оплаченном: 9–12% терминов имеют больше одной передачи, 6–8% меняют форму между главами;
|
||||
независимым путём (`spread` движка) — **30 записей банка из 102 несут >1 передачу, максимум 7 форм
|
||||
у одного ключа** (`元石`: юаньши · камень юань · изначальный камень · первородный камень…).
|
||||
Реальный дрейф после чистки ложных тревог: «Фан Юань / Фанъюань», «Мо Бэй / Мобэй»,
|
||||
«гу-мастер / мастер гу», «дом Мо / клан Мо / род Мо».
|
||||
|
||||
**И жёстко подтверждено, что судьями эту ось не взять:** панель на изолированном куске
|
||||
доказанно реагирует на шум так же, как на сигнал.
|
||||
|
||||
⚠ Прибор меряет 17 глав = 0.74% книги, а дрейф накопителен. Ось открыта, но не пройдена.
|
||||
|
||||
### Вопрос 1: оптимальная архитектура пайплайна
|
||||
|
||||
Фаза **не испытывала топологий** (это бумажные ресёрчи `research/29`). Продвижение — в другом:
|
||||
|
||||
- **Локализация проблемы.** Дрейф терминов **не зависит от режима редактора**: разница между
|
||||
режимами 0.5–1.8% против шум-пола 2.4%. Значит консистентность рождается на стадии черновика
|
||||
и банка, и искать её надо там, а не в редакторе, куда уходит 85–95% денег.
|
||||
- **Найден разрыв в цепи, а не в механизме.** Штатный детектор консистентности не просто выключен
|
||||
(`coverage.enabled: false`) — **у него не было входа**: из 102 записей банка ни одна не доведена
|
||||
до `approved`, `decl` пуст у всех. Механизм построен, цепочка не замкнута.
|
||||
- **Гибридная политика оценена без единой траты:** дешёвая рука падает в $0-гейт в 2 клетках из 60
|
||||
(3.3%) ⇒ книга $96 против $90 чистого дешёвого и $269 дорогого. Страховка стоит 7%.
|
||||
|
||||
### Вопрос 2: связка моделей без привязки к вендору
|
||||
|
||||
Здесь фаза дала **острый негативный урок, прямо в цель вопроса**.
|
||||
|
||||
«Дорогой режим» в нашем замере — это **не наш выбор уровня, а вендорский умолчальный**: параметр
|
||||
не эмитится вовсе, едет собственный дефолт DeepSeek, который вендор **двигал дважды за лето**
|
||||
(31.07 и 30.08), и фактический уровень нигде в артефактах не записан (`reasoning_tokens`=0).
|
||||
|
||||
⇒ Мы сравнивали с движущейся мишенью, и замер **невоспроизводим** в строгом смысле. Для вопроса 2
|
||||
это точный ответ на «зависит ли архитектура от вендора»: **езда на вендор-дефолте есть скрытая
|
||||
привязка к вендору** — не по API, а по поведению, и она не видна ни в конфиге, ни в логе.
|
||||
|
||||
Второй факт той же оси: единственная не-DeepSeek рука (`glm-5`) дала **дефект целевого языка** —
|
||||
шесть непереведённых «cultivation» в русском тексте, которых **не поймал ни один $0-гейт**.
|
||||
Мультивендорность требует гейтов на язык вывода, которых сейчас нет.
|
||||
|
||||
⚠ Чего фаза по вопросу 2 НЕ дала: связка мерена на ОДНОМ вендоре в двух режимах плюс один ценовой
|
||||
контроль. Ни бейк-офа вендоров, ни проверки «худший вендор на нашей архитектуре против лучшего на
|
||||
чужой» не было.
|
||||
|
||||
## 5. Что из этого — работа, а что запись
|
||||
|
||||
Записью закрывается только §1–§3. **§4 не закрывает ни один из трёх вопросов**: вопрос 0 получил
|
||||
прибор и первое число, вопрос 1 — локализацию и цену политики, вопрос 2 — предупреждение.
|
||||
Три вопроса остаются открытыми, и это правильный статус, а не осторожность.
|
||||
|
|
@ -122,19 +122,36 @@ def measure(arm):
|
|||
return per_term, fired, bk
|
||||
|
||||
|
||||
def collapse(variants):
|
||||
"""Схлопнуть варианты, где один — лишь укороченная форма другого.
|
||||
|
||||
⚠ ЗАМЕРЕННАЯ ЛОЖНАЯ ТРЕВОГА, а не предосторожность. Сопоставление идёт по НАЧАЛУ слова
|
||||
(падеж меняет хвост), и потому основа короткого варианта находится ВНУТРИ длинного:
|
||||
· «Гао Ван» (основа «Гао В») находится в «Гао Вань» — в тексте 82 вхождения ТОЛЬКО
|
||||
«Гао Вань/Ваня/Ванем», «Гао Ван» отдельно не встречается ни разу;
|
||||
· «женщина-гу蛊师» (основа «женщина-гу») находится в «женщина-гу-мастер».
|
||||
Обе пары прибор объявлял дрейфом: 2 ложные тревоги из 12 (17%) на руке `p9-low`.
|
||||
"""
|
||||
out = []
|
||||
for v in sorted(variants, key=len, reverse=True):
|
||||
if not any(longer.lower().startswith(v.lower()[: max(4, len(v) - 2)]) for longer in out):
|
||||
out.append(v)
|
||||
return set(out)
|
||||
|
||||
|
||||
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()
|
||||
allv = collapse(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]
|
||||
doms = [sorted(collapse(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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue