diff --git a/eval/dovodka/PLAN-01-09.md b/eval/dovodka/PLAN-01-09.md index f805184a..b019d2fc 100644 --- a/eval/dovodka/PLAN-01-09.md +++ b/eval/dovodka/PLAN-01-09.md @@ -1,162 +1,140 @@ -# ПЛАН ФАЗЫ Д НА 01.09 — РЕДАКЦИЯ 2, ПОСЛЕ КОНСИЛИУМА +# ПЛАН ФАЗЫ Д — РЕДАКЦИЯ 3, ПОДЧИНЁННАЯ РАТИФИЦИРОВАННОМУ -> ⚠ **Редакция 1 этого файла ОТВЕРГНУТА консилиумом 31.08 (три эксперта `claude-fable-5`: -> дубль-детектор · методист замера · адвокат владельца).** Вердикт первой строкой был: -> **«план не двигает продукт — 0 из 3 шагов производит перевод»**. Он был прав, и разбор ниже (§4) -> сохранён, потому что три из четырёх его находок — не о плане, а о том, как эта фаза думает. +> Редакции 1 и 2 отвергнуты консилиумом. Разбор обеих — §5, сохранён как класс ошибок фазы. +> **Редакция 3 не изобретает следующий замер: он уже ратифицирован D39.184 п.5 (01.09).** +> Платные замеры санкционированы владельцем 01.09. -## 1. ЧТО ИЗМЕНИЛОСЬ ПРОТИВ РЕДАКЦИИ 1 — ОДНОЙ ТАБЛИЦЕЙ +## 1. ЧТО ИЗМЕНИЛОСЬ -| шаг редакции 1 | судьба | почему | +| редакция 2 | судьба | почему | |---|---|---| -| «прибор верности» первым | ⛔ **СНЯТ** | вопрос, ради которого строился, **закрыт замером за пять минут**: наши редакторы не дописывают (§4.1) | -| «проба единицы выдачи» | ⛔ **СНЯТА** | гипотеза опровергнута нашими же данными; арм запрещён ратифицированным гардрейлом; смета занижена в ×10 (§4.2) | -| «снять размышление из пилота» | ⚠ **ПОНИЖЕН** до записи в носитель | основания шаткие, а пилот всё равно не открыт (§4.3) | -| — | ⭐ **ДОБАВЛЕН ПРОГОН ГЛАВ** | единственное, что одновременно производит перевод и меряет консистентность; **был потерян всеми планами с 22.08** | +| «прогон 15 глав» центральным шагом | ⚠ **ПОНИЖЕН** до носителя | три из четырёх его обещаний оказались закрыты или неисполнимы (§5.2) | +| «эхо-контроль первым» | ⛔ **СНЯТ** | его клетки **уже куплены**: `coldrun-v16` дал 5 эскалаций `pro`@`low` на плотном CJK, эхо 0 | +| «засеять `first_person`/`speech`» | ⛔ **СНЯТ** | поля **мёртвые на проводе** (§5.2 п.4) | +| — | ⭐ **ДОБАВЛЕНА ратифицированная проба по четырём осям** | D39.184 п.5; ратифицированное бьёт наши планы | -## 2. ПЛАН +## 2. ШАГ 1 (ГЛАВНЫЙ). РАТИФИЦИРОВАННАЯ ПРОБА РЕДАКТОРА ПО ЧЕТЫРЁМ ОСЯМ -### ⭐ ШАГ 1. ПРОГОН 15 ГЛАВ ПОДРЯД БОЕВЫМ ПРОФИЛЕМ — ~$2, ЕДИНСТВЕННЫЙ, ЧТО ДАЁТ ТЕКСТ +**Носитель решения:** D39.184 п.5 — «Следующий платный замер — контролируемая проба редактора по +ЧЕТЫРЁМ осям (§14 отчёта холодного прогона): трудность чанка БЛОКИРОВАТЬ, длину входа +КОНТРОЛИРОВАТЬ, промпт по SHA, эффорт `off` против `low`». -Это **Шаг 7** плана 22.08, который с тех пор ждёт слова владельца и был молча выброшен из плана -30.08 и из редакции 1 этого файла. Его собственная формулировка (`23-editor-tier.md:6066`): -«15 глав Гу ПОДРЯД боевым профилем с ЗАСЕЯННЫМИ характер-листами, ~$2 — **единственный замер, -дающий прибор под Вопрос 0**, и он же готовая in-loop телеметрия боевого прогона». +**Вопрос, на который она отвечает:** ПОЧЕМУ редактор дорог. Не «сколько продавать» (это гейчено +отдельно) и не «кто лучше» (это уже мерено). -**Почему он же и есть ответ на «мы измеряем половину цели».** Канон владельца — это термины и факты -книги. Прибор к ним **построен и ни разу не применён к новым главам** (`bank.py`, Д50), потому что -новых глав нет. Внешняя проверка отдельно подтвердила, что **точность терминов по своему словарю — -единственный класс прибора, переживший фильтр**: reference-free измерители связности дают r=0.15–0.17, -а готовые оценщики качества на вебновеллах коррелируют с экспертами **отрицательно** (−0.03, −0.32). +### 2.1 Дизайн — четыре оси с РАЗНЫМИ ролями -**Что делаем.** -1. **Засеять характер-листы ДО прогона.** `first_person` и `speech` пусты 0 из 49 — Д32.16 - предупреждает, что без засева замер даёт **ложноотрицательный** результат по построению. - ⚠ Правка сида двигает `memory content-hash` ⇒ resnapshot: объявить владельцу ДО. -2. **Включить полный контур**: майнинг + терминолог + банкнота. ⭐ Основание: контур **ни разу не - ездил целиком** — терминолог был только в `coldrun-a` (там нет редактуры), редактор с судьёй - только в `rerun2` (там нет терминолога). Плюс банкнота — единственный канал, закрывающий класс - `term` (26 записей банка из 60), который майнер не эмитирует по построению. -3. **Гнать в офф-пик** — у DeepSeek это ровно ½ цены и не требует ни решения о модели, ни правки Go. -4. **Мерить построенным**: `bank.py` (точность терминов, presence/occurrence, кандидаты дрейфа) + - движковые $0-гейты + `retrieval_state` (промахи, sticky, спойлер-блоки, стиль-флаги). +| ось | роль | как реализуется | +|---|---|---| +| **трудность чанка** | **БЛОКИРОВАТЬ** | парный дизайн: **каждая рука видит ОДНИ И ТЕ ЖЕ чанки**. Не рандомизация — блокировка: размышление растёт с найденной работой (rho +0.781), и рандомизация даст эффекту утонуть | +| **длина входа** | **КОНТРОЛИРОВАТЬ и МЕРИТЬ** | страты по длине; длина входит в модель **ковариатой**, не выбрасывается — иначе её ×2.78 осядет в остатке | +| **промпт** | фактор | июльский `editor.md` (`e89874b^`) против сегодняшнего — **оба под одной меткой `v3-discourse-reflow`**, поэтому брать **по SHA**, не по метке | +| **эффорт** | фактор | `"off"` (= вендор-дефолт `high`) против явного `"low"` | -**Что считается результатом.** Три числа, которых у нас нет ни одного: (а) держится ли канон на -**15 главах подряд** против 1–2 глав, на которых всё мерено сегодня; (б) работает ли терминолог в -связке с редактором; (в) ловит ли банкнота класс `term`. Плюс **15 новых глав перевода**. +**Три требования, каждое куплено ошибкой холодного прогона:** +1. **Потолок вывода одинаков во всех руках.** В том прогоне он различался (8000 против 16000) и + БИЛ в обеих руках — один этот конфаунд убил каузальный вывод. +2. **Цена считается за ДОСТАВЛЕННЫЙ ЗНАК, а не за вызов.** Цена вызова смешивает «дороже думает» и + «больше отдаёт»: на 4 вызовах вышел спред ×7.6 по юнитам. +3. **n считается от РАЗБРОСА.** Квирки пинят разброс размышления **×163 на побайтно одном входе**; + n=3–4 для такого распределения непригодны по построению. -⚠ **Оговорка честная:** 15 глав — не «вся книга». Кривой деградации на сотнях глав нет ни у кого в -мире (проверено ресёрчем), и этот прогон её не даст. Он даёт **первую точку** на дистанции, где -сегодня нет ни одной. +### 2.2 ⛔ Где проба исполняется — и почему НЕ движком -### ШАГ 2. ЭХО-КОНТРОЛЬ НА `deepseek-v4-pro` — единицы центов +§14 пишет «эффорт — это ДАННЫЕ, правки Go не требуется». **Для движка это неверно, и вот улика:** +у `deepseek-v4-pro` в `models.yaml` нет `capabilities.reasoning` ⇒ резолв в `ReasoningNone` ⇒ +**движок ручку не шлёт вообще**. Описать capability нельзя: это **намеренная защита под тестом** +(`echo_mine_test.go:218`=`never armed`, `TestDeepSeekEchoMineRejected`, гоняно — `ok 0.008s`). -Заказан не мной: рекомендация оркестратора №22 от 31.08, и она снимает риск, который мы иначе -понесём в любой замер размышления. +⇒ **Проба исполняется полигонным ригом** (`eval/dovodka/rol.py`), который ручку шлёт своим проводом +и уже доказал это бесплатной уликой (`prompt_tokens` 3270 → 3191 при побайтно одинаковых messages). +Это снимает конфликт с гардрейлом: мы ничего не снимаем в движке. +⚠ **Цена переноса:** риговый провод ≠ движковый, и вывод о ЦЕНЕ движка переносится только как +направление. Записать в оговорки замера. -**Факт:** `low` **пере-вооружает эхо-мину** — на `flash` это дало один чистый китайский выход из -шестнадцати. **Для `pro` эхо на `low` НЕ МЕРЕНО НИ РАЗУ** (`00-provider-quirks.md:121`). -⇒ «поставить редактору `low`» — обмен известной цены на **неизвестный риск**. +### 2.3 Мощность и n — считается ДО покупки -**Что делаем:** несколько клеток `pro` с `low` на **плотном CJK-входе** (эхо живёт именно там; -прошлая проба была на английской паре и потому ничего не доказала). Меряем долю кириллицы и наличие -ханьцзы в выходе. Цена — центы. +Парность гасит межчанковый разброс, поэтому считаем по разбросу **внутри пары**. Известное: sd +логарифма объёма размышления на повторах одного входа = **1.02** (Д49, 16 пар). -⛔ **Чего НЕ делать:** описывать `capabilities.reasoning` в `models.yaml`. Это **не дыра в данных, а -намеренная защита под тестом** (`echo_mine_test.go:218`=`never armed`; `TestDeepSeekEchoMineRejected` -отвергает вооружение по четырём маршрутам; гоняно 31.08 — `ok 0.008s`). Правка = снятие защиты и -красная батарея в точке, где канон запрещает подгонку под зелень. +| ожидаемый эффект `off`→`low` | log-эффект | n пар при 80% мощности | +|---|---|---| +| ×2.5 (наблюдалось между блоками, конфаундировано) | 0.92 | **≈ 20** | +| ×2.0 | 0.69 | ≈ 35 | +| ×1.4 (наблюдалось внутри блока) | 0.34 | ≈ 140 ⛔ не влезает | -### ШАГ 3. УБОРКА — $0 +⇒ **Пре-регистрируем n = 24 пары** (запас над 20). Если истинный эффект ×1.4 — проба его не увидит, +и **это записывается как исход «величина ниже разрешения замера», а не как «эффекта нет»**. -1. **Записать в `09-pilot-protocol.md`**, что фактор размышления в кресте **под вопросом**, с обеими - сторонами: снаружи рассуждающие модели проигрывают в роли переводчика, но ручка **модель-зависима** - (у `grok` off = no-op, у `glm-5` работает, у `pro` не шлётся вовсе) — а это и есть довод, что - фактор значим. ⛔ **Не вычёркивать**: редакция 1 предлагала снять его как «неизмеримый», но - «неизмерим» относилось к ЦЕНЕ (эффект ×1.4 против шума ×2.8), а §7 пилота мерит КАЧЕСТВО. -2. **Протянуть поправки** Д52.1 (вывод «ценой верности» снят) по всем носителям, где он мог осесть. -3. **Занести замер объёма правки в скрипт.** Числа Д52.2 сняты командой в консоли, **носителя в - репозитории нет** — это ровно то, за что фаза ругает других. Взять готовое: - `eval/role_topology/battery.py:523` (`check_noop`, `autojunk=False`) и `check_numbers`, не писать - заново. +### 2.4 Смета и гард -## 3. ЧЕГО В ПЛАНЕ НЕТ И ПОЧЕМУ +24 пары × 2 фактора промпта = 4 руки по 24 клетки = **96 вызовов**. По фактическому расходу +редактора на чанк (~4 300 вход / ~2 900 выход) и нынешнему прайсу `pro`: пик ≈ **$1.7**, офф-пик +≈ **$0.85**. ⛔ Гнать в офф-пик. Потолок кассы — **$2.50**, гард обязателен, пре-рег фризится +коммитом ДО первого платного вызова. -* **Панелей слепого чтения** — пол прибора 1.33–1.53 места. -* **Бейк-оффов черновой модели** — закрыто пятью альтернативами, внешне объяснено. -* **Точечного ремонта по флагам** — свой замер и внешний согласны. -* **Метрик канона и голоса** — не переживают фильтр; проходит только точность терминов, она есть. -* **Дифф-интерфейса** — прогнан, отложен, внешнего основания нет ни за, ни против. -* **Прибора верности отдельной стройкой** — см. §4.1: вопрос закрыт замером. -* **Пилота** — не открыт с D39.20 (планка ≤2 претензии не пройдена), и решается он чтением - владельца, а не нашими приборами. +### 2.5 Правило решения — записывается ДО чисел -## 4. РАЗБОР КОНСИЛИУМА — почему шаги сняты (сохранено как класс ошибок фазы) +* **Эндпойнт 1 (главный):** отношение объёма размышления `low`/`off`, парно, с длиной входа + ковариатой. Порог: двусторонний знаковый тест p<0.05 И медианное отношение вне [0.8; 1.25]. +* **Эндпойнт 2:** цена за доставленный знак — то же правило. +* **Эндпойнт 3 (промпт):** тот же тест по оси SHA промпта. +* ⛔ **Гейт против зелени на пустоте:** нулевой знаменатель ⇒ прибор ОТКАЗЫВАЕТ, а не печатает + «в пределах». +* ⛔ **Эхо-гейт включён во всех руках** — последняя линия против тихого провала. ⚠ `low` ≠ `off`: + мина вооружается ВЫКЛЮЧЕНИЕМ размышления, а три уровня эффорта едут с ним включённым, поэтому + арм `low` мину не вооружает — но гейт всё равно остаётся. -### 4.1. Прибор верности: вопрос закрыт ЗАМЕРОМ, а не прибором +## 3. ШАГ 2. ПРОГОН 15 ГЛАВ — текст владельцу и единственный неповторённый элемент -Адвокат владельца снял главное число шага **за пять минут на тех же артефактах**, и я воспроизвёл -независимо (15 единиц zh, эхо-клетка исключена): +Понижен из центрального, но не снят: он даёт то, чего не даёт никакой замер — **15 новых глав**. -``` -deepseek-v4-pro : рост знаков медиана −0.4% (коридор −5.3 … +9.5) абзацев 72 → 40 -glm-5 : рост знаков медиана −0.6% (коридор −2.2 … +3.3) абзацев 72 → 52 -``` +**Что в нём подлинно ново** (остальное закрыто, см. §5.2): редакторская волна боевого профиля +**доведена до конца на книге С ЗАСЕЯННЫМ БАНКОМ**. `coldrun-v16` шёл на **пустом** сиде и встал на +3 юнитах из 14. -⇒ **Наши редакторы не дописывают.** Внешний дефект «+32% длины» у нас не воспроизводится, и -опасение, ради которого строился прибор, снято. Методист добавил два дефекта конструкции: -эвристика «общий корень ≥3 знака» **гасит ~55% настоящих новых лемм** и объявляет новыми служебные -слова («мне», «них», «ему») — повтор ошибки Д50.4 с другим числом букв, при том что **лемматизатор -pymorphy3 уже стоит** в `battery.py:51`; а **слияние абзацев 72→40** сделало бы поабзацное сравнение -по индексу генератором ложных приростов. +**Исполнение:** главы 26–40 тома 1 (непереведённые, 39 914 знаков), запуск **из `textmachine-main`** +(в polygon нет `backend/configs/langpacks/ru`, бэкенд отстаёт на 65 коммитов), одной покупкой +(`--max-units 18`), потому что вторая покупка на майнящей книге требует `--resnapshot`. +Смета по леджеру ≈ **$1.7** пик / ≈$0.85 офф-пик, потолок **$2.50**. +⚠ **Мина нумерации:** движок не умеет смещение глав — срез пронумеруется 1–15, читать как 26–40. -⭐ **И главное, что нашёл дубль-детектор:** отсутствие верхней границы объёма — **не упущение, а -ратифицированное решение D12 Q3** (`coverage.go:23-26`: «The UPPER bound … deliberately NOT flagged -… catching additions needs an entity in/out count + a bilingual judge — Phase 2»). План предлагал -исполнить отложенное, не зная, что оно отложено сознательно. ⚠ Побочная находка того же прохода: -`04-unhappy-paths.md:54` числит эту строку **с галочкой «✅» при неисполненном коде** — расхождение -доков, пинг оркестратору. +**Прибор:** `bank.py` (добавить третью запись в `RUNS` + маппинг глав +25) · движковые $0-гейты · +`retrieval_state`. -### 4.2. Проба единицы выдачи: гипотеза опровергнута нашими же данными +## 4. ШАГ 3. УБОРКА — $0 -1. ⛔ **$0-прайор, который её убивает:** `pro` **уже гонялся на единице ~500 ру-токенов** - (`19-editor-contract-q4b.md:159`, `20-editor-role.md:213`) — «слов дожило 65%», то есть 35% - изменено, **ровно столько же, сколько на главе целиком** (34.2%, Д52.2). **Единица выдачи объём - правки не сдвинула.** Гипотеза «размышление — плата за отрыв от копирования» на наших данных - не подтверждается ещё до покупки. -2. ⛔ **Арм запрещён:** «размышление OFF» на `pro` идёт против ратифицированного гардрейла D39.87 - («thinking у DeepSeek не выключать» — В СИЛЕ), а перенос на `glm-5` вводит третий фактор — модель, - которую сам же план объявил доминирующей (34.2% против 11.5%). -3. ⛔ **Конфаунд:** армы различались двумя факторами сразу (единица И размышление) — прямое нарушение - нормы D39.46 «у каждого измеряемого фактора обязан быть арм без него». -4. ⛔ **Правило решения противоречило себе:** ожидание для B «8–30%» лежит НИЖЕ уже намеренных 34.2% - у A, значит критерий «объём вырос» не выполнился бы никогда. -5. ⛔ **Смета занижена в ×10:** абзацев в единице **65–96**, а не «20–30»; при неотключаемом - размышлении у `pro` это ~**$10**, а не $1. -6. ⛔ **Посылка «93% completion в размышление» — английская.** На zh-клетках `pro` это **60.5%**. +1. ⭐ **Записать `coldrun-v16` в отчёт фазы.** Прогон 31.08 с полным контуром, отчёт фазы упоминает + его **0 раз** — иначе следующая сессия переоткроет его восьмой раз. +2. **Занести замер объёма правки в скрипт** (числа Д52.2 сняты в консоли, носителя нет). Взять + готовое: `eval/role_topology/battery.py:523` (`check_noop`), `check_numbers`. +3. **Пинг оркестратору:** `docs/architecture/04-unhappy-paths.md:54` числит строку «гладкие + галлюцинации-дописывания» с галочкой ✅ при неисполненном коде; `docs/PROGRESS.md:610` несёт + снятую 30.08 сильную форму «полей пола в банке нет вовсе». +4. **Поправить Д32.16** — его формулировка «без засева характер-листов замер ложноотрицателен» + опирается на поля, которые на провод не идут (§5.2 п.4). -### 4.3. Пилот: снятие фактора не обосновано +## 5. РАЗБОР ОТВЕРГНУТЫХ РЕДАКЦИЙ — сохранено как класс ошибок -`exp12` показал, что у `grok` reasoning-off даёт **no-op** — это довод, что ручка **значима**, а не -что вопрос закрыт. «Неизмеримо при шуме ×2.8» относилось к ЦЕНЕ, а §7 пилота мерит КАЧЕСТВО. -И сам пилот не открыт с D39.20 — правка его креста никому ничего не даёт сегодня. +### 5.1 Редакция 1 (отвергнута: «не двигает продукт») +Прибор верности — вопрос закрыт замером (наши редакторы не дописывают: рост знаков −0.4% и −0.6%). +Проба единицы выдачи — гипотеза опровергнута нашими же данными (`pro` на единице ~500 токенов дал +те же 35% изменённого, что и на главе), арм запрещён гардрейлом D39.87, конфаунд двух факторов, +смета занижена ×10. -### 4.4. Три факта о том, как эта фаза ошибается +### 5.2 Редакция 2 (отвергнута: три обещания из четырёх несостоятельны) +1. ⛔ **«Контур ни разу не ездил целиком» — ЛОЖНО.** `coldrun-v16` (31.08): черновик + банкнота + + терминолог + голосовой флаггер + редактор `pro`, $0.436, `draft=36 edit=5 terminology=9`. +2. ⛔ **«Канон мерен на 1–2 главах» — ЛОЖНО, и это моя же фраза:** Д50.2 намерил его на **25 главах + подряд** сутками ранее. +3. ⛔ **«Ловит ли банкнота класс `term`» — отвечено дважды, $0:** `coldrun-a` 94 из 150, + `coldrun-v16` 33 из 53 с пометкой «кандидат только банкноты». +4. ⛔ **Засев `first_person`/`speech` не работает по построению:** поля пишутся в стор, но **не + копируются в рендерящий `entry`** (`memory.go:283-299` копирует только `gender`), **не входят в + content-hash** (`memory.go:427-442`) и не читаются флаггером. Настоящий носитель — секции + `voices:`/`addresses:` сида, которых нет ни в одном сиде, и они доходят **только до $0-флаггера**: + инъекция голоса захардкожена выключенной без ручки (`bankmaterialize.go:291-294`, D21 п.2). -* **«16 глав» — не главы.** `~/books/editor-tier/` несёт 16 **абзацных чанков ~1700 знаков** из - разных глав (`eval/editor_tier/material.py:10`), а не связный текст. Я называл их главами трижды. -* **Замер без носителя.** Числа Д52.2 сняты командой в консоли; скрипта в репозитории нет. -* **Готовое не найдено:** `check_noop` и `check_numbers` в `battery.py` делают два из трёх сигналов - планового прибора; план предлагал писать их заново. - -## 5. ПОРЯДОК И ЧТО НА ВЛАДЕЛЬЦЕ - -**Порядок: 2 → 1 → 3.** Эхо-контроль (центы) идёт первым, потому что снимает неизвестный риск и -дёшев. Затем прогон 15 глав — он и есть содержание фазы. Уборка последней. - -**На владельце:** -1. ⭐ **Санкция на прогон 15 глав (~$2)** и на **засев характер-листов** (двигает снапшот). -2. **Слияние веток `polygon` → `main`.** Весь отчёт фазы Д (+2685 строк) и правки квирков живут - только у нас; `main` до сих пор учит, что ручка `low` на `pro` не работает. Оркестратор №22 - ждёт ответа и мержить сам не будет. -3. **Санкция на эхо-контроль** (центы) — либо решение, что он не нужен. +### 5.3 Сквозной класс — восемь случаев за трое суток +**Показания инструмента (или собственная память) приняты за факт о мире.** Реестр — Д52.5. +Восьмой случай — этот план: я утверждал отсутствие того, что измерил сам сутками ранее.