115 KiB
Эксперимент 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 не было
- ПОКУПАЮЩИЙ файл тождествен. sha
a46b33ee…— та же, что в пре-реге прогона A. Что именно покупается, между прогонами не изменилось ни на байт. - ЦЕНОВАЯ МОДЕЛЬ тождественна.
models.yamlфриза A и фриза B различаются ровно на 10 строк, и все десять — КОММЕНТАРИИ (не-комментарных изменённых строк: 0). ⇒ долларовые числа A и B считаны одним прайсом и сравнимы напрямую. - ⛔ А КОД — НЕТ, и это записывается ОГРАНИЧЕНИЕМ, а не замалчивается. Между
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 %. Поля, называющего вызов-источник, у строк банка НЕТ (glossary21 колонка, вызова среди них нет;glossary_revisions0 строк), поэтому ориентация выбирается явно и объявляется. ⛔ И почему это НЕ «деньги за пустоту» (замерено мной на артефактах 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.00 (1 000 000 µUSD);
runs.paused_reasonНЕПУСТО — любое из четырёх (run_limit_reached · credit_exhausted · daily_ceiling · ceiling_unknown);- срез не совпал с §1.2 — стоп ДО оплаты;
term_consistency_funded: falseвrun-options— стоп ДО оплаты;- бинарь не из фриза — стоп до устранения;
- что-либо слушает
127.0.0.1:11434в платной фазе — стоп: прогон измерял бы заглушку.
6. ⛔ ОГРАНИЧЕНИЯ, ОБЪЯВЛЕННЫЕ ДО ПРОГОНА
- ЭСКАЛАЦИЯ В B НЕ ИСПОЛНЯЕТСЯ.
pipeline-c1.yaml:223несётescalation.budget_usd: 0, а комментарий строкой:221гласит: «Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0». Решение оркестратора: не трогать, потому что тождество покупающего файла и ценовой модели (§1.1) стоит дороже одного непроверенного пути. ⇒ B, как и A, о работе эскалации не говорит НИЧЕГО. Сам этот факт идёт находкой вне заказа: механизм построен, ратифицирован и не может исполниться ни на одном боевом конфиге без ручного оверрайда, которого никто ни разу не сделал. - Судьи на пути нет (
role: judgeживёт только вc2), гейтcoverageвыключен ⇒ из пяти гейтов работают четыре. Проверяемый путь: черновик → редактор → четыре $0-гейта → выгрузка. epubcheckне гоняется —javaна хосте нет и поставить нельзя. EPUB судится структурно.- ТРИ следа — не три свидетеля. Postgres платформы МАТЕРИАЛИЗУЕТСЯ из
events.jsonlдвижка, а текст и файл платформа берёт теми же вербамиtmctl. По-настоящему независимы только скачанные байты и их sha256, плюс systemd-маркеры выхода. Биллинга провайдера у нас нет вовсе. - Доллары — НАША модель поверх токенов провайдера. Провайдер сообщает ТОКЕНЫ; цену умножаем мы,
по пину
models.yaml. На 11.09 пин flash был ВЫШЕ вендорской страницы на 13 % (D39.247 п.3). - Пик/офф-пик. Прогон A шёл 01:29–01:54 UTC в пятницу — ВНУТРИ пикового окна DeepSeek
(01–04 и 06–10 UTC, пн–пт). B идёт вечером пятницы, то есть в ОФФ-ПИК. Леджер осознанно считает
по ПИКОВОЙ цене (
D39.136: потолок обязан срабатывать раньше) ⇒ записанная цена B будет вдвое выше настоящего счёта, а записанная цена A — нет. На сравнение ЛЕДЖЕРОВ это не влияет (оба пиковые), на «сколько мы заплатили» — влияет вдвое. Называется здесь, чтобы не открылось потом. - ПРЕТРЕЙН — процедура, а не запрет.
蛊真人узнаётся моделями 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 строк = 4draft+ 4edit, волны стоят над РАЗНЫМИ снапшотами (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. ДЕВИАЦИИ — объявлены, не подразумеваются
- ⛔ ПРИБОР ПРАВЛЕН ПОСЛЕ ФРИЗА, и нашла это не я.
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. Правка идёт ОТДЕЛЬНЫМ коммитом после фриза, как требует норма. - Инструменты стенда переиспользованы из фриза прогона A без единой правки (
eval/door_to_file/stubи.../zeropipe), но собраны ИЗ КЛОНА B и несут его VCS-штамп. ⇒ девиация §12.5 отчёта A («два моих инструмента собраны не из фриза») здесь закрыта построением, а не повторена. - Дымовая рука шла на ОТДЕЛЬНОЙ книге и ОТДЕЛЬНОЙ учётке, но в ТОЙ ЖЕ базе Postgres. Выбор
объявлен в пре-реге: холодность живёт на
book_id, поэтому другая книга защищает её полностью, а общая база означает, что платная рука едет по базе, которую дым уже прогрел. Факторов между дымом и платной рукой сменилось четыре: пайплайн · книга ·models.yaml(дымовой несёт номинальную цену локальной модели, без которой книга не продаётся) · учётка. 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 пака).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. ЧТО НЕ УДАЛОСЬ, НЕ ПРОВЕРЕНО И НЕ ИЗМЕРЕНО
- ВЕЛИЧИНА доли выброшенного НЕ установлена и установлена быть не могла. n = 2. Квирки §3д: парный дизайн ловит ×2.5 за 13 пар. Установлен ЗНАК и показано, что две меры одного явления могут разойтись в противоположные стороны.
- Эскалация не исполнялась (
budget_usd: 0). Второй прогон подряд не говорит о ней ничего. - Судейская стадия отсутствует на этом пути, гейт
coverageвыключен: четыре гейта из пяти. epubcheckне гонялся —javaна хосте нет. Валидность EPUB по спецификации НЕ измерена; измерена структура (zip ·container.xml·nav· 3 itemref · оглавление).- Стоп-правила и потолки НЕ СТРЕЛЯЛИ. Книжный потолок $1.25, дневной $2.50, стоп сессии $1.00 — при трате $0.396657. Они стояли заряженными и ни разу не сработали ⇒ их поведение этим прогоном не проверено, и записывать их в актив нельзя. (На $0-руке подсадками проверены отказные пути двери, но не потолки движка.)
- Размер эффекта урезанного бонда (§12.1) НЕ ИЗМЕРЕН — см. там же.
- Атрибуция стохастики. Провал двух классификаторных батчей и его исчезновение на резюме объяснены вендорским разбросом, потому что тот задокументирован и потому что резюм на той же книге дал чистый результат. Но это ОБЪЯСНЕНИЕ, а не замер: чтобы отделить «вендор» от «наши 118 коммитов», нужен парный дизайн, которого этот прогон не покупал.
- Один прогон, одна книга, одна пара, три главы, четыре юнита. Всё, что здесь названо «воспроизвелось», воспроизвелось ОДИН раз.
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. ЧЕТЫРЕ КОДОВЫХ НАБЛЮДЕНИЯ, НЕ ЗАВЕДЁННЫЕ НАХОДКАМИ В ОСНОВНОМ ОТЧЁТЕ
- ⚠
bank_decisionsпуста при трёхapproved. После ДВУХ прогонов, применивших правки через дверь, в таблице 0 строк, приbank_termsс 3approved(оба числа сняты запросом). Эффект решений есть, платформенной записи «кто что решил» нет. Видела на дымовой руке и не чесала; в код за причиной НЕ ходила, поэтому дефект это или таблица другого назначения — не установлено. - ДВА флора
min_max_tokens, и какой выигрывает — выяснила только по вопросу.pipeline-c1.yaml:18несёт2048,models.yaml—8000(flash) и16000(pro). На проводе: черновик 8496 (= 8000 + 496 банк-бюджета), редактор 16000, бэнк-роли 8000 ⇒ выигрывает пер-модельный, пайплайновый инертен. TM_PLATFORM_SIGNUP_GRANT_USDпечатается на буте как «(an amount; not logged)», то есть настройка фри-тир-гранта в деплое существует — при ратифицированном «продуктовых квот и фри-тира нет и не проектируется».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 — не проверяла, срабатывал ли.