979 lines
115 KiB
Markdown
979 lines
115 KiB
Markdown
# Эксперимент 25. Холодный прогон B — «от двери до ФАЙЛА» во ВТОРОЙ раз, и впервые с вычиткой
|
||
|
||
> **Пре-регистрация.** Всё, что ниже строки «ГРАНИЦА ФРИЗА», написано ДО первого платного вызова и
|
||
> закоммичено фриз-коммитом. Результаты дописываются ПОСЛЕ прогона отдельной секцией и ничего в
|
||
> пре-реге не правят: расхождение НАЗЫВАЕТСЯ, а не подгоняется.
|
||
|
||
**Зона:** сквозной прогон · **Пак:** `docs/COLD_RUN_B_SESSION_PROMPT.md` (редакция `3fce077`) · **Дата:** 11.09.2026
|
||
**Предмет:** четыре вещи, которых нет ни у кого, плюс заказ владельца на ВЫЧИТКУ боевого текста.
|
||
|
||
## 0. Что именно покупается, и чего этот прогон НЕ покупает
|
||
|
||
**Покупается:** (1) первое исполнение двух миграций схемы НА ПЛАТНОМ ПРОГОНЕ · (2) числа
|
||
консистентности С ПРОГОНА, а не пере-сканом сохранённой базы A · (3) платформенный пак СКВОЗЬ ·
|
||
(4) пре-регистрированный ЗНАМЕНАТЕЛЬ денежной дыры и проверка её ЗНАКА · (5) ⭐ вычитка ВСЕГО
|
||
перевода против ВСЕГО оригинала отдельным опус-читателем и сверка ПРИБОРОВ движка с тем, что он увидел.
|
||
|
||
⛔ **НЕ покупается и не оплачивается ни центом:** ответ на «безопасно ли редактору думать меньше»
|
||
(ряд 433) — это парный дизайн, отдельные деньги, отдельный заказ. B идёт на боевых настройках как есть.
|
||
⛔ **НЕ покупается ВЕЛИЧИНА доли выброшенного.** B — ЕЩЁ ОДИН одиночный прогон. Квирки §3д: при sd
|
||
логарифма 0.82 парный дизайн ловит эффект ×2.5 за **13 пар**, ×2.0 за 22, ×1.4 за 93. **n = 2 этой
|
||
нормы не выполняет и выполнить не может.** Писать «25.4 % подтверждено» по двум розыгрышам — ошибка.
|
||
|
||
## 1. ГРАНИЦА ФРИЗА — что зафиксировано до первого цента
|
||
|
||
| Предмет | Значение |
|
||
|---|---|
|
||
| Фриз-sha (КОД, которым собраны бинари) | `baa06cef7b2b30b8f7cbe031f3d0fabc03a01a55` |
|
||
| Фриз-дерево | локальный **клон** `~/tm-coldrun-b/freeze` (0 грязных строк; контроль — главное дерево в тот же момент 1) |
|
||
| Бинари | `tmctl` · `tmplatformd` · `tmplatformctl` · `stub` · `zeropipe` — **все пять** из клона, у каждого `vcs.revision=baa06ce…`, `vcs.modified=false`, строк `vcs.*` = 3. Негативный контроль: та же сборка из ГЛАВНОГО дерева даёт `vcs.modified=true`. ⚠ Прогон A объявил девиацией, что два его инструмента собраны НЕ из фриза (§12.5) — здесь эта девиация закрыта построением |
|
||
| Исходник (оригинал) | `books/gu-zhenren/coldrun-v16/guzhenren-ch1-10.gb18030.txt`, 57838 байт, sha256 `0b5f9b0266d8c32ac717a41211d2ed15d4f2a07f37a701fb686e255ab6c89f37` |
|
||
| Исходник (СРЕЗ, что покупается) | главы 1–3, **17564 байта**, sha256 `ed870ba6065ce3eb4eec12e80238efbc2be8511f38334ab1d92d5693f4ef4df9`. Нарезан МНОЙ из оригинала (`head -c`), байт-в-байт равен срезу прогона A (`cmp`). **Граница чистая:** декодируется целиком в **9021 знак**, кончается на границе абзаца, несёт **ровно 3** заголовка `第…节` при **10** в целом файле (контроль напечатан рядом) |
|
||
| Фактический pipeline-YAML | `~/tm-coldrun-b/mirror/cfg/pipeline-c1.yaml`, sha256 **`a46b33ee65b7713b4fbf86f64c788ba6b11eb0a219170c145a6205088156ad49`**, байт-в-байт равен `backend/configs/pipeline-c1.yaml` фриза (`cmp`) |
|
||
| Реестр моделей | `~/tm-coldrun-b/mirror/cfg/models.yaml`, sha256 `835af7b2d8830e6058b650ab742603d228febbd663978d88e0fe496ff78b5c1c` |
|
||
| Артефакт контраста | `mining-contrast.zh.txt` = jieba 0.42.1 `dict.txt`, sha256 `7197c3211ddd98962b036cdf40324d1ea2bfaa12bd028e68faa70111a88e12a8`, 349 046 строк. ⚠ `CheckMiningContrast` делает ТОЛЬКО `os.Stat` и удовлетворился бы фальшивым кандидатом — sha сверена руками |
|
||
| Шаблон книги | `~/tm-coldrun-b/book-template-c1.yaml`, sha256 `4118a43059dba64a45290db73252a1306af341ff4c429100314256c95ca2f24d` |
|
||
| Потолки книги (ДВИЖКОВЫЕ, в шаблоне) | `book_usd: 1.25` · `day_usd: 2.50` — те же, что у A, ради сравнимости |
|
||
| Потолок ПЛАТФОРМЫ | холд ≈$2.24 (формула ниже), грант учётки **$2.50** |
|
||
| Стоп-правило СЕССИИ | факт **$1.00** — раньше обоих потолков; достигнут ⇒ СТОП и пинг, не решение сессии |
|
||
|
||
### 1.1 ⭐ ДВЕ КАРТЫ СРАВНИМОСТИ A↔B, которых у прогона A не было
|
||
|
||
1. **ПОКУПАЮЩИЙ файл тождествен.** sha `a46b33ee…` — та же, что в пре-реге прогона A. Что именно
|
||
покупается, между прогонами не изменилось ни на байт.
|
||
2. **ЦЕНОВАЯ МОДЕЛЬ тождественна.** `models.yaml` фриза A и фриза B различаются **ровно на 10 строк,
|
||
и все десять — КОММЕНТАРИИ** (не-комментарных изменённых строк: **0**). ⇒ долларовые числа A и B
|
||
считаны одним прайсом и сравнимы напрямую.
|
||
3. ⛔ **А КОД — НЕТ, и это записывается ОГРАНИЧЕНИЕМ, а не замалчивается.** Между `b0f5d89` (фриз A) и
|
||
`baa06ce`: **118 коммитов**, `backend/` **52 файла** (+7678/−85), `platform/` **30 файлов**
|
||
(+3945/−158), включая денежный путь. **B меряет ДРУГОЙ движок.** Прямой строкой:
|
||
**двойная оплата могла измениться из-за НАШИХ правок, а не из-за провайдера.**
|
||
|
||
### 1.2 Срез по $0-манифесту (`tmctl manifest --json`, бинарь фриза B)
|
||
|
||
| Глава | `units_total` | `chunks_total` | `expected_usd` | знаков |
|
||
|---|---|---|---|---|
|
||
| 1 `第一节:纵身亡魔心仍不悔` | 2 | 2 | 0.032424 | 3287 |
|
||
| 2 `第二节:逆光阴五百年觉悟` | 1 | 2 | 0.028459 | 3051 |
|
||
| 3 `第三节:请一边玩蛋去` | 1 | 2 | 0.023237 | 2421 |
|
||
| **книга** | **4** | **6** | `expected_usd 2.08412008` · `book_once_usd 2.00` · `step_max_usd 0.13647876` | 8759 |
|
||
|
||
Смета ТЕКСТА — сумма глав, **$0.084120**; `book_once_usd` $2.00 это ПОТОЛКИ контура банка
|
||
(`gates.terminology.budget_usd 1.00` + `classify_budget_usd 1.00`), а не смета.
|
||
⭐ **Все семь чисел этой таблицы совпали с манифестом прогона A до последнего знака** — при другом
|
||
бинаре, другом каталоге и другом `book_id`. Это сильная улика тождества покупаемого.
|
||
|
||
## 2. ⛔ МЕРА ДЕНЕЖНОЙ ДЫРЫ — пре-регистрируется ЗДЕСЬ, до первого цента
|
||
|
||
**Прибор ПРОВЕРЕН ДО ПРИМЕНЕНИЯ:** те же запросы, прогнанные по сохранённой базе прогона A, дают
|
||
его числа. Это не «похоже», а пере-снято: 33 строки · 33 уникальных `id` · 2 трейса · $0.419423.
|
||
|
||
* **единица** = `(chapter, chunk_idx, stage, role)`. Номера попытки в ключе НЕТ намеренно: единица
|
||
ОХВАТЫВАЕТ попытки. ⚠ У стадии `terminology` все строки несут `chapter = 0`, то есть `chunk_idx`
|
||
там — индекс майнинг-батча, а не чанк главы. Одно слово покрывает ДВА предмета; в каждом числе
|
||
называется, какой именно.
|
||
* **знаменатель** = единицы, за которые заплачено хоть раз (`sum(cost_usd) > 0`). **Печатаются ОБА
|
||
счёта.** На A фильтр не отсеял ничего (17 и 17) ⇒ его поведение не проверялось ни разу.
|
||
* **ЧИСЛИТЕЛЬ ПЕРВЫЙ — выброшенная покупка:** единицы, где есть хоть одна оплаченная и НЕ принятая
|
||
попытка (`ok = 0 AND cost_usd > 0`). **База A: 4 из 17 = 23.5 % ЕДИНИЦ**, тогда как по ВЫЗОВАМ то
|
||
же событие даёт 4 из 27 = **14.8 %**. Две меры расходятся в полтора раза — потому мера и объявлена.
|
||
* **ЧИСЛИТЕЛЬ ВТОРОЙ — ПЕРЕ-МАЙНИНГ БАНКА, и он НЕ называется «пере-оплатой».** Единицы, за
|
||
ПРИНЯТЫЙ результат которых заплачено больше одного раза (`ok = 1`). На A это вся стадия
|
||
терминологии. **Главное число — «все платежи КРОМЕ ПЕРВОГО» = $0.028742 (6.9 %), нижняя граница;
|
||
рядом печатается «все КРОМЕ ПОСЛЕДНЕГО» = $0.035723 (8.5 %).** Разница 24 %, и обе ориентации
|
||
получены ПОРЯДКОМ — тем самым методом, на котором прошлая смена получила ложные 54.9 %. Поля,
|
||
называющего вызов-источник, у строк банка НЕТ (`glossary` 21 колонка, вызова среди них нет;
|
||
`glossary_revisions` 0 строк), поэтому ориентация выбирается явно и объявляется.
|
||
⛔ **И почему это НЕ «деньги за пустоту»** (замерено мной на артефактах A ДО прогона B): второй
|
||
заход терминологии ИЗМЕНИЛ передачу у **12 термов из 69**, и **11 из 12 уехали читателю именно в
|
||
ФИНАЛЬНОЙ форме** (стоп-форма — 0 из 12; один терм не встретился ни в какой). Это ЦЕНА
|
||
ПЕРЕ-МАЙНИНГА БАНКА ПОСЛЕ ЧЕЛОВЕЧЕСКОЙ ПОДПИСИ, а не выброшенная покупка.
|
||
* **ДВА ПУТИ К ДЕНЕЖНОМУ ЧИСЛУ.** Путь 1 — по колонке `degraded`; путь 2 — по `ok = 0 AND cost_usd > 0`,
|
||
колонки `degraded` не касаясь. На A оба дали **$0.106472 = 25.4 %**, но совпадают они ПО
|
||
ПОСТРОЕНИЮ. ⇒ совпадение на B — слабая улика; **РАСХОЖДЕНИЕ — сильная находка**: классификатор и
|
||
признак приёмки разъехались. ⚠ **25.4 % — доля ДЕНЕГ, 23.5 % — доля ЕДИНИЦ**, подменять нельзя.
|
||
|
||
## 3. ⛔ ДВЕ СЛЕПЫЕ ПОВЕРХНОСТИ ПРИБОРА КОНСИСТЕНТНОСТИ, НАЗВАННЫЕ ДО ПРОГОНА
|
||
|
||
Обе найдены на артефактах прогона A, обе меняют то, как прибор B строится.
|
||
|
||
**(а) ГРАНИЦА БАНКА.** Прибор A сверял отгруженный текст со СТОП-ПРЕДЛОЖЕНИЕМ банка
|
||
(`project.db.bank.json`, снят в момент подписи), а читатель получил текст, сделанный под ФИНАЛЬНЫМ
|
||
банком: терминология пере-майнится ПОСЛЕ подписи, и редакторская волна идёт после неё
|
||
(по `request_log` прогона A: терминология-2 кончается 01:42:10, редактор идёт 01:43:54 → 01:54:44).
|
||
⇒ **прибор B читает ФИНАЛЬНЫЙ банк и ПЕЧАТАЕТ, какую версию он прочёл.** Класс — `D39.228` п.5.
|
||
|
||
**(б) ЗНАМЕНАТЕЛЬ САМОГО ПРИБОРА.** На A он нашёл передачу у **40 термов из 69**, а у **29** вернул
|
||
пусто — и записал их в «консистентные». Его итог «отдано более чем одной формой: 0» посчитан по 40,
|
||
а читается как утверждение о книге. ⇒ **прибор B печатает всегда: термов всего N · передачу нашёл у
|
||
M · пусто у K, и K проверяется ТЕКСТОМ**, а не принимается за консистентность.
|
||
|
||
## 4. Пре-рег-таблица: узел → что ДОЛЖНО произойти → чем предъявлено → что считается провалом
|
||
|
||
| # | Узел | Ожидание (числом или строкой) | Чем предъявлено | Провал |
|
||
|---|---|---|---|---|
|
||
| 1 | Стенд — мой | слушатель `127.0.0.1:8098` принадлежит МОЕМУ pid; на `11434` в платной фазе НЕ слушает НИКТО | `ss -ltnp` + pid-файл | чужой процесс на порту ⇒ СТОП |
|
||
| 2 | Код — из фриза | у ПЯТИ бинарей `vcs.revision=baa06ce…`, `modified=false`, строк `vcs.*` > 0 | `go version -m` | любое из трёх не так ⇒ СТОП |
|
||
| 3 | Гость и деньги | ОТДЕЛЬНАЯ платная учётка; грант $2.50 одной строкой `credit_ledger.kind='grant'` | `tmplatformctl balance` + строка леджера, ФИЛЬТРОВАННАЯ по учётке | дымовые деньги попали в счёт ⇒ число недействительно |
|
||
| 4 | Интейк | `201`, `chapter_count = 3`; ⚠ `character_count` ≈ 9677 (счёт интейка по потоку, ПРИБЛИЗИТЕЛЬНЫЙ), точный — `source_chars = 8759` | тело 201 + строка `books` | не 3 главы ⇒ СТОП до оплаты |
|
||
| 5 | Срез совпал | `units_total = 4`, по главам **2/1/1**, `chunks_total = 6` | `chapters`+`units` в Postgres против §1.2 | расхождение ⇒ СТОП до оплаты |
|
||
| 6 | Цена и бонд | `term_consistency_funded: true`, `verdict: covers_all`, `affordable_chapters: 3`, холд **2 241 631 µUSD** = ⌈84 121 × 1.25⌉ + 136 479 + 2 000 000 | `GET /v0/books/{id}/run-options`, тело в файле | `false` ⇒ СТОП до оплаты |
|
||
| 7 | Старт | `202`, `status: translating`, `ordered_chapters: 3`, `runs.bond_funded = t`. ⚠ **Ожидается, что ответ старта скажет `term_consistency_funded: false`** при уже выставленном `bond_funded = t` — находка 7 прогона A; ВОСПРОИЗВЕДЕНА мной на $0-руке | ответ + строка `runs` | отказ старта ⇒ СТОП и пинг |
|
||
| 8 | Ключи живы | первый платный вызов не отказан по авторизации | `request_log.err` на первой строке | отказ провайдера ⇒ СТОП и пинг (не наша поломка) |
|
||
| 9 | Кадры | `events.jsonl` несёт `hello · progress · unit_done · spend · bank_stop · finished`; `run_attempts.last_seq` растёт **ПО ПОПЫТКАМ** | счёт кадров по типам, per-attempt | кадров нет при живом юните ⇒ дефект |
|
||
| 10 | Банк-стоп | `runs.status = awaiting_bank`, exit **3**, `.bank.json` несёт непустой `proposed[]` и `terms: []` | статус + exit + КОПИЯ сайдкара (резюм её уничтожает) | стоп не наступил ⇒ исход «узел не наступил», не провал |
|
||
| 11 | Проекция банка | `bank_terms` = **0** ПОКА прогон не закрыт и **> 0** ПОСЛЕ | `GET …/bank` дважды + `select count(*)` | ноль ПОСЛЕ закрытия ⇒ дефект |
|
||
| 12 | Дверь правок | `preview:true` → `changed:true`, на диске НИЧЕГО; `preview:false` → `state: applied` + `mined-delta.yaml` | тела обоих ответов В ФАЙЛАХ + sha файла до/после | преview написал на диск ⇒ дефект |
|
||
| 13 | Резюм (**РОВНО ОДИН**) | `202`, вторая строка `run_attempts`, `exit_code = 0` | `run_attempts` | не возобновился ⇒ дефект |
|
||
| 14 | Книга переведена | `units.state = translated` у всех **4** юнитов | `select state, count(*)` + контрольный счёт юнитов книги | любой не `translated` ⇒ книга не доведена |
|
||
| 15 | Сборка | `complete: true`, `pending/withheld/incomplete/stale/ghost = 0`, `stale_unknown: false`, `config_drift: false` | stdout `tmctl build` (на API этих полей НЕТ) | любое не так ⇒ книга не целая |
|
||
| 16 | Выгрузка | `exports.state = ready`, `exports.complete = t`, `size_bytes` = числу скачанных байт, ОБА формата | строка `exports` + длина скачанного | `complete` не `t` ⇒ дверь отдала книгу с дырой |
|
||
| 17 | ФАЙЛ | байты скачаны, sha256 напечатан; EPUB читается структурно (zip + `container.xml` + `nav` + spine = 3) | sha256 + разбор zip | не открывается ⇒ провал |
|
||
| 18 | Человек прочитал | первый абзац — связный русский текст | цитата в отчёте | не текст ⇒ провал |
|
||
| 19 | Деньги сошлись | Σ `request_log.cost_usd` ≈ кадр `spend` ≈ Σ `settlement` ЭТОЙ учётки ≈ (грант − баланс); открытых резерваций **0** | четыре счёта в µUSD рядом, ВСЕ фильтрованы по учётке | расхождение — НАЗВАТЬ, не подгонять |
|
||
| 20 | Ничего не реплеено | `tm_hit = 1` печатается С РАЗБИВКОЙ ПО ПОПЫТКАМ **по `trace_id`** (он несёт номер попытки), `distinct model_actual` не содержит `local-*` | запросы к `project.db` | есть `local-*` ⇒ прогон измерил заглушку |
|
||
| 21 | **v17 `wave_selection`** | **10 строк = 6 `draft` + 4 `edit`**, и волны стоят над РАЗНЫМИ снапшотами (черновик — базовый банк, редактор — обогащённый) | `select wave, count(*)` + `snapshot_id` + `injected_srcs` | строк нет ⇒ **пинг, а не ноль в отчёте**: писатель гейтится `r.memory != nil` |
|
||
| 22 | **v18 `reasoning_in_completion`** | **ТРЁХЗНАЧНО**: сколько `NULL`, сколько `0`, сколько `>0`, сумма = числу строк. Ожидание: на DeepSeek `>0` преобладает | три счёта + контроль суммы | «не ноль» вместо трёхзначности ⇒ вопрос не задан |
|
||
| 23 | Консистентность | `I1`/`I2` С ПЕЧАТАЕМЫМИ знаменателями + «термов N · передачу нашёл у M · пусто у K» + **какую версию банка прочёл прибор** | `QualityReport().Consistency` + свой счёт по отгруженному тексту | число без знаменателя в этом паке не принимается |
|
||
| 24 | ⭐ Вычитка | опус-читатель получает ВЕСЬ перевод и ВЕСЬ оригинал; печатает знаков оригинала (**контроль: 9021**), знаков перевода, ПОСЛЕДНЕЕ предложение обоих | его отчёт | не напечатал доказательство дочитывания ⇒ отчёт не принимается |
|
||
| 25 | ⭐ Сверка приборов | таблица 2×2 заполнена ИМЕНАМИ находок; левая нижняя клетка («прибор смолчал, читатель нашёл») названа поимённо | §4.6 отчёта | клетка пуста без довода ⇒ сверка не сделана |
|
||
|
||
## 5. Стоп-правила (остановка и пинг, не решение сессии)
|
||
|
||
1. фактическая трата дошла до **$1.00** (1 000 000 µUSD);
|
||
2. `runs.paused_reason` НЕПУСТО — любое из четырёх (`run_limit_reached · credit_exhausted · daily_ceiling · ceiling_unknown`);
|
||
3. срез не совпал с §1.2 — стоп ДО оплаты;
|
||
4. `term_consistency_funded: false` в `run-options` — стоп ДО оплаты;
|
||
5. бинарь не из фриза — стоп до устранения;
|
||
6. что-либо слушает `127.0.0.1:11434` в платной фазе — стоп: прогон измерял бы заглушку.
|
||
|
||
## 6. ⛔ ОГРАНИЧЕНИЯ, ОБЪЯВЛЕННЫЕ ДО ПРОГОНА
|
||
|
||
1. **ЭСКАЛАЦИЯ В B НЕ ИСПОЛНЯЕТСЯ.** `pipeline-c1.yaml:223` несёт `escalation.budget_usd: 0`, а
|
||
комментарий строкой `:221` гласит: «Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0».
|
||
Решение оркестратора: **не трогать**, потому что тождество покупающего файла и ценовой модели
|
||
(§1.1) стоит дороже одного непроверенного пути. ⇒ B, как и A, о работе эскалации не говорит
|
||
НИЧЕГО. Сам этот факт идёт находкой вне заказа: механизм построен, ратифицирован и не может
|
||
исполниться ни на одном боевом конфиге без ручного оверрайда, которого никто ни разу не сделал.
|
||
2. **Судьи на пути нет** (`role: judge` живёт только в `c2`), **гейт `coverage` выключен** ⇒ из пяти
|
||
гейтов работают четыре. Проверяемый путь: черновик → редактор → четыре $0-гейта → выгрузка.
|
||
3. **`epubcheck` не гоняется** — `java` на хосте нет и поставить нельзя. EPUB судится структурно.
|
||
4. **ТРИ следа — не три свидетеля.** Postgres платформы МАТЕРИАЛИЗУЕТСЯ из `events.jsonl` движка, а
|
||
текст и файл платформа берёт теми же вербами `tmctl`. По-настоящему независимы только скачанные
|
||
байты и их sha256, плюс systemd-маркеры выхода. Биллинга провайдера у нас нет вовсе.
|
||
5. **Доллары — НАША модель поверх токенов провайдера.** Провайдер сообщает ТОКЕНЫ; цену умножаем мы,
|
||
по пину `models.yaml`. На 11.09 пин flash был ВЫШЕ вендорской страницы на 13 % (D39.247 п.3).
|
||
6. **Пик/офф-пик.** Прогон A шёл 01:29–01:54 UTC в пятницу — ВНУТРИ пикового окна DeepSeek
|
||
(01–04 и 06–10 UTC, пн–пт). B идёт вечером пятницы, то есть в ОФФ-ПИК. Леджер осознанно считает
|
||
по ПИКОВОЙ цене (`D39.136`: потолок обязан срабатывать раньше) ⇒ **записанная цена B будет вдвое
|
||
выше настоящего счёта, а записанная цена A — нет.** На сравнение ЛЕДЖЕРОВ это не влияет (оба
|
||
пиковые), на «сколько мы заплатили» — влияет вдвое. Называется здесь, чтобы не открылось потом.
|
||
7. **ПРЕТРЕЙН — процедура, а не запрет.** `蛊真人` узнаётся моделями 4 из 5. **Каждая находка о
|
||
качестве обязана нести ДВЕ цитаты рядом — фрагмент ОРИГИНАЛА и фрагмент ПЕРЕВОДА.** Находка,
|
||
которая не может показать место в исходнике, — не находка, а воспоминание.
|
||
|
||
## 7. Инструменты (замораживаются вместе с этим пре-регом)
|
||
|
||
* `eval/cold_run_b/door.py` — драйвер: гейт · вход · грант · интейк · опции · старт · вахта · улика ·
|
||
подпись · резюм · выгрузка · произвольная проба. **Каждый запрос И каждый ответ ложатся в
|
||
`evidence/http/` ДО того, как вернутся вызывающему** — дефект харнесса A, из-за которого пять
|
||
строк его пре-рег-таблицы остались без носителя (§10.12 его отчёта).
|
||
* `eval/cold_run_b/measure.py` — прибор денег и единиц §2. **Пере-снимает числа прогона A на его же
|
||
базе** как самопроверку перед применением к B.
|
||
* Из фриза A переиспользуются без правки: `eval/door_to_file/stub` ($0-заглушка провайдера),
|
||
`eval/door_to_file/zeropipe` (рендер $0-пайплайна). Оба собраны из клона B и несут его штамп.
|
||
|
||
## 8. Что уже исполнено ДО фриза и чем предъявлено ($0)
|
||
|
||
* **`GET /v0/capabilities` → `export_formats: ["txt","epub"]`** (непусто ⇒ все три гейта выгрузки
|
||
выполнены), `contract_version 0.15.0`, `bank_corrections_enabled: true`.
|
||
* **Пин фазы 0 — ЗАГРУЗЧИК, а не скан.** Движок ЗАГРУЗИЛ рендер $0-пайплайна бесплатным вербом
|
||
(`tmctl manifest --json`, EXIT=0). Контрольная величина рядом: достижимых ПЛАТНЫХ моделей в
|
||
`pipeline-c1.yaml` — **8**, в рендере — **0**, счёт по РАЗОБРАННОМУ YAML, а не по тексту.
|
||
* **$0-ДЫМ ПРОЙДЕН ЦЕЛИКОМ на ОТДЕЛЬНОЙ книге** (синтетический zh-текст, 1206 байт, 4 главы,
|
||
sha256 `10637234312895da4665ed0dff84f25dfacdffd842871425b1bba1cc612b80da`) и на ОТДЕЛЬНОЙ учётке:
|
||
стенд · гость · грант · интейк 201 · опции (4 главы, 4 юнита, бонд профинансирован) · старт 202 ·
|
||
кадры · банк-стоп (exit 3) · дверь правок (preview НИЧЕГО не пишет — проверено sha файла до и
|
||
после) · резюм (exit 0) · выгрузка ОБОИХ форматов, `complete = t`, файлы скачаны.
|
||
* ⭐ **ОБЕ МИГРАЦИИ УЖЕ ИСПОЛНИЛИСЬ ЖИВЬЁМ, и это честно называется здесь, а не приписывается B.**
|
||
На дымовой базе: `wave_selection` — **8 строк = 4 `draft` + 4 `edit`**, волны стоят над РАЗНЫМИ
|
||
снапшотами (`6dabf7e5…` без инъекции против `76670592…` с тремя термами) ⇒ **ось, которой у
|
||
`retrieval_state` нет, работает.** `reasoning_in_completion` — `NULL` на всех 16 строках, и это
|
||
ВЕРНЫЙ трёхзначный ответ: локальная заглушка поля не сообщает. ⇒ **B покупает не «исполнилась ли
|
||
миграция», а её поведение НА ПРОВАЙДЕРЕ, КОТОРЫЙ ЭТО ПОЛЕ ШЛЁТ.**
|
||
* ⭐ **МИГРАЦИЯ ПРОВЕРЕНА НА ЗАПОЛНЕННОЙ БАЗЕ, а не только на пустой.** Копия базы прогона A
|
||
(v16, 33 строки `request_log`, 69 строк `glossary`) открыта бинарём B: `v16 -> v18`, EXIT=0, строки
|
||
целы (33 и 69), `wave_selection` создана пустой, **`reasoning_in_completion` = `NULL` на всех 33
|
||
ранее написанных строках** — ровно то, что миграция обещает. Оригинал не тронут (sha сверена
|
||
до и после). Пустая база про данные не говорит ничего; эта — говорит.
|
||
|
||
---
|
||
|
||
# РЕЗУЛЬТАТЫ (дописано ПОСЛЕ прогона; ничего выше не правлено)
|
||
> ⚠ **О НУМЕРАЦИИ.** Секции РЕЗУЛЬТАТОВ нумеруются своим рядом и с §5 по §8 совпадают номерами с
|
||
> секциями пре-регистрации — та заморожена фриз-коммитом и правке не подлежит, поэтому вместо
|
||
> пере-нумерации замороженного текста здесь разведены ССЫЛКИ: ссылка на пре-рег всегда пишется
|
||
> «§N пре-рега», ссылка на секцию результатов с номером 5–8 — «§N результатов», а §9 и дальше
|
||
> однозначны сами по себе (в пре-реге таких номеров нет).
|
||
|
||
⭐ **Книга дошла до файла.** `蛊真人`, главы 1–3, zh→ru, прогон `run_Q6DSXGS7TW52TFNO` над книгой
|
||
`bk_NH6275ZIRFFTLZHG`: старт **22:48:38**, финиш **23:08:44** (**20 мин 06 с**), две попытки
|
||
(банк-стоп exit 3 и резюм exit 0), `status = ready`, `paused_reason` пусто, `failure_reason` пусто.
|
||
Все **4** юнита `translated`, обе выгрузки `complete = t`, оба файла скачаны и прочитаны.
|
||
**Цена доведённой до конца книги: $0.396657.**
|
||
|
||
## 5. ДЕНЬГИ ПРЕ-РЕГИСТРИРОВАННОЙ МЕРОЙ — и меры разошлись в РАЗНЫЕ стороны
|
||
|
||
Прибор — `eval/cold_run_b/measure.py`, тот же, что перед прогоном пере-снял КАЖДОЕ опубликованное
|
||
число прогона A на его собственной базе (`--selfcheck` → PASSED).
|
||
|
||
| | прогон A | прогон B |
|
||
|---|---|---|
|
||
| цена книги | $0.419423 | **$0.396657** (−5.4 %) |
|
||
| строк `request_log` / вызовов / бесплатных подстановок | 33 / 27 / 6 | 35 / 28 / 7 |
|
||
| единиц всего / платных | 17 / 17 | 17 / 17 |
|
||
| **ЧИСЛИТЕЛЬ 1 — по ЕДИНИЦАМ** | 4 из 17 = **23.5 %** | 7 из 17 = **41.2 %** |
|
||
| **ЧИСЛИТЕЛЬ 1 — по ДЕНЬГАМ** | $0.106472 = **25.4 %** | $0.083587 = **21.1 %** |
|
||
| ЧИСЛИТЕЛЬ 2 (пере-майнинг банка), «все кроме первого» | $0.028742 = 6.9 % | $0.026771 = **6.7 %** |
|
||
| ЧИСЛИТЕЛЬ 2, «все кроме последнего» | $0.035723 = 8.5 % | $0.023834 = 6.0 % |
|
||
| два денежных пути (`degraded` · `ok=0 AND cost>0`) | совпали | **совпали** |
|
||
| длительность | 25 мин 31 с | 20 мин 06 с |
|
||
|
||
⭐ **ГЛАВНОЕ В ЭТОЙ ТАБЛИЦЕ — ДВЕ СРЕДНИЕ СТРОКИ, И ОНИ ИДУТ В РАЗНЫЕ СТОРОНЫ.** Доля ЕДИНИЦ почти
|
||
удвоилась (23.5 → 41.2 %), а доля ДЕНЕГ УПАЛА (25.4 → 21.1 %). Причина видна поимённо: B выбросил
|
||
БОЛЬШЕ единиц, но ДЕШЁВЫХ — пять черновых чанков по ~$0.012 против одного редакторского вызова за
|
||
$0.071 у A. **Подменить одну меру другой здесь значило бы сказать ровно противоположное правде**, и
|
||
это первый случай в проекте, где расхождение двух мер видно НА ДАННЫХ, а не в рассуждении. Ровно
|
||
поэтому мера и пре-регистрировалась.
|
||
|
||
⛔ **ВЕЛИЧИНА НЕ ЗАЯВЛЯЕТСЯ.** n = 2. Квирки §3д: при sd логарифма 0.82 парный дизайн ловит ×2.5 за
|
||
13 пар. Установлен ЗНАК: на обоих прогонах доля выброшенного лежит в первой четверти цены книги, и
|
||
обе меры на обоих прогонах ненулевые.
|
||
|
||
⚠ **И ТРЕТЬЕ ЧИСЛО, СВОЁ У ДВИЖКА.** Его собственная новая строка `MONEY BY WHAT IT BOUGHT` даёт:
|
||
отгруженный текст $0.254510 (10 вызовов) · терминология книги $0.034726 (7) ·
|
||
**superseded-by-a-later-call $0.107421 (11) = 27.1 %** · bought-nothing-shippable $0.000000 (0).
|
||
Это ТРЕТЬЕ определение («вытеснено поздним вызовом»), оно ШИРЕ моего числителя-1, и складывать три
|
||
определения нельзя. Самая крупная одиночная потеря, названная самим движком:
|
||
`book/batch0/terminology/classifier` — $0.012646.
|
||
|
||
## 6. ⭐ ОБЕ МИГРАЦИИ ПРЕДЪЯВЛЕНЫ ДАННЫМИ
|
||
|
||
### 6.1 `v17 wave_selection` — 10 строк, и волны стоят над РАЗНЫМИ банками
|
||
|
||
Пре-рег (узел 21) требовал **10 = 6 `draft` + 4 `edit`**. Факт: **ровно так.**
|
||
|
||
| волна | строк | snapshot_id | что показали |
|
||
|---|---|---|---|
|
||
| `draft` | 6 | `fef36e1dd642b8c4…` | `injected_srcs` = `[]` на ВСЕХ шести, `n_exact_hits = 0` |
|
||
| `edit` | 4 | `9ae4e88aa354fb3b…` | `n_exact_hits` = 21 · 26 · 23 · 26, инъекция 124–159 байт |
|
||
|
||
Контроль рядом: `retrieval_state` = 6 строк, различных черновых чанков в `request_log` = 6.
|
||
⇒ **ось, которой у `retrieval_state` нет, отвечает: черновой волне не показали НИЧЕГО, редакторской —
|
||
весь обогащённый банк.** До v17 второй половины этого ответа в схеме не существовало.
|
||
|
||
### 6.2 `v18 reasoning_in_completion` — ТРЁХЗНАЧНО, и третье значение оказалось несущим
|
||
|
||
**`NULL` = 7 · `0` = 0 · `>0` = 28 · сумма 35 = числу строк `request_log`.**
|
||
И семь `NULL` — это РОВНО семь бесплатных подстановок из чекпойнтов (`tm_hit = 1`, `cost = 0`), то
|
||
есть строки, где провайдера не спрашивали вовсе. Это дословно семантика, которую обещает комментарий
|
||
миграции: «NULL = the question was not answered». Устаревшая колонка `reasoning_tokens` при этом
|
||
равна 0 на всех 35 строках — как и объявлено, ПО ПОСТРОЕНИЮ.
|
||
|
||
⭐⭐ **И ВОТ ЧТО ЭТА КОЛОНКА ПОКАЗАЛА ВПЕРВЫЕ — РЯД 422 ЗАКРЫТ ЧИСЛОМ, А НЕ МЕХАНИЗМОМ.**
|
||
Доля РАЗМЫШЛЕНИЯ в выходе, за который уже заплачено:
|
||
|
||
| стадия · роль | вызовов | выходных токенов | из них размышление | доля |
|
||
|---|---|---|---|---|
|
||
| `draft` · translator | 11 | 88 586 | 75 569 | **85.3 %** |
|
||
| `edit` · editor | 4 | 41 879 | 31 477 | **75.2 %** |
|
||
| `terminology` · classifier | 6 | 27 754 | 27 097 | **97.6 %** |
|
||
| `terminology` · terminologist | 7 | 21 394 | 19 799 | **92.5 %** |
|
||
|
||
⇒ **на БОЕВЫХ настройках подавляющая часть купленного выхода — думанье, а не текст.** И у всех семи
|
||
выброшенных вызовов размышление съело ПОЛНЫЙ потолок: 8496/8496 ×3, 8496/7110, 8496/8496, 8000/7966,
|
||
8000/8000. Мина видна в НАШЕЙ собственной телеметрии впервые за жизнь проекта.
|
||
|
||
## 7. ⛔ НАХОДКА, КОТОРОЙ НЕ БЫЛО НИ У КОГО: БЭНК-РОЛИ НЕ ЗАВЕДЕНЫ НА ЛЕКАРСТВО
|
||
|
||
**Что видел.** На попытке 1 классификатор терминологии: `batch=0 asked=22 answered=4` (`length`,
|
||
$0.012646) и `batch=2 asked=24 answered=0` (`empty`, $0.012133). **42 терма из 66 остались без
|
||
машинного типа, оба провальных батча ОПЛАЧЕНЫ, регенерации не было.**
|
||
|
||
**Чем предъявлено, что лечение существует и бэнк-роли на него не заведены.** Регенерация живёт в
|
||
`runStage` (`backend/internal/pipeline/stagerun.go:39`), и там её ДВЕ ветви: «regenerating with less
|
||
thinking at the SAME budget» (ручка `lower_effort_on_empty`, лендится выключенной — `D39.251`) и
|
||
«stage flagged, regenerating with a larger budget» (`stagerun.go:235` — работает, и на этом прогоне
|
||
> ⚠ **ИСПР. 17.09:** строка переименована (`the call was flagged, regenerating with a larger budget`), и адрес
|
||
> `stagerun.go:235` тоже устарел — тело цикла уехало в `attemptladder.go` (акт `D39.264`, лендинг `10d245a`).
|
||
> Наблюдение прогона B не меняется: лечение в движке было и работает.
|
||
|
||
вылечила **5 черновых из 5**). Бэнк-роли идут МИМО `runStage`: `runBankAttempt` зовёт
|
||
`r.runAttempt(...)` напрямую (`backend/internal/pipeline/terminologist.go:832`). Комментарий рядом
|
||
объясняет, почему у них нет обязательного ожидания, — про лечение он не говорит ничего.
|
||
⇒ **одна и та же задокументированная вендорская мина: у ЧЕРНОВОЙ стадии лекарство есть, у БЭНК-РОЛИ
|
||
нет ни лекарства, ни счётчика.**
|
||
|
||
⚠ **ЧЕМ ЭТО НЕ ЯВЛЯЕТСЯ, и я говорю это прежде, чем меня спросят.** На резюме тот же классификатор
|
||
ответил **22/22 · 19/19 · 24/24** — та же книга, тот же конфиг, четыре минуты спустя. Контроль по
|
||
прогону A: у него все три батча чисты (23/23, 21/21, 25/25). ⇒ **это СТОХАСТИКА провайдера, а не
|
||
регрессия между A и B**, и назвать это регрессией значило бы получить верный результат при неверной
|
||
гипотезе. Механизм задокументирован: разброс размышления ×163 при побайтно одном входе (квирки п.2).
|
||
|
||
⚠ **ВТОРАЯ ПОЛОВИНА — ПРО НАБЛЮДАЕМОСТЬ, и она хуже первой.** Итоговая строка стадии печатает
|
||
`classify_batches_dropped=0 unanswered=0 bad_lines=0 consolidated=66 declined=0`. Это НЕ ложь, а
|
||
ОТСУТСТВИЕ: `ClassifyBatchesDropped = crun.dropped` (`terminologist.go:420`) считает батчи,
|
||
выброшенные СВОИМ БЮДЖЕТОМ, а `unanswered`/`bad_lines` принадлежат РЕНДЕР-проходу.
|
||
**Счётчика доли ответов классификатора нет ни одного**, и единственный носитель факта — WARN посреди
|
||
прохода. Бюджет ни при чём: лимит $1.00, потрачено $0.029749.
|
||
|
||
## 8. КОНСИСТЕНТНОСТЬ — ВПЕРВЫЕ С ЖИВОГО ПРОГОНА, СО ВСЕМИ ЗНАМЕНАТЕЛЯМИ
|
||
|
||
Прибор движка (`QualityReport().Consistency`, печатает `tmctl report`), по ОТГРУЖЕННОМУ тексту:
|
||
|
||
```
|
||
population: bank rows=66 · judgeable (a dst to look for)=66 · no dst=0 · shipped units read=4
|
||
of the judgeable: key never fired in the source=1 · spoiler-window blocked=0 · fired and judged=65
|
||
occurrences: bank keys fired and judged=268 · accepted renderings found in the text=276
|
||
I1 ONE FORM PER TERM: more than one rendering=6 · a single rendering=52
|
||
I2 THE BANK'S FORM IS THE ONE SHIPPED (D39.104): never reached the reader=7
|
||
NESTED ROWS EATEN BY A LONGER KEY whose own rendering did not reach the text=1
|
||
⚠ under the post-check's OWN equality the same book reads: absent=13 · more than one=10 · single=42
|
||
```
|
||
|
||
**Поимённая таблица вердиктов, которую прибор печатает сам (с ГЛАВАМИ):** `absent` ×6
|
||
(`九族` «девять поколений рода» · `华夏` «Китай» · `时辰` «шичэнь» · `话事人` «распорядитель» ·
|
||
`熊家寨` «крепость рода Сюн» · `穿越众` «попаданец» · `管家` «домоправительница») · `split` ×6
|
||
(`古月族长` · `家老` · **`方源` «Фан Юань», подписанный, 63 сработки / 58 отгружено, strict 36, split
|
||
внутри глав 1, 2 и 3** · `牌位` · `舅父` · `沈翠`) · `covered` ×1 (`魔道`, съеден более длинным ключом
|
||
в главах 2 и 3).
|
||
|
||
⭐ **Самое дорогое в этой таблице — строка `方源`.** Это ПОДПИСАННЫЙ мною терм, имя главного героя, и
|
||
прибор говорит `split` по всем трём главам: 63 сработки ключа, 58 найденных передач, а под строгим
|
||
равенством — 36. То есть **даже подписанная форма расходится внутри книги**, и это ровно приоритет
|
||
№1 владельца, замеренный на отгруженном тексте.
|
||
|
||
> ⛔ **ЭРРАТА 11.09 (оркестратор №23, при приёмке; тело отчёта НЕ переписано — `D23.3`, отчёт есть улика).**
|
||
> **Вывод предыдущего абзаца НЕВЕРЕН, и опровергает его §18 этого же отчёта.** «Даже подписанная форма
|
||
> расходится внутри книги» — не то, что показал прибор. Пере-снято мною руками: в отгруженном тексте
|
||
> **58 вхождений имени в четырёх падежах и НОЛЬ конкурирующих транслитераций**; голые «Фан» принадлежат
|
||
> другим термам банка. **Падеж — не вторая передача, и расхождения нет.**
|
||
> ⛔ **Механизм тоже назван неточно, и это важнее самого вывода, потому что чинить будут по нему.** Дело
|
||
> НЕ в строгой колонке: печатаемый вердикт берётся из СТЕМ-ТОЛЕРАНТНОГО счёта (58), а строгий (36)
|
||
> печатается рядом и вердикта не производит. `split` ставится предикатом, когда **попаданий МЕНЬШЕ, чем
|
||
> срабатываний** источника (`backend/internal/pipeline/bookconsistency.go`, греп
|
||
> `func (v *verdictAcc) observe`) — то есть **имя вердикта утверждает больше, чем меряет предикат**:
|
||
> читается «термин разъехался», а сказано «нашли не каждое срабатывание». Недостающие пять — местоимения.
|
||
> ⚠ Класс — **голова отчёта противоречит его же хвосту**: §18 ниже говорит верно, и следующая смена
|
||
> разрешила бы расхождение в пользу первой прочитанной строки. Носители: акт **`D39.252`** п.3, ряд **436**.
|
||
|
||
**Мой независимый прибор** (`~/tm-coldrun-b/tools/shipped.py`, тот же, что перед прогоном
|
||
пере-снял артефакты A): передача найдена у **62 из 66**, пусто у **4**, и все четыре напечатаны
|
||
поимённо (`九族` · `时辰` · `熊家寨` · `管家`). ⚠ Он НАЗЫВАЕТ, какой банк прочёл — ФИНАЛЬНЫЙ, — и это
|
||
не формальность: см. §8.1.
|
||
|
||
### 8.1 ⭐ ВТОРАЯ ТОЧКА К ЭРРАТЕ `D39.247` §4: пере-майнинг двигает ~20 % банка
|
||
|
||
Сравнение предложения банка НА СТОПЕ с ФИНАЛЬНЫМ банком того же прогона:
|
||
|
||
| прогон | термов в банке | передач СДВИНУЛОСЬ между стопом и финалом |
|
||
|---|---|---|
|
||
| A | 69 | **12** (и 12 из 12 уехали читателю в ФИНАЛЬНОЙ форме) |
|
||
| B | 66 | **14** |
|
||
|
||
Примеры с B: `开窍大典` «великая церемония раскрытия апертуры» → «церемония открытия апертуры» ·
|
||
`管家` «домоправитель» → «домоправительница» · `舅母` «жена дяди по матери» → «тётя по матери» ·
|
||
`赤铜香炉` «курильница из красной меди» → «медная курильница».
|
||
⇒ **прибор, сверяющий отгруженный текст с банком СТОПА, на каждом пятом терме сверяется не с тем
|
||
банком.** На A это дало шесть ложных «⛔ отдано не банковской формой»; здесь оно названо ДО замера,
|
||
и прибор B читает финальный банк.
|
||
|
||
### 8.2 ⛔ ПОСТ-ЧЕК МОЛЧИТ ТАМ, ГДЕ ПРИБОР КНИГИ ГОВОРИТ
|
||
|
||
`retrieval_state.n_postcheck_miss = 0` на ВСЕХ шести чанках — при том, что прибор книги на том же
|
||
тексте называет 6 расходящихся термов и 7 не доехавших. Причина названа комментарием самого движка
|
||
(`bookconsistency.go`): пост-чек считает ТОЛЬКО промах `Confirmed`-строки, а `Confirmed` — это
|
||
`status='approved'`, которых в банке **2 из 66**. ⇒ **счётчик решает на единице, которой в продукте
|
||
нет** (`D39.144`: пер-термной подписи не существует, банк подписывается целиком). Это не дефект
|
||
счётчика — это дефект ЕДИНИЦЫ, на которой он построен, и сегодня он даёт ноль там, где текст
|
||
расходится.
|
||
|
||
## 9. ИСХОД КАЖДОЙ СТРОКИ ПРЕ-РЕГ-ТАБЛИЦЫ
|
||
|
||
| # | Узел | ФАКТ | Сошлось |
|
||
|---|---|---|---|
|
||
| 1 | стенд мой | `tmplatformd` pid 2337390 на 8098; на 11434 не слушает НИКТО (контроль: 8 слушателей на хосте) | ✅ |
|
||
| 2 | код из фриза | у ПЯТИ бинарей `vcs.revision=baa06ce…`, `modified=false`, строк `vcs.*` = 3; негативный контроль из главного дерева даёт `modified=true` | ✅ |
|
||
| 3 | гость и деньги | ОТДЕЛЬНАЯ платная учётка `u_RR5RMQNSX2KZMNXL`, грант 2 500 000 µUSD одной строкой; **ледждер-строк у ЭТОЙ учётки 1 при 30 у всех** | ✅ |
|
||
| 4 | интейк | 201, `chapter_count: 3`; `character_count: 9677` (приблизительный счёт интейка), точный `source_chars = 8759` — как и предсказано в пре-реге | ✅ |
|
||
| 5 | срез совпал | `units_total = 4`, по главам **2/1/1**, `chunks_total = 6` | ✅ |
|
||
| 6 | цена и бонд | `funded: true`, `covers_all`, `affordable_chapters: 3`, `expected 84 122`, холд **2 241 631** — до микро-доллара как в пре-реге | ✅ |
|
||
| 7 | старт | 202, `translating`, `ordered_chapters: 3`, `runs.bond_funded = t`; **и ответ старта сказал `term_consistency_funded: false`** — находка 7 прогона A ВОСПРОИЗВЕДЕНА | ✅ (включая предсказанную аномалию) |
|
||
| 8 | ключи живы | первый платный вызов оплачен ($0.012048), отказов по авторизации 0 из 35 | ✅ |
|
||
| 9 | кадры | **51 кадр шести типов**: `hello` 2 · `progress` 10 · `spend` 28 · `unit_done` 8 · `bank_stop` 1 · `finished` 2 | ✅ |
|
||
| 10 | банк-стоп | `awaiting_bank`, exit **3**, `.bank.json` несёт `proposed[]` = **66** и `terms: []` — ряд 224 воспроизведён | ✅ |
|
||
| 11 | проекция банка | **0** строк `bank_terms` в момент стопа, **66 (2 approved)** после закрытия | ✅ |
|
||
| 12 | дверь правок | preview → 200, `preview: true` в теле, на диске НИЧЕГО (sha `mined-delta.yaml` до и после); apply → оба `state: applied`, файл 906 байт появился | ✅ **с носителем, которого у A не было** |
|
||
| 13 | резюм (РОВНО ОДИН) | 202, попытка 2, `exit_code = 0` | ✅ |
|
||
| 14 | книга переведена | 4 из 4 `translated` (контроль: юнитов книги — 4) | ✅ |
|
||
| 15 | сборка | `complete: true`, `pending/withheld/incomplete/stale/ghost = 0`, `stale_unknown: false`, `config_drift: false`, `total_units: 4` | ✅ |
|
||
| 16 | выгрузка | txt 54 848 байт `complete = t`; epub 20 546 байт `complete = t`; длина скачанного = `size_bytes` | ✅ |
|
||
| 17 | ФАЙЛ | txt sha `43b3cc4f…`; epub sha `2560f9f2…`, `testzip() = None`, 7 записей zip, `container.xml` → `OEBPS/content.opf`, `nav` объявлен, **3** itemref, оглавление «Глава 1/2/3» | ✅ |
|
||
| 18 | человек прочитал | первый разворот — связный русский текст, цитата ниже | ✅ |
|
||
| 19 | деньги сошлись | Σ `request_log` = **396 657** µUSD = Σ `settlement` этой учётки = (грант − баланс) = 2 500 000 − 2 103 343; открытых резерваций 0 | ✅ |
|
||
| 20 | ничего не реплеено | `distinct model_actual` = `deepseek-flash`, `deepseek-v4-pro` — **`local-*` нет**; `tm_hit=1` у 7 строк, разбивка ПО ПОПЫТКАМ из `trace_id`: попытка 1 — **0**, попытка 2 — **7**, все по $0 | ✅ |
|
||
| 21 | `wave_selection` | **10 = 6 `draft` + 4 `edit`**, разные снапшоты, §6.1 | ✅ |
|
||
| 22 | `reasoning_in_completion` | **`NULL` 7 · `0` 0 · `>0` 28**, сумма 35 = строкам, §6.2 | ✅ |
|
||
| 23 | консистентность | I1/I2 со всеми знаменателями, §8; прибор НАЗЫВАЕТ прочитанный банк | ✅ |
|
||
|
||
**Первый разворот отгруженного файла (узел 18), дословно:**
|
||
|
||
> Пусть тело погибнет — сердце демона не раскается
|
||
>
|
||
> — Фан Юань, послушно отдай Цикаду Весны и Осени, и я подарю тебе быструю смерть!
|
||
>
|
||
> — Старый демон Фан, не надейся сопротивляться. Сегодня мы, великие школы праведного пути,
|
||
> объединились, чтобы разрушить твоё демоническое логово.
|
||
|
||
### 9.1 ⭐ ПРОВЕРКА, КОТОРОЙ У ПРОГОНА A НЕ БЫЛО: остаток разобран ДО НУЛЯ
|
||
|
||
Каждый из **4** отгруженных юнитов найден в скачанном файле **подстрокой, ровно один раз**, смещения
|
||
строго возрастают (37 · 5874 · 11284 · 21895), ни один не найден дважды. Σ юнитов **30 237** знаков,
|
||
файл **30 283** — **остаток 46 знаков, и он напечатан целиком**: строка заголовка книги плюс
|
||
переводы строк между блоками. ⇒ **между тем, что оплачено, и тем, что скачано, не потеряно и не
|
||
добавлено ничего.**
|
||
|
||
## 10. КОД, КОТОРЫЙ ОТРАБОТАЛ НА ЭТОЙ КНИГЕ (§4.7 пака)
|
||
|
||
**Что реально бежало:** черновая волна (`draft`/translator, `deepseek-v4-flash`, 6 чанков, 11 платных
|
||
вызовов) → контур банка (`terminology`/classifier + terminologist, `deepseek-v4-flash`, 13 платных
|
||
вызовов за два захода) → банк-стоп и дверь правок → редакторская волна (`edit`/editor,
|
||
`deepseek-v4-pro`, 4 юнита, 4 вызова) → четыре детерминированных $0-гейта → сборка → выгрузка.
|
||
|
||
**Что НЕ бежало и почему:**
|
||
* **эскалация — 0 хопов**, `escalation.budget_usd: 0` в боевом `pipeline-c1.yaml` (§6.1 пре-рега).
|
||
`escalated = 0` во всех 10 строках `chunk_status`. ⇒ о работе эскалации прогон B, как и A, не
|
||
говорит НИЧЕГО — **второй боевой прогон подряд.**
|
||
* **судья** — `role: judge` живёт только в `c2`, на этом пути его нет вовсе.
|
||
* **гейт `coverage`** — `enabled: false`; работали четыре гейта из пяти.
|
||
* **ручка `lower_effort_on_empty`** — лендится выключенной (`D39.251`), поэтому первая ветвь лечения
|
||
в `runStage` не сработала ни разу; сработала вторая (удвоение потолка), 5 раз из 5.
|
||
|
||
**Исход каждого чанка — `disposition = ok` у ВСЕХ десяти строк `chunk_status`**, а история сохранена
|
||
в `first_flag_reason`: `empty` ×5, `length` ×1, чисто ×1 на черновике; на редактуре флагов нет.
|
||
⇒ **путь не рвался ни разу; он дорожал.**
|
||
|
||
**Три следа, и они НЕ три свидетеля.** Postgres платформы МАТЕРИАЛИЗУЕТСЯ из `events.jsonl` движка,
|
||
а текст и файл платформа берёт вербами `tmctl`. По-настоящему независимы:
|
||
**(а)** скачанные байты и их sha256 и **(б)** маркеры выхода systemd
|
||
(`run_Q6DSXGS7TW52TFNO-1.exit` → `status: "3"`, `-2.exit` → `status: "0"`), то есть выход прогона
|
||
подтверждён ОПЕРАЦИОННОЙ СИСТЕМОЙ вне цепочки платформы. Биллинга провайдера у нас нет вовсе.
|
||
|
||
**Воспроизведённые находки прогона A** (то же поведение, другой прогон, другой движок):
|
||
`err` пуст на ВСЕХ 35 строках, включая семь провальных — **аудит, написанный через `err`, прочитает
|
||
этот прогон как идеально чистый** (A, находка 15) · `model_actual = deepseek-flash` на **31** строке
|
||
из 35 при `model_requested = deepseek-v4-flash` (ряд 413) — ⭐ **и здесь B отличается от A: движок
|
||
теперь САМ кричит об этом на каждом вызове** WARN'ом «priced by a model that did not answer: the
|
||
answering slug is not in the catalogue … priced_by=requested», которого в журнале A нет ни разу ·
|
||
ответ старта говорит `term_consistency_funded: false` при уже выставленном `bond_funded = t`
|
||
(A, находка 7) · `409 not_priced` сразу после интейка — гонка материализации цены (A, находка 8).
|
||
|
||
## 11. ДЕВИАЦИИ — объявлены, не подразумеваются
|
||
|
||
1. ⛔ **ПРИБОР ПРАВЛЕН ПОСЛЕ ФРИЗА, и нашла это не я.** `measure.py` падал с `ZeroDivisionError`
|
||
(`measure.py:83`) на базе, где платных единиц НОЛЬ, — то есть **ровно на той ветви, которую его
|
||
собственный вывод объявляет непроверенной** («the paid filter removed nothing — its behaviour is
|
||
still unexercised»). Нашла приёмка, прогнав прибор по ДЫМОВОЙ базе; я воспроизвела, прежде чем
|
||
чинить. Правка: деление загорожено, и ноль печатается читаемо — «share UNDEFINED — no unit was
|
||
paid for at all (not the same statement as 0%)». **Числа прогона B этим не тронуты** (пере-снято
|
||
после правки: 35/28/7, $0.396657, 7 из 17 = 41.2 %, $0.083587 = 21.1 %), и `--selfcheck` по базе
|
||
прогона A по-прежнему PASSED. Правка идёт ОТДЕЛЬНЫМ коммитом после фриза, как требует норма.
|
||
2. **Инструменты стенда переиспользованы из фриза прогона A без единой правки** (`eval/door_to_file/stub`
|
||
и `.../zeropipe`), но собраны ИЗ КЛОНА B и несут его VCS-штамп. ⇒ девиация §12.5 отчёта A («два
|
||
моих инструмента собраны не из фриза») здесь закрыта построением, а не повторена.
|
||
3. **Дымовая рука шла на ОТДЕЛЬНОЙ книге и ОТДЕЛЬНОЙ учётке, но в ТОЙ ЖЕ базе Postgres.** Выбор
|
||
объявлен в пре-реге: холодность живёт на `book_id`, поэтому другая книга защищает её полностью, а
|
||
общая база означает, что платная рука едет по базе, которую дым уже прогрел. Факторов между дымом и
|
||
платной рукой сменилось четыре: пайплайн · книга · `models.yaml` (дымовой несёт номинальную цену
|
||
локальной модели, без которой книга не продаётся) · учётка.
|
||
4. **`TM_PLATFORM_BACKUP_DIR` и `TM_PLATFORM_PGRESTORE_BIN` заведены мной на платной руке** — на
|
||
дымовой их не было. Довод: без них демон печатает WARN «this deployment keeps NO restore point of
|
||
the paid translations or of the credit ledger». Путь проверен на $0-руке до того, как на него
|
||
положились. Это правка КАССЫ, не покупающего файла ⇒ пере-фриза не требует (§4.2 пака).
|
||
5. **`epubcheck` не гонялся** — `java` на хосте нет и поставить нельзя; пак это разрешает. EPUB судится
|
||
структурно.
|
||
|
||
## 12. ⭐ НАХОДКИ ВНЕ ЗАКАЗА (§4.10 пака) — криты · мажоры · регрессии · баги · точки улучшения
|
||
|
||
Каждая — что видел · чем предъявлено · почему это не вкусовщина · чего стоит.
|
||
|
||
### 12.1 МАЖОР. Учётка, которой не хватает на книжный бонд, покупает УРЕЗАННЫЙ продукт ПО ТОЙ ЖЕ ЦЕНЕ, а решающая пара контракта об этом молчит
|
||
|
||
**Что видел** ($0-рука, воспроизводимо, тела обоих ответов в `evidence/http/`):
|
||
|
||
| баланс учётки | `verdict` | `affordable_chapters` | `blocked` | `term_consistency_funded` | `hold_micro_usd` | `expected_micro_usd` |
|
||
|---|---|---|---|---|---|---|
|
||
| $2.50 | `covers_all` | 4 | `null` | **`true`** | **2 004 553** | 2324 |
|
||
| $0.05 | `covers_all` | 4 | `null` | **`false`** | **4 553** | 2324 |
|
||
|
||
Старт при балансе $0.05 **ПРИНЯТ (202)**, прогон дошёл до `ready`.
|
||
|
||
**Почему это не вкусовщина.** Реальность ТРЁХСОСТОЯННА — «заказ невозможен» · «заказ возможен
|
||
УРЕЗАННЫМ» · «заказ возможен полностью», — а решающая пара контракта (`verdict` + `blocked`)
|
||
ДВУХСОСТОЯННА, и третье состояние выражено булевым полем ВНЕ решающего пути. Из холда молча исчезает
|
||
двухдолларовый бонд контура терминологии, **цена при этом та же** (2324 µUSD в обоих случаях), и
|
||
`affordable_chapters` тоже тот же. То есть покупателю называют ту же цену и тот же объём за продукт,
|
||
у которого выключена консолидация терминов — приоритет №1 владельца.
|
||
|
||
**Чего это стоит и чего НЕ стоит — обе половины.** Запись факт НЕСЁТ: `runs.bond_funded = f` у
|
||
деградированного прогона против `t` у контрольного, и `term_consistency_funded` едет на проводе ⇒
|
||
пост-фактум это аудируемо, «невидимо навсегда» сказать нельзя. ⛔ **А размер эффекта НЕ ИЗМЕРЕН:** на
|
||
дымовой книжке с тремя термами контур всё равно отработал (1 классификатор + 1 терминолог против
|
||
2 + 2 на профинансированной), и на трёх термах эти два числа различаться не могут. **«Контур не
|
||
исчез» доказывает, что механизм ЕСТЬ, а не что урезание безвредно.**
|
||
|
||
**Ратифицировано ли.** Греп `docs/architecture/05-decisions-log.md` по `term_consistency_funded` и
|
||
`bond_funded` даёт только контрактную nullability (`D39.…`, минор 0.13.1) и отчёт прогона A. Дизайна
|
||
«непрофинансированная учётка получает урезанный контур с булевым сигналом» в журнале решений НЕТ.
|
||
⇒ **это вопрос о ФОРМЕ КОНТРАКТА владельцу с рекомендацией, а не доказанный дефект.** Рекомендация:
|
||
категория «принят с урезанным объёмом» в `verdict`, а не булево поле сбоку; `blocked: null` при этом
|
||
СВОЁ значение несёт верно («заказ возможен») и менять его не надо.
|
||
|
||
### 12.2 МАЖОР (наблюдаемость). У контура банка нет счётчика доли ответов — см. §7 результатов
|
||
|
||
Цена на этом прогоне: **$0.024779 и 42 терма из 66 без машинного типа**, при итоговой строке стадии,
|
||
которая говорит «всё чисто». Лечение существует и стоит в соседнем цикле (`stagerun.go:235`), бэнк-роли
|
||
> ⚠ **ИСПР. 17.09:** адрес `stagerun.go:235` устарел — цикл попыток вынесен в `attemptladder.go` (`D39.264`).
|
||
> ⭐ Найдено оркестратором при починке соседней ссылки: ось приёмки назвала в этом файле ОДИН адрес, а их ДВА —
|
||
> второй не цитирует переименованную строку и потому не попал ни в один греп по ней.
|
||
|
||
на него не заведены (`terminologist.go:832`).
|
||
|
||
### 12.3 МИНОР (упрочнение). Битый процент-эскейп в параметре запроса отвечается как ОТСУТСТВИЕ параметра
|
||
|
||
**Механизм различён ТРЕМЯ пробами, а не одной:** `GET /v0/books?cursor=not-a-real-cursor` →
|
||
**400 `cursor_invalid`** (механизм ЖИВ, `decodeCursor` в `platform/internal/pgstore/books.go:1325`
|
||
отвергает по-настоящему) · `GET /v0/books?cursor=%zz` → **200 и полная первая страница** · контроль
|
||
без курсора → тот же 200. Причина не в `decodeCursor`: `r.URL.Query()` молча выбрасывает параметр с
|
||
неразбираемым эскейпом и не отдаёт ошибку разбора никому, так что `Get("cursor")` возвращает `""`.
|
||
Класс системный — то же на `limit` (там безвредно: «выброшен» = «дефолт»).
|
||
**Размер называю честно: МАЛЫЙ.** Курсор — base64url, `%` в корректно переданном курсоре не
|
||
встречается; реальный триггер — двойное кодирование или прокси. Это упрочнение, не денежный путь. Но
|
||
«неразбираемый запрос отвечается как другой, валидный» — тот класс, ради которого у платформы и
|
||
заведена машинная модель ошибок, и этот путь её минует.
|
||
|
||
### 12.4 МИНОР (контракт). Внутри ПРЕВЬЮ пер-элементный `state` называется `applied`
|
||
|
||
Ответ двери правок при `preview: true` несёт `"state": "applied"` у каждого элемента. Различитель
|
||
есть и стоит ПЕРВЫМ полем тела (`"preview": true`), и на диск превью действительно не пишет —
|
||
проверено sha `mined-delta.yaml` до и после. ⇒ информация не теряется, но слово выбрано неудачно:
|
||
`would_apply` сказало бы правду, а `applied` внутри превью читается как подтверждение совершённого.
|
||
⚠ **И я обязана назвать, как чуть не завела здесь ЛОЖНУЮ находку:** первый раз я прочитала ответ
|
||
ГРЕПОМ по нескольким ключам, увидела `state: applied` у превью и почти записала «превью врёт о том,
|
||
что применило». Пошла в сохранённое ТЕЛО целиком — и там первым полем стоит `preview: true`.
|
||
**Спасло ровно то, что харнесс пишет тела в файл: грепу я верила, файлу проверила.**
|
||
|
||
### 12.5 ТОЧКА УЛУЧШЕНИЯ. Механизм эскалации не может исполниться ни на одном боевом конфиге
|
||
|
||
`pipeline-c1.yaml:223` несёт `escalation.budget_usd: 0`, а комментарий строкой `:221` гласит:
|
||
«Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0, иначе echo-эскалация не исполнится».
|
||
Дефолт держится за зелень CI без чужих ключей. ⇒ **два боевых прогона подряд (A и B) прошли с нулевой
|
||
эскалацией, и построенный, ратифицированный механизм не исполнялся живьём ни разу.** Это тот же класс,
|
||
что «лекарство лендится выключенным» (ряд 433): механизм есть, условие его включения — ручная правка,
|
||
которой никто не делает.
|
||
|
||
### 12.6 НАБЛЮДЕНИЕ О ДЕНЬГАХ, которого не заказывали: 85 % оплаченного выхода — думанье
|
||
|
||
См. §6.2 результатов. Это не дефект и не вердикт о настройках — это ВЕЛИЧИНА, которой у проекта не было, и она
|
||
меняет то, как читается любая смета: «выходные токены» и «текст» на боевых настройках расходятся в
|
||
шесть-семь раз. Ряд **422** закрывается числом, а не механизмом.
|
||
|
||
### 12.7 ⚠ ПРО МОЙ СОБСТВЕННЫЙ ПРИБОР — две аномалии, оказавшиеся о НЁМ, а не о предмете
|
||
|
||
**(а)** Первые пробы «второй старт при идущем прогоне» и «стоп» дали «не как ожидалось» (202 и 409).
|
||
Разбор: я спросила ПОСЛЕ того, как прогон уже кончился — $0-заглушка проходит четырёхюнитную книгу за
|
||
~15 секунд. Пере-снято залпом без пауз (три вызова за 0.27 с): **409 `run_in_flight`** и **202** со
|
||
`stop_requested: true`. ⇒ **аномалия была о приборе.** Не пере-сними я её — в отчёт уехали бы две
|
||
несуществующие находки о дверях.
|
||
**(б)** Прибор `shipped.py` на первом прогоне по базе A дал терму `蛊` → «гу» **27 попаданий**, среди
|
||
которых «губ», «губы», «гул», «густое». Правило стема для короткого слова с суффиксным подстановочным
|
||
знаком ловит обычные русские слова. Починено (одно-словный терм короче 4 букв матчится ТОЧНО), стало
|
||
10 попаданий и все — «гу». ⇒ **инструмент, который пере-матчит, докладывает книгу консистентной по
|
||
терму, который он ни разу не нашёл.**
|
||
|
||
## 13. ЧТО НЕ УДАЛОСЬ, НЕ ПРОВЕРЕНО И НЕ ИЗМЕРЕНО
|
||
|
||
1. **ВЕЛИЧИНА доли выброшенного НЕ установлена и установлена быть не могла.** n = 2. Квирки §3д:
|
||
парный дизайн ловит ×2.5 за 13 пар. Установлен ЗНАК и показано, что две меры одного явления могут
|
||
разойтись в противоположные стороны.
|
||
2. **Эскалация не исполнялась** (`budget_usd: 0`). Второй прогон подряд не говорит о ней ничего.
|
||
3. **Судейская стадия отсутствует на этом пути**, гейт `coverage` выключен: четыре гейта из пяти.
|
||
4. **`epubcheck` не гонялся** — `java` на хосте нет. Валидность EPUB по спецификации НЕ измерена;
|
||
измерена структура (zip · `container.xml` · `nav` · 3 itemref · оглавление).
|
||
5. **Стоп-правила и потолки НЕ СТРЕЛЯЛИ.** Книжный потолок $1.25, дневной $2.50, стоп сессии $1.00 —
|
||
при трате $0.396657. Они стояли заряженными и ни разу не сработали ⇒ **их поведение этим прогоном
|
||
не проверено**, и записывать их в актив нельзя. (На $0-руке подсадками проверены отказные пути
|
||
двери, но не потолки движка.)
|
||
6. **Размер эффекта урезанного бонда (§12.1) НЕ ИЗМЕРЕН** — см. там же.
|
||
7. **Атрибуция стохастики.** Провал двух классификаторных батчей и его исчезновение на резюме
|
||
объяснены вендорским разбросом, потому что тот задокументирован и потому что резюм на той же книге
|
||
дал чистый результат. **Но это ОБЪЯСНЕНИЕ, а не замер:** чтобы отделить «вендор» от «наши 118
|
||
коммитов», нужен парный дизайн, которого этот прогон не покупал.
|
||
8. **Один прогон, одна книга, одна пара, три главы, четыре юнита.** Всё, что здесь названо
|
||
«воспроизвелось», воспроизвелось ОДИН раз.
|
||
|
||
## 14. ГДЕ ПРИБОР СЛЕП, И Я ЭТО ЗНАЮ
|
||
|
||
* **Пост-чек считает на единице, которой в продукте нет** (§8.2 результатов): 16 записанных отклонений, счётчик 0,
|
||
потому что `Confirmed` = `approved`, а таких 2 из 66. Данные ЕСТЬ, число НОЛЬ. Не чиню — чужая зона
|
||
и отдельный заказ; назвать обязана.
|
||
* **I2 — нижняя граница, и прибор говорит это сам:** передача засчитывается ГДЕ УГОДНО в юните, так
|
||
что обычное слово вдали от своего терма может закрыть настоящее отсутствие. Прибор печатает и
|
||
популяцию, где это возможно (11 термов).
|
||
* **Мой `shipped.py` матчит префиксным стемом** и поэтому слеп к эллипсису в перечислении: «в
|
||
крепостях рода Бай и рода Сюн» несёт ДВА терма под одной вершиной, и `熊家寨` уходит в «пусто».
|
||
На прогоне A это ровно тот случай, который я сперва посчитала «не доехал», а он доехал.
|
||
⇒ **все пустые печатаются поимённо и разбираются глазами**, а не засчитываются в консистентные.
|
||
* **Долларов провайдер нам не сообщал.** Он сообщил ТОКЕНЫ; доллары умножены нами по пину
|
||
`models.yaml`, и на 11.09 пин flash был выше вендорской страницы на 13 % (`D39.247` п.3).
|
||
«$0.396657» — это то, что насчитала НАША модель цен.
|
||
* **Пик/офф-пик.** Прогон шёл 19:48–20:08 UTC в пятницу, то есть в ОФФ-ПИК DeepSeek, а леджер
|
||
осознанно считает по ПИКОВОЙ цене (`D39.136`). ⇒ **настоящий счёт вендора за B примерно ВДВОЕ
|
||
меньше записанного, а за A — нет** (A шёл внутри пикового окна). Сравнение ЛЕДЖЕРОВ от этого не
|
||
страдает; фраза «мы заплатили столько-то» — страдает вдвое.
|
||
* **«Три следа» — не три свидетеля** (§10): Postgres материализуется из потока движка. Независимы
|
||
только скачанные байты с их sha и маркеры выхода systemd.
|
||
|
||
## 15. ДЕНЬГИ СОШЛИСЬ — шестью счётами, и все шесть отфильтрованы по ОДНОЙ учётке
|
||
|
||
| путь | µUSD |
|
||
|---|---|
|
||
| движок: Σ `request_log.cost_usd` | 396 657 |
|
||
| движок: Σ `checkpoints.cost_usd` | 396 657 |
|
||
| движок: последний кадр `spend` в `events.jsonl` | **396 657** |
|
||
| платформа: Σ `settlement` учётки `u_RR5RMQNSX2KZMNXL` | **396 657** |
|
||
| платформа: грант − баланс той же учётки | **396 657** |
|
||
| платформа: `run_attempts.spend_micro_usd` ПОСЛЕДНЕЙ попытки | **396 657** |
|
||
|
||
Открытых резерваций **0** (контроль: резерваций этой учётки 2, обе `settled`).
|
||
|
||
⚠ **И сразу честно про эти шесть: независимый среди них ОДИН.** `request_log`, `checkpoints` и кадр
|
||
`spend` — три записи одного вычисления движка; `settlement` и баланс — два чтения одного леджера,
|
||
который взял число У ДВИЖКА через `run_attempts`. Сходимость доказывает, что по дороге ничего не
|
||
потеряно и не удвоено, — и ровно это, не больше.
|
||
|
||
⚠ **ЛОВУШКА ПРОГОНА A ВОСПРОИЗВЕДЕНА КАК КОНТРОЛЬ:** `run_attempts.spend_micro_usd` — величина
|
||
НАКОПЛЕННАЯ. Сумма по попыткам даёт **566 850** µUSD, то есть **+43 %** к цене книги. Кто просуммирует
|
||
эту колонку, получит завышение и не заметит.
|
||
|
||
⚠ **И ещё одна ловушка, названная пре-регом и сработавшая:** все шесть счётов отфильтрованы по платной
|
||
учётке. Без фильтра в леджере стенда лежат **36 строк** по двум учёткам, и дымовые деньги вошли бы в
|
||
цену книги. Прогон A на этом и споткнулся (§14.2 его отчёта); здесь учётки разведены пре-регом, а
|
||
фильтр напечатан рядом с каждым числом.
|
||
|
||
## 16. ЧТО СКАЗАЛИ ПРИБОРЫ ДВИЖКА ОБ ЭТОМ ТЕКСТЕ — инвентарь ДО сверки с читателем
|
||
|
||
Записан ДО того, как пришёл отчёт читателя, чтобы сверка §4.6 пака не подгонялась под находки.
|
||
|
||
| прибор | что сказал | где живёт |
|
||
|---|---|---|
|
||
| эхо-гейт `cjk_artifact` | **0** на черновике, **0** на редактуре | `checks`, порог `cjk_share > 0.15` |
|
||
| косметический санитайзер | **0** юнитов | `STRIPS/ECHO` отчёта |
|
||
| стиль-гейты (тире диалога, ё, транслит-междометия, 万/億, reflow) | **0** суммарно | `STYLE GATES` |
|
||
| `glossary-misses` · `number-drift` · `degenerate-loops` · `trust-gated` | **0 · 0 · 0 · 0** | `SIGNALS` |
|
||
| пост-чек банка (`n_postcheck_miss`) | **0** на всех 6 чанках — при **16 ЗАПИСАННЫХ отклонениях** рядом | `retrieval_state`, §8.2 результатов |
|
||
| банкнотный канал | 93 строки на 6 чанках из 6, parse-fail 0, обрезано 0 | `BANKNOTE` |
|
||
| `degraded` | `empty` ×5 · `length` ×2 · пусто ×28 | `request_log` |
|
||
| `chunk_status.disposition` | **`ok` у всех десяти**; история — в `first_flag_reason` | `chunk_status` |
|
||
| структура абзацев | 2.44 предложения на повествовательный абзац (285 / 117) | `STRUCTURE` |
|
||
| следование банку | модель следовала **73 из 89** проверенных строк = **82 %** | `UNSIGNED BANK` |
|
||
| **консистентность книги** | **I1 = 6 термов более чем одной передачей · I2 = 7 не доехали · 1 съеден длинным ключом** | §8 результатов |
|
||
|
||
⇒ **Все приборы, кроме одного, говорят «чисто». Единственный, который говорит не «чисто», — прибор
|
||
консистентности книги, и он называет 13–14 термов поимённо и с главами.**
|
||
|
||
### 16.1 ⛔ И ОДНУ ИЗ ЕГО СТРОК Я ПРОВЕРИЛА РУКАМИ ПРЕЖДЕ, ЧЕМ НЕСТИ ЧИТАТЕЛЮ — она ЛОЖНАЯ ТРЕВОГА
|
||
|
||
Самая громкая строка прибора: **`方源` («Фан Юань»), ПОДПИСАННЫЙ мною терм, вердикт `split`, «split
|
||
inside: 1,2,3»** — то есть разнобой по всем трём главам в имени главного героя. Счёт по отгруженному
|
||
тексту:
|
||
|
||
```
|
||
«Фан Юань» 36 · «Фан Юаня» 19 · «Фан Юаню» 2 · «Фан Юанем» 1 = 58
|
||
конкурирующих транслитераций: 0 (голое «Фан» ×4 — это ДРУГИЕ термы:
|
||
«Старый демон Фан» 方老魔 · «ветвь Фан» 方之一脉 · «род Фан» 方家)
|
||
```
|
||
|
||
⇒ **это одно имя в четырёх падежах, а не две передачи.** Разрыв 63 сработки → 58 передач закрывается
|
||
местоимениями, что для русской прозы норма. Прибор сам печатает оговорку («fewer shipped than fired is
|
||
an upper bound on renderings, not a proof of two»), но вердикт в колонке стоит `split`, и читатель
|
||
таблицы возьмёт именно его. **В склоняющем языке падеж — не вторая передача, и самый тревожный ряд
|
||
отчёта оказался тревогой прибора, а не дефектом текста.**
|
||
|
||
А вот эти две строки того же прибора проверку руками ПРОШЛИ и остаются настоящими:
|
||
* **`家老` («старейшина рода»)**: в тексте преобладает КОРОТКАЯ форма «старейшины», полная —
|
||
единицы. Тот же дефект нашёл и прогон A на своём тексте.
|
||
* **`古月族长` («глава рода Гу Юэ»)**: в тексте «глава рода» без «Гу Юэ».
|
||
|
||
## 17. ⭐ ВЫЧИТКА ВСЕГО ТЕКСТА (§4.5 пака)
|
||
|
||
**Форма:** ОДИН читатель на opus, на ВЕСЬ текст сразу. Довод: объём крошечный (оригинал 9021 знак,
|
||
перевод 30 283), а **консистентность банка по построению не видна тому, кто читает главу отдельно** —
|
||
находки [2]–[5] и [13]–[15] все межглавные. Делить было нечего и незачем.
|
||
|
||
**Доказательство дочитывания — напечатано читателем, и оно сошлось:** оригинал `wc -m` = **9021**
|
||
(со снятым CR — **8782**, разница ровно 239 = числу строк, то есть CRLF); перевод **30 283** обеими
|
||
манерами счёта. Последнее предложение оригинала — «只要不阻碍我赶路,那就一边玩自己的蛋去,踩都不屑踩。»,
|
||
последнее предложение перевода — «Даже наступить на них — и то неохота.» Файлы прочитаны в три
|
||
захода с ПЕРЕКРЫТИЕМ, стыки прочитаны дважды.
|
||
|
||
**Итог: 26 находок — 1 крит · 11 мажоров · 14 миноров**, по приоритетам владельца 7 / 6 / 7 / 6.
|
||
|
||
### 17.1 ⛔ АДЪЮДИКАЦИЯ: находка читателя — это УТВЕРЖДЕНИЕ, а не факт, и я проверила его сама
|
||
|
||
Претрейн-опасность закрывается не обещанием, а сверкой. **Проверено МНОЙ по обоим файлам,механически:
|
||
ВСЕ проверенные пары цитат присутствуют в выданных файлах дословно — ни одной выдуманной.**
|
||
Проверены обе цитаты находок [1] (крит), [2], [3], [5], [8], [9], [17], [18], [19], [23]:
|
||
`对她来讲,自己前途光明…` ×1 · `方家两兄弟` ×1 · `方之一脉` ×2 · `你退下罢` **×2** · `杀了千万人的性命` ×1 ·
|
||
`诛了我的九族` ×1 · `十万八千里` ×1 · `绣花鞋` ×1 · `蹬蹬蹬` ×1 — и соответствующие русские фрагменты
|
||
все по разу. ⇒ **ни одного «воспоминания из претрейна» в отчёте нет.**
|
||
|
||
⛔ **ТРИ ЧИСЛА ЧИТАТЕЛЯ ПРИ ЭТОМ НЕВЕРНЫ, и я их правлю, а не пересказываю:**
|
||
* [2] «род 48 против клан 7» → на самом деле **32 против 6**. 48 — это счёт по СТЕМУ, куда попали
|
||
«родители», «родился», «родного», «родственных»; а из семи «клан» один — «робко **кланя**ясь».
|
||
**Существо находки при этом устояло:** обе цитаты на месте, и разнобой внутри одной реплики
|
||
(«единству клана» — «старейшин рода») подтверждён.
|
||
* [11] «230 абзацев оригинала → 155 перевода» → пере-считано: **230 → 158**, отношение 0.69.
|
||
Направление и величина сжатия подтверждены, число уточнено.
|
||
* [14] риск слипания «старой нянюшки» с «нянюшкой Шэнь» — подтверждён составом БАНКА: там стоят
|
||
РАЗНЫЕ строки `老嬷嬷 → «старая нянюшка»` и `沈嬷嬷 → «нянюшка Шэнь»`, то есть два персонажа
|
||
действительно получили однокоренные имена.
|
||
|
||
⇒ **Доля подтверждённых по цитатам: 10 из 10 проверенных. Доля числовых утверждений, потребовавших
|
||
правки: 3.** Это и есть цена того, что находку читателя нельзя брать на слово, — и одновременно
|
||
доказательство, что предмет он видел.
|
||
|
||
## 18. ⭐⭐ СВЕРКА ПРИБОРОВ С ЧИТАТЕЛЕМ (§4.6 пака) — ради этого прогон и стоил своих денег
|
||
|
||
⛔ **КЛЕТКА «ПРИБОР СМОЛЧАЛ» РАЗДЕЛЕНА НА ЧЕТЫРЕ, И БЕЗ ЭТОГО ДЕЛЕНИЯ ОНА БЫ СОЛГАЛА.** Свалить в
|
||
неё translationese, ритм и согласование значило бы отчитаться «приборы пропустили 24 дефекта из 26»
|
||
— тогда как для большинства из них прибора не существует и существовать не предполагалось.
|
||
|
||
| | **читатель нашёл** | **читатель не нашёл** |
|
||
|---|---|---|
|
||
| **прибор сказал** | **1**: `家老` «старейшина рода» → в тексте преобладает короткая «старейшины» (I1 `split`, главы 1 и 3; читатель этого терма не назвал отдельно, но назвал тот же класс) | ⛔ **ЛОЖНАЯ ТРЕВОГА ×1: `方源`** — самый громкий ряд отчёта, вердикт `split` по всем трём главам на ИМЕНИ ГЕРОЯ. Руками: «Фан Юань» 36 + «Фан Юаня» 19 + «Фан Юаню» 2 + «Фан Юанем» 1 = 58, конкурирующих транслитераций **0**; четыре голых «Фан» — это ДРУГИЕ термы банка (`方老魔`, `方之一脉`, `方家`). **В склоняющем языке падеж — не вторая передача.** Читатель, читавший текст глазами, её не назвал — и был прав |
|
||
| **прибор смолчал** | ⛔ **СЛЕПЫЕ ПОВЕРХНОСТИ — см. разбор ниже** | согласие: пропусков нет (читатель сверил 230 абзацев к 230), эхо 0 при гейте 0, выдумок уровня предложения 0 |
|
||
|
||
### 18.1 Четыре РАЗНЫЕ причины молчания, и лечатся они в разных местах
|
||
|
||
**(а) ПРИБОР ЕСТЬ, ТЕРМ В ЕГО ПОПУЛЯЦИЮ НЕ ПОПАЛ — молчал МАЙНЕР, а не энфорсер.** Прибор
|
||
консистентности судит СТРОКИ БАНКА. Проверено по банку прогона: из терминов, на которых читатель
|
||
поймал разнобой, **в банке НЕТ восьми**: `家族/族` (род↔клан — самая крупная находка приоритета №1) ·
|
||
`炼制`/`炼成` (создать↔выплавить) · `楼阁`/`阁楼` (башня↔павильон) · `老妈子` · `先机`
|
||
(преимущество первого хода↔первому) · `丫头片子` · `怀璧之罪`. ⇒ **энфорсер не молчал — ему не о чем
|
||
было говорить.** Это дефект ПОЛНОТЫ МАЙНИНГА, и лечится он там, а не в гейте.
|
||
|
||
**(б) ПРИБОР ЕСТЬ, ТЕРМ В БАНКЕ, ФОРМА БАНКА ДОЕХАЛА — А ДЕФЕКТ В САМОМ БАНКЕ.** `方家 → «род Фан»`
|
||
и `方之一脉 → «ветвь Фан»` ОБА в банке, обе формы отгружены, прибор доволен. Но «род» в этой книге
|
||
занят кланом (`род Гу Юэ`, `род Бай`, `род Сюн`), и «братья из рода Фан» делают ветвь четвёртым
|
||
самостоятельным родом — находка [3]. То же у `九族 → «девять поколений рода»` (находка [19]: 九族 —
|
||
девять степеней родства, а не девять поколений). ⇒ **прибор спрашивает «доехала ли форма банка», и
|
||
по построению НЕ МОЖЕТ спросить «а верна ли сама форма».** Содержание банка не судит ничто.
|
||
|
||
**(в) ПРИБОР ЕСТЬ, КОНСТРУКЦИЮ ЗНАЕТ ПОИМЁННО — И ПО РАТИФИЦИРОВАННОМУ РЕШЕНИЮ ЕЁ НЕ СУДИТ.**
|
||
Находка [17]: `杀了千万人` → «десятки миллионов» (千万 = десять миллионов). У движка есть чекер ровно
|
||
на эту конструкцию — `DC2 千万`, — и его собственный комментарий говорит дословно
|
||
(`backend/internal/checks/cheapgates.go:90-93`):
|
||
> «DC2 千万: the live hit (杀了千万人 → «тысячи и тысячи людей») is shape-identical to the ratified TRUE
|
||
> positive (千万生灵 → «тысячи жизней»). Hyperbole and magnitude are not separable offline here — the
|
||
> rule's header says so (§5-A4) — so the hit is the class's accepted ambiguity, not an implementation bug.»
|
||
|
||
⇒ **прибор встретил ЭТУ ЖЕ конструкцию, признал её неразрешимой ОФФЛАЙН и по решению оставил в
|
||
покое — а читатель с оригиналом в руках решил её одной строкой.** Это не дыра в реализации; это
|
||
точная граница того, что детерминированный гейт умеет, и цена этой границы теперь названа в тексте.
|
||
|
||
**(г) ПРИБОРА ДЛЯ КЛАССА НЕТ ВОВСЕ — и это БОЛЬШИНСТВО находок.** Ни один $0-гейт не судит:
|
||
подмену референта (крит [1]: 自己 отдано служанке, и мотивировка сцены рухнула) · согласование рода
|
||
([8] «Наделила … небо», [9] «нашлось бы не одна сотня» — две настоящие грамматические ошибки) ·
|
||
кальку идиом ([7] «жёлтые цветы уже остынут», [12] «сила девяти быков и двух тигров», [16]
|
||
«преступление владения яшмой», [25]) · регистр ([20] «девчонка-маломерка», [22] «апертура» в молитве
|
||
предкам, [26] «молвил» + «рассеянно») · утрату эха реплики ([5] `你退下罢` дважды в оригинале, две
|
||
разные реплики в переводе) · дописанный образ ([6] «очки с глаз упали», [23] «каблучками» при
|
||
вышитых туфельках). **Это 20 находок из 26.**
|
||
|
||
⚠ **И ОДИН ПРИБОР ИЗМЕРИЛ ПРЕДМЕТ, НО НЕ ИМЕЕТ ПОРОГА.** Находка [11] — сжатие абзацев 230 → 158.
|
||
Движок это ЧИСЛО печатает: `STRUCTURE … sentences/narrative-paragraph = 2.44 (285 / 117)`. Но это
|
||
наблюдаемость без порога и без сравнения с ИСХОДНИКОМ: прибор знает, сколько абзацев в ПЕРЕВОДЕ, и
|
||
не знает, сколько их было в оригинале. ⇒ **самая крупная художественная потеря прогона измерима
|
||
одним вычитанием, которого никто не делает.**
|
||
|
||
## 19. ЧТО ЧИТАТЕЛЬ СКАЗАЛ О КАЧЕСТВЕ ТЕКСТА — и это ответ на вопрос владельца
|
||
|
||
**Оценка читателя: «приличный любительский, на верхней его границе».** Довод, который он привёл сам:
|
||
издательское качество не допускает ни одной ошибки согласования и ни одного места, где абзац теряет
|
||
смысл, — здесь их три, и все три ловятся обычной редакторской вычиткой БЕЗ сверки с оригиналом.
|
||
Машинным текст назвать нельзя: «машина не выбирает „попаданец“, не строит „в отблесках заката вдруг
|
||
приобрело чарующий оттенок“ и не держит одиннадцать вхождений термина без сбоя».
|
||
|
||
**Что он назвал сильным:** сцена жертвоприношения в родовом храме, утренняя сцена с Шэнь Цуй,
|
||
пересуды сверстников по дороге — «читается как нормальная русская проза, без запинок»; диалог
|
||
старейшин звучит как разговор пожилых интриганов, а не как подстрочник.
|
||
|
||
**Три системные слабости, названные им:** (1) **ритм** — 230 абзацев оригинала сплавлены в 158, в
|
||
главе 2 почти вдвое, и фирменные однофразовые удары автора («大局已定,今日必死无疑», «简而言之,就是重生»,
|
||
«恨吗?») стали придаточными внутри потока; (2) **идиомы** — там, где китайский оборот стёрт до
|
||
служебного значения, перевод его РИСУЕТ, и читатель спотыкается там, где автор не просил
|
||
останавливаться; (3) **терминология не сведена** — «род/клан, ветвь Фан/род Фан, создать/выплавить,
|
||
„Ступай“/„Можешь идти“ — следы текста, который никто не вычитывал единым проходом с глоссарием».
|
||
|
||
**Его три первоочередные правки:** абзац про Шэнь Цуй (крит) · свести глоссарий одним проходом
|
||
(закрывает почти весь приоритет №1) · вернуть абзацную разбивку и переписать четыре кальки по смыслу.
|
||
|
||
⚠ **И честная рамка вокруг этой оценки.** Она снята ОДНИМ читателем на ОДНОЙ книге из трёх глав, без
|
||
второго независимого суждения о качестве (адъюдикация §17.1 проверяла ЦИТАТЫ и ЧИСЛА, а не вкус).
|
||
Шкала «издательское / приличное любительское / машинное» — его, не наша ратифицированная.
|
||
|
||
## 20. СОСТОЯНИЕ СДАЧИ
|
||
|
||
**Сделано и предъявлено:** книга проведена от двери до файла и прочитана ($0.396657, 20 мин 06 с) ·
|
||
исход есть у каждой из 23 машинных строк пре-рег-таблицы (§9 результатов), а две последние её строки — 24 «вычитка» и 25 «сверка приборов» — закрыты §17 и §18 · деньги сведены шестью счётами с
|
||
названной оговоркой про независимость (§15 результатов) · обе миграции предъявлены ДАННЫМИ, и v18
|
||
дала числу ряда 422 первое значение (§6 результатов) · денежная мера пре-регистрирована, прибор
|
||
само-проверен на прогоне A до применения, и две меры одного явления разошлись в разные стороны
|
||
(§5 результатов) · вычитка всего текста опус-читателем с доказательством дочитывания и адъюдикацией
|
||
цитат (§17) · сверка приборов с читателем разделена на четыре РАЗНЫЕ причины молчания (§18) · находки
|
||
вне заказа с носителями (§12 результатов) · девиации объявлены, включая правку моего прибора после
|
||
фриза (§11 результатов) · что не удалось и где прибор слеп (§13–14 результатов).
|
||
|
||
**Где артефакты:**
|
||
|
||
| Что | Где | В git |
|
||
|---|---|---|
|
||
| Инструменты (драйвер, прибор денег, прибор отгруженного текста, пакет читателя) | `eval/cold_run_b/` | фриз `4ee7f03` + правка `measure.py` отдельным коммитом |
|
||
| Пре-регистрация и этот разбор | `docs/experiments/25-door-to-file-b.md` | пре-рег — `4ee7f03`; результаты лендит оркестратор |
|
||
| Стенд, следы, 54 сохранённых HTTP-тела, копии БД, отгруженные файлы | `~/tm-coldrun-b/` (вне git, вне `/tmp`) | нет |
|
||
| Живой журнал прогона («время · что увидел · чего ожидал · что это значит») | `~/tm-coldrun-b/evidence/live-journal.md` | нет |
|
||
| Ожидания §4.8, написанные ДО проб, и исход каждой | `~/tm-coldrun-b/evidence/checks/api-expectations.md` | нет |
|
||
|
||
**Что оставлено включённым:** стенд жив (`tmplatformd` на `127.0.0.1:8098`, pid в
|
||
`~/tm-coldrun-b/stand/daemon.pid`, база `tm_coldrun_b` в кластере `/tmp:55433`, клон фриза в
|
||
`~/tm-coldrun-b/freeze`) — чтобы любое число этого отчёта можно было пере-снять теми же командами.
|
||
Гасить по слову оркестратора и **только по pid**.
|
||
|
||
**Чего я не делала и не буду:** не чинила ничего из найденного — ни в движке, ни в платформе, ни в
|
||
банке. Пак запрещает прогону чинить, и это правильно: прогон, чинящий найденное, перестаёт быть
|
||
холодным и теряет право сравниваться с A. Единственная правка кода за пак — мой СОБСТВЕННЫЙ прибор
|
||
после фриза, и она объявлена девиацией (§11 п.1 результатов).
|
||
|
||
**Работа завершена, править не планирую.**
|
||
|
||
---
|
||
|
||
# ДОПИСКА 12.09 — по прямому вопросу «что ты знаешь и не сказала»
|
||
|
||
> ⚠ Дописка, а не правка: ничего выше не тронуто. Поводом послужил вопрос оркестратора №23 после
|
||
> закрытия пака (норма: «в коде названо, в отчёте нет — значит для следующей смены НЕ названо»).
|
||
|
||
## Д1. ⭐⭐ БАНК КНИГИ НЕДЕТЕРМИНИРОВАН ПО ПОСТРОЕНИЮ — замерено, а не предположено
|
||
|
||
В §18.1(а) сказано, что восьми термов читателя «нет в банке», и причина названа только для части.
|
||
Пере-снято по обеим базам, два разных механизма:
|
||
|
||
**(а) ЧТО ОТСЕКАЕТ КОНТРАСТ — и это НЕ порог.** Греп по `mining-contrast.zh.txt` (jieba 0.42.1,
|
||
**349 046 строк** — контроль): `家族` · `族` · `炼制` · `楼阁` · `先机` · `老妈子` — **ВСЕ в словаре
|
||
общекитайского**, а `方源` · `古月山寨` · `丫头片子` · `怀璧之罪` — нет. ⇒ **шесть из восьми термов
|
||
читателя отсечены потому, что они ОБЫЧНЫЕ КИТАЙСКИЕ СЛОВА.** Контраст спрашивает «характерно ли слово
|
||
для ЭТОГО текста на фоне китайского вообще»; продукт спрашивает «нужна ли слову ОДНА закреплённая
|
||
русская передача на всю книгу». **Для `家族` первый ответ „нет“, второй „да“** — и крупнейшая находка
|
||
приоритета №1 (род↔клан, 9 + 29 вхождений в исходнике) не отсеяна порогом, а исключена ПО ПОСТРОЕНИЮ.
|
||
|
||
**(б) А РАСХОЖДЕНИЕ БАНКОВ A И B — СОВСЕМ ДРУГОЕ, и оно глубже.** Банки: общих **53**, только в A —
|
||
**16**, только в B — **13**, на побайтно одном исходнике и тождественном покупающем конфиге
|
||
(sha `a46b33ee…` у обоих). Granularity-парами объясняются лишь **4** (`丙等资质`↔`资质` ·
|
||
`四更时`↔`四更` · `族长家老`↔`族长` · `贴身丫鬟`↔`丫鬟`). И частотой это не объясняется:
|
||
**`舅父舅母` встречается в исходнике 14 раз, есть в банке A и отсутствует в банке B.**
|
||
|
||
⭐ **МЕХАНИЗМ ЗАКРЫТ ЗАМЕРОМ, $0.** Кандидатов банка предлагает ЧЕРНОВИК — канал `banknote`
|
||
draft-side (`bank-mining: draft-side proposals folded`). Сверено `retrieval_state.banknote_detail`
|
||
двух прогонов НА ОДНИХ И ТЕХ ЖЕ шести чанках:
|
||
|
||
| чанк | поверхностей A | B | общих | только A | только B |
|
||
|---|---|---|---|---|---|
|
||
| ch1/0 | 16 | 19 | 15 | `天罗地网` | `牌位` `祭祀大典` `赤铜香炉` `魔头` |
|
||
| ch1/1 | 19 | 18 | 17 | `三转蛊师` `古月族长` | `将敬酒` |
|
||
| ch2/0 | 19 | **11** | 11 | `三转` `仙师` `孪生弟弟` `开窍` `怀璧之罪` `舅母` `舅父` `魔道巨擘` | — |
|
||
| ch2/1 | 15 | 12 | 11 | `唐诗宋词` `正派` `甲等资质` `邪魔` | `甲等` |
|
||
| ch3/0 | 17 | 20 | 13 | `四更时` `舅父舅母` `贴身丫鬟` `雪盐` | `丫鬟` `四更` `嬷嬷` `少爷` `时辰` `舅母` `舅父` |
|
||
| ch3/1 | 12 | 13 | 7 | `丙等资质` `丫头片子` `后宫` `族长家老` `舅父舅母` | `丙等` `家老` `族长` `舅母` `舅父` `资质` |
|
||
| **итого** | **98** | **93** | **74** | | |
|
||
|
||
**Жаккар по книге = 0.63.** ⇒ **банк книги — функция ЧЕРНОВИКА, а черновик есть стохастический выход
|
||
модели. Значит и СОСТАВ банка, и ГРАНУЛЯРНОСТЬ его ключей недетерминированы от прогона к прогону на
|
||
одном входе.** Видно и род различия: на ch3/1 прогон A предлагает СОСТАВНЫЕ ключи (`丙等资质`,
|
||
`族长家老`, `舅父舅母`), а B — их СОСТАВЛЯЮЩИЕ (`丙等`, `族长`, `舅母`, `舅父`, `资质`, `家老`); на
|
||
ch2/0 предложение B — строгое подмножество A, беднее на восемь.
|
||
⛔ **Следствие для чисел этого прогона, и оно жёстче уже записанного:** консистентность мерится ПО
|
||
СТРОКАМ БАНКА, а сами строки между прогонами разные. **Двигается не только вердикт (ряд 436) — двигается
|
||
ПОПУЛЯЦИЯ, на которой он считается.** Числа `I1`/`I2` двух прогонов сравнивать нельзя не потому, что
|
||
прибор плох, а потому, что у них разные знаменатели по построению.
|
||
|
||
## Д2. ТРИ НАХОДКИ ЧИТАТЕЛЯ, ВЫПАВШИЕ ИЗ ОТЧЁТА — и почему это хуже отброса
|
||
|
||
В отчёт вошли **22 из 26**. [4] присутствует по содержанию (в §18.1(а) термы перечислены
|
||
иероглифами). **Три отсутствуют полностью, и я их НЕ отбрасывала по доводу — они выпали при сведении
|
||
находок в КЛАССЫ:** в §18.1(г) перечислены представители класса, и перечень не сверен с полным
|
||
списком. **У отброса есть аргумент, который можно проверить; у выпадения из выжимки его нет.**
|
||
|
||
* **[10] МАЖОР, приоритет 4, `калька`.** `舅父舅母` — одно двусложное слово — отдано шестисловной
|
||
конструкцией «дядя по матери и тётя по матери», **11 раз полной парой** (плюс «тётя по матери»
|
||
отдельно ещё 6). ОРИГИНАЛ: «明天就是开窍大典,哥哥你这么晚还不休息,舅父舅母知道了,恐怕会担心的。»
|
||
ПЕРЕВОД: «Завтра ведь церемония открытия апертуры, а ты так поздно не отдыхаешь. Если дядя по
|
||
матери и тётя по матери узнают, боюсь, они будут волноваться.» В живой реплике подростка брату это
|
||
канцелярская справка о родстве.
|
||
* **[21] МИНОР, приоритет 3, `типографика`.** Два вида многоточия («…» ×10 и «...» ×2, строки 217 и
|
||
227) и одна пара ПРЯМЫХ ASCII-кавычек внутри ёлочек при 24 парах ёлочек:
|
||
«…на пути демонов нет слова "компромисс"». Правки корректора, которых не сделали.
|
||
* **[24] МИНОР, приоритет 4, `калька`.** ОРИГИНАЛ: «弟弟如卧龙升天,哥哥似凤雏落地。» ПЕРЕВОД:
|
||
«Младший — словно Лежащий дракон, вознёсшийся в небо; старший — словно Птенец феникса, павший на
|
||
землю.» `卧龙` и `凤雏` — прозвища Чжугэ Ляна и Пан Туна, для китайского читателя мгновенно
|
||
узнаваемая пара равновеликих гениев; по-русски антитеза не срабатывает, читатель видит двух
|
||
произвольных зверей.
|
||
|
||
## Д3. ЧЕТЫРЕ КОДОВЫХ НАБЛЮДЕНИЯ, НЕ ЗАВЕДЁННЫЕ НАХОДКАМИ В ОСНОВНОМ ОТЧЁТЕ
|
||
|
||
1. ⚠ **`bank_decisions` пуста при трёх `approved`.** После ДВУХ прогонов, применивших правки через
|
||
дверь, в таблице **0 строк**, при `bank_terms` с **3** `approved` (оба числа сняты запросом).
|
||
Эффект решений есть, платформенной записи «кто что решил» нет. Видела на дымовой руке и не чесала;
|
||
в код за причиной НЕ ходила, поэтому дефект это или таблица другого назначения — не установлено.
|
||
2. **ДВА флора `min_max_tokens`, и какой выигрывает — выяснила только по вопросу.**
|
||
`pipeline-c1.yaml:18` несёт `2048`, `models.yaml` — `8000` (flash) и `16000` (pro). На проводе:
|
||
черновик 8496 (= 8000 + 496 банк-бюджета), редактор 16000, бэнк-роли 8000 ⇒ выигрывает
|
||
пер-модельный, пайплайновый инертен.
|
||
3. **`TM_PLATFORM_SIGNUP_GRANT_USD` печатается на буте** как «(an amount; not logged)», то есть
|
||
настройка фри-тир-гранта в деплое существует — при ратифицированном «продуктовых квот и фри-тира
|
||
нет и не проектируется».
|
||
4. **`waves.workers` — РЕАЛЬНЫЙ ключ** (`internal/config/pipeline.go:98`), дефолт **1** при ≤ 0
|
||
(`:939-940`), **в боевом `pipeline-c1.yaml` не задан вовсе.** ⇒ последовательность прогона —
|
||
дефолт, а не записанное решение. Внутренний пер-модельный кап — `RateLimit.MaxConcurrency`
|
||
(`models.yaml`), выставлен только у `mistral-large-2512`.
|
||
⛔ **О поведении при `workers > 1` этот прогон не говорит НИЧЕГО:** гонки, порядок записи,
|
||
снапшот и леджер под конкуренцией НЕ СМОТРЕЛА.
|
||
|
||
## Д4. ДВА СВОЙСТВА ХОСТА, КОТОРЫХ НЕТ В ОСНОВНОМ ОТЧЁТЕ
|
||
|
||
* **`/tmp` занят на 96 % на входе и 97 % на выходе** (5.7 ГБ из 5.9, tmpfs; 4.9 ГБ — скретчпады
|
||
ЧУЖИХ сессий). Меня не задело только потому, что `TMPDIR`/`GOTMPDIR` всех сборок и движка уведены
|
||
на диск. Забитый tmpfs маскируется под сломанную сборку.
|
||
* **`TM_PLATFORM_RUN_MEMORY_MAX` = `4G` по умолчанию** — прогон исполняется в транзиентном юните
|
||
systemd С ПОТОЛКОМ ПАМЯТИ. На трёх главах не сработало; на книге в 2283 главы это первый
|
||
подозреваемый при убийстве по `CONSTRAINT_MEMCG`.
|
||
* **`loginctl show-user … Linger=no`**, хотя `platform/README.md` говорит «установка требует
|
||
`enable-linger`, иначе не стартует ни один прогон». Прогон прошёл целиком ⇒ на этом хосте
|
||
утверждение README буквально НЕ выполняется (пользовательский менеджер systemd жив сам по себе).
|
||
|
||
## Д5. ЧЕГО Я НЕ СМОТРЕЛА ВООБЩЕ
|
||
|
||
SSE-поток `/v0/books/{id}/stream` не дёргала ни разу · `tmctl backup` как канал не проверяла, хотя
|
||
`TM_PLATFORM_BACKUP_DIR` включила · `--max-units` не трогала · несмонтированные ручки
|
||
(`getRun`/`updateBook`/`deleteBook`) не проверяла · метрики на `127.0.0.1:9468` не читала ·
|
||
`regenerate_before_escalate` — не проверяла, срабатывал ли.
|