Land plan revision four: a pre-registration built with the standing consilium, with the two instrument holes named and the ceiling left to the owner

This commit is contained in:
heaven 2026-09-01 23:19:41 +03:00
parent fbf6173347
commit e13d4dff47

View file

@ -1,140 +1,158 @@
# ПЛАН ФАЗЫ Д — РЕДАКЦИЯ 3, ПОДЧИНЁННАЯ РАТИФИЦИРОВАННОМУ
# ПЛАН ФАЗЫ Д — РЕДАКЦИЯ 4: ПРЕ-РЕГ РАТИФИЦИРОВАННОЙ ПРОБЫ
> Редакции 1 и 2 отвергнуты консилиумом. Разбор обеих — §5, сохранён как класс ошибок фазы.
> **Редакция 3 не изобретает следующий замер: он уже ратифицирован D39.184 п.5 (01.09).**
> Платные замеры санкционированы владельцем 01.09.
> Редакции 13 отвергнуты консилиумом; их разбор — §8, сохранён как класс ошибок фазы.
> Редакция 4 собрана с постоянным консилиумом (архитектор замера · скептик · казначей) и несёт
> ПРЕ-РЕГИСТРАЦИЮ, а не намерения. Платные замеры санкционированы владельцем 01.09 — ⚠ **без числа,
> и число нужно до фриза** (§6).
## 1. ЧТО ИЗМЕНИЛОСЬ
## 1. ЧТО ЭТО ЗА ЗАМЕР И ПОЧЕМУ ИМЕННО ОН
| редакция 2 | судьба | почему |
**Носитель:** D39.184 п.5 — «Следующий платный замер — контролируемая проба редактора по ЧЕТЫРЁМ
осям (§14 отчёта холодного прогона): трудность чанка БЛОКИРОВАТЬ, длину входа КОНТРОЛИРОВАТЬ,
промпт по SHA, эффорт `off` против `low`». ⚠ Ноты нет в ветке `polygon` (реестр обрывается на
D39.170) — она в `main`; это следствие расхождения веток, а не отсутствия решения.
**Вопрос:** ПОЧЕМУ редактор дорог. Не «кто лучше» (мерено) и не «сколько продавать» (гейчено
отдельно, §7).
## 2. ДИЗАЙН — КРЕСТ 2×2 ВНУТРИ ЮНИТА
| рука | промпт | `stages[edit].reasoning` | что уходит на провод |
|---|---|---|---|
| P₇·E∅ | `editor.md` из `e89874b^` | `"off"` | ключа `reasoning_effort` НЕТ ⇒ вендор-дефолт `high` |
| P₇·E_low | тот же | `"low"` | `reasoning_effort:"low"` |
| P₉·E∅ | `editor.md` HEAD | `"off"` | ключа нет |
| P₉·E_low | тот же | `"low"` | `low` |
Промпты различаются одной строкой; **метка `v3-discourse-reflow` у обоих одна**, поэтому берём по
SHA — снапшот их различает (`snapshot.go:289`).
* **БЛОКИРУЕТСЯ трудность:** каждая рука видит ВСЕ юниты. Реализация: один базовый прогон (черновая
волна + майнинг + терминолог), затем БД копируется ×4; черновики ре-пинятся за $0.
* **КОНТРОЛИРУЕТСЯ длина входа:** `len(draft)` и `prompt_tokens` — ковариата. ⚠ Честно: чанки движка
дают узкий диапазон (44126946 токенов), поэтому ось **контролируется, а не измеряется**.
* **ФИКСИРУЕТСЯ:** модель и дата вендор-доки · бинарь `tmctl` по sha · `models.yaml` по sha ·
потолок вывода · `temperature 0.4` · `few_shot: false` · санитайзер ON ·
**`escalation.budget_usd: 0`** — иначе флагнутый юнит уйдёт хопом в другую модель и загрязнит руку.
* **РАНДОМИЗИРУЕТСЯ** порядок рук внутри юнита; **интерливинг во времени** — четыре клетки юнита в
окне 1020 минут, чтобы дрейф сервинга не разошёлся между руками. В цикле `|| break` (урок Д47.6).
**Единица наблюдения** — клетка (юнит × рука); **единица анализа** — юнит.
**Требование §14 «потолок вывода одинаков во всех руках» выполняется само:** `stagerun.go:113-122`
даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при черновике ~7 тыс. знаков это
≈5.1 тыс. < 16000 **16000 у всех юнитов во всех руках по построению**, ретрай 32000 тоже одинаков.
## 3. ⛔ ДВЕ ДЫРЫ ПРИБОРА — БЕЗ НИХ ЗАМЕР НЕ ИЗМЕРИТ СВОЙ ПРЕДМЕТ
**Дыра 1. Движок НЕ ВИДИТ размышление DeepSeek по построению.** `provider_openai.go:23`
=`ReasoningTokens stays 0 to avoid double-billing`: у subset-провайдеров размышление считается
ВНУТРИ `completion_tokens`, и поле остаётся нулём. Проверено: во всех движковых базах
`sum(reasoning_tokens>0) = 0`. А предмет замера — именно размышление (9596% цены).
**Лечение без правки Go, с замеренной точностью:** `R̂ = completion_tokens 0.3644·len(response_text)`.
Коэффициент — видимый выход pro-редактора на zh→ru; **пере-снят мной независимо: 0.3644 токена/знак,
n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пренебрежима при размышлении в тысячах и заметна
лишь при `R̂ < ~500`. Коэффициент **пинится в пре-реге**.
**Дыра 2. У движка нет проводного артефакта** — стадийный лог эффорт не печатает. Лечение:
(а) снапшот фолдит `Reasoning` и `PromptSHA256`**у четырёх рук четыре разных `snapshot_id`**, это
запись в БД, что конфиг был в силе; (б) сигнатура `prompt_tokens(∅) prompt_tokens(low)` по юнитам
(на en дважды ровно **79**). ⚠ Оба — косвенные; побайтной улики у движка нет.
## 4. ПРАВИЛО РЕШЕНИЯ — ЗАПИСАНО ДО ЧИСЕЛ
**Метрики клетки:** `R̂` · `completion_tokens` · `cost_usd` (сумма ВСЕХ строк юнита в руке, ретраи
включены) · `delivered` = знаки отгружаемого текста при годной диспозиции, иначе **0** ·
`cost/delivered` · `finish` попытки 0 · `flag_reason`.
* **E1 (главный):** по-юнитный контраст `log R̂(low) log R̂(∅)`; **Вилкоксон знаково-ранговый**,
α=0.05 двусторонне; медиана и 95% ДИ Ходжеса–Лемана.
**Решение:** p<0.05 И ДИ вне [0.8; 1.25] эффект есть; ДИ целиком внутри эффекта нет
(эквивалентность); иначе ⇒ ⭐ **«НИЖЕ РАЗРЕШЕНИЯ ЗАМЕРА» — и это НЕ «эффекта нет»**.
* **E2:** то же для `log(cost/delivered)` — отдельно по попытке 0 (равный потолок) и по итогу юнита
(боевая цена). ⭐ Средний член цены за знак — константа ($1.45 за 1M знаков в пик), поэтому вся
разница рук сидит в **ρ = R̂/delivered**; ρ свободна от прайса и времени суток.
* **E3:** ось промпта — те же тесты. Прогноз, калибрующий удивление: |эффект| < ×1.25.
* **E5 (безопасность, блокирует любую рекомендацию):** доля клеток с эхом/`cjk_artifact` и с
`length` по рукам. Если у `low` эхо-клеток ≥3 сверх `∅`**«риск эха на low» независимо от цены**.
* **Провал прибора:** сигнатура Δ`prompt_tokens` вне полосы у >20% юнитов ⇒ проба аннулируется,
деньги называются.
**Мощность.** В кресте 2×2 контраст главного эффекта на юните имеет sd = σ (не σ√2) — поэтому n
вдвое меньше, чем в простой паре. Источник σ: **эррата Д47.7** (`23-editor-tier.md:7196`, 16 пар
`e0`/`zf`, побайтно один вход) — ⚠ **на английской паре и роли редактора; на zh не переносится**,
поэтому планируем σ=1.2 с чувствительностью 1.0/1.4.
| σ | ×2.5 | ×2.0 | ×1.5 | MDE при n=24 | MDE при n=32 |
|---|---|---|---|---|---|
| 1.02 | 11 | 18 | 51 | ×1.82 | ×1.68 |
| 1.2 | 15 | 25 | 70 | ×2.02 | ×1.84 |
| 1.4 | 20 | 34 | 95 | ×2.27 | ×2.03 |
⛔ **Эффект ×1.40 (наблюдённый внутри блока в Д47) при любом n ≤ 32 ниже разрешения — записано
ДО покупки.**
## 5. ГАРДЫ
1. **Пред-полёт:** один юнит × 4 руки (~$0.25) → сигнатура Δ`prompt_tokens` в полосе · четыре разных
`snapshot_id` · кириллица ≥0.99 · эхо 0. Только потом пачка.
2. **Зелень на пустоте:** `delivered = 0` ⇒ клетка идёт в E5 и исключается из E2; если таких >20% в
руке — **прибор ОТКАЗЫВАЕТ**, а не печатает «в пределах».
3. **Эхо-гейт включён во всех руках.**`low` ≠ выключение: мина вооружается ТУМБЛЕРОМ, а уровни
эффорта едут с размышлением включённым. Гейт всё равно остаётся.
4. **Касса:** `ceilings.book_usd` на каждую БД + `--ceiling-usd`; отказ леджера = **СТОП и вопрос
владельцу**; добор после чисел запрещён; потолок сессия не поднимает.
5. **Фриз:** пре-рег, скрипт эндпойнта, четыре `pipeline.yaml` и два `editor.md` — коммитами ДО
первой платной клетки.
## 6. ⚠ ДЕНЬГИ — И ЗДЕСЬ НУЖНО ЧИСЛО ВЛАДЕЛЬЦА
По фактическому леджеру холодного прогона: клетка `∅`**$0.054**, с учётом 25% обрывов на 16000 и
ретрая — эффективно ≈ **$0.09**; клетка `low`**$0.04**. Юнит (2+2) ≈ **$0.26**.
| объём | клеток | расчётно (пик) | фактически в офф-пик |
|---|---|---|---|
| 24 юнита (~17 глав) | 96 | ≈ **$7.5** | ≈ $3.8 |
| 32 юнита (~24 главы) | 128 | ≈ **$9.9** | ≈ $5.0 |
| плюс базовый прогон | — | ≈ $0.6 | ≈ $0.3 |
**Мои прежние сметы ($1.7 и $2.50) занижены втрое** и снимаются: они считали «выход» как видимый
текст, тогда как размышление у DeepSeek сидит ВНУТРИ `completion_tokens`. Это тот же класс, что
«смета ×10» редакции 1.
**Вопрос владельцу, единственный блокирующий:** потолок. Рекомендация — **$11 расчётных за 32
юнита** (MDE ×1.84 при σ=1.2); экономный вариант — **$8.5 за 24 юнита** (MDE ×2.02). Санкция
«платные замеры разрешаю» числа не содержит, а по канону потолок сессия не поднимает.
## 7. ЧЕГО В ЗАМЕРЕ НЕТ НАМЕРЕННО
Калибровки ставки платформы (гейчено, §14 прямо) · судейства качества — качество `low` вне скоупа,
только $0-гейты и E5 · правок `models.yaml`, capabilities, Go · смены модели, черновика,
дифф-контракта · креста «размышление вкл/выкл» пилота · сравнения с июльским базлайном как
каузального: между июлем и сегодня сменились веса модели, дефолт, маппинг и потолок — проба
разделяет рычаги СЕГОДНЯ.
**И отдельно: из этой пробы НЕ следует рекомендация менять боевой `pipeline-c1.yaml`.** Флип там
пинит тест (`echo_mine_test.go:217`, `TestBoevoyConfigEditorDsproAndGrokReasoning`) и двигает
снапшот edit-волны ⇒ `--resnapshot` и перекупка волны.
## 8. РЕЕСТР ОШИБОК ЧЕТЫРЁХ РЕДАКЦИЙ — сохранено, потому что класс один
| # | что утверждал | чем опровергнуто |
|---|---|---|
| «прогон 15 глав» центральным шагом | ⚠ **ПОНИЖЕН** до носителя | три из четырёх его обещаний оказались закрыты или неисполнимы (§5.2) |
| «эхо-контроль первым» | ⛔ **СНЯТ** | его клетки **уже куплены**: `coldrun-v16` дал 5 эскалаций `pro`@`low` на плотном CJK, эхо 0 |
| «засеять `first_person`/`speech`» | ⛔ **СНЯТ** | поля **мёртвые на проводе** (§5.2 п.4) |
| — | ⭐ **ДОБАВЛЕНА ратифицированная проба по четырём осям** | D39.184 п.5; ратифицированное бьёт наши планы |
| 1 | «прибор верности нужен первым» | вопрос закрыт замером: редакторы не дописывают (рост знаков 0.4% и 0.6%) |
| 2 | «проба единицы выдачи» | гипотезу опровергают наши же данные; арм запрещён; смета ×10 |
| 3 | «контур ни разу не ездил целиком» | `coldrun-v16` прошёл НАКАНУНЕ |
| 4 | «канон мерен на 12 главах» | я сам намерил на 25 главах подряд сутками ранее |
| 5 | «засеять `first_person`/`speech`» | поля мёртвые: не копируются в рендер, не входят в хеш |
| 6 | «движок ручку не шлёт вообще» | `capability.go:236` шлёт `low|medium|high`; доказано на проводе |
| 7 | «гейт запретит» | гейт в другом тесте и пинит только шиппинг-конфиги |
| 8 | «риг потерял бы роль редактора» | `tenant_panel/prompts.py:143` грузит боевой `editor.md` |
| 9 | «эхо на `pro`@`low` не мерено» | 5 хопов в `coldrun-v16`, эхо 0 — ⚠ но роль переводчика, не редактора |
| 10 | сметы $1.7 / $2.50 | занижены втрое: размышление внутри `completion_tokens` |
## 2. ШАГ 1 (ГЛАВНЫЙ). РАТИФИЦИРОВАННАЯ ПРОБА РЕДАКТОРА ПО ЧЕТЫРЁМ ОСЯМ
**Носитель решения:** D39.184 п.5 — «Следующий платный замер — контролируемая проба редактора по
ЧЕТЫРЁМ осям (§14 отчёта холодного прогона): трудность чанка БЛОКИРОВАТЬ, длину входа
КОНТРОЛИРОВАТЬ, промпт по SHA, эффорт `off` против `low`».
**Вопрос, на который она отвечает:** ПОЧЕМУ редактор дорог. Не «сколько продавать» (это гейчено
отдельно) и не «кто лучше» (это уже мерено).
### 2.1 Дизайн — четыре оси с РАЗНЫМИ ролями
| ось | роль | как реализуется |
|---|---|---|
| **трудность чанка** | **БЛОКИРОВАТЬ** | парный дизайн: **каждая рука видит ОДНИ И ТЕ ЖЕ чанки**. Не рандомизация — блокировка: размышление растёт с найденной работой (rho +0.781), и рандомизация даст эффекту утонуть |
| **длина входа** | **КОНТРОЛИРОВАТЬ и МЕРИТЬ** | страты по длине; длина входит в модель **ковариатой**, не выбрасывается — иначе её ×2.78 осядет в остатке |
| **промпт** | фактор | июльский `editor.md` (`e89874b^`) против сегодняшнего — **оба под одной меткой `v3-discourse-reflow`**, поэтому брать **по SHA**, не по метке |
| **эффорт** | фактор | `"off"` (= вендор-дефолт `high`) против явного `"low"` |
**Три требования, каждое куплено ошибкой холодного прогона:**
1. **Потолок вывода одинаков во всех руках.** В том прогоне он различался (8000 против 16000) и
БИЛ в обеих руках — один этот конфаунд убил каузальный вывод.
2. **Цена считается за ДОСТАВЛЕННЫЙ ЗНАК, а не за вызов.** Цена вызова смешивает «дороже думает» и
«больше отдаёт»: на 4 вызовах вышел спред ×7.6 по юнитам.
3. **n считается от РАЗБРОСА.** Квирки пинят разброс размышления **×163 на побайтно одном входе**;
n=34 для такого распределения непригодны по построению.
### 2.2 ⛔ Где проба исполняется — и почему НЕ движком
§14 пишет «эффорт — это ДАННЫЕ, правки Go не требуется». **Для движка это неверно, и вот улика:**
у `deepseek-v4-pro` в `models.yaml` нет `capabilities.reasoning` ⇒ резолв в `ReasoningNone`
**движок ручку не шлёт вообще**. Описать capability нельзя: это **намеренная защита под тестом**
(`echo_mine_test.go:218`=`never armed`, `TestDeepSeekEchoMineRejected`, гоняно — `ok 0.008s`).
**Проба исполняется полигонным ригом** (`eval/dovodka/rol.py`), который ручку шлёт своим проводом
и уже доказал это бесплатной уликой (`prompt_tokens` 3270 → 3191 при побайтно одинаковых messages).
Это снимает конфликт с гардрейлом: мы ничего не снимаем в движке.
**Цена переноса:** риговый провод ≠ движковый, и вывод о ЦЕНЕ движка переносится только как
направление. Записать в оговорки замера.
### 2.3 Мощность и n — считается ДО покупки
Парность гасит межчанковый разброс, поэтому считаем по разбросу **внутри пары**. Известное: sd
логарифма объёма размышления на повторах одного входа = **1.02** (Д49, 16 пар).
| ожидаемый эффект `off``low` | log-эффект | n пар при 80% мощности |
|---|---|---|
| ×2.5 (наблюдалось между блоками, конфаундировано) | 0.92 | **≈ 20** |
| ×2.0 | 0.69 | ≈ 35 |
| ×1.4 (наблюдалось внутри блока) | 0.34 | ≈ 140 ⛔ не влезает |
**Пре-регистрируем n = 24 пары** (запас над 20). Если истинный эффект ×1.4 — проба его не увидит,
и **это записывается как исход «величина ниже разрешения замера», а не как «эффекта нет»**.
### 2.4 Смета и гард
24 пары × 2 фактора промпта = 4 руки по 24 клетки = **96 вызовов**. По фактическому расходу
редактора на чанк (~4 300 вход / ~2 900 выход) и нынешнему прайсу `pro`: пик ≈ **$1.7**, офф-пик
**$0.85**. ⛔ Гнать в офф-пик. Потолок кассы — **$2.50**, гард обязателен, пре-рег фризится
коммитом ДО первого платного вызова.
### 2.5 Правило решения — записывается ДО чисел
* **Эндпойнт 1 (главный):** отношение объёма размышления `low`/`off`, парно, с длиной входа
ковариатой. Порог: двусторонний знаковый тест p<0.05 И медианное отношение вне [0.8; 1.25].
* **Эндпойнт 2:** цена за доставленный знак — то же правило.
* **Эндпойнт 3 (промпт):** тот же тест по оси SHA промпта.
* ⛔ **Гейт против зелени на пустоте:** нулевой знаменатель ⇒ прибор ОТКАЗЫВАЕТ, а не печатает
«в пределах».
* ⛔ **Эхо-гейт включён во всех руках** — последняя линия против тихого провала. ⚠ `low``off`:
мина вооружается ВЫКЛЮЧЕНИЕМ размышления, а три уровня эффорта едут с ним включённым, поэтому
арм `low` мину не вооружает — но гейт всё равно остаётся.
## 3. ШАГ 2. ПРОГОН 15 ГЛАВ — текст владельцу и единственный неповторённый элемент
Понижен из центрального, но не снят: он даёт то, чего не даёт никакой замер — **15 новых глав**.
**Что в нём подлинно ново** (остальное закрыто, см. §5.2): редакторская волна боевого профиля
**доведена до конца на книге С ЗАСЕЯННЫМ БАНКОМ**. `coldrun-v16` шёл на **пустом** сиде и встал на
3 юнитах из 14.
**Исполнение:** главы 2640 тома 1 (непереведённые, 39 914 знаков), запуск **из `textmachine-main`**
(в polygon нет `backend/configs/langpacks/ru`, бэкенд отстаёт на 65 коммитов), одной покупкой
(`--max-units 18`), потому что вторая покупка на майнящей книге требует `--resnapshot`.
Смета по леджеру ≈ **$1.7** пик / ≈$0.85 офф-пик, потолок **$2.50**.
**Мина нумерации:** движок не умеет смещение глав — срез пронумеруется 115, читать как 2640.
**Прибор:** `bank.py` (добавить третью запись в `RUNS` + маппинг глав +25) · движковые $0-гейты ·
`retrieval_state`.
## 4. ШАГ 3. УБОРКА — $0
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).
## 5. РАЗБОР ОТВЕРГНУТЫХ РЕДАКЦИЙ — сохранено как класс ошибок
### 5.1 Редакция 1 (отвергнута: «не двигает продукт»)
Прибор верности — вопрос закрыт замером (наши редакторы не дописывают: рост знаков 0.4% и 0.6%).
Проба единицы выдачи — гипотеза опровергнута нашими же данными (`pro` на единице ~500 токенов дал
те же 35% изменённого, что и на главе), арм запрещён гардрейлом D39.87, конфаунд двух факторов,
смета занижена ×10.
### 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).
### 5.3 Сквозной класс — восемь случаев за трое суток
**Показания инструмента (или собственная память) приняты за факт о мире.** Реестр — Д52.5.
Восьмой случай — этот план: я утверждал отсутствие того, что измерил сам сутками ранее.
**Сквозной класс — один:** показания инструмента, собственной памяти или своей ветки приняты за
факт о мире. Лечение, выведенное из десяти случаев: **отрицательный результат предъявляется с
положительным контролем**, а прежде «этого нет» — смотреть каталог артефактов, а не только доки
своей ветки.