Close the skeptic's nine: the unit arithmetic gets its missing step back, the ledger inherits base spend across copies, and the freeze moves into the polygon zone

This commit is contained in:
heaven 2026-09-01 23:46:36 +03:00
parent 9c5bc853f6
commit c1c6224644

View file

@ -39,10 +39,15 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256
**Условия копирования:** движок остановлен (WAL закрыт), `book_id` тот же (он входит в
`request_hash`), в `book.yaml` меняются РОВНО два поля — `project_db` и `pipeline`.
* **КОНТРОЛИРУЕТСЯ длина входа:** `len(draft)` и `prompt_tokens` — ковариата. ⚠ Честно: чанки движка
дают узкий диапазон (44126946 токенов), поэтому ось **контролируется, а не измеряется**.
узки по `prompt_tokens` (44126946: там доминируют исходник и системное), **но сама длина черновика
широка — 4276171 знак, разброс ×14**, и она входит в модель ковариатой (§4). Прежняя формулировка
«контролируется, а не измеряется» снята как противоречащая §4.
* **ФИКСИРУЕТСЯ:** модель и дата вендор-доки · бинарь `tmctl` по sha · `models.yaml` по sha ·
потолок вывода · `temperature 0.4` · `few_shot: false` · санитайзер ON ·
`escalation.budget_usd: 0` — ⚠ **обоснование прежней редакции («иначе флагнутый юнит уйдёт хопом»)
`escalation.budget_usd: 0` **ТОЛЬКО в четырёх конфигах рук.** ⛔ **В БАЗОВОМ прогоне он обязан быть
> 0**, иначе эхо-черновики останутся флагнутыми: в холодном прогоне 5 хопов на 25 вызовов,
$0.103 на 10 глав ⇒ **≈$0.25 на 24 главы, и это отдельная строка сметы**.
⚠ **обоснование прежней редакции («иначе флагнутый юнит уйдёт хопом»)
ЛОЖНО и снято: редактор эскалировать не может по построению** (`pipeline.go:1012`=`escalate_to is
only allowed on a translator role`). Настройка инертна для edit-волны; держим её как гигиену, а не
как защиту.
@ -57,7 +62,7 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256
**Единица наблюдения** — клетка (юнит × рука); **единица анализа** — юнит.
**Требование §14 «потолок вывода одинаков во всех руках» выполняется само:** `stagerun.go:109-125`
даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при черновике ~7 тыс. знаков это
даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при МАКСИМАЛЬНОМ черновике 6171 знак это
≈4.5 тыс. < 16000 **16000 у всех юнитов во всех руках по построению**, ретрай 32000 тоже одинаков.
⚠ Числа прежней редакции были не те: реальные черновики **4276171 знак** (не «~7 тыс.»), а
«44126946» — это `prompt_tokens` трёх edit-вызовов (исходник + черновик + системное), не длина
@ -72,7 +77,7 @@ SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256
**Лечение без правки Go, с замеренной точностью:** `R̂ = completion_tokens 0.3644·len(response_text)`.
Коэффициент — видимый выход pro-редактора на zh→ru; **пере-снят мной независимо: 0.3644 токена/знак,
n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пренебрежима при размышлении в тысячах и заметна
n=16, sd 0.0069**. Ошибка типично ~3% видимого выхода, **худшая клетка 5.3%**; пренебрежима при размышлении в тысячах и заметна
лишь при малом размышлении. Коэффициент **пинится в пре-реге**.
**Границы формулы, названные до покупки** (проверено независимо на 185 клетках рига с отчётным
`reasoning_tokens`: 0.3670.369, sd 0.0070.010): (1) **любой CJK в выходе** ломает оценку — иероглиф
@ -103,6 +108,11 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
таблицы мощности (требовало бы истинного эффекта ≈×2.3 против заявленных ×1.84) и потому что сама
полоса — заимствованная конвенция биоэквивалентности, к объёму размышления не обоснованная.
Полоса остаётся **описательной**: попадание в неё печатается, решения не несёт.
**Цензура на потолке — правило записано до чисел.** В холодном прогоне 1 из 4 `∅`-строк вернула
`length` ровно на 16000 при непустом тексте: там `R̂`**нижняя граница**, а ретрай на 32000 есть
ДРУГОЙ розыгрыш. ⇒ **E1 считается по попытке 0**; клетка с `length` входит как правая цензура
(`R̂ ≥` наблюдённого). Знаковый вклад пары сохраняется, пока цензурированная `∅``low`; если
наоборот — пара идёт как ничья, а не выбрасывается.
* **E2:** то же для `log(cost/delivered)` — отдельно по попытке 0 (равный потолок) и по итогу юнита
(боевая цена). ⭐ Средний член цены за знак — константа, поэтому разница рук сидит в
**ρ = R̂/delivered**. ⚠ Оговорка: 24-я клетки юнита бьют префикс-кэш, вход дешевеет ~$0.0060.009;
@ -118,8 +128,14 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
устойчивости E1/E3**, не как решающий тест.
* **Провал прибора:** сигнатура Δ`prompt_tokens` вне полосы у >20% юнитов ⇒ проба аннулируется,
деньги называются. ⛔ **Полоса НЕ задана заранее и не может быть**: единственное известное число
(79) снято на en и на риге. ⇒ **Пред-полёт ЗАМЕРЯЕТ сигнатуру и пинит полосу коммитом**, и лишь
(79) снято на en и на риге. ⇒ **Пред-полёт ЗАМЕРЯЕТ сигнатуру и пинит её коммитом**, и лишь
после этого она становится гейтом.
**Но «полосу» из пред-полёта не вывести:** один юнит даёт две сигнатуры (P₇ и P₉), разброса в
них нет. Поэтому правило допуска объявляется ЗДЕСЬ, до замера, и опирается на контроль 05.08:
при побайтно одинаковых `messages` провайдер повторяет `prompt_tokens` **в точности** ⇒ сигнатура
ожидается КОНСТАНТОЙ. **Допуск: ±2 токена** от значения, снятого пред-полётом (запас на неучтённую
серверную вставку, не на шум). Клетка вне допуска — «сигнатура не воспроизвелась»; >20% таких
юнитов ⇒ проба аннулируется.
**Мощность.** В кресте 2×2 контраст главного эффекта на юните имеет sd = σ (не σ√2) — поэтому n
вдвое меньше, чем в простой паре. Источник σ: **эррата Д47.7** (`23-editor-tier.md:7201`=`sd одного розыгрыша = 1.02`, 16 пар
@ -143,10 +159,18 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
руке — **прибор ОТКАЗЫВАЕТ**, а не печатает «в пределах».
3. **Эхо-гейт включён во всех руках.**`low` ≠ выключение: мина вооружается ТУМБЛЕРОМ, а уровни
эффорта едут с размышлением включённым. Гейт всё равно остаётся.
4. **Касса:** `ceilings.book_usd` на каждую БД + `--ceiling-usd`; отказ леджера = **СТОП и вопрос
владельцу**; добор после чисел запрещён; потолок сессия не поднимает.
5. **Фриз:** пре-рег, скрипт эндпойнта, четыре `pipeline.yaml` и два `editor.md` — коммитами ДО
первой платной клетки.
4. **Касса — и здесь ловушка, которую видно только в коде.** `ledger.go:58`=`FROM spend WHERE book_id`
считает потолок по `book_id`, а **копия БД несёт базовый расход под тем же `book_id`** (в холодном
прогоне это $0.4361). ⇒ `ceilings.book_usd` каждой копии = **база + доля руки + запас**, то есть в
`book.yaml` меняются ТРИ поля (`project_db`, `pipeline`, `ceilings`), либо потолок задаётся
`--ceiling-usd` на каждый запуск. И **число владельцу подаётся ОДНОЙ суммой**: база + пред-полёт +
N юнитов × 4 руки — иначе базовый расход посчитается четырежды или не посчитается вовсе.
Отказ леджера = **СТОП и вопрос владельцу**; добор после чисел запрещён; потолок сессия не поднимает.
5. **Фриз — и он обязан лежать в зоне полигона.** Пре-рег и скрипт эндпойнта коммитятся в
`eval/dovodka/`. ⚠ Четыре `pipeline.yaml` и два `editor.md` физически живут в каталоге книги —
это ОТДЕЛЬНЫЙ репозиторий с открытым вопросом «кто коммитит книги», поэтому в зону полигона
кладутся **их замороженные копии вместе с sha256**; иначе «коммитами ДО первой клетки» не
исполнимо по канону. Всё — ДО первой платной клетки.
## 6. ⚠ ДЕНЬГИ — И ЗДЕСЬ НУЖНО ЧИСЛО ВЛАДЕЛЬЦА
@ -158,14 +182,24 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
ретрай на 32000; попытка 0 — $0.048 при n=3); обрыв случился у **1 строки из 4**.
**Клетка `low` ≈ $0.04 — ИСТОЧНИКА НЕТ:** движковых edit-вызовов на `low` не существует вовсе, а
хопы на `low` — роль переводчика ($0.0040.040). Это **предположение, а не замер**, и его проверяет
пред-полёт. Юнит (2+2) ≈ **$0.26** при этом предположении.
пред-полёт.
**Арифметика юнита, по шагам (её пропуск в прошлой редакции ломал все производные):** попытка 0
у `∅` = $0.048; обрыв на 16000 случается у ~25% и добавляет ретрай на 32000 (+$0.070) ⇒
**эффективная `∅` ≈ $0.048 + 0.25·0.070 ≈ $0.066**, с запасом на разброс — **$0.09**.
Юнит (2 × `∅` + 2 × `low`) ≈ 2·0.09 + 2·0.04 = **$0.26**.
| строка | клеток | расчётно, ПИК |
| строка сметы | клеток | расчётно, ПИК |
|---|---|---|
| пред-полёт (1 юнит × 4 руки) | 4 | ≈ **$0.25** |
| 24 юнита (~17 глав) | 96 | ≈ **$7.5** (вкл. 20% запаса) |
| 32 юнита (~24 главы) | 128 | ≈ **$9.9** (вкл. 20% запаса) |
| базовый прогон | — | ≈ $0.40.6 |
| базовый прогон (черновая волна + майнинг + терминолог) | — | ≈ $0.6 |
| эскалация эхо-черновиков в базовом прогоне (`budget_usd` > 0) | ~12 хопов | ≈ $0.25 |
| пред-полёт (1 юнит × 4 руки) | 4 | ≈ $0.25 |
| **вариант A:** 24 юнита × 4 руки (+20% запаса) | 96 | ≈ $7.5 |
| **вариант B:** 32 юнита × 4 руки (+20% запаса) | 128 | ≈ $10.0 |
**ОДНОЙ СУММОЙ, как и надо просить у владельца** (иначе база посчитается четырежды или ни разу —
леджер считает потолок по `book_id`, а его несут все четыре копии):
* **вариант A (24 юнита): $8.6** — разрешающая способность ×2.02;
* **вариант B (32 юнита): $11.1** — разрешающая способность ×1.84.
**Чувствительность, названная до покупки:** если `low` на zh режет размышление слабо (×1.4,
как внутри блока Д47), клетка `low` дорожает до $0.050.065 ⇒ 32 юнита ≈ **$9.510.5 до запаса**.