diff --git a/docs/BACKLOG.md b/docs/BACKLOG.md index 78408bc0..3f95edb8 100644 --- a/docs/BACKLOG.md +++ b/docs/BACKLOG.md @@ -3,7 +3,7 @@ > **Единственный трекер проекта.** Здесь живут строки, на которые доки, промты и D-ноты ссылаются словами «строка N» / «строка бэклога N»: **ID строки стабилен навсегда**, не перенумеровывается и не переиспользуется (D39.80). Правки — только через оркестратора; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено. > ⚠ **Это НЕ бэклог зоны `docs/`, а бэклог ПРОЕКТА.** У зон свои, с другими неймспейсами ID, и единый их строк не принимает (D39.84): платформа — [../platform/BACKLOG.md](../platform/BACKLOG.md) (`П-N`) и её регистр дефектов `platform/docs/DEFECT_REGISTER.md` (`PD-N`); фронт — [../frontend/docs/BACKLOG.md](../frontend/docs/BACKLOG.md) (`Ф-N`). > ⚠ **Состояние проекта — не здесь.** Очередь, курс, CURRENT-STATE, состояние паков и живая хроника — шапка [PROGRESS.md](PROGRESS.md). Здесь только долг и его диспозиции. -> - **СЧЁТ ОЧЕРЕДИ на 11.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **318** строк · зона бэкенд **154** строго / **207** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175; **371** — актом D39.233, **360** — актом D39.232, обе 10.09), платные прогоны разблокированы · «скоро» **163** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). +> - **СЧЁТ ОЧЕРЕДИ на 11.09 (скриптом по таблице — `python3 docs/scripts/counts.py`; обновлять при каждом лендинге):** всего **321** строк · зона бэкенд **157** строго / **210** широко (⚠ колонки счётчик читает С КОНЦА — испр. D39.116) · **блокеров очереди 0** (236 закрыта D39.175; **371** — актом D39.233, **360** — актом D39.232, обе 10.09), платные прогоны разблокированы · «скоро» **166** (перечень — грепом по таблице, рукописный список снят D39.126) · гейт-строка эксп-22: 153 (плюс 150 — руки владельца; ⚠ 55 из гейтов СНЯТА — D39.198 п.5); строка 5 — остаток гейчен ре-пробой 74, носитель события теперь строка 188 (аудит D39.140); остальное «когда-нибудь». ⚠ Счёт — НИЖНЯЯ граница долга, не потолок (разбор — легенда таблицы ниже). > - ⚠ **Переезд 06.09 (D39.218):** таблица вынесена из `PROGRESS.md` ДОСЛОВНО и ни один ID не сдвинут — **с единственным исключением: две ячейки (строки 220 и 306) тронуты РОВНО в номере якоря `docs/scripts/counts.py:566`→`:569` и `:592`→`:595`**, потому что цель сдвинул этот же коммит; текст ячеек не менялся, длины равны. В `PROGRESS.md` на прежнем месте оставлен заголовок-указатель, поэтому ссылки «секция „Бэклог“» доезжают в один хоп. ## Бэклог (ЕДИНЫЙ, собран 26.07, актуализация 04.08 D39.99/D39.101; правки — только через оркестратора) @@ -354,3 +354,6 @@ | 433 | ⛔ **ЛЕКАРСТВО ОТ ДВОЙНОЙ ОПЛАТЫ ПОСТРОЕНО И СТОИТ ВЫКЛЮЧЕННЫМ — и помогает ОДНОМУ случаю из четырёх.** Пак 11.09 закрыл НАБЛЮДАЕМОСТЬ (видно, сколько и на что) и построил ЛЕЧЕНИЕ (ступень усилия ниже при том же бюджете на классе `FlagEmpty`), но ручка `retries.lower_effort_on_empty` лендится с дефолтом `false`: **деньги продолжают течь**, и ничто в дереве этого не остановит, пока ключ не поставят в `true`. ⚠ Дефолт выбран не из робости: включение двигает форму попытки ≥1, а бамп версии политики потолка стоил бы пере-перевода **989 единиц на 24 книгах, $9.99 уже оплаченного** (дедуплицированный замер зоны). ⛔ **И охват уже — из четырёх двойных оплат прогона A лекарство достаёт ОДНУ:** `edit` ($0.071009 = 67 % потери) стоит на `off`, у которого шаг вниз есть; три черновых ($0.035463 = 33 %) уже на `low` — **дне эмитирующей шкалы, и лекарства для них в паке НЕТ**. ⇒ условие включения одно и измеримое: **эхо-контроль ИМЕННО В РЕДАКТОРСКОЙ РОЛИ на плотном CJK, парным дизайном на повторах.** ⚠ Прежняя оценка риска цитировала НЕ ТУ РОЛЬ: «1 чистый китайский выход из 16» — это `flash` как ПЕРЕВОДЧИК, а единственная стадия, которую ручка двигает, — РЕДАКТОР, и квирки прямо говорят, что его эхо-безопасность при `low` на CJK **не мерена**. Ошибку нашёл направленный читатель зоны, не я и не она. ⚠ Вторичный исход того же замера, стоящий $0 сверх прогона: **растёт ли размышление вместе с потолком на `low`** — ровно тот вопрос, который `D39.90` п.9 объявил непроверенным, и он решает, рычаг ли флор | бэкенд/владелец | **скоро** | эхо-контроль в РЕДАКТОРСКОЙ роли на CJK ⇒ ручка в `true`; плюс лечение для дна шкалы | пак «за одну единицу платим дважды», 11.09 | | 434 | ⛔ **ПРИБОР КОНСИСТЕНТНОСТИ НЕ НАХОДИТ ПЕРЕДАЧУ У 26 ТЕРМОВ ИЗ 69 И МОЛЧА СЧИТАЕТ ИХ КОНСИСТЕНТНЫМИ.** Замер оркестратора 11.09 на артефактах прогона A (`~/tm-coldrun-a/evidence/spread.json`, 69 записей; контроль печатает сам прибор: «terms rendered at all: 40, control: terms considered 69»): у **29** термов `renderings={}`, и для **26 из 29** ФИНАЛЬНАЯ форма банка РЕАЛЬНО стоит в отгруженном тексте — `三转` «третий оборот» · `三转蛊师` · `丫头片子` · `五更天` · `仙师` · `侧室` · `十大奇蛊` · `古月一族` · `唐诗宋词` · `四更时` · `宗族祠堂` · `宗祖祠堂` · `开窍` · `怀璧之罪` · `方之一脉` · `方家` · `更夫` · `梆子` · `正派` · `白家寨` · `老嬷嬷` · `话事人` · `邪魔` · `雪盐` · `魔道` · `魔道巨擘`. ⇒ **`spread=0` у них значит «передачи НЕ НАШЁЛ», а читается как «форма одна»**, и итоговая строка «TERMS SHIPPED IN MORE THAN ONE SHAPE: 0» посчитана по 40 термам, а не по 69. ⚠ Матчер ловит СЛОВО, а не форму: у `高脚吊楼` он вернул «Свайные», тогда как текст несёт «свайного дома / свайные дома / свайных домов». ⛔ Это приоритет №1 владельца и ЕДИНСТВЕННЫЙ прибор, который его меряет; сегодня он отвечает за 58 % книги, а отчитывается за 100 %. Носитель разбора — эррата 11.09-з | бэкенд | **скоро** | знаменатель печатается ВСЕГДА («нашёл у M из N»), ненайденные проверяются текстом, а не засчитываются в консистентные; матчер сверяется формой, а не словом | приёмка прогона A, пере-снято 11.09 | | 435 | **ЭСКАЛАЦИЯ НЕ МОЖЕТ ИСПОЛНИТЬСЯ НИ НА ОДНОМ БОЕВОМ КОНФИГЕ — построена, ратифицирована и выключена данными.** `backend/configs/pipeline-c1.yaml:223`=`budget_usd: 0`, и комментарий строкой выше говорит прямо: «budget_usd=0 ⇒ эскалация НЕ исполняется (НИ chains, НИ stage.escalate_to)… **Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0**, иначе echo-эскалация черновика (D18) не выстрелит. Дефолт 0 держит CI/Ф0 зелёными без gemini/mistral-ключей». ⇒ дефолт выбран под ЗЕЛЕНЬ CI, а не под продукт, и требует ручного оверрайда, которого не сделал ни прогон A (его §10 п.2 честно пишет «эскалация не исполнялась ни разу»), ни прогон B (решение оркестратора 11.09: НЕ трогать, чтобы сохранить байт-в-байт тождество покупающего файла A↔B — сравнимость денег дороже одного непроверенного пути). ⛔ Значит путь эскалации не исполнялся живьём ДВА прогона подряд, и его первое живое исполнение стоит отдельного дешёвого замера, а не контаминации сквозного прогона. ⚠ Класс тот же, что у ряда 433: **механизм лендится выключенным, и выключенность живёт в ДАННЫХ, где её не видит ни один гейт** | бэкенд | скоро | адресный $0.03-замер пути эскалации отдельным прогоном ЛИБО решение владельца о боевом дефолте | прогон B, пре-рег 11.09 | +| 436 | ⛔ **ИМЯ ВЕРДИКТА `split` УТВЕРЖДАЕТ БОЛЬШЕ, ЧЕМ МЕРЯЕТ ЕГО ПРЕДИКАТ — и первым же живым прогоном он оболгал подписанное имя героя.** Предикат (`backend/internal/pipeline/bookconsistency.go`, греп `func (v *verdictAcc) observe`) ставит `split`, когда в главе **попаданий МЕНЬШЕ, чем срабатываний** источника, либо не найдено ни одного. Читающий отчёт видит «термин разъехался», а сказано «нашли не каждое срабатывание» — это РАЗНЫЕ утверждения. ⛔ Замер прогона B: вердикт `split` по `方源` во всех трёх главах, тогда как в отгруженном тексте **58 вхождений в четырёх падежах и НОЛЬ конкурирующих транслитераций** (пере-снято оркестратором; голые «Фан» принадлежат другим термам банка — `方正`, `方之一脉`, `方家`, `方老魔`). ⇒ **самая тревожная строка приоритета №1 оказалась артефактом**, и владельцу её понесли бы как расхождение. ⚠ Родня ряду **434** (прибор не находит передачу у 26 термов из 69): вместе они означают, что **числа консистентности прогона B базовой линией НЕ являются до починки** | бэкенд | **скоро** | вердикт зовётся тем, что утверждает («не каждое срабатывание покрыто»), либо предикат усиливается до настоящего разъезда; падеж не считается второй передачей | прогон B, акт `D39.252` п.3 | +| 437 | **САМАЯ КРУПНАЯ ХУДОЖЕСТВЕННАЯ ПОТЕРЯ ПРОГОНА ИЗМЕРИМА ОДНИМ ВЫЧИТАНИЕМ, КОТОРОГО НИКТО НЕ ДЕЛАЕТ.** Замер оркестратора на прогоне B: абзацев в оригинале **233**, в отгруженном переводе **162** — сжатие **−30 %** (контроль: 9021 знак оригинала против 30 283 перевода). Движок печатает `sentences/narrative-paragraph` и знает число абзацев только В ПЕРЕВОДЕ; числа абзацев ИСХОДНИКА у него нет, поэтому порога нет и флага нет. ⚠ Для ранобэ, где абзац — единица ритма и реплики, схлопывание трёх абзацев в один меняет темп сильнее, чем любая лексическая правка, и читатель это чувствует раньше, чем термины. ⇒ дешевле всех прочих приборов качества: две величины и одно деление | бэкенд | скоро | счёт абзацев ИСХОДНИКА рядом со счётом перевода + порог, при котором сжатие флагуется | прогон B, акт `D39.252` п.5 | +| 438 | ⛔ **БАНК-РОЛИ ИДУТ МИМО ОБЕИХ ВЕТВЕЙ ЛЕЧЕНИЯ: у черновой стадии лекарство есть, у терминолога нет ни лекарства, ни счётчика.** Обе ветви живут в цикле `runStage` (`backend/internal/pipeline/stagerun.go`, греп `regenerating with less thinking` и `regenerating with a larger budget`), а `terminologist.go` (греп `return r.runAttempt`) зовёт попытку НАПРЯМУЮ. ⛔ Замер прогона B: на попытке 1 классификатор дал `asked=22 answered=4` (`length`, $0.012646) и `asked=24 answered=0` (`empty`, $0.012133) — **42 терма из 66 без машинного типа, оба провальных батча ОПЛАЧЕНЫ, регенерации не было**; у черновой стадии та же мина вылечена 5 раз из 5. ⚠ **Это СТОХАСТИКА, а не регрессия** (сказала сама зона): на резюме тот же классификатор ответил 22/22 · 19/19 · 24/24, у прогона A все три батча чисты. ⚠ И вторая половина — НАБЛЮДАЕМОСТЬ: итоговая строка печатает `classify_batches_dropped=0 unanswered=0`, и это не ложь, а ОТСУТСТВИЕ — счётчик считает батчи, выброшенные БЮДЖЕТОМ (комментарий `terminologist.go` сам предупреждает, что «unanswered читается как вердикт о ТЕРМАХ, когда он отчасти вердикт о ДЕНЬГАХ»), а счётчика доли ОТВЕТОВ нет ни одного; единственный носитель факта — WARN посреди прохода | бэкенд | **скоро** | банк-роль получает ту же ветвь регенерации, что черновая стадия, ПЛЮС счётчик доли ответов в итоговой строке | прогон B, акт `D39.252` п.9 | diff --git a/docs/README.md b/docs/README.md index 1ac7c6e4..04ead5bc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,7 +25,7 @@ | Роль | Активный промт | Статус | |---|---|---| | **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | [BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md](BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) | ✍️ **написан 11.09**, выдаётся `textmachine-b1`. Предмет решён владельцем (`D39.204`): отказ резервации на РЕТРАЕ деградирует во флаг с отдельной причиной. Сегодня он уходит наверх из цикла попыток раньше `UpsertChunkStatus` ⇒ юнит виден `pending` НАВСЕГДА, прогон уходит `exit 4` при доставленных купленных юнитах. Платформенная половина — отдельным промтом, акт ОДИН на две. $0 | - | **Сквозной · ХОЛОДНЫЙ ПРОГОН B** | [COLD_RUN_B_SESSION_PROMPT.md](COLD_RUN_B_SESSION_PROMPT.md) | ✍️ **написан 11.09**, выдаётся `textmachine-82`. ⛔ **ПЛАТНЫЙ, санкция владельца получена** («разрешаю»): ждём ≈$0.42, кап ≈$2.5 холда. Покупает первое ЖИВОЕ исполнение миграций `v17`+`v18`, числа консистентности с прогона (а не с пере-скана), платформенный пак сквозь и вторую точку по денежной дыре с ПРЕ-РЕГИСТРИРОВАННЫМ знаменателем (по ЕДИНИЦАМ: на A — 4 из 17 = 23.5 %). Кода не правит | + | Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит | | Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE | | Бэкенд · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** | | Платформа · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** | diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index a65eac96..ed97ea82 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -1,4 +1,4 @@ -# Реестр D-нот — карта актуальности v2 (D1–D39.251; титул — носитель головы, бампать при каждом аппенде) +# Реестр D-нот — карта актуальности v2 (D1–D39.252; титул — носитель головы, бампать при каждом аппенде) > ⚠ **Колонку «тело» `counts.py --check` НЕ сторожит по устройству:** он сверяет полноту НОМЕРОВ, а не > место тела, поэтому колонка держится дисциплиной лендинга. Не нашёл тело по колонке — иди в слайсы, @@ -310,3 +310,4 @@ | D39.249 | 11.09 | **АКТ: бэкенд-пак «КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ» ПРИНЯТ С ДОФИКСОМ** (26 путей, $0). ⭐ Приоритет №1 впервые ИЗМЕРИМ по отгруженному тексту: `I1`/`I2` с печатаемыми знаменателями, прогон A — 69 судимо, 236/221 вхождений. ⛔ Первый круг приёмки: **шесть посадок из шести выжили**, худшая — единственный провод между прибором и прогоном не запинен ничем (`.Consistency` в тестах 0 хитов при 227 файлах). Порядок колонок ратифицирован и отменён в тот же день — правило и ДВА триггера пере-открытия в ряду 406. Числа: каталог **169/169 RED, выживших 0** (оркестратор, скоуп без потолка cgroup — 26 убийств `CONSTRAINT_MEMCG` у зоны), батарея 19 ok · 0 FAIL · 4 названных скипа. Пять классов в `CLAUDE.md`, четыре зона нашла у себя | бэкенд/приёмка | | D39.250 | 11.09 | **АКТ: платформенный пак «ОТВЕТ ДВЕРИ НЕ ЗАВИСИТ ОТ ПОРЯДКА» ПРИНЯТ С ДВУМЯ ДОФИКСАМИ**, минор **0.15.0** (27 путей, 24 новых теста, $0). ⭐ Предмет ПЕРЕ-ОПРЕДЕЛЁН замером зоны до первой правки: не редкая гонка, а ОРДИНАРНЫЙ путь. ⛔ **Оба денежных предохранителя проверены не тем прибором** — гард судил шаблон, а проба рендерит свой $0-пайплайн строкой выше; рецепт проверен сканом вместо загрузчика (`EXIT=10`). Лечение — СНОС рецепта, а не починка: он существовал под ошибку. ⭐ Ответ лежал в дереве комментарием того же хелпера. Выжившая одна, названа с классом; харнесс зоны читал ненулевой выход как «поймано» — три ложных RED, назван, положен в дерево | платформа/приёмка | | D39.251 | 11.09 | **АКТ: бэкенд-пак «ЗА ОДНУ ЕДИНИЦУ ПЛАТИМ ДВАЖДЫ» ПРИНЯТ С ДОФИКСОМ** (22 пути +947/−66, 8 новых тестовых, +27/−0 тестов, $0). ⭐ Наблюдаемость двойной оплаты построена, **лекарство лендится ВЫКЛЮЧЕННЫМ** и достаёт 1 случай из 4 — сказано словом зоны до приёмки. ⛔ **Посылка пака была перевёрнута, и сняла её зона ДО первой правки:** `empty` ×3 = $0.094835 = 89 % против `length` ×1 = $0.011637; `off` у ReasoningNone — ВЕРХ шкалы. ⛔ `reasoning_tokens` ронял НАШ адаптер (провайдер шлёт 35 из 35). Приёмка: «лендинг инертен» было обещанием, а не свойством (посадка в 4 конфига — батарея зелена); ни одна из 22 мутаций не была помечена `battery`. Числа мои: 23 пакета · 19 ok · 0 FAIL · vet 4 · lint 0 · gofmt 0 · мутации **195 RED / 1 выжившая / 0 неизмеренных**, якорей 0 из 407; деньги — двумя независимыми путями по сырому леджеру, $0.106472 = 25.4 %. ⛔ Выжившая — ЧУЖАЯ и краснеет по удаче (8/8 на дереве против **7/8** на посадке) ⇒ первое число ряду **379(б)** | бэкенд/приёмка | +| D39.252 | 11.09 | **АКТ: СКВОЗНОЙ ПРОГОН B ПРИНЯТ** — книга второй раз от двери до ФАЙЛА, факт **$0.396657** при ожидании ≈$0.42 (санкция владельца «разрешаю» получена ДО траты). ⭐ **Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных:** по ЕДИНИЦАМ 23.5 %→**41.2 %**, по ДЕНЬГАМ 25.4 %→**21.1 %**; первичной объявлена замороженная пре-регом мера по единицам. ⭐ **85.7 % оплаченного выхода книги — РАЗМЫШЛЕНИЕ, а не текст** (153 942 из 179 613; у 5 из 7 выброшенных потолок съеден целиком) ⇒ ряд 422 закрыт числом. ⛔ **Прибор приоритета №1 солгал на первом живом прогоне:** вердикт `split` по подписанному имени героя при 58 вхождениях в 4 падежах и НУЛЕ конкурентов — имя вердикта утверждает больше, чем меряет предикат ⇒ числа консистентности B базовой линией НЕ являются. ⭐ Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок (1 крит — подмена референта, пере-проверен мною), адъюдикация цитат 10/10, три числа читателя исправлены. Скаляр оценки — ЦИТАТОЙ с четырьмя границами, не ратификацией. Ряды 434, 436, 437, 438 | полигон/приёмка | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index 126adb8e..f381b4aa 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.251 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.252 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) > **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто: > ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 — в слайсе `../archive/architecture/05-decisions-D39-106-123.md` (испр. 05.09: прежнее «живёт ниже в этом файле» протухло подрезкой D39.139) (голова D39.106+). @@ -3715,3 +3715,29 @@ bought NOTHING». ⇒ **`tmctl manifest` есть НИЖНЯЯ граница, **9. ГРАНИЦЫ ВЕРДИКТА — ЧЕСТНО.** Живого платного прогона в паке не было и не требовалось: всё судимо детерминированно. ⛔ Поэтому ДВА утверждения пак НЕ доказывает и доказать не мог: **(а)** что ступень усилия ниже не ломает эхо-безопасность редактора на плотном CJK — это замер, и он стоит денег (ряд 433); **(б)** что доля 25.4 % имеет ВЕЛИЧИНУ, а не только знак — она снята с одного прогона, а квирки §3д прямо говорят, что смета DeepSeek с одиночного вызова ошибается на порядок. ⇒ пак принят как МЕХАНИЗМ (ни одного удвоения без вердикта о вырождении; каждая выброшенная попытка — строкой леджера с причиной), а не как пропорция, ровно по поправке старшего коллеги к пункту 8 горизонта. +## D39.252 — АКТ: СКВОЗНОЙ ПРОГОН B ПРИНЯТ. Книга второй раз дошла от двери до файла ($0.396657), две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных, 85.7 % оплаченного выхода оказалось размышлением, а прибор приоритета №1 солгал на первом же живом прогоне (11.09, оркестратор №23) ✅ + +**Что принято.** `docs/experiments/25-door-to-file-b.md` — пре-рег (заланден `4ee7f03` ДО первого цента) плюс блок результатов (+638 строк, **0 удалений: пре-рег не тронут, сверено мною командой**); `eval/cold_run_b/` — драйвер, прибор денег, README. Исполнитель — `textmachine-82`. **Факт траты `$0.396657`** при ожидании ≈$0.42, стоп-правиле сессии $1.00 и машинном капе ≈$2.5. **Санкция владельца получена ДО траты, дословно «разрешаю», 11.09**, носитель — `docs/NEAR_TERM_PLAN.md` §«Решения владельца». Фриз: клон (не воркри) на `baa06ce`, три бинаря со штампом `vcs.revision`+`vcs.modified=false` и негативным контролем. + +**1. ⭐ ГЛАВНОЕ ДЛЯ МЕТОДА: ДВЕ МЕРЫ ОДНОГО СОБЫТИЯ РАЗОШЛИСЬ В ПРОТИВОПОЛОЖНЫЕ СТОРОНЫ НА ОДНИХ И ТЕХ ЖЕ ДАННЫХ.** Выброшенные оплаченные попытки: по ЕДИНИЦАМ **23.5 % → 41.2 %**, по ДЕНЬГАМ **25.4 % → 21.1 %**. B выбросил вдвое больше единиц, но дешёвых — пять черновых чанков по ~$0.012 против одного редакторского за $0.071 у A. ⇒ **подмена одной меры другой сказала бы здесь ровно противоположное правде**, и это первый случай в проекте, где расхождение мер видно НА ДАННЫХ, а не в рассуждении. ⛔ **Первичной объявлена мера ПО ЕДИНИЦАМ — она заморожена пре-регом ДО прогона**, вторая печатается рядом. Выбор знаменателя постфактум был бы подгонкой, и пре-рег существует ровно против неё. ⚠ Величина по-прежнему не заявляется: **n = 2**, и квирки §3д требуют повторов (×2.0 за 22 пары), а не двух розыгрышей. Пере-снято мною на своей копии её замороженного прибора: числа сошлись до знака. + +**2. ⭐ 85.7 % ОПЛАЧЕННОГО ВЫХОДА КНИГИ — РАЗМЫШЛЕНИЕ, А НЕ ТЕКСТ.** Замер мой, по колонке `reasoning_in_completion`, впервые заполненной живым провайдером: **153 942 из 179 613 выходных токенов**; по ролям — классификатор **97.6 %**, терминолог **92.5 %**, черновик **85.3 %**, редактор **75.2 %**. У семи выброшенных вызовов размышление съело потолок: **пять из семи — ЦЕЛИКОМ**, 8496 из 8496 и 8000 из 8000. ⚠ **Это не открытие, а подтверждение пина, который с 25.07 лежит в ДАННЫХ:** `backend/configs/models.yaml`, блок `deepseek-v4-pro`, замер мини-прогона «разница в длине РАЗМЫШЛЕНИЯ… `max_output_ratio` этого не знает и знать не может». Новое здесь — что класс верен на боевых настройках всей книги и что доля названа числом. **Ряд 422 закрыт со ссылкой на пин конфига**, иначе следующая смена откроет его заново. + +**3. ⛔ ПРИБОР ПРИОРИТЕТА №1 СОЛГАЛ НА ПЕРВОМ ЖЕ ЖИВОМ ПРОГОНЕ — и это носитель, а не абзац.** Пункт 9 плана покупал «первые числа `I1`/`I2` С ЖИВОГО прогона». Первое, что они показали: **вердикт `split` по ПОДПИСАННОМУ имени героя** (`方源`) во всех трёх главах. Пере-снял руками: в отгруженном тексте **58 вхождений в четырёх падежах** («Фан Юань» 36 · «Фан Юаня» 19 · «Фан Юаню» 2 · «Фан Юанем» 1), **конкурирующих транслитераций НОЛЬ**, а все голые «Фан» принадлежат ДРУГИМ термам банка (`方正`, `方之一脉`, `方家`, `方老魔`). ⛔ **И механизм я вскрыл точнее гипотезы: `split` НЕ утверждает «две передачи».** Предикат (`backend/internal/pipeline/bookconsistency.go`, греп `func (v *verdictAcc) observe`) ставит `split`, когда в главе **попаданий МЕНЬШЕ, чем срабатываний** источника. ⇒ **имя вердикта утверждает больше, чем меряет предикат**, и читающий отчёт видит «термин разъехался» там, где сказано «нашли не каждое срабатывание». Складывается со вторым замером той же смены (эррата 11.09-з): прибор **не находит передачу у 26 термов из 69**. ⇒ **числа консистентности этого прогона БАЗОВОЙ ЛИНИЕЙ НЕ ЯВЛЯЮТСЯ до починки прибора.** Ряды **434** (не найдено 26 из 69) и **436** (имя вердикта). + +**4. ⛔ КАЧЕСТВО — ВПЕРВЫЕ СУДИЛОСЬ ПО ОРИГИНАЛУ РЯДОМ С ПЕРЕВОДОМ, и вот что акт говорит СВОИМ голосом.** Читатель (отдельный опус, миллионный контекст, весь перевод 30 283 знака и весь оригинал 9021 знак целиком, доказательство дочитывания напечатано) дал **26 находок: 1 крит · 11 мажоров · 14 миноров**, по приоритетам владельца 7/6/7/6. **Крит пере-проверен МНОЮ по обоим текстам и подтверждён:** `对她来讲,自己前途光明,甲等资质的可能性极大` — перевод отдал светлое будущее и задатки первого разряда СЛУЖАНКЕ («Для неё самой будущее было светлым…»), после чего «если удастся стать наложницей Фан Юаня, она сможет из рабыни превратиться в госпожу» не следует ни из чего. **Подмена референта, разрушена причинная связь абзаца.** ⭐ **Адъюдикация исполнена, а не обещана:** сессия механически сверила цитаты десяти находок по обоим файлам — **10 из 10 присутствуют дословно, выдуманных нет**, — и сама исправила ТРИ числа своего читателя, считанные стеммом («род 48» → **32**: в счёт попали «родители» и «родился»; «клан 7» → **6**: один был «робко **кланя**ясь»). **Существо всех трёх устояло, числа — нет.** +⛔ **СКАЛЯР ОЦЕНКИ ПРИВОДИТСЯ ЦИТАТОЙ, А НЕ РАТИФИЦИРУЕТСЯ.** Читатель сказал: «приличный любительский, на верхней границе». **Границы, в которых это сказано, называются в том же предложении: ОДИН читатель · ОДИН прогон · книга, узнаваемая моделями 4 из 5 · адъюдикация цитат исполнена.** ⚠ И различение, которое я сперва потерял, а старший коллега вернул: **адъюдикация закрывает претрейн-риск ЧИТАТЕЛЯ (он не выдумал находок), а НЕ риск ПЕРЕВОДЧИКА** — модель, знающая книгу, переводит её не так, как незнакомую, и на этой книге это не закрывается ничем. Канон прямой: эмпирика на знакомых претрейну текстах — **предварительная**. ⇒ **делает скаляр замером не рассуждение, а два дешёвых хода:** второй читатель ДРУГОГО семейства по тем же четырём единицам (author≠reviewer) и следующий платный прогон на книге, которой в претрейне НЕТ (выбор книги — вопрос владельцу). + +**5. ⭐ СВЕРКА «ПРИБОР ПРОТИВ ЧИТАТЕЛЯ» РАСПАЛАСЬ НА ЧЕТЫРЕ КЛЕТКИ, и это честнее любого общего счёта.** Свалить всё в «приборы пропустили 24 из 26» значило бы отчитаться за приборы, которых нет и не предполагалось. **(а) Прибор есть, терма нет в его популяции — молчал МАЙНЕР, не энфорсер:** восьми термов, на которых читатель поймал разнобой, в банке НЕТ вовсе, включая крупнейшую находку приоритета №1 — `家族/族` «род ↔ клан». **(б) Форма банка доехала, а дефект В САМОМ БАНКЕ:** `方家 → «род Фан»` и `方之一脉 → «ветвь Фан»` обе в банке и обе отгружены, прибор доволен — но «род» в этой книге занят кланом. ⇒ **прибор спрашивает «доехала ли форма банка» и по построению НЕ МОЖЕТ спросить «верна ли сама форма»: содержание банка не судит ничто.** **(в) Прибор знает конструкцию поимённо и по ратифицированному решению её не судит:** чекер `DC2 千万` своим комментарием объявляет класс неразрешимым офлайн — а читатель с оригиналом решил его одной строкой. Это не дыра, а ТОЧНАЯ ГРАНИЦА детерминированного гейта, и её цена теперь названа в тексте. **(г) Прибора для класса нет вовсе — 20 находок из 26:** подмена референта · согласование рода · кальки идиом · регистр · утрата эха реплики · дописанный образ. +⚠ **И один прибор ИЗМЕРИЛ предмет, но не имеет порога:** сжатие абзацев (мой счёт: **233 → 162, −30 %**) — движок печатает предложений на абзац, но знает число абзацев только в ПЕРЕВОДЕ. **Самая крупная художественная потеря прогона измерима одним вычитанием, которого никто не делает.** Ряд **437**. + +**6. ЧИСЛА, С УКАЗАНИЕМ ЧЬИМ ПРИБОРОМ.** **Мои, пере-снятые на артефактах прогона:** 35 строк · 28 вызовов · 7 бесплатных подстановок · `$0.396657` · числитель-1 **7 из 17 = 41.2 %** единиц при `$0.083587 = 21.1 %` денег · числитель-2 `$0.026771` / `$0.023834` · оба денежных пути совпали · размышление 153 942 из 179 613 · 58 вхождений имени в 4 падежах при 0 конкурентах · абзацы 233 → 162 · пре-рег +638/−0. **Её, приняты с названным прибором:** `wave_selection` 10 строк = 6 `draft` + 4 `edit` над РАЗНЫМИ снапшотами (у черновика инъекция пуста, у редактора 21/26/23/26 попаданий) — **число сошлось с пре-регом**; `reasoning_in_completion` трёхзначно **NULL 7 · 0 = 0 · >0 = 28**, и все семь `NULL` — ровно бесплатные подстановки, где провайдера не спрашивали; банк 66 строк, судимых 65, `I1 = 6`, `I2 = 7`; 17 узлов пре-рег-таблицы ✅; каждый из 4 отгруженных юнитов найден в скачанном файле подстрокой ровно один раз, смещения возрастают, **остаток разобран ДО НУЛЯ** (46 знаков — заголовок и переводы строк). ⛔ **И собственный аудит отчёта перед сдачей: 17 несущих чисел из 17 пере-выводятся из артефактов, ни одного «по памяти».** + +**7. ⛔ ЧЕГО ПРОГОН НЕ КУПИЛ — секцией, а не умолчанием.** **Эскалация не исполнялась** (решение моё: `budget_usd: 0` не трогать ради байт-в-байт тождества покупающего файла с прогоном A; ряд **435**). **Идемпотентный резюм и терминальное состояние упражнены ЧАСТИЧНО:** резюм был один, объявленный, прогон не останавливали потолком ⇒ «не упражнялось», а не «проверено». **Один гость, без второй пары, фронт заморожен.** **Судьи на пути нет** (`role: judge` живёт только в `c2`), гейт `coverage` выключен ⇒ из пяти гейтов работали четыре. **`epubcheck` не гонялся** — `java` на хосте нет; EPUB судился структурно. ⛔ **И деньги: `$0.396657` — НАША МОДЕЛЬ, а не счёт вендора.** Прогон шёл в ОФФ-ПИК, а леджер осознанно считает по ПИКОВОЙ цене (`D39.136`) ⇒ настоящий счёт за B примерно вдвое меньше, за A — нет (A шёл внутри пика). Сравнение ЛЕДЖЕРОВ честное, фраза «мы заплатили» — нет. **Назвала это сессия, до прогона.** + +**8. ⭐ ВРЕМЯ У ЭКРАНА ВПЕРВЫЕ ЗАМЕРЕНО: 20 мин 06 с на 4 единицы.** `ПТ-19` называет скорость киллерфичей, а времени у экрана никто не мерил. ⚠ Экстраполяция на книгу требует знаменателя ПО ЕДИНИЦАМ, а не по главам, и здесь единиц четыре. + +**9. ⭐ ЧТО СЕССИЯ СДЕЛАЛА ЛУЧШЕ ЗАКАЗА — три вещи, каждая стоила бы круга приёмки.** **(1)** Возразила составу §4.8 ДО прогона: дёрганье API на измеряемом прогоне САМО производит число, которое потом предъявляется как свойство движка ⇒ все формы ушли на $0-руку, в платном остался один объявленный резюм. **(2)** Обе миграции она исполнила живьём на ДЫМУ и **честно не приписала это B**, а пере-формулировала, что B покупает — поведение колонки на провайдере, который поле шлёт; сверх того проверила миграцию на ЗАПОЛНЕННОЙ базе (33 строки, 69 термов, `NULL` на всех ранее написанных), потому что пустая база о данных не говорит ничего. **(3)** Назвала стохастику стохастикой: классификатор дал 42 терма из 66 без типа на попытке 1, а на резюме — 22/22 · 19/19 · 24/24; **писать «регрессия» было бы верным результатом при неверной гипотезе.** ⚠ И находка оттуда же, предъявленная кодом: **банк-роли идут МИМО обеих ветвей лечения** — `terminologist.go` зовёт попытку напрямую, а лекарства живут в цикле `runStage`; счётчика доли ответов классификатора нет ни одного. Ряд **438**. + +**10. МОИ ОШИБКИ СМЕНЫ, названные здесь, чтобы не повторились.** **(1)** Указал сессии неверный источник ключей: сказал «значение в `env.sh`», а там КОММЕНТАРИЙ «is NOT set here either» — совпадение пришло из рекурсивного грепа по другому файлу, и я приписал его первому в списке. Класс мой и известный: **счёт по подстроке — не счёт по владению.** **(2)** Поднял ложную тревогу «один терм тремя формами», а это оказались ДВА РАЗНЫХ исходных терма (`宗族祠堂` и `宗祖祠堂`), которые банк различает верно; снял через минуты, до того как сессия понесла её читателю. **(3)** Назвал адъюдикацию цитат закрытием претрейн-риска — она закрывает риск ЧИТАТЕЛЯ, не ПЕРЕВОДЧИКА; поправил старший коллега. **(4)** Прогнал её замороженный прибор по базе без платных строк и получил `ZeroDivisionError` — **непроверенная ветвь, которую прибор сам объявлял непроверенной, упала на первом же исполнении**; правка лендится отдельным коммитом как объявленная девиация фриза. + diff --git a/docs/COLD_RUN_B_SESSION_PROMPT.md b/docs/archive/prompts/COLD_RUN_B_SESSION_PROMPT.md similarity index 98% rename from docs/COLD_RUN_B_SESSION_PROMPT.md rename to docs/archive/prompts/COLD_RUN_B_SESSION_PROMPT.md index d4ef6db9..e8a1a341 100644 --- a/docs/COLD_RUN_B_SESSION_PROMPT.md +++ b/docs/archive/prompts/COLD_RUN_B_SESSION_PROMPT.md @@ -1,5 +1,14 @@ # Промт: сквозной пак «ХОЛОДНЫЙ ПРОГОН B — платформа → бэкенд → ФАЙЛ, ВТОРОЙ раз» +> ✅ **АРХИВ — ПАК ОТРАБОТАН И ПРИНЯТ 11.09: акт `D39.252`.** Книга второй раз дошла от двери до ФАЙЛА, +> факт **$0.396657** при ожидании ≈$0.42; пре-рег заландился ДО первого цента (`4ee7f03`) и не тронут +> (+638/−0). ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных (единицы 23.5→41.2 %, +> деньги 25.4→21.1 %). ⭐ **85.7 % оплаченного выхода книги — размышление, а не текст.** ⛔ Прибор +> приоритета №1 солгал вердиктом `split` по подписанному имени героя при 58 вхождениях и нуле +> конкурентов. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит. +> Ряды 434 · 436 · 437 · 438. ⛔ **Инструкции отсюда НЕ ИСПОЛНЯЮТСЯ** — читать только как историю. + + > Выдан оркестратором №23 (сессия `textmachine-11`) 11.09. Пак **ПЛАТНЫЙ**, санкция владельца получена > дословно («разрешаю») на прямой вопрос с числами: **ждём ≈$0.42, машинный кап ≈$2.5 холда**. Носитель > санкции — `docs/NEAR_TERM_PLAN.md` §«Решения владельца, уже полученные». diff --git a/docs/experiments/25-door-to-file-b.md b/docs/experiments/25-door-to-file-b.md index f0c2f246..297bb44a 100644 --- a/docs/experiments/25-door-to-file-b.md +++ b/docs/experiments/25-door-to-file-b.md @@ -206,3 +206,641 @@ M · пусто у K, и K проверяется ТЕКСТОМ**, а не пр целы (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` — работает, и на этом прогоне +вылечила **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 владельца, замеренный на отгруженном тексте. + +**Мой независимый прибор** (`~/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`), бэнк-роли +на него не заведены (`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 результатов). + +**Работа завершена, править не планирую.** diff --git a/docs/orchestrator-norms-scratchpad.md b/docs/orchestrator-norms-scratchpad.md index fc88c5fc..8700c16d 100644 --- a/docs/orchestrator-norms-scratchpad.md +++ b/docs/orchestrator-norms-scratchpad.md @@ -61,7 +61,7 @@ | бэкенд | `BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md` | **textmachine-b1** | ✅ **ВЫДАН 11.09** после опровергателя (21 утверждение проверено, 4 опровергнуто, 4 умолчания дописаны); жду эхо | | платформа | — | — | 🟢 **СЛОТ СВОБОДЕН** — пак принят актом `D39.250`, минор 0.15.0 | | полигон | — | — | ⛔ **ЗАКАЗ СНЯТ ВЛАДЕЛЬЦЕМ 11.09** («полигон не надо выдавать»); промт готов и лежит, пере-выдача — только его словом | -| сквозной (вне кодовых зон) | `COLD_RUN_B_SESSION_PROMPT.md` | **textmachine-82** | ✅ **ВЫДАН 11.09**, ПЛАТНЫЙ, санкция в носителе. Опровергатель: 32 утверждения, 27 подтверждено, **3 опровергнуто** (имя колонки v18 · sha у `CheckMiningContrast` · артефакт книги — срез, а не весь файл). Жду эхо | +| сквозной (вне кодовых зон) | — | — | ✅ **ЗАКРЫТ актом `D39.252`** 11.09; промт в архиве с баннером. Стенд поднят до конца приёмки, гасить по pid | | фронт | заморожен | — | разморозка по критерию `NEAR_TERM_PLAN.md` | **Резерв израсходован: `textmachine-61` получила пак о падениях 11.09, как только слот освободился актом `D39.249`.** @@ -77,7 +77,7 @@ ⚠ В акте будет сказано, ЧЬИМ прибором снята каждая половина: полный гейт 169/169 · RED=167 · выживших 1 · UNKNOWN 1 — её, дошёл один раз до правок; десять пере-снятий и стенд — мои. -✅ **ДОЛГ ЛЕНДИНГА ЗАКРЫТ 11.09:** голова поехала в CURRENT-STATE вместе с лендингом бэкенд-пака, как и планировалось — сейчас все пять носителей головы (`05-decisions-log` шапка и тело, титул реестра, строка реестра, CURRENT-STATE) стоят на `D39.251`, и `counts.py --check` зелёный. +⛔ **ДОЛГ ЛЕНДИНГА СНОВА ОТКРЫТ (акт `D39.252`): голова бампнута в ДВУХ носителях из трёх.** Шапка `05-decisions-log.md` и титул реестра стоят на `D39.252`; **CURRENT-STATE — НЕТ**: в `docs/PROGRESS.md` лежит секция бэкенд-сессии на 151 строку из 152, и коммит файла целиком унёс бы её под моим сообщением — ровно инцидент `54f8f6c`, повторять нельзя. ⇒ бамп CURRENT-STATE едет ВМЕСТЕ с лендингом бэкенд-пака. До тех пор `counts.py --check` краснеет по голове — это ЗНАЕМОЕ расхождение, а не находка. **В очереди, написано и ждёт слота:** `BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md`, **редакция 2** — выдаётся СВЕЖЕЙ бэкенд-сессии, как c9 закроется актом. ⛔ **Опровергатель нашёл 17 находок, и первая @@ -103,7 +103,7 @@ UNKNOWN 1 — её, дошёл один раз до правок; десять | 7 | платформа | ответ, не зависящий от везения (`PD-448` · `162` · `466` · `139`) | textmachine-37 | ✅ своими словами, 3 опасности + возражение | ✅ закрыт актом `D39.250`, минор 0.15.0 | | 8 | бэкенд | за одну единицу платим дважды | textmachine-61 | ✅ своими словами, 4 возражения — и первое ПЕРЕВЕРНУЛО посылку пака | ✅ закрыт актом `D39.251` с дофиксом | | 9 | бэкенд | купленное доставлено (ряд 291 + приложение 379) | textmachine-b1 | ждётся | выдан 11.09 | -| 10 | сквозной | ХОЛОДНЫЙ ПРОГОН B, платный, с вычиткой всего текста | textmachine-82 | ждётся | выдан 11.09 | +| 10 | сквозной | ХОЛОДНЫЙ ПРОГОН B, платный, с вычиткой всего текста | textmachine-82 | ✅ своими словами, 5 опасностей — три исправили промт | ✅ **ПРИНЯТ актом `D39.252`**, факт $0.396657 | ⛔ **ПОЛИГОН СНЯТ ВЛАДЕЛЬЦЕМ 11.09.** Я предлагал пак трижды — `ed`, `5c` (обе отработавшие, отказались ПО НОРМЕ и были правы) и свежей `37`, — после чего владелец сказал «полигон не надо выдавать». Выдача `37` ОТОЗВАНА тем же часом. ⚠ Урок не про полигон: **я трижды искал адресата для заказа, приоритет которого не подтверждал у владельца.** Слот зоны свободен ≠ работу зоны надо заказывать.