Rewrite the plan a third time and subordinate it to the ratified next probe, after the review found three of its four promises already closed or unbuildable

This commit is contained in:
heaven 2026-09-01 22:44:38 +03:00
parent ce30509cfb
commit 2e288c6ad7

View file

@ -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.150.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 главах подряд** против 12 глав, на которых всё мерено сегодня; (б) работает ли терминолог в
связке с редактором; (в) ловит ли банкнота класс `term`. Плюс **15 новых глав перевода**.
**Три требования, каждое куплено ошибкой холодного прогона:**
1. **Потолок вывода одинаков во всех руках.** В том прогоне он различался (8000 против 16000) и
БИЛ в обеих руках — один этот конфаунд убил каузальный вывод.
2. **Цена считается за ДОСТАВЛЕННЫЙ ЗНАК, а не за вызов.** Цена вызова смешивает «дороже думает» и
«больше отдаёт»: на 4 вызовах вышел спред ×7.6 по юнитам.
3. **n считается от РАЗБРОСА.** Квирки пинят разброс размышления **×163 на побайтно одном входе**;
n=34 для такого распределения непригодны по построению.
**Оговорка честная:** 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.331.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** сделало бы поабзацное сравнение
по индексу генератором ложных приростов.
**Исполнение:** главы 2640 тома 1 (непереведённые, 39 914 знаков), запуск **из `textmachine-main`**
(в polygon нет `backend/configs/langpacks/ru`, бэкенд отстаёт на 65 коммитов), одной покупкой
(`--max-units 18`), потому что вторая покупка на майнящей книге требует `--resnapshot`.
Смета по леджеру ≈ **$1.7** пик / ≈$0.85 офф-пик, потолок **$2.50**.
**Мина нумерации:** движок не умеет смещение глав — срез пронумеруется 115, читать как 2640.
**И главное, что нашёл дубль-детектор:** отсутствие верхней границы объёма — **не упущение, а
ратифицированное решение 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 «830%» лежит НИЖЕ уже намеренных 34.2%
у A, значит критерий «объём вырос» не выполнился бы никогда.
5. ⛔ **Смета занижена в ×10:** абзацев в единице **6596**, а не «2030»; при неотключаемом
размышлении у `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. ⛔ **«Канон мерен на 12 главах» — ЛОЖНО, и это моя же фраза:** Д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.
Восьмой случай — этот план: я утверждал отсутствие того, что измерил сам сутками ранее.