textmachine/docs/archive/PROGRESS-2026-08-04-09.md

101 lines
80 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Архив хроники — пинги закрытых паков эры №15 и снимок «Сделано» (0409.08.2026)
> **⚠ АРХИВ (вынесено D39.125, 09.08).** Все паки здесь ПРИНЯТЫ и залендены (D39.102/108/117/118/122);
> ревью-шапки отчётов в `docs/archive/reports/` первичны. Инструкции не исполнять.
## Снимок буллета «Сделано (сводно)» из CURRENT-STATE
> - **Сделано (сводно; детали — D-лог и архив-слайсы):** Ф0 ✅ · Ф1-инфра ✅ · арх-ресет D39 (7 слоёв, паки 1116) ✅ · паки 17 «канал B» · 18 «долги» · 19 «голос/состояние» · 20 «банк+терминолог» ✅ (D39.2628/31/4156) · мини-прогон (D39.37) и ХОЛОДНЫЙ прогон (D39.58: recall банка 0.918/0.980, банк приходит переведённым) приняты · полигон-пакеты 58, ToS-речек (D39.57), Р6+P4 (D39.61) закрыты · **карта языковой привязки движка (D39.60): 149 сайтов/45 файлов, книго-ось чиста (4), ja→ru безопасно без правки Go, en→ru — нет** · Р1Р4 закрыты целиком (D39.63: Р2 = ЗНАЧЕНИЕ, Р4 = норма потолка recall) · **ФАЗА 2 ОБЩНОСТИ ✅ (D39.64: П0 эмбед-хеш · П1 цель-шов · П2 скрипт-шов, ko-баг закрыт · П3 нарезка · П4 манифест-по-каналам; голден вердикт-нейтрален 0/172, майнер-парити EXACT)** · жанровый словарь отменён как класс (D39.47) · петля ремонта построена и НЕ включена (D39.38).
## Пинги секции «Бэкенд» (закрытые паки)
**ФИКС-ПАК БАНКА «КЛАСТЕРЫ + НАБЛЮДАЕМОСТЬ» (строка 128 + хвост 129 + $0-минимум 130) — ИСПОЛНЕН 08.08, ждёт приёмки.** Отчёт: [archive/reports/BANK_CLUSTER_FIXPACK_2026-08-08.md](reports/BANK_CLUSTER_FIXPACK_2026-08-08.md). Деньги $0 (платных вызовов ноль), дерево НЕ коммичено, чужая зона (`eval/`) не тронута. Сделано: **G1**`DetectFamilies`+`MergeUnits` рядом с `DetectSeries`, батчи ЮНИТАМИ (серия ⊕ семья ⊕ containment-пара), параметры семей — данные скрипта; критерий промта выполнен (линейка `一转…十二转` держится одним юнитом, равнодлинные серии не регрессируют); на реальном корпусе банка coldrun-a — 150 поверхностей → 16 юнитов, наибольший 20, отказов 0 · **G2** `ConsolidationConflicts` (прогон против САМОГО СЕБЯ — класс, которого канон-проверка не видит) · **G3** стоп-таблица += сигналы/`invented`/уверенность/конвенций/противоречия, третье поле уверенности в промпт zh-ru, alias-джойн подписной карты (карта строится из тех же кандидатов, что таблица), имена эвиктнутых, per-batch «спросили/ответили» + WARN на пустой ответ рендера И классификатора, честный `TestTerminologistEmptyReplyIsLoud` · **G5** голос по фолду целевой формы при показе сырых форм + честная агрегация Via · **129** ре-джойн многословного dst в парсере банкноты · **130** дифф авто-банка с именами выпавших (без накопительного мерджа — граница владельца) · опции: `BanknoteTruncated` (колонка была структурно недостижима) и мятый `⟦TM-NO-DST⟧`. **Два адверсариальных ревью исполнены** по санкции владельца — одиночное и МНОГОАГЕНТНОЕ (13 опусов: шесть линз → опровергатели → синтез, $0). Второе нашло четыре major, которых не увидели ни соло-проход, ни первое: **измеренный регресс парсера банкноты на замороженном эталоне coldrun-a** (реплей 56 блоков: 6 строк, +0, при неизменном `parse_fail` — тихо; трактовка «неизвестное последнее поле = часть перевода» портила строки с типом вне словаря и роняла обратный порядок) · **перевод АЛИАСА становился dst терма и ехал на провод** на $0-пути при выключенном гейте — ровно тот вред, ради которого заводился `Via` · **третье поле не-число молча приклеивалось к переводу** («наставник 95%» как канон при `bad_lines=0`) · **`Held` считался по попытке**, и отчёт трижды называл ценой гарда несуществующий случай. Плюс: ordinal-очередь ревью (единственная разрешённая D39.102 форма уверенности) была обещана и не реализована; WARN строки 130 бил ложной тревогой по штатному циклу подписи; `bankParseVersion` не был поднят при изменённом правиле парса. Всё закрыто; одиннадцать мутаций пере-проверены исполнением и убиты. Первое ревью: нашло 1 major (гард «серия сильнее семьи» растворял семью ЦЕЛИКОМ, включая не-серийных членов — та же химера §B4 через гард, который её должен был предотвращать), переусердствовавший тест родства (5 ложных придержаний на корпусе), задвоенный счётчик, `Conf=0` неотличимый от «нет уверенности», мёртвый параметр парсера и 4 выжившие мутации; **всё закрыто, мутации пере-проверены исполнением и убиты**. **`make battery` зелёная ЦЕЛИКОМ** (build·vet·fmt·**lint**·test) + `-race` на затронутых пакетах. ⚠ Первая редакция заявляла «батарея зелёная», прогнав только build/vet/test — гейт lint был КРАСНЫЙ (3× errcheck), поймано приёмкой. Фикс-лист приёмки исполнен целиком: блокер lint · **MAJOR: WARN строки 130 был структурно МЁРТВ в проде** (`ownerHandled` получал сырой seed, а тот со второго прогона содержит собственные строки движка ⇒ дифф всегда пуст; risk-2 self-exclusion, который файл обходит в двух других местах; мой тест это маскировал рукодельной map) · две дыры пинов на space-run-форме · `bankParseVersion` теперь реально логируется с прогоном · три тихих отказа канала семей (опечатка в script-колонке, пол-таблица, рассинхрон словаря типов с `nickname`) · неназванная девиация ранжирования дописана в §4. тестов 685 → 717 (+33, удалён 1 вместе с недостижимой веткой, которую он пинил). **Фолд (ИСПРАВЛЕНО ревью):** ДРАФТ-волна не двинулась (голден прошёл без пере-захвата, `Source:"mined"` исключён из BASE), а **edit-волна двигается bank-only** — пак меняет поле dst дельты, значит `memory_version`; сдвиг громкий (`--resnapshot`) и репинится за $0 для единиц без терма, но для частотного терма это почти вся книга ⇒ **решение владельца, вопрос в §7 отчёта**. ⚠ **Девиация, требующая слова оркестратора:** данные семей положены НЕ в `internal/lang/data/script-series.txt`, как предлагал промт, а в отдельную bank-плоскость `internal/lang/bankdata/` — иначе `EmbeddedVersion` сдвинул бы снапшот ОБЕИХ волн (и без права на $0-репин), что прямо противоречит §3 промта. **§7 отчёта разделён на ДВА списка:** три пункта требуют решения (принимается ли сдвиг edit-волны bank-only · durable-хранение имён эвиктнутых = миграция · двойной пробел в `coldrun-a`), и пять предложены СТРОКАМИ БЭКЛОГА для оркестратора (одноруновая голова семьи — включается строкой данных, гейт замер · скрипт-слепой резолв семей/серий на кану и хангыль — долг общности к преп ja→ru · `banknote_truncated` как пол, а не счёт · пере-подтверждение `family_max_members=24` и `families_held` на длинной книге · уверенность не гейтится данными пары). В таблицу бэклога сам не писал — её ведёт оркестратор.
**→ ПРИЁМКА №15 (08.08, D39.118): ПРИНЯТ и заленден `bccf2d8`.** Вопросы §7 закрыты все (сдвиг edit-волны принят словом владельца · миграция не заводится, строка 159 · двойной пробел закрыт замером 0/585 внутренних); девиация bankdata-плоскости и инверсия ранжирования ратифицированы; строки 128/129 закрыты, 130 пере-скоуплена, 154159 заведены. Поправки приёмки — ревью-шапка отчёта (сдвиг и при выключенном гейте · classify-чекпойнты перекупаются · зазор зеркальной фикстуры принят риском).
**ПАК «ДВИЖКОВЫЕ БЛОКЕРЫ КОНТРАКТА» (строки 99 · 100 · 101 · 125 · 145) — ПРИНЯТ И ЗАЛЕНДЕН 09.08 (D39.122, код `0e69bc1`; приёмка тремя раундами, ревью-шапка отчёта ПЕРВИЧНА над телом пинга; финальные формы артефактов — в пинге платформе).** Отчёт: [archive/reports/CONTRACT_BLOCKERS_2026-08-08.md](reports/CONTRACT_BLOCKERS_2026-08-08.md). **Деньги $0** (платных вызовов ноль: read-пути на стенде + мок-провайдер), дерево НЕ коммичено, чужие зоны (`eval/`, `platform/`, `frontend/`) не тронуты, эталон `coldrun-a` только читался (для замеров сделана копия в песочнице). **`make battery` EXIT=0 ЦЕЛИКОМ** (build·vet·fmt·**lint 0 issues**·test -race); тестов **717 → 749** (+32, удалённых 0, дифф `^func Test` посчитан исполнением); голден без пере-захвата, снапшот и `RequestHash` пак не двигает. **АДВЕРСАРИАЛЬНОЕ РЕВЬЮ ИСПОЛНЕНО (§9 отчёта): два независимых верификатора, ОБА СЛЕПЫЕ к отчёту** (один судил промт против диффа, второй охотился ВНЕ карты отчёта) — **оба независимо вынесли один и тот же несущий дефект, которого соло-проход не увидел.** Семь находок закрыто, каждая правка пере-проверена УБИЙСТВОМ МУТАЦИИ: **(А)** ключ годности манифеста снимался ВТОРЫМ чтением исходника уже после нарезки — файл, переписанный внутри окна ~1.4 с, давал документ со СТАРОЙ структурой под НОВЫМ хешем, проходил валидацию вечно и не опознавался как протухший (опровергало моё же заявление «состояния «подан устаревший знаменатель» не существует по построению»); теперь отпечаток снимается ДО чтения и пере-снимается ПОСЛЕ, расхождение = манифест не пишется · **(Б)** `units[]` есть проекция `outputUnits`, ветвящейся по форме пайплайна, а формы в ключе не было: снятие редакторской стадии не двигало ни одного входа ⇒ дерево единиц валидировалось, описывая группы, которых прогон не отгружает (добавлен `shipping_wave`) · **(В)** `variants[]` машинной таблицы уезжал готовой строкой «`<dst> ×<n> (proposed for <via>)`» — нарушение правила, объявленного доккоммантом того же DTO двумя абзацами выше (теперь `{dst,chunks,via}`, метку человеческим таблицам собирает `Label()`, их байты не изменились) · **(Г)** машинная таблица писалась только при НЕПУСТОЙ дельте, то есть после подписи всех термов на диске оставался байт-равный файл прошлого прогона и экран подписи пере-предлагал бы подписанное (пустая дельта теперь переписывает её пустой; текстовый сайдкар намеренно не трогал — принят D39.118) · **(Д)** доккоммент `translate` заявлял «`--ceiling-usd` caps what THIS run may spend», тогда как леджер сравнивает потолок с НАКОПЛЕННЫМ committed+reserved книги — для платформы это разница между «дойти до $X» и «потратить $X» · **(Е)** возвращаемый `withText` оба вызывателя выбрасывали (гард из доккоммента в коде не существовал), плюс `Status` без манифеста резал книгу ДВАЖДЫ — вторым результатом стал провайдер чанков с текстом · **(Ж)** `loadManifest` не проверял внутреннюю согласованность, а счётчики идут прямо в `make(...)`: `chunks_total:-1` в отредактированном руками сайдкаре ронял `tmctl status` паникой. Плюс `f.Sync()` перед rename. ⚠ К утверждениям самого ревью применена та же дисциплина: два его пункта пере-проверены и НЕ приняты как дефекты (экспорт банка на exit-2 срабатывает — `TranslateBook` возвращает nil при флагах; «перф-клейм не воспроизводится» — верификатору было запрещено писать файлы, а замер требует записать манифест). **Формы артефактов (названы явно, приёмке пере-ранить):** **99** — поле `progress:{draft:{done,total},edit:{done,total}}` в `StatusReport` И в КАЖДОМ элементе `chapters` (цена К-10 контракта), плюс строка `Phases (units resolved by wave)` в человеческом выводе; единица обоих счётчиков — выходной ЮНИТ (общий знаменатель), `done` = РАЗРЕШЕНО волной (ok/flagged/skipped), иначе индикатор не дотягивает до собственного знаменателя на книге с одним флагом; волны, которой нет, `total:0`; ⚠ следствие: `edit.done ≥ done` ровно на гейт-флагнутых · **100** — сайдкар `<project_db>.manifest.json` + новая $0-команда `tmctl manifest` (дерево нужно ДО прогона: `not_started`); **id главы = хеш ИНГЕСТИРОВАННОГО текста главы** — переживает пере-чанковку, правку правила заголовка и правку/вставку СОСЕДНЕЙ главы (номера сдвигаются, id нет); годность решает КЛЮЧ (исходник+чанкер+сегментация+форма пайплайна+пак+embed+norm), протухший = откат на полную нарезку, состояния «подан устаревший знаменатель» нет по построению · **101**`<project_db>.bank-stop.json`, ПОЛНАЯ таблица теми же полями, что текстовая (вкл. Signals/Invented/Conf/Conventions/Contradicts), `conf: null` для «роль промолчала» (≠ 0), списки списками; семантику подписи не трогал — это ЧТЕНИЕ · **125**`<project_db>.bank.json`, весь банк тремя статусами, `id` из ключа уникальности (НЕ автоинкремент `glossary.id` — он пере-указывает на каждой пересборке банка), пишется на банк-стопе (оба исхода), на завершении прогона и сразу после сида · **145** — флаг `--ceiling-usd`у `translate`, и у `redrive` — тот тоже тратит), только этот прогон, `book.yaml` не пишется, ноль/отрицательное/нефинитное = отказ ЗАПУСКА, валидатор Р7 не тронут. **ЗАМЕР строки 100 (стенд 23 МБ, 2283 раздела, 4276 юнитов, 5071 чанк; команда — в §2.4 отчёта; ПОСЛЕ фикс-раунда ревью):** `status` wall **1.42/1.49/1.36 c → 0.07/0.08/0.07 c**, `export` **1.39/1.40/1.40 c → 0.10/0.06/0.07 c**, `report` **не изменился** (граница, §2.4); проекции с манифестом и без него сверены `cmp` — байт-равны. **Цена строки 145 предъявлена ИСПОЛНЕНИЕМ:** тест рендерит payload обоих волновых снапшотов и требует отсутствия потолка, плюс двигает `Ceilings` и требует неизменности `BriefHash`; приор промта подтверждён — resume после ceiling-стопа с бо́льшим аргументом доводит книгу до конца ровно за 6 вызовов на оба прогона (переигровка из чекпойнтов, не перепокупка). **ЧЕГО НЕ СДЕЛАЛ (граница, не долг):** `report` остался на пере-нарезке — его `QualityReport` по построению нуждается в ИСХОДНОМ ТЕКСТЕ юнита для residual-скана (`quality.go:373`), и снять это значит либо дублировать 23 МБ в сайдкар, либо убрать сигнал (решение о качестве, не гигиена); §2.4 отчёта. Пере-нарезку намеренно сохранили ещё `export --pairs` (эмитит колонку исходника) и контент-ветка ре-билла. **ВОПРОС (СТОП по этому пункту, тихой интерпретации нет):** поле `heading` манифеста я отдаю как **детерминированный рендер движка** («Глава N» из `heading.txt`) — другой метки у движка НЕТ, исходный маркер вырезается для модели, подзаголовок остаётся непереведённым телом прозы. Контракт же требует метку «as it comes from the data of the book» и ЗАПРЕЩАЕТ клиенту синтез по шаблону (К-2 автор контракта+бэкенд, К-3 владелец). Чанкер, чтобы сохранять подзаголовок отдельным полем, я НЕ менял. **ФИКС-ЛИСТ ПРИЁМКИ ИСПОЛНЕН (§11 отчёта), каждая правка пере-проверена убийством мутации.** **F1 (MAJOR, единственная содержательная находка):** объявленная в §2.2 граница была ЛОЖНОЙ — `unit.id` строился как `<chapterID>:<FirstChunkIdx>`, а leader-индекс первой единицы главы всегда 0, значит «`<глава>:0`» переживал ЛЮБУЮ пере-нарезку, указывая уже на другой текст, и потребитель читал «id на месте ⇒ якорь цел». Фикс: в `unit.id` вошёл ТЕГ РАЗРЕЗА (хеш `chunker_version` + сегментация + форма пайплайна) ⇒ **форма id изменилась на `<chapterID>:<cutTag>:<firstChunkIdx>`** — платформе читать как новую форму артефакта; доккоммент и таблица границ переписаны. · **F2:** абортированный `redrive` оставлял `.bank.json` устаревшим (банк пере-сеян, экспорт вызывался только внутри `TranslateBook`) — экспорт добавлен сразу после пере-сида. · **F3:** «майнинг не сконфигурирован» не чистил `.bank-stop.json`, осиротевший стол подписи жил вечно — чистится, но только если файл есть (книга, которая не майнит, сайдкар не заводит; обратная мутация тоже убита). · **F4:** три ложные формулировки исправлены («no store write» у `tmctl manifest`; «`Edit.Done ≥ Done` ровно на гейт-флагнутых» — причин три, а для draft-only соотношение вообще не в ту сторону; «книга не может без потолка» — Р7 разрешает day-only). · **F5:** якоря `file:line` отчёта пере-сняты грепом. · **F6:** `backend/README.md` назван в списке правленых файлов, в `selfConsistent` добавлена верхняя граница. **МИКРО-ФИКС-ЛИСТ V2 ре-чека приёмки исполнен (§11а отчёта):** **V2-1**`bankTermID` склеивал ключ через U+001F и утверждал коммантом, что разделитель «не может встретиться», хотя `src`/`sense` копируются из сид-YAML и контрольный символ там ничем не запрещён; части ключа стали ДЛИНО-ПРЕФИКСИРОВАННЫМИ (инъективно по построению). ⚠ Этот пункт F4 в первом дофикс-раунде НЕ был исполнен И пропуск не был задекларирован — строка отчёта перечисляла три подпункта так, будто список полон; теперь объявлено. · **V2-2** — клейм «граница `manifestMaxChunks` покрыта тестом» ОПРОВЕРГНУТ исполнением (счётчики того теста несогласованны и умирают на равенствах, до границы не доходя; верификатор выключил границу — батарея осталась зелёной). Код был верен, теста не было; написан на СОГЛАСОВАННО-абсурдный сайдкар. · **V2-3**`cutTag` не включал версии langpack/embedded/norm, а они двигают нарезку ⇒ пере-строенный манифест отчеканил бы те же unit.id над другим текстом (класс F1, узкий триггер); три версии добавлены. · **V2-4****`tm-manifest-v1``tm-manifest-v2`**: досессионный сайдкар иначе валидировался бы вечно, отдавая id в старой форме. ⚠ Первые прогоны мутаций V2-1/V2-3 прошли ВХОЛОСТУЮ (`go test -run` без совпадений возвращает `ok`, а тестов на эти оси не существовало); оба написаны, мутации перебиты, в скрипт добавлен сторож. **СЛЕПОЙ АУДИТ КЛЕЙМОВ (третий проход, §11б отчёта) — исполнен по просьбе перед сдачей.** Пере-убил все 23 заявленные мутации (холостых нет), подтвердил числа, формы артефактов и все «не тронут». Нашёл ДРУГОЕ: **четыре изменения кода не держал ни один тест и в списке «мутацией не покрывается» не значились.** Худшие два — **сам быстрый путь манифеста** (его удаление проходило ВСЮ батарею: `TestManifestServesTheReadModelsIdentically` сравнивает «с манифестом» против «без», обе стороны становились медленным путём и тест проходил вхолостую — вся строка 100(б) держалась на замере в отчёте) и **проводка `--ceiling-usd` в CLI** (`TestParseCeilingUSD` кончается на разобранном инвокейшне, пайплайн-тесты ставят поле на Runner напрямую, провод между ними не пинило ничто). Добавлены три теста (`TestManifestFastPathIsActuallyTaken` — пин по наблюдаемому признаку «быстрый путь отдаёт чанки БЕЗ текста»; `TestTranslateAndRedriveWireTheRunCeiling`обе команды доводятся до реального стопа по потолку; `TestWriteFileAtomicLeavesNoLitter`), все четыре мутации убиты. Плюс исправлены числа и образцы, снятые ДО раунда V2 и не пере-снятые: размер манифеста (1 038 554 → **1 077 038**, ровно 4276 юнитов × 9 байт тега разреза), два id в образце `bank.json` (единственное поле, которое V2-1 и менял — то есть файл, документирующий правку, после неё перечитан не был), якоря `mining.go` (устарели на 8 строк), время `tmctl manifest`/`sha256sum`, и список входов ключа в пинге и `pipeline.puml` не называл `shipping_wave`. ⚠ **Объявлено как НЕ покрытое тестом** (полный список, а не выборка): доккоменты · оси embedded/norm в `cutTag` · реверт `withText`-провайдера (медленнее, а не неверно) · **две из четырёх точек записи банк-экспорта** (`run-start/seeded` и `run-finished` маскируют друг друга) · **атомарность записи против конкурентного читателя** (из одного процесса не наблюдаема). **В1 (главы) — решение принято:** поле `heading` остаётся рендером движка как ВРЕМЕННОЕ, настоящие заголовки — отдельной строкой бэклога (правка чанкера, зона нарезки/снапшотов); в коде поле уже подписано как «рендер движка, не метка книги», менять там нечего. **Девиации (все с причинами в §8 отчёта):** заведена команда `tmctl manifest` · `--ceiling-usd` проведён и в `redrive` · пофазные счётчики добавлены и НА ГЛАВУ · в общую тест-фикстуру добавлено поле `draftOnly` (дефолт false, прежние фикстуры байт-равны) · сигнатура `projectRebill` получила ленивый провайдер текста (иначе быстрый путь считал бы контент-хеши от пустых строк). В таблицу бэклога сам не писал — её ведёт оркестратор.
## Блоки секции «Полигон» (закрытые экспы 1821, банк-арбитраж)
**ПРИЁМКА ЭКСП-21 (параллельный оркестратор, 08.08, D39.117): ПРИНЯТ.** Гейты пере-гнаны исполнением (`verify_report.py` 90/90 код 0 · `itog.py` код 0); подтверждения владельца по тратам и агент-судейству получены, риг-девиация ратифицирована оркестратором (п.2в ноты); диспозиции строк 142/65/106/55 — D39.117 п.3. Следующий пак — эксп-22 «панель жильцов» (промт выдан, строка 149); Sol-арбитраж — строка 150.
**ЭКСП-21 ЗАКРЫТ 08.08 — тело отчёта дописано, несущие числа поставлены под гейт. Перепрогон НЕ ТРЕБУЕТСЯ.** Два независимых агента прошли пак навстречу (снизу вверх: заказ промта → посылки → код → результаты, с запретом открывать ИТОГ до последней ступени; сверху вниз: каждое утверждение ИТОГа → число → сырьё → код → посылка). Оба вердикта совпали: все несущие числа воспроизводятся из персистированного сырья за $0, расхождения РЕДАКЦИОННЫЕ, а не замерные. Сделано ($0, без покупок): **§11§18 написаны** (прибор · свод двух проходов · инструменты · дрейф · роутинг · деконфаунды · Ф2б · пост-хок аудиты) — до этого тело обрывалось на §10, и читатель уносил три СНЯТЫХ вывода третьей редакции; над §10 поставлен баннер снятия · заведён **`eval/role_topology/itog.py`** — пере-считывает КАЖДОЕ число блока ИТОГ из сырья (прежде нога 2×2, кластеризация, L2O, контрасты Ф2б и отборщики арма G считались ВНЕ дерева и пути воспроизведения не имели) · гейт вырос **63 → 90 проверок**, добавлен блок `§ИТОГ`: прежде он сторожил §2, деньги и батарею — и ни одного числа блока решения · `absjudge --score4` печатал ПУСТУЮ таблицу (в `FAMILY` нет контрастов Ф2б) — заведено `FAMILY_2B`, провенанс прохода 4 объявлен НЕПОЛНЫМ (в ключ впечатано неприменимое семейство Ф2а).
**Правки чисел по находкам аудитов:** значимый контраст **`E2/A_law` 2.06 Holm 0.0443** в таблице ИТОГа отсутствовал — напечатан · «контроль воспроизведён ТРИЖДЫ (+2.50/+2.75/+2.81)» сшивало РАЗНЫЕ армы и панели (+2.50 — это `A/F3`, а `A_law/F3` даёт +1.75 пул / +2.75 abs3 / +2.81 abs4) — снято · расход фазы Ф2б **$0.11819**, а не $0.10916 (печатался только тег `p2b-*`, без старых `rp-*`) · цена ремонта **$0.00298** (боевой C2), а не $0.00290 (испорченный прогон C) · QE на самом крупном контрасте даёт **r=0.32 — АНТИкорреляцию**, а не слепоту (+0.06) · оси `D/A` по пулу ЯЗЫК 1.34 / ФОРМА 1.09 · доля выигрыша арма G считалась по маршрутизированным окнам вместо оставленных стражем. ⚠ Числа прежнего §15 «43/91» и «r=+0.06» не воспроизводятся ни одним вариантом счёта — помечены «утрачено инцидентом 08.08, D39.113, в дереве кода пути нет».
**Устарело в записях ниже** (правится здесь, тела не трогаю): пак **$5.15932**, а не $4.92166 · гейт **90** проверок, а не 63 · **Ф2б потрачена** — армы C/E куплены на $0.10916, точечный ремонт значимо хуже переписывания (`C2/A_law` 3.75 Holm 0.0006) и годен как МЕХАНИЧЕСКИЙ ГЕЙТ перед редактором (брак 5 клеток против 10 и 23, цена вдвое) · **дрейф отозван НЕ целиком**: негодны только ШОВ и рост словаря, покрытие отрезка и канона восстановлены и несут единственный довод ПРОТИВ связки (у неё есть отказной режим: 9/10 глав против 10/10, эхо-мина воспроизводима — глава 11 дала китайский исходник во всех трёх попытках).
**Линтер зоны заведён** (`ruff.toml`, `select = ["F","E9","PLE","B"]`) — повод прямой: регрессия `med = med(costs)` прошла в дерево незамеченной. Все 36 находок исправлены, искажающих числа среди них не было; опасный класс — `zip` без `strict` (тихий рассинхрон единиц при фильтре пустых текстов), закрыт.
**ОСТАЛОСЬ ВНЕ МОИХ РУК:** три пункта **CONFIRM/DENY владельцу** (санкция на траты 07.08 · амендмент «судья пака не покупается за токены» — на нём стоят ВСЕ числа §11§18 · правка требований к ригам) · **слепое чтение владельца** (пакеты и ключи готовы, $0, заказано промтом) · **неконтаминированный zh-срез** — без него величины, но не направления, непереносимы.
**⛔ ИНЦИДЕНТ 08.08 00:13, вина оркестратора №15:** агент проверочной панели выполнил `git reset; git checkout -- .` в реальном дереве. Откачены незакоммиченные правки: отчёт `21-role-topology.md` потерял §11§16 (четвёртая и пятая редакции, армы G и дрейф, пост-хок аудита), `verify_report.py` — точное сличение чисел и проверки §14, `absjudge.py` — поправку на степени свободы, `drift.py` — счётную метрику. **Сырьё цело полностью** (1672 файла в `~/books/role-topology`, git туда не заглядывает) ⇒ потеряна ЗАПИСЬ, не замер. Скрипты восстановлены и проверены исполнением: числа воспроизвелись из сырья точь-в-точь (148/163 · 91/163 · 138/163 · 139/163). Отчёт восстанавливается из сырья; всё, что восстановить нельзя, помечается «утрачено инцидентом 08.08, D39.113». Резервные копии зоны и сырья сняты вне репозитория.
**⚠ ЭКСП-21 ПРОШЁЛ НЕЗАВИСИМЫЙ АУДИТ ПО 4 ДОМЕНАМ (посылки · код · выводы · их соотношение), $0.** Главное: **прод-редактор обязан нести закон-блок** — без него арм единственный ломает терминологию (покрытие канона 0.566 против 0.917 у черновика, p=0.003), при неотличимом качестве и +5% цены · **70% заголовка +2.50 объясняется ЧЕРНОВИКОМ**, а не вторым проходом (тот же редактор над другим черновиком: 7.66 против 5.91, 14/16, p=0.006) · **нога 2×2**: дорогая модель в ОДИН проход неотличима от дешёвого черновика (+0.50, p=0.48), она же в позиции редактора даёт +2.50 ⇒ **работает ТОПОЛОГИЯ, а не жилец**. Отозвано: дрейф §14 целиком (метрика ШОВ в коде не считается ничем), «доказанный потолок» роутинга (верное основание — экономика: G берёт 25% выигрыша за 55% цены, хуже случайного), «+114% токенов» (артефакт: 68% разрыва — кэшированный вход). ⚠ **Нарушения процедуры к сведению владельца:** $2.62 (52% пака) сожжено на нарушении заказанного контроля судей; потолки Ф1 и Ф2а пробиты без пинга; главный zh-замер на книге с узнаванием 4/5 вместо заказанного свежего среза; Ф2б $2.99 НЕ потрачена — армы C/E не куплены при живых деньгах. **Все zh-числа ПРЕДВАРИТЕЛЬНЫЕ до неконтаминированного среза.**
**ЭКСП-21 «ТОПОЛОГИЯ РОЛЕЙ»: замер закончен ПЯТОЙ редакцией, отчёт `docs/experiments/21-role-topology.md`.** Пак целиком по факту диска **$4.92166**, из них **$0.18830 оплачено за ПУСТОЙ выход** (18 вызовов: 12 фильтр контента, 6 `length`; крупнейшие — по $0.076 у `glm-5.2` на скрине); успешные $4.86187; ⚠ прежние «$0.19191, 43 вызова» неверны: счётчик смотрел только поле `content`, а проба контаминации пишет в `answer` — её 25 записей содержательны; судейство четвёртой и пятой редакций — **$0** (агенты сессии вместо платных судей, амендмент владельца 07.08). Числа сверяются `eval/role_topology/verify_report.py` — 63 проверки, проходит. ⚠ Свип приёмки 07.08: 4 проверки НЕ СПОСОБНЫ были покраснеть, 18 слепы к префиксу числа, §14 не покрывался вовсе; починено классом (`num_in`, точное вхождение), проверено сломом. Читать гейт как «грубые расхождения отсекаются», а не «числа сверены». Риг пятой редакции зафризен `6d79dfb` ДО выпуска пачки.
**Инструмент сменён по находке, а не по вкусу.** Четыре независимых агента-судьи, получив ПАРНЫЕ пакеты с зеркальной раскладкой, все четыре свернули их обратно: оценили каждый уникальный текст ОДИН раз против исходника и разнесли числа. Оснастка переписана под это (`absjudge.py`): абсолютная шкала, позиции не существует как измерения, 138 прочтений вместо 320, семь контрастов вместо четырёх. ⚠ Требование ригов «зеркальная раскладка/оба порядка» (промт стр.59) писалось под ПЛАТНОГО судью и на агента не переносится — правка требований подлежит ратификации оркестратором.
**ЧТО УСТАНОВЛЕНО ТВЁРДО** (Холм по объявленному семейству из 7, ноль вылетов leave-one-out, воспроизведено ДВУМЯ независимыми проходами по 16 судей каждый): второй проход поверх черновика покупает качество — `A/F3` +2.50 [+1.56, +3.47] Holm 0.0004 и `B/F3` +2.44 [+1.81, +3.19] Holm 0.0002 (⚠ не независимо: делят опорный арм F3, прямое `A` против `B` даёт +0.06 p=0.95); ⚠ эффект держится на ОДНОЙ оси — без ЯЗЫКА `A/F3` падает до +0.75 Holm 0.407 · однопроходка С МАНДАТОМ перевёрстки проигрывает связке крупно, `D/A` 3.31 [4.47, 2.16] Holm 0.0014 (вклад делится: ЯЗЫК 1.34, ФОРМА 1.09).
**ЧТО НЕ УСТАНОВЛЕНО:****однопроходка без мандата против связки порога НЕ проходит**`D_/A` 2.00 [3.34, 0.62], Holm 0.063. Направление воспроизвелось в обоих проходах, интервал ноль не накрывает, но формально утверждение не доказано; прежний заголовок «связка бьёт однопроходку» снят. Так же не проходят: мандат перевёрстки `D/D_` 1.31 Holm 0.109 · закон-блок `A_law/A` 0.75 · выбор движка `A_law/B` 0.69. ⚠ «Не обнаружено» ≠ «нет»: различимый эффект оснастки ≈2 ошибки.
**ГЛАВНЫЙ МЕТОДИЧЕСКИЙ РЕЗУЛЬТАТ ПАКА — шум разложен: компоненты СОПОСТАВИМЫ.** Пол (две генерации одного арма, ОДИН судья, уровень сокращается точно) var 7.98 = 2σ²ген+2σ²судья; кросс-проход (один и тот же текст, два судьи, уровень снят центрированием) var 4.07 = 2σ²судья (с поправкой на степени свободы) ⇒ ⚠ **разложение шума НЕ УСТАНОВЛЕНО:** три способа счёта из тех же данных дают «генерация больше» (1.48/1.34), «поровну» (1.43/1.40) и «судья больше» (корреляция пола между проходами r=0.30 ⇒ 0.65), и ни один не отличим от остальных при n=16. Считать оценкой порядка величины; ⚠ какая больше, НЕ установлено: бутстрап даёт отношение 1.08 с ДИ [0.58, 1.44], P(генерация больше)=0.64. Судейская компонента подтверждена ПРЯМЫМ повтор-тестом (те же задания побайтно, новые судьи, σ 1.29, r=0.707); рандомизация раскладки стоит 0.08 sd, то есть бесплатна. Планирование: ×2 судьи дают SE 0.706→0.622 за $0, ×2 единицы — 0.706→0.500 за ≈$0.48. ⚠ Число исправлялось ДВАЖДЫ по адверсариальному ревью: «шум в генерации» опиралось на совпадение двух sd (совпадение дисперсию не раскладывает), «шум в судье, 73%» считалось на СЫРОЙ кросс-разности, куда входит разница уровней строгости, которой в поле нет. Свод и разложение считаются `absjudge.py --pool`, в дереве (прежде считались вне его).
**ЭКОНОМИКА — РАЗМЕН, не доминирование.** Парно связка ДОРОЖЕ однопроходки на +0.00096/единицу, 11 из 16 (≈+20%), ⚠ но как УСТАНОВЛЕННЫЙ факт не держится: собственный точный тест даёт p=0.061, интервал накрывает ноль при удалении любой из 9 единиц. ✔ По ТОКЕНАМ жёстче: +7601 (+114%), 16 из 16, p<0.0001 долларовая разница есть артефакт прайс-листа. Прежнее «связка дешевле на 6 сравнивало медианы маргиналов и переворачивалось при парном счёте. Жилец роли редактора `deepseek-v4-pro`, обоснование ЦЕНОЙ: полная связка $0.00580 против $0.01025 у `glm-5` (парные средние), не качеством.
** ДЕТЕРМИНИРОВАННЫЙ КОНТУР ВЫВОД НЕ ПОДПИРАЕТ.** Батарея, пересчитанная на ТЕХ ЖЕ текстах, что судились, даёт другой порядок: `D` (худший по судье) лучший по правилам. Расхождение локализовано в слипании абзацев, которого не проверяет ни одно правило. Контуры смотрят в разные части оси ФОРМА.
**ЧЕТЫРЕ АДВЕРСАРИАЛЬНЫХ РЕВЮ, находки приняты без спора.** Сняты клеймы: «позиция исчезла по построению» (наклон +0.147 на шаг метки, измерен и поправлен) · «слипание у редактора не штрафуется» (штрафуется, 6 единиц из 16) · «связка дешевле» · «шум в генерации» · «ФОРМА конфаундом быть перестала» (размен внутри оси остался, лишь сошёлся в ноль). Починены исполнением: касса не видела оплачиваемых ею тегов `bo4-*` ($0.29309 мимо потолка) · гард пропускал `python -c` из каталога зоны · разбор ответов утаскивал соседнюю строку при пустом поле · контроль пола мерил разницу черновиков · приёмка требовала меньше, чем обещано судье.
**ОСТАЛОСЬ НЕЗАКРЫТЫМ — требует владельца:** слепое чтение ВЛАДЕЛЬЦА (единственный контур вне семейства сессии; агентские читатели семейно зависимы) · армы **C/E/G** заказа не построены (точечный ремонт, обратная связка, маршрутизация; `route_arm.py` в текущем виде не запускается) · дрейф на связном отрезке 810 глав · пара en под абсолютным ригом · арбитр вне семейства (нужны кредиты xAI). **Потолки ФАЗ промта пробиты:** Ф1 $1.07473 против $1.00, Ф2а $3.887 против $2.50; верификатор сверяет отчёт с сырьём, но потолки промта НЕ сверяет.
**ВТОРАЯ ПАРА en→ru** (Kristoff, контаминация 1/5 против 4/5 у основного материала) заведена сверх промта по слову владельца 07.08. Пар-специфика боевого промта редактора измерена **4 места из 42 строк**; пар-пакет `eval/role_topology/prompts/en-ru/` заведён правкой только их новая пара стоит ~4 клауз в данных, правки Go не требует.
** ВНЕШНИЙ БЛОКЕР ВЛАДЕЛЬЦУ: кредиты xAI исчерпаны** (HTTP 403 на 250 голосах). Второй судья заменён на `gemini-3.1-flash-lite` через положительный контроль (декой 6/6 в обоих порядках). Grok нужен и как судья 18+ по quirks единственный живой на эротике.
**Уточнение к quirks 00:** оговорка «на violence/SFW Gemini-судья жив» на вебновелле держится не целиком 10 клеток пришли БЕЗ объекта сообщения с `finish_reason: content_filter: PROHIBITED_CONTENT`. Google непригоден как ЕДИНСТВЕННЫЙ второй контур на этом материале.
**Эхо-мина черновика измерена как частота:** 5 ре-генов на 16 единиц zh (31% против документированных 15%), 0 на 12 единицах en.
**Открыто:** дрейф на связном отрезке · армы C/E/G не гнались · банкнота как канал не замерена · разброс судьи-замены на повторе не измерен · чистый контраст мандата (у D_ своя вёрсточная строка, у D блок из 4 правил, промт ×1.92) · слепое чтение владельца · цена черновика, который реально правят армы.
Не коммичу, кроме пре-рег-фриза; отчёт 21, харнесс `eval/role_topology/` и этот пинг на лендинг оркестратору.
**Поправки приёмки №15 (D39.108) к пингам ниже — шапки отчётов первичны:** verify_report = 20 проверок, не 19 · «вся сессия $2.1793» включала $0.107335 сырья research/24 фактически 18+19+20 = $2.0720 · решающий замер §5.2 не персистирован со слов»; направление держит §5.3) · цена раунда починки не входила в дифф (lu/ON 0.891.08) · offblock-числа сняты до-фризовым стемом.
**ЭКСП-20 «РОЛЬ РЕДАКТОРА»: прогнан, отчёт `docs/experiments/20-editor-role.md`, $1.2285 из потолка $2.00 (поднимался дважды, оба раза объявлено ДО прогона).** 7 контрактов × до 5 моделей × 2 целевых языка + арм починки + три раунда слепого судейства. Числа отчёта сверяются с сырьём командой: `eval/editor_harness/verify_report.py` (19 проверок, проходит).
**Роль редактора измерена и узка:** в бейк-оффе «перевод с нуля против редактуры черновика» второй проход выигрывает ОДНУ ось из шести русскую прозу; верность и общий вердикт ничьи. Совпадает с ратифицированным D32.1(г).
**Ответ «нужен ли редактор» ЗАВИСИТ ОТ ПАРЫ «модель × роль» и переворачивается:** у `glm-5` связка выигрывает всё (вёрстка 6:0), у **`deepseek-v4-pro` модели, стоящей редактором в `pipeline-c1.yaml` СЕЙЧАС, второй проход отрицателен** (общий 1:5, обе целевые оси 3:3, при этом ломает фактуру).
**Цену держит ПОИСК, а не правка:** арм «только найди» 2.14× от переписывания; починка по флагнутому спану 12/12 дефектов снято на обеих моделях за **$0.000173** (luna), в 5-6× дешевле поиска. Это механизм конкурентов (AiNiee, LinguaGacha), которого у нас нет (`research/22:176` «флагаем, не чиним»).
** Методическая находка, обесценивающая часть выводов:** разброс судьи на ИДЕНТИЧНОМ входе 56% единогласия, 33% на несущих осях судейство не разрешает разницу меньше ~2:1; перекрёстная проверка понижена до «не разрешает». Норматив: мерить инструмент ДО того, как им мерить.
**Отозвано из эксп-19 дважды:** «дифф дороже» сужен до пары «модель × целевой язык» (`deepseek-v4-pro` 2.83 на ru против **0.67 на en**); а объяснение, которым эксп-19 снял арм E, ОПРОВЕРГНУТО репликацией с выверенным по проводу зеркалом.
**Пинги бэкенду (чужая зона, не правлю):** (1) боевой гейт `disposition.go cjkEchoThreshold = 0.15` не ловит микро-утечку `gpt-5.6-luna` роняет иероглифы в русскую прозу в 3 окнах из 6 при доле 0.5%; (2) банкнотный канал похоже тихо выключен блока нет в `prompts/zh-ru/translator.md`, `translator-banknote.md` ни одним конфигом не выбирается, при том что холодный прогон банкноты собирал (56 из 128 ответов).
Не коммичу; отчёты 18/19/20, правка квирков и пинг на лендинг оркестратору.
**ЧЕТЫРЕ ФАЛЬСИФИКАЦИИ Q4b ПРОГНАНЫ + РЕВЬЮ ПОСЫЛКИ + АДВЕРСАРИАЛЬНОЕ РЕВЬЮ РЕЗУЛЬТАТОВ (05.08).** Пре-рег фризнут `4d1d9e5` ДО платных вызовов; 90 вызовов `deepseek-v4-pro`, все `finish=stop`, **$0.349566 из потолка $0.50**, прогон верифицирован (`eval/premise_review/verify_run.py`: теги ровно плановые, деньги сошлись вторым путём до 1e-6, малформед 0). Отчёт `19-editor-contract-q4b.md` §4–§6.
**Итог армов:** G устоял (комплаенс 0.966 на боевой единице 0.90) · N ПАЛ do-nothing покупается сужением мандата (NO_CHANGE 4/18 против 0/36) · L не засчитан как фальсификация (посылка про ручку `low` не выдержала пере-счёта) · E не засчитан (зеркало промпта конфаундировано на проводе).
** ОТЗЫВ ПРАВКИ ИСТОЧНИКА ИСТИНЫ, сделанной этой же сессией:** `00-provider-quirks.md` §3б звено (а) `low` на pro срезает размышление на треть») ОТОЗВАНО решающее правило «диапазоны не пересекаются» при n=3/3 воспроизводится НУЛЕВЫМ вмешательством (два блока дефолта на побайтно одном запросе разделяются так же и с тем же размером ×1.47). Строка §3а (`low``high` для pro) ВОЗВРАЩЕНА В СИЛУ до замера с мощностью. Звено (б) про `xhigh` в силе и усилено. **Оркестратору: если правка §3б куда-то процитирована — сверить.**
**Главное по существу:** «дифф дороже full-regen» реплицировано ТРИЖДЫ (2.913 · 1.677 · 2.468, последнее на боевой единице и дефолтном режиме), но ПРИЧИНА не установлена: обе гипотезы (несъёмный thinking · русская фертильность) остались непроверенными. Размышление = 95% цены диффа, растёт с объёмом ВХОДА (×2.78 при входе ×3.24, p=0.0003) и сужением мандата НЕ снимается. строку 106 закрывать выводом «диффы не берём» преждевременно; контракт механически исправен, проигрывает режим.
**Проба 18 §C.5 (дозамер, $0.081326):** гипотеза «чемпион glm-5 был искалечен выключенным мышлением» ОПРОВЕРГНУТА с мышлением 24/45 против 25/45 при цене 4,4× ограничение 5 отчёта 18 снято; на роли терминолога разум не конвертируется в качество ни у одной проверенной модели.
Не коммичу ничего, кроме пре-рег-фриза; отчёты и правка квирков на лендинг оркестратору.
**КОНТРАКТ РЕДАКТОРА: арм Q4b прогнан впервые — строка 106 закрыта эмпирикой (расширение зоны по слову владельца 05.08), отчёт `docs/experiments/19-editor-contract-q4b.md`, потрачено $0.194006 из потолка $0.40.** Пре-рег зафризен `52e12f3` до первого платного вызова; аппликатор самопроверен 9/9; 60 вызовов `deepseek-v4-pro`, все `finish=stop`, реплики ×3 на арм; материал переиспользован из пробы 18 ($0). Арм пре-регистрирован в `exp15:108` и **не гонялся ни разу** с момента постановки.
**(1) Формат-гейт ПРОЙДЕН: комплаенс 0.975 / 0.949** при пороге 0.90, малформед 0/36 опасение `research/19` слабые модели на edit-форматах хуже, чем отдавая текст целиком») на боевом редакторе и русской прозе НЕ воспроизвелось; толерантный apply отбросил 6 операций из 158, черновик в этих местах цел.
**(2) ЭКОНОМИКА ПЕРЕВЁРНУТА несущий результат: дифф-редактор в 1.52× ДОРОЖЕ full-regen** ($0.004157 против $0.002686 за вызов). Разбор выхода: у диффа **96% completion уходит на размышление** (3742 из 3904 ток.) против 58% у full-regen поиск уникального якоря загоняет модель в долгую обдумку, а у DeepSeek reasoning биллится ВНУТРИ completion. **довод `research/15` «дифф режет output-токены редактора, а это ~90% COGS» на thinking-модели НЕ ДЕЙСТВУЕТ и инвертируется**; ручки бюджета размышления у v4-pro нет (`low``high`), конфигом не чинится.
**(3) Дифф выигрывает структурно на омиссии:** потеря атомов полярности 01 против 711 у full-regen (~10×) «структурно omission-safe» подтверждено; числовые «потери» диффа оказались ложными (он ПРАВИЛЬНО приводит доли к процентам), после вычитки 0.
**(4) На fidelity-классе посадок паритет 100%** (к2 6/6 = 6/6); на классе несуществующих слов дифф стабильно хуже на 1/6 струмель» выжила 1/3, «дерзновяжной» 2/3).
**(5) Дисциплина do-nothing НЕ покупается промптом: NO_CHANGE = 0 из 36** при явном разрешении жирным шрифтом; медиана 4.3 правки на вызов вторая половина цитаты `research/19` LLM-редакторы правят даже корректный вход гейт снаружи обязателен») подтверждена, надежда на первую снята.
**(6) Обе поправки к пробе 18, обе по репликам:** в блоке контракт НЕ различает (21/21 у обоих во всех трёх розыгрышах, дисперсия была только у базы БЕЗ блока); **клейм «блок поднимает канон вне блока до 24/41» ОТМЕНЁН** 24 был удачным одиночным розыгрышем, медиана трёх = 20 при 18 у черновика.
**(7) $0-находка, найденная до пробы:** канон ПОДПИСАННЫХ строк ВНЕ инъецированного блока = **18/41 (44%) уже в ЧЕРНОВИКЕ** (метрика `editor_contract/offblock.py`, 41 клетка, 18 сущностей) инъекция селективна у ОБЕИХ ролей, дыра пайплайновая, а не редакторская; `花酒行者` Монах Цветочного Вина») пришёл неканоническим от транслятора. **Терминология решается покрытием инъекции, а не контрактом правки.**
**Вердикт:** формально дифф проходит стоп-гейт в прод-кандидаты, фактически НЕТ по цене и по несработавшему do-nothing. Строка 106 из «когда-нибудь» переходит в «измерено, решение владельца»: дифф-контракт технически состоятелен и покупает omission-safety за +50100% цены на thinking-редакторе. Не гонялось: reflow-проход Q4c, судейский риг (проза и переверстка НЕ сравнивались). Сырьё `~/books/gu-zhenren/bank-arbitration/` префикс `ec-*`, риг `eval/editor_contract/`. НЕ закоммичено кроме пре-рег-фриза лендит оркестратор.
**Редакторский провод под доктриной закона + фронтир-пасс (промт `POLYGON_EDITOR_WIRE_PROBE`, D39.103/104) — ИСПОЛНЕН, отчёт `docs/experiments/18-editor-wire-probe.md`, потрачено $0.174390 из потолков $0.30+$0.50 (04.08).** Пре-рег зафризен коммитом `080c15d` за 46 с до первого платного вызова; байт-идентичность провода edit-стадии c1 доказана ИСПОЛНЕНИЕМ (overlay-`go test` реальных `SystemFor(false)`/`MessagesWithInjection`/`RenderEditorConstraintBlock` sha256 всех трёх сообщений совпали с харнессом). 50 вызовов, все `finish=stop`.
**Проба A (v4-pro, $0.070293):** (1) **единый закон-блок исполняется 21/21 клеток, 6/6 окон** доктрина D39.104 на редакторском проводе подтверждена, двухсекционка не нужна; (2) **несущая находка, которой не ждали: редактор БЕЗ блока сам ломает канон черновика — 5/20 клеток в одном розыгрыше контроля и 12/20 во втором** (A5 по проводу = тот же контроль; «71%→100 ошибочно как величина, честно «без блока 815 из 21, с блоком 21/21»). Редактор не пассивная стадия, а самостоятельный источник разнобоя: «юань-камни», «изначальная сущность», «мастер гу», «Гу Юэ Мо Бэй»; (3) **цена неверной строки на редакторе НЕ МЕНЬШЕ, чем на трансляторе: принята 6/6, вытеснила верную 5/6** C research/24 те же 6/6 и 5/6); единственный выживший случай глосса «Юаньхай море истинной ци»; (4) **межоконная консистентность единогласна 6/6** инъекция канал разнобоя между главами не открывает, что и есть несущий довод D39.104; (5) **A5, первый замер класса: посаженные дефекты черновика редактор чинит 12/12** (абракадабра 6/6, смысловые инверсии 6/6, глазами против исходника), НО в тех же вызовах ВНОСИТ свои тихий **обрыв выхода на полуслове при `finish=stop`** (1176/16000 ток., кандидат в `00-provider-quirks.md` по v4-pro), 五百年→«полувекового», разбиение реплики, переименование реалии вне блока; (6) **кандидат-оговорка области §B НЕ ПОДТВЕРЖДЕНА и работает в обратную сторону**: арм БЕЗ неё передал метаязыковой пассаж по смыслу 2/3, арм С ней 0/3 (приклеил канон 2/3, потерял пассаж 1/3) в `injection.txt` не вносить; (7) оговорка «не течёт 0/6» метрика присутствия к протечке слепа, по счёту УПОТРЕБЛЕНИЙ 元石 84, 蛊师 43: **нулевая протечка не измерена**.
**Проба C (терминолог по 45 голд-термам, $0.104097):** слаги владельца опознаны live `/models` `gpt-5.6-terra`/`gpt-5.6-luna` (есть и `gpt-5.6-sol`, не назывался); **wire-квирк GPT-5.6 замерен, не угадан: плоский `reasoning_effort` в Chat Completions ЖИВОЙ** (`reasoning_tokens` 048 terra, 057 luna), Responses API не понадобился. **Фронтир НЕ ОПРАВДАН по пре-регу** (нужно ≥+5): pro 9, terra 7, luna 7 против glm-5 25/45. **Но сырой вердикт врёт о причине:** после фолда конвенции `古月` (7 поверхностей + `人祖`) разрыв исчезает terra и luna догоняют до 26/45, net ±0 7 из 9 «промахов» фронтира это орфографическая конвенция, а не ум. **Конвенция составных фамилий стоит 8/45 голда и перекрывает разницу между ВСЕМИ моделями — рычаг данных сильнее рычага модели (усиливает research/24 §D п.9).** Экономика: **`gpt-5.6-luna` = качество glm-5 за $0.23/книга против $0.59 (39% цены)**, дешевле даже flash-low; `gpt-5.6-terra` то же качество за $2.61/книга (×11 к luna, 0 клеток); `deepseek-v4-pro` 24/45 за $0.43 довод «pro умнее» на роли терминолога пуст.
**Адверсариальный проход author≠reviewer пройден** (независимый агент от задания и сырья к отчёту, пере-счёт всех чисел своим кодом): вердикт «принять с правками», все числа CONFIRMED, 8 находок сверх отчёта все пере-проверены мной по сырью, все подтвердились и вправлены (в т.ч. **девиация пре-рега №1: на провод ушёл заголовок со скобкой ПЕРЕД оговоркой, а не как в §0.3** при внесении §B брать отправленную строку). Объявленные девиации: пост-хок репликация AM (+4 вызова), `cap=8000` у terra, `frontier_probe.py` вне фриза. Сырьё durable `~/books/gu-zhenren/bank-arbitration/` (префикс `edp-*`/`fdp|flu|fte-*`, 134 json), харнесс `eval/bank_arbitration/{editor_wire_probe,frontier_probe}.py`. **Вопросы уровня владельца/оркестратора:** (а) §B в движок только единый блок, оговорку НЕ вносить; (б) обрыв при `finish=stop` заводить ли в квирки и гейт; (в) конвенция `古月` данными пар-промпта; (г) luna как кандидат в терминологи. НЕ закоммичено (кроме пре-рег-фриза) лендит оркестратор.
**Арбитраж банка (строка 5, пере-запуск промта D39.89 по слову владельца, потолок $1.00) — ИСПОЛНЕН, отчёт `docs/research/24-bank-arbitration.md`, потрачено $0.0896 (04.08).** Главное: (1) голд 53 approved сида 45 в BANK-FULL, из них у 27 промахов прод-банка верный dst лежал в вариантах черновиков лишь у 5 **потолок любого «выбора из вариантов» = 17/45, селекционный арбитраж закрыт классом**; (2) свежий терминолог-соло (flash-low) бьёт бесплатный базис §C2-3 **+8/0**, а **равноправный консилиум НЕ окупается**: +3 к само-согласованности = одна конвенция 古月; лучший одиночка glm-5 25/45 > лучший совет 23/45; добавление grok РОНЯЕТ совет 23→20; C3conf(взвешенный уверенностью) ≡ C3; ⟦TM-NO-DST⟧ = 0 на 35 вызовах трёх семейств; (3) **вербализованная ЧИСЛОВАЯ уверенность разделяет внутри модели** (AUC 0.770.85, слова хуже 0.63) при тотальной overconfidence (~88 при точности ~50%) — жить ей ordinal-очередью ревью, не арбитром; (4) **химера семьи 古月 воспроизведена причинно на границе батча** (свежий deepseek: «Гу Юэ» ровно в батче 2, «Гуюэ» ровно в батче 0), а по-терминная МАРШРУТИЗАЦИЯ (улики-первым) сама создала химеру 转-серии ⇒ единица арбитража/роутинга — кластер; DetectSeries разнодлинные семьи (古月×15, 蛊×14) не видит; (5) **проба инжекта: инъекция поднимает следование канону 43%→95%, НЕВЕРНАЯ строка законом принимается 6/6, с маркером ⟨проверить⟩ — тоже 6/6 (Δ=0 п.п.): пометка на транслятор-проводе поведенчески пуста**, цена неверной строки банка = ~100% заражение; (6) индустриальный обзор: стандарта арбитража термов не существует, наш дизайн впереди ближайшего аналога (DelTA first-wins); пропущенных стандартов нет. Рекомендации тремя корзинами в §D (строить: кластер-канал семей · intra-run CanonConflicts · наблюдаемость Signals/invented/conf · нормализованный голос foldVariants; закрыть: равноправный совет · кросс-модельные веса · self-consistency · селекция · отказ-сигнал). 4 вопроса владельцу в отчёте (мини-голд алиасов · конвенция составных фамилий · проба редакторского провода · фикс-пак корзины 1). Два адверсариальных раунда author≠reviewer пройдены (р.2 поймал 4 неточности, все вправлены; моя ложная оговорка про grok-ростер снята сырьём). **Достройка по вопросам владельца (тот же день, +$0.0161, итог $0.0960):** (а) $0-демо ценности на живом банке — intra-run чек связности поймал бы **18 невидимых противоречий на 149 финалов (12%)**, а нормализованный фолд голосов двигает топ лишь 1/75 (понижен до косметики); (б) **мультиязычная проверка ja→ru и en→ru (`multilang_probe.py`): направление инжект-выводов ПЕРЕНОСИТСЯ** — закон слушается, неверная строка принимается (ja 2/2, en 1/1), маркер Δ=0 на обеих парах; попутно ja-батч бэнк-вызова вернул термы упрощённым китайским — off-language класс, который парослепой экран `OffLanguage` отбил бы (несущая защита для будущей ja-пары). **Кросс-пары по слову владельца (тот же день, +$0.0113, итог $0.1073): §F/§G отчёта.** F1 zh→en: свежая en-редакция по тому же ростеру дала «Rank 1..9 · Grade A/B/C/D · Aperture · Gu Master» — **41/45 (91%) совпадений класса решения с подписями владельца** (банк НЕ однобокий; буквенный маппинг 甲→A, недостижимый для ru-моделей, en-моделью взят — довод за сид/бриф-канал); fan-канон RI по памяти сессии ещё ближе к владельцу (元石 primeval stone = «первобытный камень»); ру-специфика ровно одна — слитность «Гуюэ». F2 en→zh (Кристофф-2026): deepseek идеально связал семью *-blood (X血者), **glm сломал корень внутри ОДНОГО батча** и разошёлся в имени Aaron между соседними окнами (艾伦↔亚伦) — дрейф, от которого банк существует, воспроизведён на en→zh; deepseek выдумал 5 незапрошенных строк (нужность гарда `want[key]` кросс-парно подтверждена); личная оценка прозы обеих моделей — «редактируемо-издательская», узкое место всех направлений — термы, не слог. **§G — дизайн-синк алгоритмов бэкенда** (готовый вход фикс-пака класса D39.71): G1 `DetectFamilies` (данные-гейтед, имя=префикс/реалия=суффикс, без транзитивности, мёрж в seriesID) · G2 `ConsolidationConflicts` (18/149 на живом банке) · G3 наблюдаемость (Signals/Invented/Conf + фикс ParseReply-джойна) · G4 кластерный роутинг рецензента · G5 фолд-косметика · G6 явные «не делать». **Финальный рерайт отчёта по слову владельца (04.08):** сага/хроника правок убраны, факты и оговорки сохранены, §G сведён к уровню алгоритмов; **раунд 3 адверсариала (независимый агент по диффу v1→v2): числа 100% чисты пере-раном, новые клеймы подтверждены первоисточниками; его блокер (рерайт сжал зарегистрированные пре-реги §0/§E/§F) закрыт восстановлением пре-регов дословно с явной пометкой девиаций, потери фактов возвращены.** v1-черновик — `docs/archive/reports/DRAFT_BANK_ARBITRATION_V1_2026-08-04.md` (помечен черновиком в шапке и именем; перенесён по слову владельца 04.08). Сырьё durable `~/books/gu-zhenren/bank-arbitration/` (84 json), харнесс `eval/bank_arbitration/`. НЕ закоммичено — лендит оркестратор.
**→ ПРИЁМКА №13 (04.08, D39.102): ПРИНЯТО и залендено.** Поправка арифметики пинга выше: инкремент §E = **+$0.0065** ($0.0896 → $0.0960); «+$0.0161» — склейка инкрементов пробы C и §E ($0.0097+$0.0065), леджер отчёта чист (независимый пересчёт из сырья $0.107334). Оговорки приёмки — ревью-шапка `research/24`; находки сверх отчёта — строки 128132. Вопросы отчёта закрыты ВСЕ (D39.103/104). АКТИВНЫЙ промт полигона — `docs/POLYGON_EDITOR_WIRE_PROBE_SESSION_PROMPT.md` (проба редакторского провода ≤$0.30 + фронтир ≤$0.50; отчёт — `docs/experiments/18-editor-wire-probe.md`).
**Сырьё арки банка + пробы фиксов (01.08) — приняты и залендены, детали в журнале выше (D39.65).**
*(Закрытые записи 26.07 — пакет-6 «размеченный набор» (D39.39) и пакет-8 «три пре-замера» (D39.4346/50/52) — в [archive/PROGRESS-2026-07-25-31.md](PROGRESS-2026-07-25-31.md); пакеты Р6+P4 и ToS — журнал выше (D39.57/61).)*