Land the cold-run report the owner closed: what the first paid pass proved, what it retracted, and the four axes the next probe needs
This commit is contained in:
parent
bb541a8293
commit
244f808e7b
2 changed files with 644 additions and 1 deletions
File diff suppressed because one or more lines are too long
643
docs/archive/reports/COLDRUN_V16_REPORT_2026-08-31.md
Normal file
643
docs/archive/reports/COLDRUN_V16_REPORT_2026-08-31.md
Normal file
|
|
@ -0,0 +1,643 @@
|
|||
# ОТЧЁТ: холодный прогон движка на схеме v16 (ПЛАТНАЯ бэкенд-сессия)
|
||||
|
||||
> ## РЕВЬЮ-ШАПКА — читать ДО тела
|
||||
>
|
||||
> **Пак ЗАКРЫТ решением ВЛАДЕЛЬЦА 31.08: прогон НЕ доводить.** Остановлено на потраченных
|
||||
> **$0.436110** из санкции $0.80; `--resnapshot` не нажимался, вторая порция не покупалась,
|
||||
> дополнительных трат НОЛЬ. Довод владельца: причина, по которой редактор съел половину захода, НЕ
|
||||
> УСТАНОВЛЕНА — ещё доллар купил бы то же число с той же неизвестностью внутри. Сначала
|
||||
> контролируемая проба (§14), потом разговор о цене.
|
||||
>
|
||||
> **Книга остаётся `--partial` с одиннадцатью помеченными дырами, ось `stale` остаётся закрытой
|
||||
> дрейфом. Это честный исход, а не недоделка.**
|
||||
>
|
||||
> ### Статус выводов
|
||||
>
|
||||
> **ДОКАЗАНО ИСПОЛНЕНИЕМ** (каждое — с командой и артефактом в теле):
|
||||
> движок переводит книгу насквозь за настоящие деньги и отдаёт файл, проходящий epubcheck 5.1.0
|
||||
> (0/0/0/0) · объёмный потолок `--max-units` · нота D39.158 ОБЕИМИ половинами (стоп и не-стоп,
|
||||
> 70 строк `bank_stop_presented`) · `build` exit 16 с нулевой записью на диск · обе ловушки `build`
|
||||
> (`--format epub` МОЛЧА удаляет соседний `.txt` при exit 0; `book_files` публикует путь
|
||||
> несуществующего файла) · русские пометки читателя на дыре · строка бэклога 198 (17 анонсов,
|
||||
> 17 уникальных, повторов ноль через ТРИ процесса) · строка 239 дословно · строка 240 (у
|
||||
> `bank_stop_presented` нет ни одного `DELETE` во всём движке) · строка 154 числами · контракт
|
||||
> `migrate` для существующей книги · **уточнение контракта: остановка по объёму по КОДУ ВЫХОДА
|
||||
> неотличима от обычного завершения (0 или 2)** · деньги сходятся тремя путями, из которых независим
|
||||
> только `request_log`.
|
||||
>
|
||||
> **СНЯТО МНОЙ ЖЕ — не считать результатом пака** (подробно §4.5):
|
||||
> «редактор эмитит вдвое больше токенов ⇒ виновато неуправляемое размышление» · разложение
|
||||
> «×9.33 = ×4.55 × ×2.07» · «терминологический контур стабилен, двигались только цены» ·
|
||||
> «у `deepseek-v4-pro` ручки эффорта нет» (опровергнуто ВЛАДЕЛЬЦЕМ через вендор-доку; §4.5-4).
|
||||
>
|
||||
> **НЕ ПРОВЕРЕНО** (полный список — §11): книга до `complete=true` не доведена · exit 4 не наблюдался ·
|
||||
> `withheld`/`incomplete`/`ghost` не возникли · `stale` недостижим · причина роста выходных токенов
|
||||
> редактора · конвенционный резолв промпта переводчика · размеры юнитов в знаках (носителя нет) ·
|
||||
> живая читалка · сверка причин флагов сделана на ОДНОМ значении из пятнадцати · манифест против
|
||||
> `ingest/manifest.go` не сверялся.
|
||||
>
|
||||
> ⚠ **Клеймы о рантайме без живого прогона в этом отчёте помечены как таковые.** Каталог прогона
|
||||
> (`/home/ubuntu/books/gu-zhenren/coldrun-v16/`) в репозиторий НЕ уезжает — всё, что должно пережить
|
||||
> рестарт, воспроизведено в теле: команды, числа с отметками момента, дословные строки движка, коды
|
||||
> выхода.
|
||||
>
|
||||
> ⚠ **HEAD с тех пор ушёл.** Прогон куплен на `065d8ac` бинарём sha256
|
||||
> `e6f872df5b9c031f558ca2cc8a900b3822d2fc38d208453269ebd6dc3f78f9d1`; после сдачи лёг пак
|
||||
> «деньги и честность» (**D39.182**), починивший часть найденного здесь — разложение оплаченного
|
||||
> хвоста, ложную причину снапшот-гарда, расхождение `config_drift` между `status` и `export`,
|
||||
> слепоту денег к правке исходника на месте. **Числа этого отчёта относятся к `065d8ac` и
|
||||
> пере-проверяются только на нём.** Работу D39.182 я не пере-проверяла — она принята.
|
||||
|
||||
Сессия `textmachine-main-a2`. Промт `docs/BACKEND_COLDRUN_V16_SESSION_PROMPT.md` (оркестратор №21).
|
||||
Платная часть 2026-08-31, **10:00:35 – 10:22:41 UTC**, в ДОЛИНЕ (пики UTC 01–04 и 06–10 у DeepSeek
|
||||
вдвое дороже; цены в `models.yaml` пинованы ПИКОВЫЕ ⇒ леджер завышает — в безопасную сторону).
|
||||
Каталог прогона: `/home/ubuntu/books/gu-zhenren/coldrun-v16/` — остаётся на диске целиком.
|
||||
|
||||
⚠ **Каждое денежное число — С ОТМЕТКОЙ МОМЕНТА.** Оси разделения прогонов в денежных таблицах нет:
|
||||
`checkpoints`/`spend` пожизненные по книге, единственная ось — `checkpoints.created_at`; ось прогона
|
||||
живёт только в `request_log.trace_id`. Оркестратор, читавший БД во время прогона, получил другие
|
||||
суммы — это движение живого прогона, а не дефект.
|
||||
|
||||
---
|
||||
|
||||
## 0. Результат
|
||||
|
||||
**Движок переводит книгу насквозь на настоящих деньгах и отдаёт файл, который ПРОХОДИТ ВАЛИДАТОР**
|
||||
(epubcheck 5.1.0, EPUB 3.3, 0 fatals / 0 errors / 0 warnings / 0 infos). ⚠ **Открытие в живой читалке
|
||||
НЕ проверено** — читалки на машине нет ни одной; файл передан владельцу, ось открыта до его ответа.
|
||||
|
||||
Полная цепь на десяти главах в СЕГОДНЯШНИХ ценах стоит **≈$1.14 по собственной оценке движка**
|
||||
(`projected_book_usd = 1.1377277707`) против приора ≈$0.58 и санкции $0.80. Прогон остановлен **не
|
||||
потолком, а снапшот-гардом**, потребовавшим `--resnapshot` после покупки двумя порциями.
|
||||
Куплено **$0.436110**, доставлено **3 юнита из 14** (черновая волна 14/14, редакторская 3/14).
|
||||
Отдан `--partial`-файл с 11 помеченными дырами.
|
||||
**Решение о продолжении — за владельцем. Я его не подменяла и потолок по проекции поднять не просила.**
|
||||
|
||||
## 1. Записка-план (§6.1) — выжимка
|
||||
|
||||
⚠ Слово «дословно» снимаю: полный текст — `coldrun-v16/PLAN-NOTE.md`, и каталог прогона в репозиторий
|
||||
НЕ уедет. Ниже выжимка; записка написана ДО первой покупки и с тех пор не правилась.
|
||||
|
||||
**Личность прогона.** HEAD `065d8ac` · последний коммит в `backend/` — `8adcb86` · `tmctl` собран из
|
||||
HEAD, sha256 **`e6f872df5b9c031f558ca2cc8a900b3822d2fc38d208453269ebd6dc3f78f9d1`** — сошёлся ТРЕМЯ
|
||||
независимыми путями (моя сборка · стендовый `~/.local/bin/tmctl` · независимая сборка оркестратора,
|
||||
сообщённая ДО моей). Go 1.26.7. Схема БД **v16**.
|
||||
|
||||
**Батарея ДО первой покупки.** `make battery` в `backend/`: build · vet (оба тег-набора +
|
||||
архитектурные анализаторы `tmvet`) · gofmt · `golangci-lint` **0 issues** · `go test ./... -race
|
||||
-count=1` — **18 пакетов `ok`, 4 без тестов**, 0 падений. **СКИПЫ ВСЛУХ, их три:**
|
||||
`TestMinerFullBookParity`, `TestHelperEventsRun`, `TestHelperKillLoop`; батарея сама печатает
|
||||
`--- did NOT run (no stand data; see battery-stand) ---`. Корпусные измерения (`TM_MINER_PARITY=1`,
|
||||
`TM_CHECKER_LABELS=1`) НЕ гонялись. ⚠ `EXIT=0` батареи в артефакт НЕ снят — это «со слов сессии».
|
||||
|
||||
**Три ручки денег, все выставлены до первого платного вызова:** `--ceiling-usd 0.80` на каждом
|
||||
`translate` · `ceilings: {book_usd: 0.80, day_usd: 1.00}` в `book.yaml` (дневной поднят выше книжного
|
||||
сознательно — несущим предохранителем обязан быть книжный) · `--max-units` порциями, **N названы
|
||||
числом: П1 = 3, П2/П3 = 14** (`units_total` из `manifest --json`).
|
||||
|
||||
**Конфиг — отличия от копии bank-low.** (A) пути: `prompt_override`, `models`, `langpack_root`
|
||||
переведены в `textmachine-main`; `mining.contrast_path` ОСТАВЛЕН в polygon-дереве (санкционированное
|
||||
исключение §1б). (B) `mined_delta:`/`mined_rejects:` СНЯТЫ — retired-ключи, иначе exit 10; потолки
|
||||
0.10/0.10 → 0.80/1.00. (C) **единственная смысловая правка: `escalation.budget_usd: 0.015 → 0.08`**.
|
||||
(D) пар-слой `pairs/zh-ru.yaml` скопирован (без него exit 10, см. §7). (E) сид не подключён.
|
||||
|
||||
**Цена копии, названная вслух ДО покупки:** черновая половина едет БАНКНОТНЫМ промптом
|
||||
`translator-banknote.md`, а не конвенционным боевым `translator.md`. Резолв по ролям: translator —
|
||||
через `prompt_override`; editor · terminologist · classifier — конвенцией.
|
||||
⇒ **Конвенционный резолв промпта переводчика этим прогоном НЕ ПРОВЕРЕН.**
|
||||
|
||||
### 1.1 Две девиации — обе подписаны ОРКЕСТРАТОРОМ, не владельцем
|
||||
|
||||
⚠ Называю прямо, потому что это разные полномочия.
|
||||
|
||||
1. **`escalation.budget_usd` 0.015 → 0.08.** Довод: 0.015 — не значение конфига, а объявленная
|
||||
девиация самой bank-low под её книжный потолок $0.10 («суб-бюджет ПОНИЖЕН СОЗНАТЕЛЬНО … ⚠ Это
|
||||
делает наблюдение эскалаций НЕПОЛНЫМ»); прецедент полной цепи minirun держал 0.30 при потолке
|
||||
$1.00 (30%), мои 0.08 — 10%. Суб-бюджет есть ПОДМНОЖЕСТВО книжного потолка и вывести прогон за
|
||||
санкционированные $0.80 не может.
|
||||
⚠ **И он был ПРОБИТ фактом: эскалации стоили $0.103305 против бюджета $0.08 — перелёт +29.1%.**
|
||||
Это документированный overshoot пре-хоп-гейта (`escalation.go`: read-then-act над
|
||||
`EscalationSpentUSD`), **впервые наблюдённый на настоящих деньгах**, и он — прямое следствие моей
|
||||
же правки. При 0.015 перелёт был бы тот же по механике, но 4 из 5 эхнутых чанков остались бы
|
||||
флагнутыми.
|
||||
2. **Покупок фактически ТРИ (П1/П2/П3), а §1в говорит «двумя порциями».** `--max-units` в П2 и П3
|
||||
одинаков (14), уже оплаченное не пере-оплачивается — по объёму порций по-прежнему две, стоп
|
||||
подписи это пауза внутри второй. Только так §5.4 закрывается ОБЕИМИ половинами.
|
||||
Подпись оркестратора №21 получена ДО покупки, дословно: «расхождением не считаю; свёртывать до двух
|
||||
вызовов не надо».
|
||||
|
||||
⚠ Обе развилки несены ПИНГОМ до денег. Артефакта подписи вне контекста сессии нет — при приёмке она
|
||||
восстанавливается только из журнала оркестратора.
|
||||
|
||||
## 2. Оси §5 — вердикты §7 (предъявлено / не предъявлено / опровергнуто)
|
||||
|
||||
| Ось | Вердикт | Где |
|
||||
|---|---|---|
|
||||
| §5.1 сквозной путь семи глаголов | **предъявлено** | §3, `logs/` |
|
||||
| §5.1 шесть состояний честности D39.175 | **частично** | ВОЗНИКЛИ два: `pending` (11) и `drift`. `withheld`/`incomplete`/`ghost` = 0 — **НЕ возникли, остаются непроверенными**. `stale` — не «0», а **UNKNOWN**: под дрейфом счётчик не считает |
|
||||
| §5.1 честное `config_drift=false` | **предъявлено с оговоркой** | снято на свежей книге ДО первого платного вызова; на строках прогона вышло «да» — причина в §4.4 |
|
||||
| §5.1 структура глав (строка 160) | **предъявлено** | §5 |
|
||||
| §5.1 две ловушки `build` | **предъявлено** | §6 |
|
||||
| §5.1 издательский результат (epubcheck) | **предъявлено на НЕПОЛНОЙ книге** | §6 |
|
||||
| §5.1 живая читалка | **ось ОТКРЫТА** | файл передан владельцу |
|
||||
| §5.2 коды выхода | **предъявлено** | ШЕСТЬ кодов фактически: 0·1·2·3·10·16 (§3) |
|
||||
| §5.3 деньги, оба базлайна | **предъявлено; ДВА моих вывода СНЯТЫ мной же** | §4 |
|
||||
| §5.4 стоп подписи, обе половины D39.158 | **предъявлено** | §7 |
|
||||
| §5.5 каналы шва и словари | **предъявлено ЧАСТИЧНО — см. блокер §8** | §8 |
|
||||
| §5.6 $0-провокации | **4 из 6** | §10 |
|
||||
| §5.7 строки 154 / 157 | **154 закрыта числами; 157 частично — носителя нет** | §9 |
|
||||
|
||||
## 3. Коды выхода — фактические `$?`
|
||||
|
||||
| Код | Где | Артефакт |
|
||||
|---|---|---|
|
||||
| **2** | **П1** `translate --max-units 3` — остановка по ОБЪЁМУ И один флагнутый чанк | `logs/16-exit-codes.log` |
|
||||
| **3** | П2 `translate --max-units 14 --verify-bank` — стоп подписи банка | `logs/16-exit-codes.log` |
|
||||
| **1** | П3 — снапшот-гард; и 5 раз на $0-отказах флагов | `logs/16-exit-codes.log`, `logs/15-flag-refusals.log` |
|
||||
| **2** | `status --json` на книге с флагами | `logs/16-exit-codes.log` |
|
||||
| **0** | `report` · `export` · `manifest` · `migrate` | `logs/16-exit-codes.log` |
|
||||
| **16** | `build` без `--partial` на книге с дырами | `logs/16-exit-codes.log` |
|
||||
| **10** | первый `manifest` без пар-слоя | ⚠ **артефакта нет** — держится прозой `PLAN-NOTE.md`, лог упавшего вызова не сохранён |
|
||||
| **0** | `build --partial` | ⚠ для форм, писавших рядом с БД, `$?` НЕ записан — 0 выведен из того, что напечатан `BuildReport` и файлы легли |
|
||||
|
||||
⚠ **УТОЧНЕНИЕ КОНТРАКТА, найденное собственной ошибкой.** Таблица §5.2 промта говорит
|
||||
`0 | чисто (в т.ч. остановка по --max-units — это ЗАВЕРШЕНИЕ)`. **Это верно только когда ничего не
|
||||
флагнуто.** П1 остановилась по объёму И имела флагнутый чанк ⇒ сработала ветка
|
||||
`errors.As(err, &flagged) → return 2` (`cmd/tmctl/main.go:133-134`), стоящая РАНЬШЕ «чисто».
|
||||
Объёмный стоп кода себе не присваивает вовсе — он едет на РЕЗУЛЬТАТЕ, а не на ошибке
|
||||
(`waverun.go:172`: «it must not reach the exit-code mapper at all»).
|
||||
⇒ **Остановка по объёму по коду выхода НЕ ОПОЗНАЁТСЯ: она приходит и как 0, и как 2, и различает её
|
||||
только строка `VOLUME CEILING:` в выводе.** Для платформы это значимо.
|
||||
⚠ Я сама сообщила оркестратору «П1 — exit 0», прочитав `[exited with code 0]` фоновой ОБЁРТКИ вместо
|
||||
строки `P1 EXIT=2`; поправка отправлена.
|
||||
|
||||
⛔ **Кода 4 (halt по денежному потолку) я НЕ ВИДЕЛА и не называю.** Коды 5·11·12·13·14·15·19 тоже.
|
||||
⚠ О форме: `tmctl … --no-such-flag | head -2` под `pipefail` даёт `141` — это **wait-status самого
|
||||
`tmctl`, убитого SIGPIPE** (не код контракта и не код `head`), исход гоночный. Без пайпа — **1**.
|
||||
|
||||
## 4. Деньги — момент 10:29:19Z, прогон стоит
|
||||
|
||||
### 4.1 Сверка путей
|
||||
|
||||
⚠ **Поправка к моей же формулировке.** `spend` и `checkpoints` пишутся ОДНОЙ транзакцией из одного
|
||||
значения (`store/ledger.go:178` `SettleWithCheckpoint`), поэтому их равенство — **инвариант, а не
|
||||
проверка**. Настоящий третий, независимый писатель — `request_log` (вне settle-транзакции). Все три:
|
||||
|
||||
```
|
||||
request_log SUM(cost_usd) = 0.436109664
|
||||
spend.committed = 0.436109664
|
||||
SUM(checkpoints) = 0.436109664
|
||||
```
|
||||
|
||||
Одна $0-команда `tmctl report` печатает две фигуры:
|
||||
`Book ledger: committed=$0.436110 reserved=$0.000000` и
|
||||
`ROUTING/MONEY: escalation hops=5 · spend by model: deepseek-v4-flash=$0.117940 · deepseek-v4-pro=$0.318169`
|
||||
(сумма 0.436109 — расхождение 1e-6 = округление до шести знаков).
|
||||
|
||||
### 4.2 Разложение
|
||||
|
||||
| стадия / роль / модель | оплаченных чекпойнтов | всего чекпойнтов | $ |
|
||||
|---|---|---|---|
|
||||
| edit / editor / deepseek-v4-pro | 4 | 5 | **0.214865** |
|
||||
| draft / translator / pro (эскалации) | 5 | 7 | 0.103305 |
|
||||
| draft / translator / flash | 20 | 29 | 0.068135 |
|
||||
| terminology / terminologist / flash | 6 | 6 | 0.040617 |
|
||||
| terminology / classifier / flash | 3 | 3 | 0.009188 |
|
||||
|
||||
⚠ Колонки разные не по описке: `checkpoints` хранит и производные строки с нулевой ценой
|
||||
(`banknote_export`, `sanitized_export`). Всего 50, оплаченных 38.
|
||||
**По покупкам** (`created_at`): П1 $0.264362 · П2 $0.171747 · **П3 $0.00**.
|
||||
|
||||
**Доля редактора — со знаменателем, потому что их два:**
|
||||
**49.3%** от всего прогона ($0.214865 из $0.436110) и **81.3%** внутри П1, куда целиком уместилась
|
||||
редакторская волна. Для сравнения: у minirun редактор — 80.6% его захода.
|
||||
|
||||
### 4.3 Оплаченный хвост — обе таблицы, финальные числа
|
||||
|
||||
- по `checkpoints`: эскалации (`escalation=1`) — **5 хопов, $0.103305**; ретраи (`attempt>0`) —
|
||||
**ровно один, $0.070294**. Итого хвост по этой таблице **6 строк / $0.173599 = 39.8% захода**;
|
||||
- по `request_log`: `ok=0 AND cost_usd>0` — **11 строк, $0.123161 (28.2%)**.
|
||||
⚠ Мой прежний «5 строк / $0.098761» — снимок 10:11Z, середина прогона; я держала его под шапкой
|
||||
«числа больше не двигаются». Снято.
|
||||
⚠ И эти две величины НЕ обязаны совпадать: 5 успешных хопов pro и 11 оплаченных неудач —
|
||||
непересекающиеся множества; соседство двух «пятёрок» было случайным;
|
||||
- `estimated = 0` — **биллящихся decode-fail'ов не было ни одного**;
|
||||
- **крупнейшая единичная потеря прогона: ch2/chunk0 оплачен ДВАЖДЫ.** Попытка 0 — `finish=length`,
|
||||
16 000 выходных токенов, **$0.072529 выброшено**; попытка 1 на удвоенном потолке — `finish=stop`,
|
||||
$0.070294. Один edit-юнит = **$0.142823 = 32.7% всего захода**;
|
||||
- ровно один полностью пустой оплаченный ответ: батч терминолога, `finish=length`, 0 знаков,
|
||||
**$0.012082**.
|
||||
|
||||
### 4.4 Оба базлайна (июль, пере-сняты read-only)
|
||||
|
||||
| контур | bank-low | minirun | этот прогон |
|
||||
|---|---|---|---|
|
||||
| draft flash | $0.021289 / 23 | $0.018834 / 20 | $0.068135 / 20 |
|
||||
| draft pro (эскалации) | $0.010350 / 2 | $0.003371 / 1 | $0.103305 / 5 |
|
||||
| терминолог | $0.005750 / 5 | — | $0.040617 / 6 |
|
||||
| классификатор | $0.007706 / 16 | — | $0.009188 / 3 |
|
||||
| **edit editor pro** | — | **$0.092086 / 16** | **$0.214865 / 4** |
|
||||
| весь заход | $0.045095 | $0.114291 | $0.436110 (неполный) |
|
||||
|
||||
Цены (`76049bb`, 15.08, вендорские с 16.08 16:00 UTC): flash `0.14→0.44` вход / `0.28→1.32` выход;
|
||||
pro `0.435→1.32` / `0.87→3.96` (×3.03 вход, ×4.55 выход).
|
||||
|
||||
### 4.5 ⛔ ДВА МОИХ ВЫВОДА, КОТОРЫЕ Я СНИМАЮ САМА
|
||||
|
||||
**(а) «Редактор эмитит вдвое больше токенов, значит дело в неуправляемом размышлении» — СНЯТ.**
|
||||
Три конфаунда, и роли у них РАЗНЫЕ (прежняя формулировка «любой из которых его убивает» неверна):
|
||||
1. *фантомная строка* — в `request_log` со `stage='edit'` пять строк, но пятая (id=68,
|
||||
`err='context canceled'`, все нули) — прерванная попытка П3, не вызов. Реальных вызовов **четыре**,
|
||||
средний выход **12 203**, отношение к июлю **2.59**, а не 2.07. ⚠ Это исправление работает
|
||||
В ПОЛЬЗУ наблюдения, а не против: оно убивает мою АРИФМЕТИКУ, а не сам факт роста;
|
||||
2. *потолок вывода удвоился и БИЛ в обоих прогонах* — июль `max_tokens` 8000 (2 из 16 вернули
|
||||
`length` ровно на 8000), сегодня 16000 и 32000 на ретрае (1 из 4 упёрся). `models.yaml` несёт
|
||||
`min_max_tokens: 16000` с комментарием «8000 → 16000 ПО ЗАМЕРУ мини-прогона 25.07»;
|
||||
3. *промпт редактора сменился при неизменной метке* — minirun гонялся 2026-07-25,
|
||||
`prompts/zh-ru/editor.md` правился 2026-08-01 (`e89874b`, одна строка про авторский рефрен),
|
||||
`prompt_version` в обоих — `v3-discourse-reflow`.
|
||||
|
||||
4. *⚠ ЧЕТВЁРТЫЙ, ДОБАВЛЕН 31.08 ПОСЛЕ СДАЧИ — и он самый действенный: рычаг у редактора БЫЛ, и не
|
||||
дёрнули его МЫ.* Мой `pipeline.yaml` объявил `stages[edit].reasoning: "off"`, а
|
||||
`backend/internal/llm/capability.go:52-53` говорит дословно: «ReasoningNone is the OpenAI-compat
|
||||
baseline: **low|medium|high go out as reasoning_effort; off and "" emit nothing**, leaving the
|
||||
provider's OWN default». ⇒ на провод для редактора НЕ УШЛО НИЧЕГО, и он поехал вендор-дефолтом.
|
||||
Там же, абзацем ниже, стоит ровно то различение, которое я схлопнула: «⚠ "Never turned off" is NOT
|
||||
"never configured" (D39.87)… riding the provider default is a choice whose owner is the vendor, not
|
||||
an absence of one». Черновик и терминолог свои `low` получили — редактор нет.
|
||||
**Вендор-факт, с датой и способом** (снято оркестратором №21 по заказу ВЛАДЕЛЬЦА, `curl` по
|
||||
`api-docs.deepseek.com/guides/thinking_mode` + Change Log, сверено 31.08.2026): таблица маппинга
|
||||
теперь несёт оговорку «identical for `deepseek-v4-flash` and `deepseek-v4-pro`», `low`→**low**;
|
||||
сноска «We will update the actual mapped effort of deepseek-v4-pro in early August 2026» СО
|
||||
СТРАНИЦЫ ИСЧЕЗЛА; запись Change Log **13.08.2026**: «The thinking modes of V4-Pro and V4-Flash now
|
||||
support three thinking effort levels: low / high / max». Наша последняя сверка была 10.08 —
|
||||
**носитель протух на 18 суток**, и вся моя рамка «у pro ручки нет» стояла на нём.
|
||||
⚠ Безопасность: `low` ≠ `off`. Эхо-мина вооружается ВЫКЛЮЧЕНИЕМ thinking; три уровня эффорта едут
|
||||
с thinking ВКЛЮЧЁННЫМ, поэтому `low` у редактора мину не вооружает.
|
||||
⚠ Честная граница этой строки: она **код-обоснована, а не снята с провода** — стадийный лог
|
||||
эффорт не печатает (его печатает только гейт терминолога: `reasoning=low`, дважды). Проводного
|
||||
подтверждения, что для редактора не ушло ничего, у этого прогона НЕТ.
|
||||
|
||||
**Каузальную часть убивают только (2) и (3); (4) не объясняет рост токенов, но СНИМАЕТ вывод
|
||||
«рычага не существует» и делает статью в 49% захода управляемой одной строкой ДАННЫХ, без правки Go.**
|
||||
|
||||
**(б) Разложение «×9.33 = ×4.55 × ×2.07» — СНЯТО целиком, и на исправленных числах тоже.**
|
||||
4.55 × 2.59 = 11.78 ≠ 9.33. Форма неверна структурно: она применяет множитель ВЫХОДНОЙ статьи ко
|
||||
всей цене вызова, выбрасывая вход (цена входа ×3.03 при росте входных токенов лишь ×1.14) и кэш-хит.
|
||||
|
||||
**Что остаётся ДОКАЗАННЫМ:** цена одного edit-вызова выросла **×9.33** (июль $0.005755 → сегодня
|
||||
$0.053716); выходных токенов на вызов стало **×2.59**; вендорская цена выхода pro выросла ×4.55.
|
||||
**Причина роста токенов НЕ УСТАНОВЛЕНА** — разделить её может только контролируемая проба, и её
|
||||
форма задана в §14. ⚠ Та форма, которую я предлагала изначально («один чанк, один потолок, оба
|
||||
промпта»), СПРОЕКТИРОВАНА НЕВЕРНО — см. §14.
|
||||
|
||||
**И независимо от всей этой арифметики:** движок сам печатает **`projected_book_usd = 1.1377277707`**
|
||||
при `book_ceiling_usd = 0.8`.
|
||||
|
||||
**(в) «Терминологический контур СТАБИЛЕН — двигались только цены» — СНЯТ.** Я процитировала строку
|
||||
П1, а не финал. Финал прогона: `consolidated=42 unanswered=16 reclassified=2 families=11`;
|
||||
bank-low: `consolidated=72 unanswered=18 reclassified=14`. Плюс сменилась версия контура
|
||||
(`terminology-v2-…` → `terminology-v3-…+families+formfold`) — сравнение конфаундировано.
|
||||
Держится ровно один факт: **пустой батч терминолога стоил ×4.40 при почти тех же токенах** — чистый
|
||||
ценовой множитель на одном вызове.
|
||||
|
||||
**⚠ И СОБЫТИЕ, КОТОРОЕ Я ПРЕДСКАЗАЛА ДО ПОКУПКИ И ПОТОМ НЕ УВИДЕЛА В ЛОГАХ:**
|
||||
```
|
||||
WARN terminology classify: budget would be exceeded by the next batch; the remaining terms are left
|
||||
unchanged role=classifier spent_usd=0.009188 next_batch_usd=0.012500 budget_usd=0.02 batches_left=3
|
||||
```
|
||||
**Классификатор ДВАЖДЫ остановлен собственным денежным суб-бюджетом $0.02; 3 батча из 4 не куплены,
|
||||
16 термов остались неклассифицированными.** Суб-бюджеты bank-low были откалиброваны под ИЮЛЬСКИЕ
|
||||
цены, и `classify_budget_usd: 0.02` сегодня мал — ровно тот класс, который я разобрала для
|
||||
`escalation.budget_usd` и не довела до конца по остальным гейтам.
|
||||
|
||||
### 4.6 Цена мандата «двумя порциями»
|
||||
|
||||
`rebill_units = 3`, **`rebill_usd = 0.214864848`** — цена согласия `--resnapshot`, и **одна покупка её
|
||||
бы не понесла**: снапшот edit-волны сдвинул выросший АВТО-БАНК, а вырос он потому, что вторая порция
|
||||
дочерновила остаток книги. Движок предупреждал WARN'ом ещё в П1 (живое основание `PD-422`):
|
||||
> `a VOLUME ceiling on a book that MINES its bank: … the next purchase moves the edit-wave snapshot …
|
||||
> Expect that run to need --resnapshot`
|
||||
|
||||
⚠ **Текст самого гарда ВВОДИТ В ЗАБЛУЖДЕНИЕ:** `… the config/prompts changed; already-paid
|
||||
checkpoints become invalid …`. Конфиг и промпты после первой покупки не тронуты ни байтом. Гард
|
||||
называет причиной то, чего не было.
|
||||
|
||||
**Арифметика доведения до конца:** потрачено $0.436110 · `--resnapshot` пере-оплачивает $0.214865 ·
|
||||
11 неотредактированных юнитов по наблюдённой цене edit-юнита ($0.214865/3 = $0.0716) ≈ $0.79
|
||||
⇒ полный отток кассы **≈$1.44**. Движковая проекция $1.1377 меньше, потому что считает книгу целиком
|
||||
по средней цене юнита и НЕ включает пере-оплату уже сделанного.
|
||||
|
||||
## 5. Структура глав — строка бэклога 160 (В-4/Ф-30)
|
||||
|
||||
**В исходнике 10 из 10 глав открыты структурным заголовком** (`第一节:纵身亡魔心仍不悔` …
|
||||
`第十节:天有不测风云,炼蛊别具艰辛`). **В манифесте `heading` у всех десяти — `Глава 1`…`Глава 10`,
|
||||
цифровой рендер движка.** Это намеренная политика пак-13, записанная в ДАННЫХ пары
|
||||
(`configs/langpacks/zh-ru/heading.txt`: `marker 第` · `units 章节節回` · `template Глава {n}`):
|
||||
маркер+номер+единица вырезаются из того, что видит модель, номер рендерится детерминированно,
|
||||
подзаголовок остаётся телом и переводится. Дословно из кода: *«The model is not trusted with a chapter
|
||||
title (it rendered «Раздел 2», «Первая глава», an orphaned « :» and dropped titles across models)»*.
|
||||
Движок сам предупреждает потребителя (`manifest.go`): *«It is NOT a label carried by the book's own
|
||||
data, and a consumer must not present it as one»*.
|
||||
|
||||
**Дословные метки собранной книги.** txt — голая строка `Глава 1` … `Глава 10`; EPUB —
|
||||
`<h1>Глава N</h1>` в каждом из 10 документов и `<a href="chN.xhtml">Глава N</a>` в nav; титул книги —
|
||||
`蛊真人` (китайский, из `title:` брифа, не переводится).
|
||||
|
||||
⚠ **Дефект, который эта политика делает видимым, и он на ПЕРВОЙ странице.** Подзаголовок главы 1
|
||||
пришёл к читателю как **`,.`**. Причинная цепь снята целиком: черновик (flash) **эхнул** весь чанк
|
||||
китайским → эскалация на pro дала русский → **редактор** вернул подзаголовок китайским пересказом
|
||||
`即便身亡,魔心依旧不悔。` → **санитайзер** вырезал CJK-утечку (`detail: CJK leak in the ru output:
|
||||
即便身亡; CJK leak in the ru output: 魔心依旧不悔`), оставив пунктуацию. Юнит честно помечен
|
||||
`sanitizer_stripped`.
|
||||
**Знаменатель — ДВА, не десять: из двух глав, дошедших до редактора, у одной подзаголовок выжил**
|
||||
(«Глава 2 / Прозрение пятисот лет против течения времени»), у другой выродился. Остальные восемь — дыры.
|
||||
|
||||
## 6. Две ловушки `build`
|
||||
|
||||
1. **Одна команда пишет ОБА формата.** `build --partial` без `--format` → на диске `.book.epub`
|
||||
(17 946 Б) и `.book.txt` (40 068 Б).
|
||||
2. **`--format epub` МОЛЧА УДАЛЯЕТ соседний `.txt`** — exit 0, ни одного предупреждения, файл исчез
|
||||
(`logs/12-build-epub-only.log` + листинг каталога). Код: `bookbuild.go` — незапрошенный формат
|
||||
удаляется, когда `--out` пуст.
|
||||
3. **`StatusArtifacts.book_files` — карта МЕСТ, а не присутствия:** она перечисляет все форматы
|
||||
всегда. После удаления `.txt` `status --json` продолжал публиковать его путь.
|
||||
⇒ **наличие пути в `book_files` не доказывает наличия файла.**
|
||||
4. Отказ `build` без `--partial` — **exit 16**, на диск не записано НИЧЕГО, перечислены все 11 дыр.
|
||||
5. Ловушка «exit 1 при уже лежащих файлах» (сбой `os.Remove`) НЕ сработала — **не проверена**.
|
||||
|
||||
**Валидатор.** epubcheck 5.1.0, правила EPUB 3.3: **0 fatals / 0 errors / 0 warnings / 0 infos**,
|
||||
вывод сохранён (`logs/14-epubcheck.log`). ⚠ Проверен **ОДИН EPUB в двух побайтно идентичных копиях**
|
||||
(`artifacts/partial/…` и копия рядом с БД); `.txt` валидатором не проверялся и не мог. ⚠ Это
|
||||
`--partial`-EPUB с 11 дырами — на ПОЛНОЙ книге ось не проверена, потому что полной книги нет.
|
||||
|
||||
**Русские слова читателя (второй шаг оси §1б) — дословно из файла:**
|
||||
`⚠ Перевод не завершён: фрагментов с пропусками — 11 из 14. Каждый пропуск отмечен в тексте знаком ⚠.`
|
||||
и `⚠ Этот фрагмент ещё не переведён.` Оба из `configs/langpacks/ru/reader.txt`, который есть ТОЛЬКО в
|
||||
`textmachine-main`; при `langpack_root` в polygon-дерево `LoadReaderWords` вернул бы дефолты БЕЗ
|
||||
ошибки. Ловушка реальна, обойдена, предъявлена положительно.
|
||||
|
||||
## 7. Банк и стоп подписи — D39.158 закрыта ЦЕЛИКОМ
|
||||
|
||||
**Первая половина (П2, exit 3):** `bank-mining: the delta holds terms no stop has shown before; run
|
||||
STOPPED before the edit wave (…)`. `bank_stop_presented` = **70 строк**.
|
||||
|
||||
**Вторая половина (П3, тот же вызов, без единого решения по термам):** стоп-строк **ноль**, таблица
|
||||
по-прежнему 70 строк, и движок сказал вслух: `bank-mining: --verify-bank is raised and the delta is
|
||||
non-empty, but every cluster in it was already presented by an earlier stop — continuing`.
|
||||
|
||||
**Форматы, впервые на живых данных:** `mined-signature.yaml` — `map_version: tm-signature-map-v1`,
|
||||
`map_id: c52c36ea035a809c…` · `bank.json` — `bank_version: tm-bank-v1`, `signed: 0`, `run_id`, и якорь
|
||||
свежести **`as_of`, называющий ГРАНИЦУ**: на стопе `"bank-mining/signature-stop"`, после П3
|
||||
`"bank-mining/auto-continue"` — проекция действительно пересобирается на каждой границе ·
|
||||
`bank-stop.txt` 673 строки · **`bank-stop.json` НЕ СУЩЕСТВУЕТ** (снос D39.158 подтверждён на диске).
|
||||
|
||||
**Строка бэклога 240** (PLAUSIBLE, заведена чтением кода). **Две дешёвые улики ПРОТИВ:**
|
||||
(1) у таблицы `bank_stop_presented` во всём движке РОВНО три места — `CREATE`, `SELECT`,
|
||||
`INSERT OR IGNORE`; **`DELETE`/`DROP`/`TRUNCATE` нет нигде**; (2) память пережила границу процесса
|
||||
живьём. ⚠ Границы улики: это про ДВИЖОК; платформенную половину берёт P12; и остаётся операторский
|
||||
путь — восстановление БД из `backups/*.db` откатило бы таблицу.
|
||||
|
||||
## 8. Что оставлено платформе
|
||||
|
||||
**Файлы, созданные прогоном** (`logs/artifacts-01.log`): `<db>.bank.json` 15 340 Б ·
|
||||
`<db>.manifest.json` 5 017 Б · `<db>.mined-signature.yaml` 34 684 Б · `<db>.auto-bank.yaml` 34 578 Б ·
|
||||
`<db>.bank-stop.txt` 45 586 Б · **`events.jsonl` 10 614 Б**.
|
||||
⚠ Каналов ШВА из них — не все: `mined-signature.yaml`, `auto-bank.yaml` и `bank-stop.txt` читателя в
|
||||
платформе не имеют, это операторские/движковые файлы.
|
||||
|
||||
**`events.jsonl` — 82 кадра, 6 типов:** `spend` 38 · `progress` 20 · `unit_done` 17 · `hello` 3 ·
|
||||
`finished` 3 · `bank_stop` 1. Все шесть внутри 7-типного словаря платформы; седьмой (`ceiling`) не
|
||||
сработал, потому что потолок не срабатывал. `seq` рестартует с 1 на процесс, `stream_version: "1.1"`
|
||||
совпадает с движковой константой. Закрытые словари значений тоже сошлись: `finished.outcome ∈
|
||||
{flagged, bank_stop, failed}`, `unit_done.wave ∈ {draft, edit}`.
|
||||
|
||||
**Строка бэклога 198 — впервые на данных.** **17 анонсов юнитов, 17 УНИКАЛЬНЫХ, повторов НОЛЬ** через
|
||||
ТРИ процесса; ключ дословно `unit:guzhenren-coldrun-v16:draft:10:0` — метки нарезки в нём нет.
|
||||
Механизм виден в БД: `events_outbox` держит 17 строк с `once_key` под UNIQUE-индексом (они переживают
|
||||
прогон — это леджер эмиссии) плюс 3 буферных кадра последнего процесса.
|
||||
⚠ Мой `capture-artifacts.sh` считает этот пункт НЕВЕРНО (читает `payload` вместо `data`) — правильный
|
||||
счёт снят отдельной командой; скрипт в каталоге прогона оставлен как есть с этой пометкой.
|
||||
⚠ Сила улики: П3 резолвил юниты бесплатно и не выдал ни одного `unit_done`; «подавлено `once_key`» от
|
||||
«нечего было анонсировать» этот прогон не различает.
|
||||
|
||||
### ⛔ БЛОКЕР МОЕГО ЖЕ ОТЧЁТА: «сверка причин флагов» сделана на ОДНОМ значении
|
||||
|
||||
Я написала «наблюдённые `flag_reason` — три, все в словаре платформы, расхождений ноль». **На шов
|
||||
вышло РОВНО ОДНО:** `sanitizer_stripped` (в `export --json` — 1 из 14 чанков; в `events.jsonl`
|
||||
`unit_done.reason` — 1 из 17). `cjk_artifact` (5) и `length` (1) остались в приватной колонке
|
||||
`chunk_status.first_flag_reason`, **которой платформа по D39.85 не видит вовсе**.
|
||||
⇒ Честный вердикт: **живая сверка канала причин флагов сделана на ОДНОМ значении из пятнадцати**;
|
||||
остальные четырнадцать по-прежнему сверены только чтением кода. `sanitizer_stripped` →
|
||||
`markup_cleaned`/`glance` в `platform/internal/ingest/notes.go` — расхождения нет.
|
||||
|
||||
**Банк:** отдал `status ∈ {draft, auto}`, `origin: mined`, `kind ∈ {term, title, name, place,
|
||||
nickname}` — все внутри закрытых словарей `platform/internal/ingest/bank.go`, расхождений нет.
|
||||
**Манифест против `platform/internal/ingest/manifest.go` я НЕ сверяла** — вердикт §5.5 понижаю:
|
||||
сверены ДВА словаря из трёх названных.
|
||||
|
||||
**`export --json --pairs` против голого `export`:** `export_version = tm-export-v1`; различаются РОВНО
|
||||
одним ключом на чанке — `source`.
|
||||
|
||||
**PD-297:** БД `/home/ubuntu/books/gu-zhenren/coldrun-v16/guzhenren-coldrun-v16.db`, 684 032 Б, схема
|
||||
**v16**, 10 глав · 23 строки `chunk_status` · 50 чекпойнтов · 53 терма глоссария · 20 строк аутбокса.
|
||||
|
||||
## 9. Что закрылось даром (§5.7)
|
||||
|
||||
**Строка 154 — ЗАКРЫТА числами.** Финал прогона: `terminology finished … consolidated=42 declined=0
|
||||
unanswered=16 reclassified=2 bad_lines=0 off_language=0 canon_conflicts=0 self_conflicts=0
|
||||
families=11 families_refused=0 families_held=0`. ⚠ Есть ВТОРАЯ строка про семейства с ДРУГИМИ именами
|
||||
полей (`refused_by_cap`/`held_by_series`) — греп по `families_refused` её не найдёт; здесь не печаталась.
|
||||
|
||||
**Строка 157 — ЧАСТИЧНО, и вот граница.** `units_total = 14`, `chunks_total = 20`,
|
||||
`chapters_total = 10`; юнитов по главам `2·1·1·2·1·1·1·2·2·1`; чанков на главу ровно 2 у всех десяти;
|
||||
чанков в юните min 1 / медиана 1 / max 2. **Распределения размеров юнитов В ЗНАКАХ манифест не
|
||||
публикует вовсе** — ни `--json`, ни персист-сайдкар символьных размеров не несут. Косвенная мера —
|
||||
входные токены черновых вызовов (1 557–1 863 на чанк). **Заказ в этой части выполнить нечем: носителя
|
||||
нет.**
|
||||
|
||||
## 10. $0-провокации §5.6
|
||||
|
||||
- **1. `stale` — НЕДОСТИЖИМА, и это доказано КОДОМ, а не выведено из промта.**
|
||||
`bookbuild.go:217-220`: `func (r *Runner) staleUnits(...)` начинается с `if exp.ConfigDrift {
|
||||
return nil, true }` — под дрейфом ответ UNKNOWN возвращается немедленно, ничего не считая.
|
||||
Комментарий там же: «under drift the answer is UNKNOWN, reported as such… It never fails the build:
|
||||
a check that cannot run says so in the report and the log». `build` это и напечатал:
|
||||
`stale: UNKNOWN for some or all units`.
|
||||
**Дрейф родился не из моей правки, а из самого мандата §1в покупать двумя порциями на майнящей банк
|
||||
книге** — два требования пака пересеклись. Решением владельца платная часть закрыта, `--resnapshot`
|
||||
(единственный путь снять дрейф) не нажимается ⇒ **ось закрыта окончательно. Это «недостижимо», а не
|
||||
«не проверено».**
|
||||
- **2. Строка 238 — НЕ запускалась, и запускать её теперь бессмысленно.** Её предъявление есть
|
||||
РАСХОЖДЕНИЕ двух $0-поверхностей: `status --json` говорит «пере-оплаты нет», а `build` — `stale N`.
|
||||
Под дрейфом `build` печатает не `stale N`, а `UNKNOWN` (см. выше) ⇒ заявленное расхождение
|
||||
предъявить нечем, а правка исходника при этом необратимо испортила бы улику прогона
|
||||
(`source_sha256` манифеста). **Сознательно не запускала.** ⚠ Но INFO-строка, которая её выдаёт,
|
||||
наблюдена побочно в пробе 6: `manifest: the stored manifest is stale (source or cut changed)`.
|
||||
- **3. `--partial` / дыры** — **предъявлено** (§6).
|
||||
- **4. Второй `--verify-bank`** — **предъявлено** (§7).
|
||||
- **5. Второй `translate`, повторные анонсы** — **предъявлено**: повторов ноль (§8).
|
||||
- **6. Строка 239** — **ВОСПРОИЗВЕДЕНА ДОСЛОВНО.** Один конфиг, одна БД: `status --json` →
|
||||
`config_drift = False`, `pending = 0`, `percent_done = 85`, `progress: draft 20/20, edit 0/0`;
|
||||
`export --json` на ТОМ ЖЕ конфиге → `config_drift = True` + WARN *«stored rows carry a stage the
|
||||
current config does not run … the shipping rows are not the ones the run shipped»*.
|
||||
**Две $0-поверхности, один конфиг, противоположные ответы.**
|
||||
⚠ Побочно: `units_total` становится **20** вместо 14 — форма пайплайна меняет гранулярность,
|
||||
в которой платформа продаёт главы.
|
||||
|
||||
**Сверх заказа, $0:** контракт `migrate` для СУЩЕСТВУЮЩЕЙ книги снят на МОЕЙ КОПИИ чужого стенда вне
|
||||
`books/` (§6.2 промта): `pre-migrate: backed up the project DB at schema v14 to …/backups/
|
||||
20260831T103333Z-pre-migrate.db (integrity_check green)` + `migrate: … schema v14 -> v16`, каталог
|
||||
`backups/` появился. На своей свежей книге — `migrate: created … at schema v16`, `backups/` НЕ появился.
|
||||
|
||||
## 11. Obstacles — что НЕ удалось и НЕ проверено
|
||||
|
||||
1. **Книга не доведена до `complete=true`** — остановлена снапшот-гардом; доведение ≈$1.44 против $0.80.
|
||||
2. **Exit 4 не наблюдался** — до денежного потолка прогон не дошёл.
|
||||
3. **`withheld`, `incomplete`, `ghost` не возникли** — три состояния честности НЕПРОВЕРЕНЫ.
|
||||
4. **`stale` недостижим** под дрейфом.
|
||||
5. **Причина роста выходных токенов редактора НЕ УСТАНОВЛЕНА** — нужна контролируемая проба.
|
||||
6. **Конвенционный резолв промпта переводчика не проверен.**
|
||||
7. **Размеры юнитов в знаках** не предъявлены — носителя нет.
|
||||
8. **Живой читалки нет** — файл передан владельцу, ось открыта.
|
||||
9. **Ловушка `build` с падением `os.Remove`** не сработала.
|
||||
10. **Корпусные тесты батареи не гонялись** (3 скипа названы); `EXIT=0` батареи в артефакт не снят.
|
||||
11. **epubcheck проверил НЕПОЛНУЮ книгу**, и один EPUB, а не два разных файла.
|
||||
12. **Сверка причин флагов — на ОДНОМ значении из пятнадцати** (§8).
|
||||
13. **Манифест против `ingest/manifest.go` не сверялся.**
|
||||
14. **Классификатор оборвался на своём суб-бюджете** — 16 термов не классифицированы (§4.5).
|
||||
15. **Коды 10 и `build --partial` 0** артефакта на диске не имеют.
|
||||
|
||||
## 12. Пинги
|
||||
|
||||
1. **Текст снапшот-гарда врёт о причине** («the config/prompts changed» при нетронутом конфиге).
|
||||
2. **`prompt_version` не отслеживает байты промпта** — `editor.md` правился при неизменной метке.
|
||||
Деньги защищены (`PromptSHA256` фолдится в снапшот), СРАВНИМОСТЬ прогонов по метке — нет.
|
||||
3. **`regenerate_echo_before_escalate` — отдельный ключ с дефолтом 0**, в bank-low его нет ⇒ эхо шло
|
||||
СРАЗУ в эскалацию: 5 эхо → 5 хопов pro, $0.103305 = 23.7% захода. Ре-ген на flash по квиркам
|
||||
≈7.6× дешевле. Не дефект — неиспользованная ручка.
|
||||
4. **Суб-бюджеты гейтов bank-low откалиброваны под ИЮЛЬСКИЕ цены.** Я разобрала это для
|
||||
`escalation.budget_usd` и НЕ довела до `classify_budget_usd: 0.02`, который в итоге оборвал
|
||||
классификатор (§4.5).
|
||||
5. ⚠ **`deepseek-v4-pro` ПРИНИМАЕТ `reasoning_effort` с 13.08.2026** (вендор-дока + Change Log,
|
||||
сверено 31.08 оркестратором №21 по заказу владельца; наш носитель `00-provider-quirks.md` стоял на
|
||||
сверке 10.08 и протух на 18 суток). Редактор в этом прогоне ехал вендор-дефолтом `high` **потому,
|
||||
что конфиг послал `"off"`, а `ReasoningNone` на `off` не шлёт ничего** — это НАШ выбор, а не
|
||||
ограничение провайдера. Рычаг на статью в 49% захода = одна строка данных, правки Go не требует.
|
||||
⚠ Я НЕ правлю `pipeline.yaml` задним числом: это конфиг, которым куплен прогон, и его изменение
|
||||
фальсифицировало бы улику. Его шапка несёт теперь опровергнутую фразу «у pro ручки эффорта нет
|
||||
вовсе» — читать её надо вместе с этим пунктом.
|
||||
6. **Промт §1а не называет `pairs/<пара>.yaml`** — без него exit 10.
|
||||
7. **Промт §5.7 заказывает размеры юнитов в знаках, а манифест их не публикует.**
|
||||
8. **Кто коммитит репозиторий книг?** Роли в `CLAUDE.md` нет. Не коммитила и не прибирала. Дословно:
|
||||
`git -C /home/ubuntu/books status --porcelain` → `?? gu-zhenren/coldrun-v16/`; ветка
|
||||
`## main...origin/main [ahead 5]`. Репозиторий кода ЧИСТ, HEAD `065d8ac`. Чужие БД читались только
|
||||
`sqlite3 'file:…?mode=ro'` — ни одной строки ` D` не появилось.
|
||||
|
||||
## 13. Адверсариальный проход (§6.5)
|
||||
|
||||
**Модель:** во всех веерах — модель сессии по умолчанию (Opus 5; `claude-fable-5` на этом аккаунте
|
||||
недоступен — см. записку `textmachine-36` в канале). **Три веера, 23 агента суммарно.**
|
||||
|
||||
**Веер 1 — разведка ДО покупки (16 агентов):** 8 читателей кода/корпуса + 8 адверсариальных
|
||||
проверяющих их отчётов. Вход: код HEAD, конфиги, БД корпуса read-only. Нашли дрейф якорей `file:line`
|
||||
в отчётах читателей (существо подтверждалось, номера строк уезжали) — на план прогона не влияло.
|
||||
|
||||
**Веер 2 — интервальная сверка с заказом (§6.8, 2 агента).** Вход: промт, `PLAN-NOTE.md`,
|
||||
`STATE-AT-BLOCK.md`, логи. Критерии §7 заданы дословно. Находки и диспозиции:
|
||||
| находка | диспозиция |
|
||||
|---|---|
|
||||
| колонка «вызовов» смешивает оплаченные и все чекпойнты | **принято**, колонки разведены (§4.2) |
|
||||
| подзаголовок ch1 подан как 1/10, а знаменатель 2 | **принято** (§5) |
|
||||
| ловушка `build` №1 не проверена — гонялись два `--format` вместо одной команды | **принято, проба проведена** (§6) |
|
||||
| вывод epubcheck не сохранён | **принято**, `logs/14-epubcheck.log` |
|
||||
| файл владельцу не передан, ось не названа открытой | **принято**, передан |
|
||||
| код 10 пропущен в ростере | **принято** (§3) |
|
||||
| $0-отказы флагов без артефакта | **принято**, `logs/15-flag-refusals.log` |
|
||||
| `stale` — UNKNOWN, а не 0 | **принято** (§2, §10) |
|
||||
|
||||
**Веер 3 — адверсариальный проход по ГОТОВОМУ отчёту (5 линз: деньги · коды выхода · EPUB и книга ·
|
||||
платформа и шов · заказ и умолчания).** Вход каждой: `REPORT-DRAFT.md`, промт, каталог прогона,
|
||||
бинарь. Мандат дословно: «найди, где она выдаёт непроверенное за проверенное». **45 находок, из них
|
||||
4 блокера.** Все блокеры и все «важные» приняты и исправлены:
|
||||
|
||||
| находка (дословно из линзы) | диспозиция |
|
||||
|---|---|
|
||||
| **БЛОКЕР** «Терминологический контур СТАБИЛЕН — двигались только цены» — REFUTED: процитирована строка П1, а не финал; версия контура v2→v3 | **ПРИНЯТО, клейм снят** (§4.5в) |
|
||||
| **БЛОКЕР** оплаченный хвост `ok=0` — 11 строк / $0.123161, а не 5 / $0.098761 (мид-ран снимок под шапкой «числа не двигаются») | **ПРИНЯТО, число заменено** (§4.3) |
|
||||
| **БЛОКЕР** «сверка причин флагов, расхождений ноль» — на шов вышло ОДНО значение из трёх; `cjk_artifact`/`length` платформе не видны | **ПРИНЯТО, вердикт понижен** (§8) |
|
||||
| **БЛОКЕР** секции §6.5 в отчёте нет вовсе | **ПРИНЯТО — это она** |
|
||||
| «Два независимых пути СОШЛИСЬ» — `spend` и `checkpoints` пишутся ОДНОЙ транзакцией, равенство есть инвариант | **ПРИНЯТО**, независимым назван `request_log` (§4.1) |
|
||||
| ретраи названы и брошены без числа; ch2/chunk0 оплачен дважды на $0.142823 = 32.7% | **ПРИНЯТО** (§4.3) |
|
||||
| «редактор — 81%» без знаменателя (49.3% от прогона) | **ПРИНЯТО** (§4.2) |
|
||||
| «три конфаунда, любой убивает» — №1 работает В ПОЛЬЗУ наблюдения | **ПРИНЯТО** (§4.5а) |
|
||||
| разложение ×9.33 не закрывается и на исправленных числах | **ПРИНЯТО, снято целиком** (§4.5б) |
|
||||
| пропущено событие: классификатор оборван суб-бюджетом, `batches_left=3` | **ПРИНЯТО** (§4.5) |
|
||||
| суб-бюджет $0.08 ПРОБИТ фактом до $0.103305 (+29%) | **ПРИНЯТО** (§1.1) |
|
||||
| «19 пакетов ok» — на деле 18 ok + 4 без тестов | **ПРИНЯТО** (§1) |
|
||||
| «открывается и проходит валидатор» — открытие не проверено | **ПРИНЯТО** (§0) |
|
||||
| «оба файла» у epubcheck читается как epub+txt | **ПРИНЯТО** (§6) |
|
||||
| «в ту же секунду» у `book_files` — одномоментного снимка не было | **ПРИНЯТО**, переформулировано как «карта мест» (§6) |
|
||||
| `141` объяснён как SIGPIPE от `head` — на деле wait-status самого `tmctl`, гоночный | **ПРИНЯТО** (§3) |
|
||||
| «коды лежат артефактом» — два кода артефакта не имеют | **ПРИНЯТО** (§3) |
|
||||
| «ДОСЛОВНО» в §1 при выжимке | **ПРИНЯТО**, слово снято |
|
||||
| три покупки — девиация, подписана оркестратором, НЕ владельцем | **ПРИНЯТО** (§1.1) |
|
||||
| манифест против `ingest/manifest.go` не сверялся | **ПРИНЯТО**, вердикт понижен (§8) |
|
||||
| баг счёта строки 198 в `capture-artifacts.sh` | **ПРИНЯТО**, назван вслух (§8) |
|
||||
| §5.5: три файла из перечисленных каналами шва не являются | **ПРИНЯТО** (§8) |
|
||||
|
||||
**Отклонено с доводом — одна находка:** линза предлагала снять улику про молчаливое удаление `.txt`
|
||||
как «не снятую отдельной командой». Отклоняю: удаление наблюдено прямым листингом каталога до и после
|
||||
(`logs/11-build-both.log` → оба файла; `logs/12-build-epub-only.log` → остался один), это
|
||||
исполнение, а не вывод из кода.
|
||||
|
||||
**Чего адверсариальный проход НЕ покрыл:** качество перевода (не мой предмет), поведение платформы
|
||||
(чужая зона), и любые клеймы о рантайме, которых в отчёте нет.
|
||||
|
||||
## 14. Последний абзац — не план, а состояние
|
||||
|
||||
Прогон стоит на развилке владельца. Всё, что можно было сделать за $0, сделано и лежит в каталоге:
|
||||
книга обоих форматов, валидированный EPUB, пять артефактов шва, `events.jsonl`, три среза леджера,
|
||||
логи всех вызовов, коды выхода артефактом. Ничего не закоммичено ни в один из двух репозиториев.
|
||||
Правку исходника (§5.6 пробы 1–2) я не трогала намеренно: она закрывает платную часть НАВСЕГДА, а
|
||||
решение владельца ещё может её открыть.
|
||||
|
||||
## 14. Форма следующего замера — ПЕРЕ-СПРОЕКТИРОВАНА
|
||||
|
||||
⚠ **Моя первоначальная рекомендация («один и тот же чанк, один потолок, оба промпта») НЕВЕРНА, и я
|
||||
её снимаю.** Опровержение принесла ресёрч-сессия (exp19), и оно бьёт ровно в мою слепую зону.
|
||||
|
||||
**Что намерено там и чего в моих трёх осях НЕ БЫЛО:**
|
||||
- размышление — **95–96% цены дифф-вызова**, то есть предмет замера это оно, а не «цена вызова»;
|
||||
- оно растёт **с ОБЪЁМОМ ВХОДА** (×2.78 при ×3.24, p=0.0003) — **этой оси в моей пробе не было
|
||||
вовсе**, и она свалилась бы в остаток, который я бы приписала промпту или эффорту;
|
||||
- оно растёт **с количеством найденной работы** (rho +0.781) — то есть от ТРУДНОСТИ чанка, а
|
||||
трудность у меня не блокировалась;
|
||||
- **сужением мандата НЕ снимается** (MW p=0.752) — правка промпта в сторону «меньше делай» не рычаг;
|
||||
- бюджет размышления **не адаптируется к трудности инстанса**, а обязательное размышление на лёгких
|
||||
сегментах — чистый убыток (311 токенов против 13, −3.31 качества).
|
||||
|
||||
**Отсюда четыре оси, и роли у них РАЗНЫЕ — это главное:**
|
||||
|
||||
| ось | роль | как |
|
||||
|---|---|---|
|
||||
| **трудность чанка** | **БЛОКИРОВАТЬ** | парный дизайн: КАЖДАЯ рука видит одни и те же чанки. Не рандомизация — блокировка, иначе rho +0.781 съест эффект |
|
||||
| **длина входа** | **КОНТРОЛИРОВАТЬ и МЕРИТЬ** | страты по длине входа; длина входит в модель как ковариата, а не выбрасывается. Иначе её ×2.78 осядет в остатке |
|
||||
| **промпт** | фактор | июльский `editor.md` (`e89874b^`) против сегодняшнего — оба под ОДНОЙ меткой `v3-discourse-reflow`, поэтому брать по SHA, не по метке |
|
||||
| **эффорт** | фактор | `"off"` (= вендор-дефолт `high`, как ехал этот прогон) против явного `"low"` — и это ДАННЫЕ, правки Go не требуется |
|
||||
|
||||
**Ещё три требования, каждое куплено ошибкой этого прогона:**
|
||||
1. **Потолок вывода зафиксировать одинаковым во всех руках.** В моём сравнении он различался
|
||||
(8000 против 16000) и БИЛ в обоих прогонах — один этот конфаунд убил каузальный вывод.
|
||||
2. **Мерить цену за ДОСТАВЛЕННЫЙ ЗНАК, а не за вызов.** Цена вызова смешивает «дороже думает» и
|
||||
«больше отдаёт»; у меня на 4 вызовах вышел спред ×7.6 по юнитам ($0.0187 · $0.0534 · $0.1428).
|
||||
3. **n считать от разброса, а не от удобства.** Квирки пинят разброс размышления **×163 на побайтно
|
||||
одном входе**; n=3–4, на которых стояли и мой вывод, и отозванное звено D39.86 §3б, для этого
|
||||
распределения непригодны по построению.
|
||||
|
||||
⚠ **И оговорка, которую замер обязан нести:** `low` ≠ `off`. Эхо-мина вооружается ВЫКЛЮЧЕНИЕМ
|
||||
thinking; три уровня эффорта едут с thinking включённым, поэтому арм `low` мину не вооружает. Но
|
||||
эхо-ГЕЙТ обязан остаться включённым во всех руках — он последняя линия против тихого провала.
|
||||
|
||||
**Чего замер НЕ должен делать:** калибровать ставку платформы. Она гейчена строкой 202 и требует
|
||||
ЗАВЕРШЁННОЙ цепи; эта проба отвечает на вопрос «почему дорого», а не «сколько продавать».
|
||||
Loading…
Add table
Reference in a new issue