Apply the skeptic's pre-freeze list: name the real mechanism that keeps drafts free, fix the stop condition, drop the unreachable branch, and put every ceiling in peak terms
This commit is contained in:
parent
d1819b0d04
commit
9c5bc853f6
1 changed files with 76 additions and 21 deletions
|
|
@ -25,23 +25,43 @@ D39.170) — она в `main`; это следствие расхождения
|
|||
| P₉·E_low | тот же | `"low"` | `low` |
|
||||
|
||||
Промпты различаются одной строкой; **метка `v3-discourse-reflow` у обоих одна**, поэтому берём по
|
||||
SHA — снапшот их различает (`snapshot.go:289`).
|
||||
SHA — снапшот их различает (`snapshot.go:288`=`prompt_sha256`).
|
||||
|
||||
* **БЛОКИРУЕТСЯ трудность:** каждая рука видит ВСЕ юниты. Реализация: один базовый прогон (черновая
|
||||
волна + майнинг + терминолог), затем БД копируется ×4; черновики ре-пинятся за $0.
|
||||
волна + майнинг + терминолог), затем БД копируется ×4.
|
||||
⭐ **Черновики выживают за $0 НЕ ре-пином** (`repin.go` — механизм смены БАНКА, при смене
|
||||
промпта/эффорта он даёт «Nothing is re-pinnable»), **а потому, что снапшот ПЕР-ВОЛНОВЫЙ**
|
||||
(`snapshot.go:225-231`=`waveDraft`): правка edit-стадии draft-снапшот не двигает, и черновики
|
||||
идут обычным resume.
|
||||
⛔ **Базовый прогон ОБЯЗАН остановиться ДО edit-волны, и это делает только `--verify-bank`.**
|
||||
Без флага движок авто-продолжает с неподписанным банком и покупает edit-юнит в том же процессе —
|
||||
тогда каждая копия потребует `--resnapshot` и перекупит базовые edit-юниты ×4.
|
||||
**Условия копирования:** движок остановлен (WAL закрыт), `book_id` тот же (он входит в
|
||||
`request_hash`), в `book.yaml` меняются РОВНО два поля — `project_db` и `pipeline`.
|
||||
* **КОНТРОЛИРУЕТСЯ длина входа:** `len(draft)` и `prompt_tokens` — ковариата. ⚠ Честно: чанки движка
|
||||
дают узкий диапазон (4412–6946 токенов), поэтому ось **контролируется, а не измеряется**.
|
||||
* **ФИКСИРУЕТСЯ:** модель и дата вендор-доки · бинарь `tmctl` по sha · `models.yaml` по sha ·
|
||||
потолок вывода · `temperature 0.4` · `few_shot: false` · санитайзер ON ·
|
||||
⭐ **`escalation.budget_usd: 0`** — иначе флагнутый юнит уйдёт хопом в другую модель и загрязнит руку.
|
||||
`escalation.budget_usd: 0` — ⚠ **обоснование прежней редакции («иначе флагнутый юнит уйдёт хопом»)
|
||||
ЛОЖНО и снято: редактор эскалировать не может по построению** (`pipeline.go:1012`=`escalate_to is
|
||||
only allowed on a translator role`). Настройка инертна для edit-волны; держим её как гигиену, а не
|
||||
как защиту.
|
||||
* **РАНДОМИЗИРУЕТСЯ** порядок рук внутри юнита; **интерливинг во времени** — четыре клетки юнита в
|
||||
окне 10–20 минут, чтобы дрейф сервинга не разошёлся между руками. В цикле `|| break` (урок Д47.6).
|
||||
окне 10–20 минут, чтобы дрейф сервинга не разошёлся между руками.
|
||||
⛔ **Останов цикла НЕ по коду выхода:** штатная остановка по объёму приходит **и как 0, и как 2**,
|
||||
различает её только строка `VOLUME CEILING:` в выводе. `|| break` (урок Д47.6) здесь либо рвёт
|
||||
цикл на первом штатном стопе, либо не рвёт никогда ⇒ **цикл разбирает вывод на `VOLUME CEILING:`**.
|
||||
⚠ Окно 10–20 мин достижимо не всегда: латентности edit-вызовов 43–216 с, ретрай добавляет ~200 с —
|
||||
юнит с обрывом в обеих `∅`-руках упирается в верх окна.
|
||||
|
||||
**Единица наблюдения** — клетка (юнит × рука); **единица анализа** — юнит.
|
||||
|
||||
⭐ **Требование §14 «потолок вывода одинаков во всех руках» выполняется само:** `stagerun.go:113-122`
|
||||
⭐ **Требование §14 «потолок вывода одинаков во всех руках» выполняется само:** `stagerun.go:109-125`
|
||||
даёт `base = max(EstimateTokens(draft)·2.2, min_max_tokens)`; при черновике ~7 тыс. знаков это
|
||||
≈5.1 тыс. < 16000 ⇒ **16000 у всех юнитов во всех руках по построению**, ретрай 32000 тоже одинаков.
|
||||
≈4.5 тыс. < 16000 ⇒ **16000 у всех юнитов во всех руках по построению**, ретрай 32000 тоже одинаков.
|
||||
⚠ Числа прежней редакции были не те: реальные черновики **427–6171 знак** (не «~7 тыс.»), а
|
||||
«4412–6946» — это `prompt_tokens` трёх edit-вызовов (исходник + черновик + системное), не длина
|
||||
черновика. Механизм ломается только выше ~21 800 русских знаков или ~7 300 CJK-знаков эха.
|
||||
|
||||
## 3. ⛔ ДВЕ ДЫРЫ ПРИБОРА — БЕЗ НИХ ЗАМЕР НЕ ИЗМЕРИТ СВОЙ ПРЕДМЕТ
|
||||
|
||||
|
|
@ -53,7 +73,13 @@ SHA — снапшот их различает (`snapshot.go:289`).
|
|||
**Лечение без правки Go, с замеренной точностью:** `R̂ = completion_tokens − 0.3644·len(response_text)`.
|
||||
Коэффициент — видимый выход pro-редактора на zh→ru; **пере-снят мной независимо: 0.3644 токена/знак,
|
||||
n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пренебрежима при размышлении в тысячах и заметна
|
||||
лишь при `R̂ < ~500`. Коэффициент **пинится в пре-реге**.
|
||||
лишь при малом размышлении. Коэффициент **пинится в пре-реге**.
|
||||
⚠ **Границы формулы, названные до покупки** (проверено независимо на 185 клетках рига с отчётным
|
||||
`reasoning_tokens`: 0.367–0.369, sd 0.007–0.010): (1) **любой CJK в выходе** ломает оценку — иероглиф
|
||||
≈1 токен, видимая часть недооценивается, `R̂` завышается; направление консервативно для E1, но
|
||||
раздувает клетки E5; (2) при `R̂ < ~700` относительная ошибка достигает 20–70% — у мелких клеток
|
||||
`low` вывод о величине не делается; (3) брать сырую строку попытки, **не `sanitized_export`** — та
|
||||
несёт обрезанный текст и пустой `usage_json`; (4) «±2.3%» занижено: худшая клетка дала **5.3%**.
|
||||
|
||||
**Дыра 2. У движка нет проводного артефакта** — стадийный лог эффорт не печатает. Лечение:
|
||||
(а) снапшот фолдит `Reasoning` и `PromptSHA256` ⇒ **у четырёх рук четыре разных `snapshot_id`**, это
|
||||
|
|
@ -67,17 +93,33 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
|
|||
`cost/delivered` · `finish` попытки 0 · `flag_reason`.
|
||||
|
||||
* **E1 (главный):** по-юнитный контраст `log R̂(low) − log R̂(∅)`; **Вилкоксон знаково-ранговый**,
|
||||
α=0.05 двусторонне; медиана и 95% ДИ Ходжеса–Лемана.
|
||||
**Решение:** p<0.05 И ДИ вне [0.8; 1.25] ⇒ эффект есть; ДИ целиком внутри ⇒ эффекта нет
|
||||
(эквивалентность); иначе ⇒ ⭐ **«НИЖЕ РАЗРЕШЕНИЯ ЗАМЕРА» — и это НЕ «эффекта нет»**.
|
||||
α=0.05 двусторонне; медиана и 95% ДИ Ходжеса–Лемана печатаются как ВЕЛИЧИНА.
|
||||
⛔ **Исходов ДВА, а не три** — прежняя редакция обещала третий и была неправа: ветвь
|
||||
«эквивалентность» (ДИ целиком внутри полосы) при наших n **недостижима** — полуширина ДИ в
|
||||
логарифме ≈0.43 при n=32 против полуширины полосы 0.22, для эквивалентности нужно n≈117.
|
||||
**Решение:** `p<0.05` ⇒ эффект есть, величина = медиана с ДИ. Иначе ⇒ **«НИЖЕ РАЗРЕШЕНИЯ
|
||||
ЗАМЕРА»**, и это НЕ «эффекта нет».
|
||||
⚠ Критерий — **только `p<0.05`**: со-условие «ДИ вне [0.8;1.25]» снято, потому что оно строже
|
||||
таблицы мощности (требовало бы истинного эффекта ≈×2.3 против заявленных ×1.84) и потому что сама
|
||||
полоса — заимствованная конвенция биоэквивалентности, к объёму размышления не обоснованная.
|
||||
Полоса остаётся **описательной**: попадание в неё печатается, решения не несёт.
|
||||
* **E2:** то же для `log(cost/delivered)` — отдельно по попытке 0 (равный потолок) и по итогу юнита
|
||||
(боевая цена). ⭐ Средний член цены за знак — константа ($1.45 за 1M знаков в пик), поэтому вся
|
||||
разница рук сидит в **ρ = R̂/delivered**; ρ свободна от прайса и времени суток.
|
||||
(боевая цена). ⭐ Средний член цены за знак — константа, поэтому разница рук сидит в
|
||||
**ρ = R̂/delivered**. ⚠ Оговорка: 2–4-я клетки юнита бьют префикс-кэш, вход дешевеет ~$0.006–0.009;
|
||||
рандомизация порядка это усредняет, но добавляет ~10% шума на клетку.
|
||||
* **E3:** ось промпта — те же тесты. Прогноз, калибрующий удивление: |эффект| < ×1.25.
|
||||
* **E4 (восстановлен — без него крест не даёт ничего сверх двух пар):** взаимодействие промпт×эффорт,
|
||||
контраст `(P₉E_low − P₉E∅) − (P₇E_low − P₇E∅)`. sd контраста вдвое больше ⇒ MDE ≈ ×3.3 при n=32:
|
||||
**эндпойнт описательный, выводов не несёт** — но печатается, иначе крест не отличим от двух пар.
|
||||
* **E5 (безопасность, блокирует любую рекомендацию):** доля клеток с эхом/`cjk_artifact` и с
|
||||
`length` по рукам. Если у `low` эхо-клеток ≥3 сверх `∅` — **«риск эха на low» независимо от цены**.
|
||||
* **Ковариата длины входа** — требование §14, которое Вилкоксон принять не может. Восстановлено
|
||||
ОТДЕЛЬНОЙ моделью: `log R̂ ~ effort + prompt + log(len_draft) + (1|unit)`, **как проверка
|
||||
устойчивости E1/E3**, не как решающий тест.
|
||||
* **Провал прибора:** сигнатура Δ`prompt_tokens` вне полосы у >20% юнитов ⇒ проба аннулируется,
|
||||
деньги называются.
|
||||
деньги называются. ⛔ **Полоса НЕ задана заранее и не может быть**: единственное известное число
|
||||
(−79) снято на en и на риге. ⇒ **Пред-полёт ЗАМЕРЯЕТ сигнатуру и пинит полосу коммитом**, и лишь
|
||||
после этого она становится гейтом.
|
||||
|
||||
**Мощность.** В кресте 2×2 контраст главного эффекта на юните имеет sd = σ (не σ√2) — поэтому n
|
||||
вдвое меньше, чем в простой паре. Источник σ: **эррата Д47.7** (`23-editor-tier.md:7201`=`sd одного розыгрыша = 1.02`, 16 пар
|
||||
|
|
@ -108,14 +150,27 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
|
|||
|
||||
## 6. ⚠ ДЕНЬГИ — И ЗДЕСЬ НУЖНО ЧИСЛО ВЛАДЕЛЬЦА
|
||||
|
||||
По фактическому леджеру холодного прогона: клетка `∅` ≈ **$0.054**, с учётом 25% обрывов на 16000 и
|
||||
ретрая — эффективно ≈ **$0.09**; клетка `low` ≈ **$0.04**. Юнит (2+2) ≈ **$0.26**.
|
||||
⛔ **Все числа ниже — в ПИКОВЫХ терминах, и иначе быть не может:** леджер движка букирует пик всегда
|
||||
(`models.yaml:180`=`держим пик`). Потолок кассы, `--ceiling-usd` и число владельца — тоже пиковые;
|
||||
офф-пик — это счёт вендора по факту, а не потолок.
|
||||
|
||||
| объём | клеток | расчётно (пик) | фактически в офф-пик |
|
||||
|---|---|---|---|
|
||||
| 24 юнита (~17 глав) | 96 | ≈ **$7.5** | ≈ $3.8 |
|
||||
| 32 юнита (~24 главы) | 128 | ≈ **$9.9** | ≈ $5.0 |
|
||||
| плюс базовый прогон | — | ≈ $0.6 | ≈ $0.3 |
|
||||
По леджеру холодного прогона: клетка `∅` ≈ **$0.054** (среднее четырёх ненулевых edit-строк, включая
|
||||
ретрай на 32000; попытка 0 — $0.048 при n=3); обрыв случился у **1 строки из 4**.
|
||||
⚠ **Клетка `low` ≈ $0.04 — ИСТОЧНИКА НЕТ:** движковых edit-вызовов на `low` не существует вовсе, а
|
||||
хопы на `low` — роль переводчика ($0.004–0.040). Это **предположение, а не замер**, и его проверяет
|
||||
пред-полёт. Юнит (2+2) ≈ **$0.26** при этом предположении.
|
||||
|
||||
| строка | клеток | расчётно, ПИК |
|
||||
|---|---|---|
|
||||
| пред-полёт (1 юнит × 4 руки) | 4 | ≈ **$0.25** |
|
||||
| 24 юнита (~17 глав) | 96 | ≈ **$7.5** (вкл. 20% запаса) |
|
||||
| 32 юнита (~24 главы) | 128 | ≈ **$9.9** (вкл. 20% запаса) |
|
||||
| базовый прогон | — | ≈ $0.4–0.6 |
|
||||
|
||||
⚠ **Чувствительность, названная до покупки:** если `low` на zh режет размышление слабо (×1.4,
|
||||
как внутри блока Д47), клетка `low` дорожает до $0.05–0.065 ⇒ 32 юнита ≈ **$9.5–10.5 до запаса**.
|
||||
У рекомендации «$11» остаётся зазор 5–15%, и гард с заметной вероятностью остановит раньше 32-го
|
||||
юнита. Это штатный исход: **стоп и вопрос владельцу, добор после чисел запрещён.**
|
||||
|
||||
⛔ **Мои прежние сметы ($1.7 и $2.50) занижены втрое** и снимаются: они считали «выход» как видимый
|
||||
текст, тогда как размышление у DeepSeek сидит ВНУТРИ `completion_tokens`. Это тот же класс, что
|
||||
|
|
@ -148,7 +203,7 @@ n=16, sd 0.0069**. Ошибка ≈±2.3% видимого выхода, пре
|
|||
| 5 | «засеять `first_person`/`speech`» | поля мёртвые: не копируются в рендер, не входят в хеш |
|
||||
| 6 | «движок ручку не шлёт вообще» | `capability.go:236` шлёт `low|medium|high`; доказано на проводе |
|
||||
| 7 | «гейт запретит» | гейт в другом тесте и пинит только шиппинг-конфиги |
|
||||
| 8 | «риг потерял бы роль редактора» | `tenant_panel/prompts.py:143` грузит боевой `editor.md` |
|
||||
| 8 | «риг потерял бы роль редактора» | `tenant_panel/prompts.py:141`=`def editor_msgs` грузит боевой `editor.md` |
|
||||
| 9 | «эхо на `pro`@`low` не мерено» | 5 хопов в `coldrun-v16`, эхо 0 — ⚠ но роль переводчика, не редактора |
|
||||
| 10 | сметы $1.7 / $2.50 | занижены втрое: размышление внутри `completion_tokens` |
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue