252 KiB
Журнал прогресса
⟶ ТЕКУЩЕЕ СОСТОЯНИЕ (на 2026-09-16, голова D39.258 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). ОЧЕРЕДЬ №23 (единственный носитель — здесь; роль передана 06.09, №22 закрыт нотой передачи D39.217; ⚠ испр. 06.09: коммит передачи
c992ee5бампнул голову и НЕ тронул номер — гейта на номер очереди нет вовсе,counts.pyсверяет только голову, поэтому носитель разошёлся молча). ⚠ ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ИСПОЛНЕН, испр. 08.09 (висел как «первым» неделю после исполнения): (0а) ревизия документации на протухшее ОТРАБОТАНА 01.09 воркфлоуdocs-staleness-revision-A(15 срезов), провенанс находок —D39.185; (0б) планы доработок в бэкенд и платформу — исполняются ПАКАМИ, за 07–08.09 закрыты два движковых (D39.225,D39.226); (0в) вынос неактуального в архив идёт батчамиDOC_CLEANUP_PLAN.md(Б14/Б15/Б17 живы). ⇒ строка ниже — не заказ, а история: (0а) ревизия документации на ПРОТУХШЕЕ — по всем зонам; (0б) планы доработок в БЭКЕНД и ПЛАТФОРМУ; (0в) вынос неактуального в АРХИВ (docs/archive/,platform/docs/archive/) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): 97 живых дока вdocs/(пере-счёт 11.09) (пере-счёт 04.09:find docs -name '*.md' -not -path 'docs/archive/*' | wc -l), 8 вplatform/docs, 12 вbackend/docs, 9 вfrontend/docs— ⚠ ⚠ испр. 11.09: из 97 ВРЕМЕННЫХ три (DOC_CLEANUP_PLAN, живой до закрытия батчей Б14/Б15/Б17); два прежних временных уехали вarchive/reports/02.09; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 108 (major 1) (major 1), всего рядов 466 (пере-счётpython3 docs/scripts/counts.py; с 04.09 оба числа под гардом--check, прежние 95/3 разошлись молча) ⚠ (ревизией 02.09 ряды 154 и 157 переведены из «скоро» в «когда-нибудь»: их гейтом стоял первый холодный прогон, он ОТРАБОТАЛ 31.08 и оба предусловия оказались другими — разбор в самих ячейках, ни одна НЕ закрыта). ⚠ Числа доковcounts.pyНЕ сторожит — при переносе файлов пере-считывать руками командойfind docs -name '*.md' -not -path 'docs/archive/*' | wc -l. ⚠ И предупреждение о МЕТОДЕ, купленное сменой №21: «выглядит протухшим» ≠ «протухло». Три факта оркестратора опровергнуты ЗАМЕРОМ сессий, а якоря15-money-path.mdв девяти случаях из двенадцати РОДИЛИСЬ верными и сгнили дрейфом — то есть ревизия обязана быть исполнением, а не чтением. ⚠ ОЧЕРЕДЬ, унаследованная от №21 (три лендинга 31.08 — секция «СОСТОЯНИЕ ПАКОВ» ниже): (1)РАЗРЫВ ЦИКЛАЗАМКНУТ ЖИВЬЁМ 04.09 — пользователь получил EPUB настоящего ПЛАТНОГО перевода ЧЕРЕЗ API,epubcheck5.3.0 на СКАЧАННОМ файле 0/0/0/0 (книгаbk_SS5VES2JELESJSTR, потрачено $0.278319 из гранта $0.60 при потолке пака $1.5, санкция D39.189). Дверь выдачи построена и проверена исполнением:202+Location, поллинг сRetry-After, Range 206 · второй клиент 200 · аноним 401 · чужая книга 404, TTL с GC, идемпотентность третьего создающего вызова. Все ТРИ сценария строки 216 предъявлены живьём (подпись банка · halt на потолке с exit 4 ·409 run_not_resumable/ceiling_reachedи лечение новым прогоном). ⛔ ПЯТЬ ПОТОКОВ РАБОТЫ — состояние на 07.09 (пере-снято лендингами смены №23). (1) ПОЛИГОН — «ремонт прибора» (docs/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md, строки 319 · 300 · 265 · 143): ⚠ ЕДИНСТВЕННЫЙ ПОТОК, НЕ СДВИНУВШИЙСЯ ЗА СМЕНУ — сессия по промту так и не стартовала. Блокирующая линза слепого чтения меряет верность ЧЕРНОВИКУ, а судимой руке предписано отходить от него по исходнику (D39.215п.3) ⇒ фаза Д ПРИОСТАНОВЛЕНА до его лендинга: иначе покупаем числа, которые ничего не значат. (2) БЭКЕНД — «закон банка честно»: ✅ ЗАЛЕНДЕН 07.09, актD39.222(5092ae3+0ae9e8a+bc03fc0). Строки 267 и 318 закрыты, у 320 исполнена половина (а). Шесть кругов самопроверки, 43 находки в собственной работе. Живой остаток зоны — строки 333–339 (шов-близнец и пять описаний, лгущих оператору) и 320(б). (3) ПЛАТФОРМА — «деньги и правда»: ✅ ЗАЛЕНДЕНА 07.09, актD39.221, контрактный минор0.13.0(fda0679+3d90943). Строки 285 · 305 · 325 закрыты. ⚠ Синхронный разрез приёма принят ПОСТРОЕННЫМ, НО НЕ ГОТОВЫМ — сработало правило остановки (9 major из 11 в одном механизме), десять пунктов несёт строка 332; ложный инвариант бюджета заландён осознанно (окно лжи 8 секунд при дефолте в 16 минутах, ломается идемпотентность). (26) ✅ ДВА ПАКА 16.09 ПРИНЯТЫ, БАНК ПЕРЕЕЗЖАЕТ В КНИГУ-ПРОДОЛЖЕНИЕ — актыD39.253–D39.257.D39.253— консилиум банка памяти закрыт, итогresearch/35-bank-memory-consilium.md;D39.254— пять решений владельца по нему.D39.255— движковый пак «КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО» принят (29 путей, $0): ⛔ три опубликованных ключа качества уехали смыслом (ProcessedUnits, черновиковый и эдит-числитель эха), и пере-классификацияcancelledменяет счёт слотов на книгах, которые УЖЕ в поле — оба названы остатком, не умолчаны.D39.257— пак «БАНК ЗА $0» принят: громкий отказ, когда цель есть, а инъекционных текстов нет, — ДО первой траты; отказ роли перестал ехать в банк законом и разведён с мусором; два предиката «спорный» построены без платного потребителя. ⭐ Судилось ПЯТЬЮ приборами (батарея 24/24, мой собственный мутационный прогон, три оси аудита вне сдачи, пере-снятие чужих чисел, денежная ось: 0 платных путей при контроле 192 прочитанных файла). ⭐D39.256— решение владельца: банк переезжает в КНИГУ-ПРОДОЛЖЕНИЕ ПОДПИСАННЫМ ПЛЮС РЕШЁННЫМ ДВИЖКОМ, стройка двухзонная — ряд 461. ⚠ Две эрраты того же дня, обе к моим собственным утверждениям: 16.09-а — число «48 конфигов книг» я взял из чужого отчёта, не пере-мерив (верно 24), и каталожный прогон закрыт числом 267/267; 16.09-б — нотыD39.256иD39.257утверждают ПРИЧИНУ, которой замер не давал («причина смен передачи — якорь»), измерено лишь отсутствие новой улики во ВХОДЕ ⇒ причина остаётся ГИПОТЕЗОЙ, гейченной рядом 466. Ряды: закрыты 291 · 379 · 441 · 460; заведены 457–468; 445 сужен наполовину. (25) ✅ ПЛАТФОРМЕННЫЙ ПАК «ОТВЕТ ДВЕРИ НЕ ЗАВИСИТ НИ ОТ ПОРЯДКА, НИ ОТ ВЕЗЕНИЯ» ПРИНЯТ С ДВУМЯ ДОФИКСАМИ, актD39.250, контрактный минор 0.15.0 (27 путей, 24 новых теста, $0). ⭐ Предмет ПЕРЕ-ОПРЕДЕЛЁН замером зоны ДО первой правки: не редкая гонка под нагрузкой, а ОРДИНАРНЫЙ путь — любой резюм живого прогона отвечает 409 детерминированно. ⛔ Оба денежных предохранителя оказались проверены не тем прибором (гард судил шаблон, а проба рендерит свой $0-пайплайн строкой выше; рецепт проверен текстовым сканом вместо загрузчика —EXIT=10), и ответ лежал в дереве комментарием того же хелпера. ⭐ Лечение — СНОС рецепта, а не починка:П-22иП-23схлопнулись, мина стережётся по умолчанию. ЗакрытыPD-448·PD-466·PD-162·PD-139·П-22·П-23; живое — эскроуП-18и одно названное слепое пятно (24) ✅ БЭКЕНД-ПАК «КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ» ПРИНЯТ С ДОФИКСОМ, актD39.249(26 путей, $0). ⭐ Приоритет №1 владельца впервые ИЗМЕРИМ по тексту, который читает человек: два инварианта по ОТГРУЖЕННОМУ тексту с печатаемыми знаменателями, секцияBOOK CONSISTENCYв отчёте сборки. ⛔ Первый круг приёмки дал ШЕСТЬ выживших посадок из шести — худшая оставляла прибор без провода к прогону. Порядок колонок ратифицирован и отменён в тот же день; правило и два триггера пере-открытия — ряд 406. Каталог 169/169 RED, выживших 0 (прогон оркестратора: зону убивал потолок cgroup, 26 убийствCONSTRAINT_MEMCG). Ряды: закрыты 406 · 418; наполовину 407 · 417 · 419; не закрыт 408 (мотив опровергнут замером). Новые — 425–427 · 428 · 431 · 432 (23) ⛔ РЕШЕНИЯ ВЛАДЕЛЬЦА 11.09 РАТИФИЦИРОВАНЫ, актD39.248. Голос ВХОДИТ в приоритет №1 (проектирует Fable 5, исполняет опус — пак обязан нести пункт «обсудить с Fable») · потолок 1–2 агента Fable на сессию, прежняя «рекомендация» ОТОЗВАНА · автономия смены с мерилом «ценности продукта → архитектура → необходимый рефакторинг → без велосипедов» · ⛔ полигон выведен из скоупа целиком, четыре его промта вarchive/prompts/с баннерами. Рабочий скоуп — платформа и бэкенд. Прежде решения жили в рабочей записке, которая удаляется при исполнении плана. (22) ✅ ХОЛОДНЫЙ ПРОГОН A ПРИНЯТ БЕЗ СХОДИМОСТИ, актD39.247. ⭐ Строка 16 закрыта замером: книга доведена от интейка до ФАЙЛА, прочитанного человеком, за $0.419424. ⛔ Четверть денег купила пустоту (25.4 %; из них ноль знаков — 22.6 %) · пин цены flash протух на 13 % · консистентность впервые замерена по тексту читателя. Ряды 413–417, 419. (21) ✅ ПЛАТФОРМЕННЫЙ ПАК «ПРАВДА У ДВЕРИ» ПРИНЯТ С ДОФИКСОМ, актD39.246, контрактный минор 0.14.0.PD-455закрыт через точку ростаBlocked.code;PD-162наполовину у ОБЕИХ денежных дверей;PD-448разобран и НЕ построен — его четвёртый путь строит следующий пак зоны. ⛔ Приёмка нашла два дефекта вне карты автора: выживший мутант на единственной проводкеBooksDirи тихо-зелёное в самом новом гейте. (20) ✅ ДИЗАЙН-ПАК «СТРУКТУРА ГЛАВ» ПРИНЯТ БЕЗ СХОДИМОСТИ, актD39.245. Глава становится ИДЕНТИЧНОСТЬЮ;backend/docs/CHAPTER_STRUCTURE_DESIGN.md— статус ПРЕДЛОЖЕНИЕ до пака стройки. Предметная часть устояла в четырёх кругах, механика исполнения — нет. Пять вопросов владельцу с ценой каждого варианта — вNEAR_TERM_PLAN.md. (19) ✅ АУДИТ БАНКА ПАМЯТИ ПРОТИВ ПРИОРИТЕТА №1, актD39.243. Ряды 406–412; носитель разбора —research/34. ⭐ Главное: книжного вопроса о консистентности не задавал ни один прибор — мера построена, но считалась по ЧЕРНОВИКУ до редакторской волны. (18) ✅ ДОРАБОТКА ПО ИНВАРИАНТУD39.240ПРИНЯТА, актD39.242. Семь предметов в двух зонах; батарея движка вернулась к входной строке, мутации RED 151 · SURVIVED 0, сверка 373 якорей — протухших 0. ⭐ Почти всё дорогое нашли САМИ сессии и у себя: выживший мутант вскрыл дефект в собственном пине, непримени́вшаяся собственная правка, знаменатель из восьми против моих двух. ⚠ Пять МОИХ ошибок сняты сессиями и названы в акте; куплены четыре нормы о провенансе утверждений и чисел. Бэкендовый слот СВОБОДЕН — следующим идёт дизайн-пак структуры глав (ок владельца получен). (17) ✅ ОБЕ СЕССИИ ЗАКРЫТЫ, актD39.241. Движок откачен полностью — батарея вернулась к входной строке смены (19ok· 0 FAIL · 4 скипа), пере-снято моим прибором. Платформа сдала--no-blockС ПИНОМ — единственное, что владелец взял из отменённого пака; куплен пин на ЧУЖОЕ поведение (systemd), на котором молча держалось утверждение в коде свипа. ⛔ Откат не смогла выполнить ни одна сессия, включая мою: запрет сработал одинаково, обходить не стала ни одна, дерево снял владелец. Живой журнал похудел на 19 % — закрытая хроника вынесена срезом (7af35da), три её одиноких утверждения получили дом строкой 402. (16) ⛔ ПАК «ДВЕ ОСТАНОВКИ» ОТМЕНЁН ВЛАДЕЛЬЦЕМ до лендинга — актD39.240. Причина — размах (18 файлов движка), не риск: работа была почти целиком добавочной (+633/−84, 61 удалённая не-тестовая строка, сборка чистая). Предмет заменён и сужен: остановка остаётся ЖЁСТКОЙ, деньги терять ДОПУСТИМО, но она обязана быть КОРРЕКТНОЙ — без гонок, без половинчатых состояний, с верным возобновлением. Обе сессии откатывают свои зоны; знание снято с них ДО отката. ⭐ Пак оставил после себя пять нот (D39.236–D39.240) и две строки (384, 385). (15) ⛔ ДВА SIGTERM ПОДРЯД GO-ПРОЦЕСС ВИДИТ КАК ОДИН — актD39.238, замерено дважды независимо (gap 0→ 0 из 20,gap 1 мс→ 20 из 20, контроль 5 из 5). Ратифицированная форма двух остановок стояла на посылке «послать два = получить два», которой нет: «останови сейчас» первым нажатием давало бы МЯГКУЮ остановку молча, а пере-выпуск жёсткого сигнала свипом — третий SIGTERM, то есть смерть без кадра и сеттла. Форма остаётся, добавлен контракт: сигналы упорядочены НАБЛЮДЕНИЕМ, факт доставки долговечен. ⭐ Первая серия замера была неверна ПРИБОРОМ и дала противоположный ответ — сессия починила прибор и назвала это сама. (14) ОБЕ СЕССИИ ПАКА «ДВЕ ОСТАНОВКИ» ПРИНЯЛИ РАБОТУ И ОТВЕТИЛИ ЭХО-ПРОТОКОЛОМ; шесть возражений, шесть приняты — актD39.236. Три из них — ошибки В МОИХ ПАКАХ (счётчик оценки копился бы с нуля и пин равенства был бы вакуумен · «опора готова» для строки оператору · неверный механизм следствия у блокирующегоstop), одно — правило версий, которое я нарушил бы молча. ⭐ Все шесть пришли ПОСЛЕ двух кругов ревью: эхо-протокол оказался третьим рубежом, а не формальностью входа. (13) ДВА ПАРНЫХ ПРОМТА «ДВЕ ОСТАНОВКИ» ВЫДАНЫ, актD39.235— движковый и платформенный, порознь не лендятся. Форма кадра остановки ЗАФИКСИРОВАНА нотой ДО старта работ (две зоны, один шов). ⛔ Эррата кD39.234п.1б: мой механизм «отказ на гейте» ратифицированных ~20 минут не даёт — резервация держит всю цепочку ретраев. ⛔ Замером исполнением найдено, что платформенныйStopбез--no-blockблокируется на весь грейс и сломал бы202контракта. Сплошной инвентарь живых доков по слову владельца: 19 мест починено, контракт исправлен минором0.13.1(схема требовала отставленный член ⇒ каждый ответRunбыл невалиден). (12) СЛОВО ВЛАДЕЛЬЦА ПО ОСТАНОВКАМ ПОЛУЧЕНО И РАТИФИЦИРОВАНО, актD39.234: первое нажатие — мягкая, второе — жёсткая; ждём одну летящую попытку (~20 мин), не цепочку; пак мягкой остановки и строку 377 делаем ОДНИМ заходом; коды выхода не трогаем. Пак движка ПАРНЫЙ платформенному. ⛔ Тем же актом сверены носители, которыхD39.232не тронул: закрыты и убраны строки 78 · 331 · 360 · 369; блокеров очереди в трекере теперь 0. Инвентарь живых доков прогнан (94 файла):15-money-path.mdчинен в трёх местах. (11) ДВА СТОПА — СЛОВО ВЛАДЕЛЬЦА НАКОНЕЦ ЗАПИСАНО, актD39.233. У человека одна кнопка, и она рвёт всё в полёте; мягкий глагол в движке построен, но дёрнуть его может только денежный потолок. ⛔ Контракт и платформа УЖЕ обещают мягкий стоп, которого нет, а платформенный грейс (600 с) меньше законного ожидания вызова (1240 с). ⛔ Пометка «это оценка» — условие слова владельца — по шву НЕ едет и потребителя не имеет (строка 382). ✅ Замером закрыты строки 374 (вердикт главы остановка уже не портит) и 371. Пак не заказан: ждёт слова владельца по форме (рекомендация — «повтор ужесточает», коды выхода не трогать). (10) ПАК «ВЫЗОВ, КОТОРЫЙ ОБОРВАЛИ МЫ» — ✅ ПРИНЯТ И ЗАЛЕНДЕН 10.09, актD39.232(3f05fab, 28 путей, $0). Движок перестал платить дважды за одну генерацию. Числа пере-сняты оркестратором: батарея 19 ok · 0 FAIL · 4 скипа; каталог 276 → 360, батарея 65 → 149; тесты +67 / −0; снапшот не двинулся. ⛔ Приёмка ДО ратификации нашла пять выживших мутаций, все на носителях ВИДИМОСТИ денег — то есть на условии слова владельца. ⭐ Куплены четыре нормы об измерении и три класса вырожденных пинов. Остатки — строки 375–377 (374 закрыта замером, актD39.233п.2). (9) ТРАНСПОРТ: КОНСИЛИУМ СОШЁЛСЯ, БИТ ВЛАДЕЛЬЦА ЗАКРЫТ — актD39.230. Оборванный НАМИ вызов: списывается по оценке с читателя, пометка — УСЛОВИЕ решения; платная проба отклонена (вопрос к вендору осознанно открыт); ожидание до20 мин разрешено ⇒ дедлайн от бюджета. ⛔ Попутно вскрыто: наш$0.07 ≈ 3 главы), и он ВЫВЕДЕН, а не замерен (замер — $0.15-прогон пятиглавой книги, передан полигону). ⚠ Разбор эрратой —research/21§Q6 неверен ДВАЖДЫ и обе половины держали неверный дедлайн полтора месяца (эррата в его шапке); ось эскалации D2 фиктивна (строка 369); нулевая ветвь не пишет чекпойнт ⇒ резюм ПЕРЕКУПАЕТ вызов. ⇒ следующий движковый пак — строка 360, пишется целиком. (8) ПЛАТФОРМЕННЫЙ ПАК «РАЗРЕЗ ПРИЁМА И ПРАВДА О СЕБЕ» — ✅ ПРИНЯТ И ЗАЛЕНДЕН 08.09, актD39.229(ddcbf0c, 26 путей, $0). Синхронный вход разреза под потолком (x/sync/semaphore, число изjobs.DefaultWorkers); граница хвоста выведена из кода; регистр приведён к правде — открытых 112 → 109, major 3 → 1. ⭐ Потолок сам назвал, чего НЕ ограничивает: материализатор и рекoнсайлер порождают процессы мимо него — строка 364. Адверсариальный проход: 8 находок, 6 — дефекты этого же пака на ЗЕЛЁНОЙ батарее. (7) ДВИЖКОВЫЙ ПАК «ДВИЖОК УЖЕ ЗНАЕТ» — ✅ ПРИНЯТ С ДВУМЯ ДОФИКСАМИ И ЗАЛЕНДЕН 08.09, актD39.228(2b6f1f4, 21 путь). Закрыты строки 355 · 357 · 358; у 253 и 312 закрыта только ДВИЖКОВАЯ половина — платформенная жива и ждёт читателя (испр. 08.09 по кросс-модельному ревью ратификаций). Ратифицировано: аддитивное поле манифеста ключ НЕ двигает, но обязано быть отличимо от своего нуля. Третья смена поведения заказана приёмкой — лог и экран перестали спорить о полноте банка. Не взятое получило носители: 362 (ремонт против ремонта, 77 % денег чанка) и 363 (текстовый сайдкар молчит о неполноте). Батарея 19 ok · 0 FAIL ·EXIT=0, каталог мутаций 259 → 276, тесты +17 / −0 — все числа пере-сняты оркестратором. (6) ВЫДАНЫ ДВА ПАКА 08.09, актD39.227, оба $0. Движковый «ДВИЖОК УЖЕ ЗНАЕТ» (BACKEND_ENGINE_KNOWS_SESSION_PROMPT.md: строки 253 · 357 · 358 · 355, попутно 312) и платформенный «РАЗРЕЗ ПРИЁМА И ПРАВДА О СЕБЕ» (PLATFORM_INTAKE_TRUTH_SESSION_PROMPT.md: строка 332, семь пунктов из десяти). Оба прошли опровергателя и разбор Fable 5. ⛔ Заведена строка 360 — самый дорогой движковый класс (23–34 % цены редакторской руки), носителя у него не было; её ДЕНЕЖНАЯ половина ждёт слова владельца (платит ли пользователь за вызов, оборванный нами) и сцеплена со строкой 331. До ответа пак по 360 не пишется. (4) ДИЗАЙН-ПАК 161 — ✅ НАПИСАН 07.09 (docs/CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md,7f84c8d), прошёл оба рубежа. ⚠ НЕ ВЫДАН: новый пак идёт НОВОЙ сессии, обе ночные отработали — запуск за владельцем. (5) ТЕХДОЛГ БЭКЕНДА — разборresearch/33в трекер: ✅ ЗАЛЕНДЕН 07.09, актD39.224. Заведены строки 344–350, дописки в 86/114/119/182/224; «переписать» не получил ни один из одиннадцати долгов. Ратифицированы ПОРЯДОК (шаг 0 параллельно дизайну 161 → шаги 2+3 ОДНИМ окном перенарезки, wire-очередь 182 ложится в него же → шаг 4 аддитивно) и ФОРМА запретов (жёсткие — только под ратифицированной базой, прочее — условия с механизмом, чтобы не спорить с дизайн-паком). Пак шага 0 ✅ ЗАЛЕНДЕН 07.09, актD39.225(две смены поведения названы, вторая денежная: прогон по арму теперь покупает банковый контур). Промт был —docs/BACKEND_GATES_NOT_PROSE_SESSION_PROMPT.md, $0 и снапшот-нейтрально: строки 344 · 345 · 346(а) · 348 · 224, попутно 349/350. Прошёл оба рубежа; вход зоны зелёный (go test ./... -count=1→ 19ok, 0 FAIL, 4 пакета без тестов). ⚠ Единственная заказанная смена поведения — экспорт банка на стопе, и её форма ЗАДАНА аддитивной: перенос засева в ветку стопа запрещён явно (уводит НЕПОДПИСАННЫЕ строки в глоссарий, а те инъектируются законом ⇒ двигаютmemory_version). Снапшот-нейтральность требуется доказать байт-равенством снапшотов. ⚠ Пак шага 0 закрыт ТРЕМЯ дофиксами, и каждый нашёл дыру ВНУТРИ предыдущей починки (актD39.225п.9–10): семь полей листа подписи без утверждений →Freqи своп списков → ранжирование и класс пустого рендеринга. Правило остановки применено НА ТРЕТЬЕМ и объявлено сессии заранее; остаток адресован строкой 353 и ждёт первого читателя секции (платформенная половина 224). Оба верификатора дали явный ок на закрытие, каждый пере-посадив свои мутации. (6) ТЕХДОЛГ БЭКЕНДА, ВТОРОЙ ПАК — «ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ»: ✅ ЗАЛЕНДЕН 08.09, актD39.226. Закрыты строки 333–338; живое — 354–358 и остаток 353. ⚠ Смета движка опровергнута прогоном:tmctl manifestесть НИЖНЯЯ граница ($1.259217 против $0.350075, 64.6 % «купило ничего»), потолок держал машинным гейтом. Три ошибки ЗАКАЗЧИКА названы в акте п.8. Прежде:docs/BACKEND_OPERATOR_TRUTH_SESSION_PROMPT.md, строки 333–338: движок говорит оператору не то, что делает, и платит за поверхности, которые банк уже держит. ⚠ Первый пак смены, который тратит ДЕНЬГИ: холодный прогон на нескольких главах разрешён владельцем лично, потолок $3 ставится МАШИННЫМ гейтом движка (ceilings.book_usd+--max-units), а не обещанием сессии. Прошёл оба рубежа, и оба нашли существенное: (1) первая редакция §4.1 заказывала фильтр, который снял бы пометки спора, которые §4.3 того же пака просит довезти владельцу; (2) заказанное доказательство «банк тот же» ВАКУУМНО — предложение на сид-поверхность в банк не попадает и сегодня; (3) удаление кандидатов неизбежно двигаетRequestHashбатча, и на РЕЗЮМЕ оплаченный чекпойнт перестанет матчиться ⇒ переплата; (4) одно утверждение строки 334 было ложным с момента её заведения — снято и в паке, и в носителе. ⛔ ЧТО ЖДЁТ СЛОВА ВЛАДЕЛЬЦА, поимённо: строка 340 — сужение входа действует только на синхронной ветви, при деплойном классе книга одним полотном попадает в библиотеку МОЛЧА, и закрыть нечем без пятой причины отказа (source_unreadableтерминален и УДАЛЯЕТ исходник) · строка 326 — критерия впуска в дереве нет, консьерж против самообслуживания · обязательный ВТОРОЙ круг селф-ревью (первая половина того же слова подтверждена как РЕКОМЕНДАЦИЯ,D39.220; вторая не подтверждена, улика в её пользу — ниже в этом же листе). ⚠ Зоны параллельны по норме проекта; ограничение — пропускная способность ПРИЁМКИ оркестратора: сериализуй ЛЕНДИНГИ, не старты. ⚠ Зеркало фронта —0.2.3против канона0.13.1(одиннадцать миноров плюс корректирующий,D39.235п.6), зона заморожена. ✅ ПОЧИНЕНО 05.09 ЛЕНДИНГОМ616a8e4(пак «денежный стоп», акт приёмки D39.206; ⚠ испр.: раньше здесь стояла D39.203 — это нота ВЛАДЕЛЬЦА про «сколько добавить», а не акт) — ниже до-паковая археология, читать как историю. Отказ резервации больше не роняет волну: он ЗАЩЁЛКИВАЕТ её (новое не стартует, допущенное дорабатывается), а обязательный вызов ЖДЁТ settle, когда settle может помочь. ⇒ порог «книга короче десяти глав не переводится» СНЯТ; остаточный пол — одна резервация (architecture/15-money-path.md, грепЭРРАТА 05.09. ⚠ Эта строка сутки стояла непоправленной ПОСЛЕ лендинга и по ней оркестратор предупредил владельца о снятой стене как о действующей — канон, не обновлённый лендингом, врёт громче отсутствующего. НО КНИГУ ЧЕРЕЗ API НЕЛЬЗЯ БЫЛО ДОВЕСТИ ДО КОНЦА — найдено прогоном 04.09 и воспроизведено дважды. Прирост потолка на прогон =chaptersLeft × $0.03(ставкаDefaultPerChapter, занижена ×4.47 — D39.179 п.1), и после первой готовой главы это $0.27, тогда как движок приwaves.workers: 4резервирует под редакторский шаг ~$0.28 ⇒ отказ резервации, прогон встаёт, книга не двигается. Два прогона подряд дали одно и то же:committedне сдвинулся, холд вернулся. ⇒ занижение ставки — не «шкала короче», а СТОП ПРОДУКТА: с какого-то момента каждая следующая покупка не покупает ничего. Лечить придётся согласованно двумя сторонами (ставка платформы + резерв движка под шаг с параллельными воркерами), носитель — ряд регистра зоны, весmajorза недостижимость продукта, а не за деньги: сам стоп НЕ ЖЖЁТ ничего — замер платформы 04.09 показал отмену ДО ухода запроса (латентность 20–31 мс,model_actualпуст, токенов ноль), и вся книга сходится до микро-доллара по трём источникам (request_log0.278319 ·spend.committed_usd0.278318752 · платформенныйcommitted278319 микро). ⛔ ЗАТО HALT НА ПРОГОНЕ, КОТОРЫЙ ПРОДВИНУЛСЯ, ЖЖЁТ — отдельная находка того же прогона и свежая датированная точка строки 78 («леджер = НИЖНЯЯ граница»). Четыре редакторских вызова ушли параллельно; один дошёл ($0.063404) и своим коммитом сорвал потолок, три других отменены в тот же миг, отработав 120756, 156469 и 156470 мс — и легли в леджер нулём. Незаписанное ≈ $0.05–0.19 на ОДИН halt против $0.278 за всю книгу, то есть механизм, защищающий от перерасхода, сам создаёт неучтённый расход. ⚠ Списание провайдером НЕ доказано (биллинга у нас нет) — утверждается ровно наблюдаемое: вызовы шли 2–2.6 минуты, их цены в леджере нет. ⇒ Дыра НЕ в принципе, а в покрытии, и это делает её заказом, а не наблюдением (разбор оркестратора 04.09 по коду): консервативная оценка уже построена и ратифицирована —backend/internal/pipeline/stagerun.go, грепsettling the reservation estimate to keep the ceiling honest(pack-13 point-9), — но её условие требует ОТВЕТА провайдера (resp.Usage), а отменённый в полёте вызов ответа не получает и уходит другим путём. Направление лечения: сеттлить оценку при отмене вызова, который успел уйти; различитель — факт ухода (латентность кандидат, порог обязан быть обоснован замером, а не назначен). Половина ДВИЖКОВАЯ. ⚠ Прежняя формулировка пункта — ниже, она о состоянии ДО 04.09. Движок пишет файл с 30.08 (tmctl build— EPUB 3 + чистый txt, D39.175), и холодный прогон 31.08 предъявил это живьём: собранный EPUB настоящего перевода прошёлepubcheck0/0/0/0 и передан владельцу. ⚠ ЭТОТ АБЗАЦ ЗАКРЫТ 04.09 и оставлен как история: дверь выдачи ПОСТРОЕНА и заленджена (adf5e53, D39.194), смонтировано 18 операций из 21 (три адреса двери:createExport/getExport/downloadExport), долгП-17зона пере-сняла. Прежняя проверка «grep -rn 'createExport\|getExport' platform/internal/— пусто» БОЛЬШЕ НЕ ПУСТА и как гейт не работает. Не смонтированы по-прежнемуgetRun,updateBook,deleteBook—updateBookнесёт продуктовое следствие, строка бэклога 274 (имя книги в выданном файле не чинится ничем). Слово «отдаёт результат» ложно по букве ТОЛЬКО платформенной половиной (п.4) · (2)холодный прогон движкаОТРАБОТАЛ 31.08, закрыт РЕШЕНИЕМ ВЛАДЕЛЬЦА «не доводить» (отчёт —archive/reports/COLDRUN_V16_REPORT_2026-08-31.md, числа относятся к065d8ac). Потрачено $0.436110 из санкции $0.80. ПРЕДЪЯВЛЕНО живьём: объёмный потолок · D39.158 ОБЕИМИ половинами (стоп и не-стоп) · exit 16 · строки 154/198/239/240. ⚠Причина большой доли редактора НЕ УСТАНОВЛЕНА— УСТАНОВЛЕНА пробой полигона 02.09 по четырём осям: РЕДАКТОР ДУМАЕТ, А НЕ ПИШЕТ. Размышление — 77.9% цены редактора без ручки и 45.7% сlow; уglm-5с выключенным thinking — 0.0%. Замер куплен и закончен ($6.17 из $9.50). ⚠research/30§2.4 того же полигона повторяет «причина не установлена» — это про ДРУГОЙ вопрос (доля роли в прогоне против доли размышления в цене роли), и различение обязано попасть в ревью-шапку 30. Доля редактора идёт с ДВУМЯ знаменателями: 49.3% от всего прогона ($0.214865 из $0.436110) и 81.3% внутри порции П1 (⚠ ходившее «73%» — фантом, в отчёте его нет ни разу). Следующий шаг — контролируемая проба по ЧЕТЫРЁМ осям (роли осей и три требования, купленные ошибками этого прогона, — §14 отчёта; осьstaleНЕДОСТИЖИМА — §10 там же). ⚠ Цена: слово владельца 31.08 — ≈$0.60, потолок $0.80, ДЕСЯТЬ глав ПОЛНОЙ цепью включая редакторскую волну. ⚠ КЛЮЧИ: гейт снят словом владельца 30.08, разбор двух путей — D39.176 п.6. Живое отсюда: конвенционного.envНЕТ НИ У ОДНОЙ книги корпуса (заполнены толькоprojects/textmachine/backend/.envи.../eval/.env), поэтому прогон движка обязан передавать--keys-fileабсолютным путём и только наtranslate; для п.3 нужен ДРУГОЙ файл —TM_PLATFORM_ENGINE_KEYS_PATH, тоже АБСОЛЮТНЫМ путём (platform/internal/config/config.go, грепmust be an absolute path). Лечение операционное и $0 — направить переменную на уже заполненный файл; проверять ПРОГОНОМ, не чтением (гардрейл.env) · (3) живой сквозной прогон через API платформы — форма манифеста, сайдкара банка и карта причин флагов сочинены платформой САМОСТОЯТЕЛЬНО. ⚠ Уточнено 01.09: гейт СНЯТ холодным прогоном, и настоящие артефакты движка теперь ЕСТЬ (каталогbooks/gu-zhenren/coldrun-v16/), но сверка вышла ТОНКОЙ: на шов реально вышло одно значениеflag_reasonиз пятнадцати (sanitizer_stripped), остальные четырнадцать по-прежнему только чтением кода, а манифест противplatform/internal/ingest/manifest.goне сверялся вовсе · (4) дверь выдачи — строго ПОСЛЕ (3) (⚠ слово владельца 30.08: дверь ВСЕГДА строит файл — отказ юзеру не отдаётся, неполная книга уходит с пометкой, т.е. дверь зовётtmctl build --partial; отказ по умолчанию остаётся операторской ручкой CLI; D29.1(б) «fail-closed» читать как «никогда молча» — честность несут пометки) · (5) проводка--max-units— снятие гейта, а не стройка: механизм в движке стоит (D39.170), живое основание гейта —PD-422· (6) разморозка фронта — ПОСЛЕ (4): зеркало отстало на ВОСЕМЬ миноров (frontend/docs/api-contract/openapi.yaml—0.2.3против канона0.10.0, и первый из них — ЛОМАЮЩИЙ 0.3.0), 16 операций против 21; зеркало последний раз двигали 15.08 — ⚠ ходившее «30.08» было взято из текста коммита, а не изgit log(испр. 05.09), то есть расхождение старше на две недели; отставание ратифицировано D39.142 п.5 на время фриза и две ручки разъехались, размораживать раньше значит перегенерировать типы дважды. ⚠ ДВА ЗАГЕЙЧЕННЫХ ТРИГГЕРА НАЖАТЫ И НЕ ОТРАБОТАНЫ — строка бэклога 237 (go.work· вендор-сверка эффортаdeepseek-v4-pro; реестр13-tech-debt-anchors.md§Б-108). ⚠ Состояние git — снимать КОМАНДАМИ, не чтением (веткаpolygonушла вперёд, коммит здесь не цитирую): работа полигона лежит на ней и вmainНЕ влита, аgit status -- eval/в main-дереве пуст ПО ПОСТРОЕНИЮ и уводит в ложный вывод «работы нет»; ⚠ «развязка git с origin» — арбитр ПЕРЕ-СНЯТ 04.09 и прежний вердикт БОЛЬШЕ НЕ ВЕРЕН:git merge-base --is-ancestor origin/main main→ rc 1,git log main..origin/main→afa7700 temp(коммит владельца 04.09, которым он передавал работу зон). Локальная линия ушла вперёд на семнадцать коммитов и содержит ВСЁ содержимоеafa7700— оно снятоreset --softи заленджено раздельными зонными коммитами, — но формально ветки разошлись. Лечение — force-push рукой владельца; не пуллить (его же правило). ⚠ Пункт «развязка git с origin» в листе владельца ниже держится ТОЛЬКО как вопрос про force-push его рукой; утверждением о расхождении дерева он не является — арбитр этой пары именно здесь.
- ⚠ Норма приёмки, купленная аудитом D39.167 п.1: акт лендинга, объявивший закрытие строки регистра или бэклога, обязан быть СВЕРЕН СТАТУСОМ в тот же заход — иначе следующий пак собирается ПО РЕГИСТРУ и едет чинить построенное. Машинная половина — строка бэклога 225.
- ⚠ ЛЕНТА КОНТРАКТНЫХ МИНОРОВ (что принёс каждый — телом ноты): 0.5.0 — D39.161 · 0.6.0 — D39.162/D39.163 · 0.7.0 — D39.166 · 0.8.0 — D39.169 · 0.9.0 — D39.180 · 0.10.0 — D39.194 (дверь выдачи:
downloadExport,failure_codeсловарём,Export.urlотносительный; ⚠ читать с эрратой 04.09-в — минор был ратифицирован без своей кодовой половины и сутки жил ложным на проводе). Прожитые дампы приёмок P9/P10 —archive/PROGRESS-2026-08-backend.mdи тела нот.- ЖИВОЕ: полигон — фаза Д ИДЁТ (заказ 10.08; деньги санкционированы 15.08 напрямую полигону — ⚠ числа потолка в носителях расходятся, фактическую цепь сверить при лендинге петель; ja-книга
enkan_no_hate_ja; при ратификации фазы Д в D-ноту: декой-правило + обязательный кросс-семейный опровергатель приёмки — одобрены 10.08; свежие фриз-коммиты полигона в дереве — НЕ трогать) · платформа и контракт — статус в строке выше, здесь НЕ дублируется (один носитель на факт) · фронт ЗАМОРОЖЕН (D39.136 п.2 + D39.147: морозится ДАЛЬШЕ лендинга P7 — слово владельца 17.08; P7 зону НЕ размораживает, S5-промт не выдаётся, разморозка отдельным словом по достижении сквозного пути; перечень первого касания зоны — синк зеркала на ТЕКУЩИЙ канон (отставание и его цена — п.6 очереди выше и строка бэклога 183(б)) + перегенерация типов + моки + гейт утечки конвейера + ФС-1..12 + Ф-63/Ф-28 + фразы В-11 по словарю кодов — не отменён, ждёт разморозки) · закрытые стройки эры — реестром нотarchitecture/05-decisions-index.md(D39.130–137, одна строка на ноту).- Открыто на владельце: ⚠ НОВОЕ 06.09: второй круг селф-ревью — бэкенд-сессия передала слово владельца «после сдачи обязателен селф-ревью, и если он дал исправления — НОВЫЙ круг, проверяющий исполнением и исходный заказ, и закрытие находок предыдущего круга». Первую половину того же слова (комментарии) он подтвердил как РЕКОМЕНДАЦИЮ, про вторую не сказал ничего; в мандате самопроверки
CLAUDE.mdсегодня описан ОДИН круг. Сессии исполняют добровольно, каноном не стало. ⭐ УЛИКА В ПОЛЬЗУ ПРАВИЛА, снятая в ту же ночь 07.09: круг 2 бэкенд-сессии опроверг ЕЁ ЖЕ правку круга 1 — свёртка сравнения черезNormalizeSourceKeyвводила ЛОЖНООТРИЦАНИЕ (замер зоны:ReplaceGlossary(族長 + 族长)→rows stored=2, контроль на байт-равномsrc→UNIQUE constraint failed, то есть UNIQUE стоит на СЫРОМsrcи обе строки инжектятся), и мутация «свернуть сравнение» до круга 2 ПЕРЕЖИВАЛА весь пакет. Один круг сдал бы тихо-зелёное. · ✅ Развилка строки 291 ЗАКРЫТА владельцем 05.09 —D39.204: отказ резервации на ретрае деградирует во ФЛАГ («пусть флагает просто как-то»); вариант «минимальная покупка ≥step_max_usd» снят. ⚠ Это оказалось НЕ сменой канона: D2 уже кончается флагом, денежная ветка до него не доходит. · ✅ Лестница D25.1 ЗАКРЫТА владельцем 05.09 —D39.205: копия БЕЗ пометки = книга БЕЗ ЕДИНОГО ПРОПУСКА; любой пропуск ⇒ пометка в файле, гранулярность — ЮНИТ (пропущенный кусок главы критичен). Имя файла решено паком7e2226a(вычисляется при скачивании). ⚠ Прежняя редакция держала это открытым на владельце — по ней он и получил вопрос, который сам уже закрыл · лейбл главы без заголовка (сейчас цифры; словесный шаблон = одна строкаreader.txtпосле ратификации К-3) (⚠ три вопроса пака ЗАКРЫТЫ словом владельца 30.08: экспорт юзеру — всегда строить, см. п.4 очереди · модель пометок подтверждена как построена — надпись о пропуске в файле, отдельный варнинг-слой в интерфейсе НЕ строим, машинный отчёт сборки остаётся внутренним носителем (дрейф) · RTL — снят до появления право-налевой целевой пары) · ⚠ ПЛАТФОРМЕННЫЙ ЛИСТ ЗАКРЫТ СЛОВОМ ВЛАДЕЛЬЦА 30.08 — четыре ответа и их следствия ЦЕЛИКОМ телом D39.176 (квот нет · продажа не в бете · продолжение после пополнения — руками · фразы пользователя делегированы проекту с требованием интернациональности). ⚠ Лист ПУСТ: последний его пункт (PD-421, «держит ли открытый поток сессию живой») СНЯТ замером 30.08 — окно бездействия сессии 14 суток, абсолютный срок 30 (platform/internal/config/config.go:346=defaultSessionIdle), скольжение окна идёт на любом аутентифицированном запросе, а поток теряется лишь после того, как подметён протухший ряд, то есть после ДВУХ НЕДЕЛЬ без единого действия пользователя. ⚠ Часовой интервал в этой теме — периодичность УБОРКИ, а не срок сессии (эррата 30.08-а к D39.176 п.5) · ⚠ Гейт словаря фраз — строка 204 (D39.176 п.4). ⚠ Прежний указатель «строка 148» мёртв — строку удалилa023e39решением владельца, восстанавливать Приложение А по ней НЕ надо · развязка git с origin (локальная линия ИСТИННА, force-push его рукой; не пуллить) · В-4/Ф-30 (глава без заголовка — движковая половина строка 160) · мини-проба флора 44 (одобрена, промт не выдан; число — после ре-пробы 188) ·подпись денежного шага 46(ратифицирована D39.190 п.4: пере-снапшот батча — единым актом, цена сегодня $0) · схема time-based DeepSeek — рекомендация и её доводы строкой 172(а) · вход ратификации фазы Д: посылка «dspro дешевле glm» в пике ПЕРЕВЁРНУТА (×1.26 дороже, D39.137 п.4) · возражение Sol по проходуtierэксп-23 (довод дословно — слайсarchive/PROGRESS-2026-08-10-15.md: Sol судил СВОЁ семейство, что запрещено D13.3; подтвердить или снять — при лендинге петель фазы Д) · фронт-вопросы зонного журнала: В-7 (плотность; держит Ф-54) · В-8 (слово состояния в дереве) · В-9 (языки интерфейса — механизм готов, ПТ-36) · Ф-38 (вкладка «Замечания»). Закрытые пункты листа — в нотах D39.136–145, здесь не держатся.- Сделано (сводно) — снимок ленты закрытых эр в archive/PROGRESS-2026-08-04-09.md; детали — D-лог и слайсы.
- ⭐ КУРС НА 04.09 — ПОРЯДОК РАБОТ, СОБРАННЫЙ ВЕЕРОМ ПО ВСЕМУ БЭКЛОГУ (31 агент, 46 кандидатов, шесть срезов + опровергатели + критик полноты). ⚠ Главный результат метода, а не списка: из 46 кандидатов бэклога опровержение пережили ДВА — остальное трекерная инерция; а то, чего в трекере не было ВОВСЕ, оказалось тяжелее всего, что в нём есть (строки 269–275, заведены этим же заходом). Порядок: (1) ЭКСПЛУАТАЦИЯ — ✅ ЗАКРЫТА ЛЕНДИНГОМ 05.09 (
7e2226a+3e84716, акт D39.201): бэкапы с ПРЕДЪЯВЛЕННЫМ восстановлением, дверь для не-браузерного клиента, имя книги. Строки 269 · 270 · 274 закрыты и сняты из таблицы; ниже — история заказа. Строка 269 бэкапов нет ни у оплаченной работы, ни у денежного реестра — ЕДИНСТВЕННАЯ находка дня без частичного исхода: одна потеря диска необратима и недоказуема · строка 270 у продукта НОЛЬ дверей:bearerTokenобъявлен и не выдаётся, живой цикл 04.09 прошёл через dev-вход, который прод отказывается запускать, фронт заморожен · строка 274 имя книги в выданном файле исходноязычное и не чинится ничем (дёшево, а ломается первое, что видит человек). (2) ДЕНЬГИ И ЕДИНИЦА ЗАКАЗА — РЕШЕНО 04.09 во ВТОРОЙ редакции, строки 276–283: заказ это ОБЪЁМ, объём меряется ЗНАКАМИ ИСХОДНИКА ПО ЮНИТУ (движок публикует в манифесте), «страница» — их отображение и её размер это ДАННЫЕ ЛОКАЛИ; вердикт ДО клика, сумму человек не выбирает. ⚠ Первая редакция мерила ГЛАВАМИ и пала: глава надёжна в одном случае из трёх, дыру нашёл владелец. ⚠ Тем же вопросом вскрыта ВТОРАЯ ненадёжная единица —character_countсчитает байты файла (для EPUB — zip) и подписан у пользователя «Знаков», строка 282. ⚠ ФОРМА ЗАКРЫТА РЕШЕНИЕМ ВЛАДЕЛЬЦА 05.09 (D39.196): баланс — ДЕНЬГАМИ и виден, ползунок потолка — деньгами, второй ползунок объёмом (главы если распозналось, знаки если нет), старт = холд. Запрет «денег в UI» ОТОЗВАН владельцем; ждать от него больше нечего. Разбор трёх независимых чтений вarchitecture/15-money-path.md§«ОТКРЫТАЯ РАЗВИЛКА 04.09»;PD-440/PD-441. Смена единицы — амендмент D39.84, объявленный требующим отдельного слова ещё при вписании глав (D39.110 п.2а, «добор оркестратора»); сам владелец 28.08 назвал нынешнюю ручку «денежной ручкой с подписью главы» (D39.165 §1). ⚠ Смена единицы БЕЗ «сказать, когда кончилось» ухудшает продукт: стена перестаёт быть свойством книги и становится свойством ввода, то есть встречается ПЕРВЫМ действием, а не в конце. (3) ДЫРА ЧЕРЕЗ ПОЛЬЗОВАТЕЛЬСКУЮ ДВЕРЬ — ✅ ЗАКРЫТА ЛЕНДИНГОМ 05.09 (81a89e9, акт D39.206): границаinternal/membank/wirefence.go, три точки исполнения, инвариант снова выполняется КОНСТРУКЦИЕЙ. Строка 271 закрыта и снята; ниже — история заказа. Строка 271: правки банка едут в system-сообщение дословно, а ратифицированный инвариант «untrusted DATA, никогда инструкции… выполняется КОНСТРУКЦИЕЙ» конструкцией больше не выполняется. Дёшево, и обязано быть закрыто ДО первого внешнего пользователя. (4) КАЧЕСТВО — ЦЕЛЬ №1. ⚠ ФОРМУЛИРОВКА «НЕ МОЖЕТ СТАРТОВАТЬ» БЫЛА НЕВЕРНА И СНЯТА ВЛАДЕЛЬЦЕМ (D39.198 п.5, испр. 05.09): из четырёх названных гейтов (24 · 13а · 55 · 149) ТРИ сняты его словом, четвёртый гейтом не был. Живое здесь другое и оно в строке 275: приоритет назван — (1) 100% консистентность · (2) отсутствие выдумок · (3) художественность, и он говорит не о весах рубрики, а о том, ЧЕЙ ОТКАЗ ОСТАНАВЛИВАЕТ ВЫПУСК. Классы дефектов привязываются к УЗЛАМ (банк · редактор · черновик), а не сливаются в одно взвешенное число: оно не диагностирует. ⚠ Дорогое расхождение здесь остаётся, но НЕ то: приоритет №1 сегодня кодом НЕ исполняется — доки держат порог 98%,glossary_missотгружается флагом ранга 5, а приоритет №2 носителя не имеет вовсе (строка 286). (5) ВТОРАЯ ПАРА ЛОМАЕТСЯ МОЛЧА — после (1)–(4), пока пара одна, цена ошибки нулевая. Строка 272 шаблон книги один на все пары и раздаёт КАЖДОЙ книгеtranscription: palladius· строка 273 пар-шов асимметричен: нет промптов — падает громко, нет целевых ДАННЫХ — выключается молча ВМЕСТЕ С БАНКОМ, то есть книга переводится целиком за полные деньги без механизма консистентности · строки 258/259 через раннер нет ни одной фикстуры с не-ru целью, латинописьменной цели в репо нет вовсе. ⚠ Что веер НЕ менял: горизонт (ДОБОР ИДЕАЛА → вторая пара → МАСШТАБ → пилот → ридер-IDE) остаётся тем же; переставлен ПОРЯДОК ВХОДА в него, и вход теперь эксплуатационный, а не качественный — потому что пускать пользователя некуда и нечем страховать.- Курс: этапы ОБЩНОСТЬ · КАЧЕСТВО БАНКА · ПАКЕТ-ЧЕКЕРОВ · ФРОНТ-ЭРА · шов/платформа/движковые блокеры — ПРОЙДЕНЫ (D39.59–123). Хвосты курса живут строками: 16 (полная цена холодного старта; edit-волна на малых прогонах отработала и оплачена — 58 вызовов волновым драйвером 23–25.07 плюс 648 до драйвера, счёт по леджерам
~/books/gu-zhenren/**/*.db) · coldrun-b фаза C заморожена чекпойнтом легитимно (D39.86; эталон денег/поведения — coldrun-a, read-only); развилка 0731 решена и исполнена (D39.87/91, код553f1a3).- Горизонт (D39.62/67, освежён D39.95): ДОБОР ИДЕАЛА (первым прогоном: оси голоса 24 · авто-режим · цена 16; остаток арбитража банка = рецензент спорных кластеров при ре-пробе — D39.102). ⚠ Испр. 05.09 (D39.198 п.5): прежняя редакция держала здесь ТРИ предусловия, снятых владельцем, — жильцы ролей (149: разморозка ничего не разблокирует, пока идут доработки) · веса K1–K12 (13а: веса не нужны, мерить по узлам) · вне-претрейн чекпоинт (55: прогоняем на тех же текстах, оговорка — ограничение ВЫВОДА, а не требование новой книги) → ВТОРАЯ ПАРА живьём (ja→ru; преп 81) → МАСШТАБ → пилот Ф2.5 (гейт резюме-строки 80; строки 62–68, 85) → Ф3 ридер-IDE (69–71). Стоячие: ToS-триггер 25.10 · Ш-2 до go1.27 (⚠ + x/text Unicode 17 тем же тулчейном — строка 119, реестр §Б-108 справочника якорей) · платные прогоны разблокированы (проба провода — D39.97, конфиги 112 залендены).
- Стек (полная карта роль→модель→конфиг→квирки — STACK.md, D39.126): draft deepseek-v4-flash thinking-ON
low⚠0731 → терминолог (та же модель) → editor deepseek-v4-pro БИЛИНГВ ИНТЕРИМ (топология ПОДТВЕРЖДЕНА при неразличимости жильцов — D39.117; закон-блок ОБЯЗАТЕЛЕН и ВНЕСЁН — D39.104 п.2, вайр-батч принят D39.199; glm-5 резерв; вахта маппинга эффорта pro — §Б-108) → судья gemini (Ф2, в движке НЕ построен — строка 33); канал B Mistral+grok; ~$0.85/ранобэ (D30.4) — ⚠ ТРИГГЕР ПЕРЕ-КАЛИБРОВКИ СРАБОТАЛ 31.08 (испр. 02.09): платный прогон отработал и дал собственную оценку движкаprojected_book_usd = 1.1377277707на десяти главах при куплённых $0.436110; число D30.4 держать как июльское. ⚠ Вендор-факты 13–15.08 (пере-пин ИСПОЛНЕН и ПРИНЯТ, D39.137): таблица цен запинена ПИКОМ (flash 0.44/1.32 · pro 1.32/3.96/кэш-хит 0.044 за 1M; счёт шиппинг-c1 = 100% DeepSeek ⇒ ×4.2–4.4 в пике / ×2.1–2.2 в долине — замер по трём прогонам); ⚠ испр. 05.09: носители про эффортproБОЛЬШЕ НЕ ПРОТИВОРЕЧАТ — и квирки (§3г), иSTACK.mdговорят одно: ручка ДОХОДИТ до модели с вендор-апдейта 13.08. Живой остаток один — вендор-сверка маппинга и ВЕЛИЧИНА эффекта, строка 237(б); ⚠ ВЕСА pro сменились под тем же слагом (V4-Pro-0813, класс D39.61) — вахта-риг готов (остаток 172); покупки фазы Д на deepseek до 16.08 16:00 UTC — по старым ценам. ⚠ ВЕСЬ банковый контур (банкнота+терминолог+классификатор) ВКЛЮЧЁН в shipping-c1 сb8154cd—enabled: trueу обоих гейтов иclassify_types: true, бюджеты по $1.00 (прежде жил только ран-локальным конфигом книги; строка 140 — ⛔ его единственный входmining.contrast_pathв git ОТСУТСТВУЕТ, развёртывание обязано положить артефакт, иначе контур не исполняется вовсе, носитель — строка 251; сверка STACK.md 09.08 — факт шире прежней декларации «одна банкнота»); эскалация в shipping заbudget_usd: 0(STACK.md §примечания).- ЕДИНЫЙ БЭКЛОГ — отдельный файл BACKLOG.md (одна таблица, единственный трекер проекта, ID строк прежние; каждая петля обязана иметь диспозицию: решено / отложено-с-записью / отклонено; ведёт оркестратор). ⚠ Счёт очереди — бюллетень в ШАПКЕ ТОГО ФАЙЛА, здесь копии НЕТ (
python3 docs/scripts/counts.py; переезд 06.09 — D39.218).- Архивы хроники:
archive/PROGRESS-2026-07-04-10.md(D31) ·-10-13(D39.6-гигиена) ·-13-25(стройка паков 11–16, rerun2) ·-25-31(паки 17–20 · мини-прогон · полигон-пакеты 5–8 · ToS · холодный прогон; D39.26–58) ·-08-01-02(сессии №9/№10: общность · качество банка · coldrun-b · открытие фронта/платформы; D39.59–90, срез D39.105) ·-08-02-04(сессии №11–№13: ручки эффорта · стандарты · контракт API · платформа P0 · банк-арбитраж; D39.91–105 + снимок шапки эры №15) ·-08-04-09(пинги закрытых паков эры №15) ·-08-14-15(закрытые бэкенд-записи №16–17: эмиттер шва · migrate · пере-пин DeepSeek; вынесено D39.139). Записи ниже — живой хвост (№16+, эра D39.124+; подрезка D39.139).
📌 СОСТОЯНИЕ ПАКОВ
Залендены и ратифицированы, приёмочные дампы — телами нот: платформенный P11 — D39.169 · движковый пак «деньги» — D39.170 · платформенный P12 — D39.180 (вместе с контрактным минором 0.9.0; PD-425 закрыт им же) · бэкенд-пак «деньги и честность выдачи» — D39.182 (тестов 1045→1083, удалённых ноль) · закон раскрытия движка — D39.181, ратифицирован владельцем и применён к одиннадцати экземплярам.
✅ ПАКИ 05.09 ОТРАБОТАНЫ И ПРИНЯТЫ ОБА С ДОФИКСОМ, промты в archive/prompts/ с баннерами исхода, зоны свободны: движковый «денежный стоп» — 81a89e9 + 616a8e4, акт D39.206 (18 находок приёмки, 6 снято, 12 устояло, 4 major — все четыре оказались УТВЕРЖДЕНИЯМИ, а не поведением); платформенный «пустить внутрь можно» — 7e2226a + 3e84716, акт D39.201 (20 находок, 5 снято, 15 устояло, 5 major — ТРИ в самом механизме бэкапа). Ниже — история паков 04.09. ПАКИ 04.09 ОТРАБОТАНЫ И ПРИНЯТЫ ОБА (испр. 05.09). Платформенный «закрыть цикл» — adf5e53, D39.194, контрактный минор 0.10.0 тем же актом (⚠ эррата 04.09-в: минор ратифицирован БЕЗ своей кодовой половины и сутки жил ложным на проводе; починено 7e204db). Движковый вайр-батч — приёмочный коммит 74ffe4f, D39.199, принят С ДОФИКСОМ; строки заказа 210·113·46·134·140·184·232 ЗАКРЫТЫ и сняты из таблицы, найденное вне карты отчёта заведено строками 287–290. ⚠ Эррата 04.09-д («пак НЕ принят») ИСЧЕРПАНА этим актом. ПАКИ 05.09 ВЫДАНЫ И ИДУТ: движковый «денежный стоп перестаёт быть аварией» (archive/prompts/BACKEND_MONEYSTOP_SESSION_PROMPT_2026-09-05.md — строки 271 · 277 · 278 · защёлка отказа) и платформенный «пустить внутрь можно» (archive/prompts/PLATFORM_OPERATIONS_SESSION_PROMPT_2026-09-05.md — строки 269 бэкапы с предъявленным восстановлением · 270 дверь для не-браузерного клиента · 274 updateBook · рантбук деплоя). ПАКИ 04.09 РАБОТАЛИ ПАРАЛЛЕЛЬНО (зоны независимы по коду; сцеплений ДВА, и второе найдено 04.09 уже после выдачи промтов — оба про то, чтобы не сорвать платный прогон платформы:
(1) форма манифеста ЗАМОРОЖЕНА на окно (
D39.190п.5): гейт интейка — строгое равенство одной константе, бамп отправил бы каждую книгу вparser_unavailable. (2) ⚠ ДАННЫЕ ЯЗЫКОВОГО ПАКЕТА — ТОЖЕ. Правкаbackend/internal/lang/data/*.txtдвигаетEmbeddedVersion→cutTag(докстрингbackend/internal/pipeline/manifest.go: «the embedded data feeds the CJK numerals and sentence terminators that place boundaries») → ключ валидности манифеста → на платформеrecut := storedKey != in.ManifestKey(platform/internal/pgstore/readmodel.go) →delete from unit_resolutions where book_id. То есть у книги, за которую заплачено, исчезают замечания читателя и счётчики глав — это строка бэклога 198. ⇒ Лендинг правки данных не кладётся, пока книга платного прогона живая; порядок лендинга — обязанность оркестратора, зоны об этом предупреждены пингами 04.09. Рычаг у бэкенда есть и он объявлен предпочтительным: снять рендер в Go, данные не трогать): бэкенд — вайр-батчdocs/BACKEND_WIREBATCH_SESSION_PROMPT.md; платформа — «закрыть цикл»docs/PLATFORM_EXPORT_SESSION_PROMPT.md. ⚠ Строка 160 взята, но идёт СВОИМ паком ПОСЛЕ двери: она бампаетmanifestVersion, у которого безопасного порядка деплоя нет (D39.190п.2). Строка 142 — после шагов 0–1 полигона (D39.190п.3). Предыдущие паки ОТРАБОТАНЫ 03.09, ПРИНЯТЫ С ДОФИКСОМ и заленджены —D39.187движок,D39.188платформа; составы и приёмочные дампы ТЕЛАМИ НОТ, промты вarchive/prompts/с баннерами исхода, план паков —archive/reports/NEXT_PACKS_PLAN_2026-09-03.md, решения — D39.190. ⚠ Живое отсюда одно и оно уже вылечено паком P13: у формы манифеста БЕЗОПАСНОГО ПОРЯДКА ДЕПЛОЯ НЕТ — гейт интейка сравнивает версию со строгим равенством одной константе (platform/internal/ingest/manifest.go, грепKnownManifestVersion), окна двух версий нет, поэтому порядок «сначала платформа, потом движок» из рантбука разворачивается на обратный.
✅ СНЯТО ЛЕНДИНГОМ 06.09 (D39.208): гейта БОЛЬШЕ НЕТ. Флаг едет в argv на КАЖДОМ спавне и пересчитывается, а названное ниже «живое основание» вылечено расширением условия — --resnapshot теперь едет на ЛЮБОМ продолжении, не только после правки банка (PD-422). Ниже — прежняя редакция, историей: ⛔ Проводка --max-units в платформу остаётся ГЕЙЧЕНОЙ. Живое основание одно и оно механическое: единственный писатель bank_moved_at — дверь правок банка (platform/internal/runs/bank.go:211=one statement sets it), а рост АВТО-банка от майнинга этого флага не ставит, поэтому майнящая книга на второй покупке идёт без --resnapshot и умирает на снапшот-гарде движка — холд взят, попытка сожжена (PD-422). ⚠ Сюда же переехал остаток закрытой строки 234 (испр. 05.09): проводка полей rebill_* через шов — часть ЭТОГО гейта, а не отдельная работа; ревизия справедливо заметила, что после закрытия 234 её остаток остался без видимого носителя. Это чинится проводкой признака движения банка от майнинга, а не решением владельца.
ОТКРЫТО НА ОРКЕСТРАТОРЕ №22:
Ресёрч-сессия ЗАКРЫТО 04.09. Оба отчёта топологии заленджены полигоном на СВОЕЙ ветке по прямому указанию владельца (textmachine-36 — лендинг research/29a7951a7) и приехали в main мержем ветки — то есть маршрутом, который и был назван правильным. Файлы на месте: docs/research/29-harness-topology-survey.md и …-codex.md.
⚠ ЖИВОЙ ОСТАТОК — РЕВЬЮ-ШАПКИ, и он на оркестраторе. ✅ У
research/30шапка НАПИСАНА 05.09 — долг по нему закрыт (попутно исполнена эррата, которую он сам требовал пять недель:research/22«LinguaGacha явно НЕ в мульти-агент/редактор» помечено протухшим; и снято его же требование к29-codex— якорь:368протух, реальный носитель:108говорит слабее и о другом). ✅ У29-codexшапка НАПИСАНА 05.09 — и она подтвердила снятое выше независимо: его же §4 п.12 говорит, что пробел в long-form детекторе машинности — в held-out точности и доле ложных срабатываний, а не в русском языке. ✅ Уresearch/29шапка НАПИСАНА 05.09 — ДОЛГ ЗАКРЫТ ПО ВСЕМ ТРЁМ ОТЧЁТАМ. ⛔ Первым в ней стоит §5.6: сфабрикованный sha256 (совпали 52 знака из 64, хвост дописан по памяти, потому что хеш ни разу не был виден целиком из-заcutв конвейере) — и норма, из него следующая: идентификатор, не виденный ЦЕЛИКОМ в выводе команды, нельзя воспроизводить по памяти. Тот же класс, чтоD39.207п.5, пришедший с другой стороны. ⚠ И граница, которую обязан знать всякий, кто цитирует оттуда числа: из 113 находок автор лично пере-открыла ШЕСТЬ. ⚠ Расхождения29и29-codexмежду собой НЕ разрешены никем — автор29не читала параллельный отчёт дальше его §1, (⚠ испр. 05.09: сама шапка 29 уже поправлена — «НЕ закоммичено» помечено протухшим, файл вmainсa7951a7; здесь остаётся долг ШАПКИ, а не факта о коммите). До шапок читать оба отчёта как ФАКТУРУ, не как ратифицированное. ⚠ Формулировка, которую шапка обязана нести, иначе следующая сессия выбросит замеры топологии: судья как СТАДИЯ ДВИЖКА не построен и не вызывался (0 вызовов), но судьи в ПОЛИГОНЕ были и есть. ⛔ Маршрут закрыт словом владельца 02.09: «не трогай соседнюю git tree ветку вообще» — файл принадлежит веткеpolygon, вmainприезжает мержем ветки, копированием из соседнего worktree — никогда (№22 так сделал, был поправлен, лендинг откачен).
НОРМЫ, ЗАРАБОТАННЫЕ ЭТИМИ ПРИЁМКАМИ:
- Зелёная батарея — это ПОЛНЫЙ список пакетов ПЛЮС отсутствие FAIL, а не отсутствие FAIL: обёртка
подавала
exit 0при падении в хвосте (поймала сама движковая сессия). - Линтер якорей гоняется ПОСЛЕДНИМ шагом, после того как код замер. Он судит доки трёх зон, но зоны его не зовут; в этот заход нашёл 21 указатель на исчезнувший код, и правки сдвигали цели дважды подряд — включая мои собственные, уже после починки.
- Якорь разрешается тем, ЧТО он утверждает, а не номером строки, на которой лежал (движковая сессия записала переезд по совпавшему номеру и промахнулась предметом).
- Колонка «подтверждено» отчёта, пойманного на ложных подтверждениях, снимается с доверия ЦЕЛИКОМ — критерий, отличавший ошибочные строки от верных, назвать нельзя.
pkillпо имени процесса на машине с параллельными сессиями бьёт по чужим.- Число или «доказано» уходит владельцу только после СВОЕГО прогона.
⚠ ПИНГ ЗОНЕ БЭКЕНДА (оркестратор №22, 04.09, вечер) — РЕВИЗИЯ ДОКУМЕНТАЦИИ ЗОНЫ ЦЕЛИКОМ
Внешний ревизор прочитал backend/README.md, все 11 файлов backend/docs/ (включая оба PUML текстом)
и арх-доки движка от первой строки до последней. Правит ЗОНА. Порядок — по цене ошибки.
1. ⛔ README.md:36 описывает инвариант через ключи, которые загрузка ОТВЕРГАЕТ. «Канал adult —
только permissive (fail-closed)»: permissive: и channel: — RETIRED и валят конфиг
(internal/config/models.go, греп LegacyPermissive; internal/config/pipeline.go, греп
LegacyChannel). Настоящий механизм — content_labels книги × accepts_labels модели — в README не
назван ВООБЩЕ. Сессия, строящая маршрутизацию контента по README, получит неподнимающийся конфиг.
Ту же ложь несут оба PUML.
2. ⛔ ОБА PUML БЕЗ ⚠-БАННЕРА рисуют снесённое, при том что docs/README.md подаёт их как
канонические диаграммы, правящиеся «одним коммитом с кодом»: exit-контракт из ЧЕТЫРЁХ кодов (в
cmd/tmctl/main.go — коды 4, 5 и полоса 10–19), глаголов 6 против 11, mined_delta/mined_rejects
как ключи book.yaml (RETIRED, валят загрузку), машинная .bank-stop.json (снесена D39.158),
Adult bool. В заголовке обоих — «синхронизировано с D1–D39.25» при живой голове D39.195.
3. README.md:95 называет боевой редакторский промпт v3 (⚠ испр. 05.09: второй адрес этого пинга — 10-prompt-architecture.md:23 — снят, потому что этот файл ЗОНА ОРКЕСТРАТОРА и бэкенд его не правит; поправлено своей рукой) —
в configs/pipeline-c1.yaml метка v4-discourse-reflow-nogenre, и с D39.182 она НЕСУЩАЯ
(TestPromptLabelsPinTheirBytes). Поверивший README либо бампнет v3→v4 в уже-v4 файле, либо получит
красный гейт.
4. README.md:3 обещает автоматику, которой нет: «подсистемы не импортируют друг друга
(проверяется go list -deps)». Сама изоляция ДЕРЖИТСЯ — проверено, — но проверки нет:
grep -rn 'go list' backend --include=*_test.go --include=Makefile → 0, а internal/archguard несёт
три анализатора, границы импортов среди них нет. 13-tech-debt-anchors.md это констатирует, README нет.
5. ⚠ ОБЩНОСТЬ ПЕРЕОЦЕНЕНА, и долг без носителя. README.md:23 («гейты по данным, Go-веток по паре
нет») и README.md:16 («internal/text — script-agnostic, без языковой политики») — сверх-утверждения:
internal/text/norm.go встраивает китайскую таблицу трад→упр, складывает катакану в хирагану и
БЕЗУСЛОВНО сливает ё→е для ЛЮБОЙ цели (белорусская цель ломается тихо); санитайзер считает только
latinLetters/cyrLetters, поэтому греческая/арабская/хинди цель получает «латинскую вставку» на
каждом слове; граница слова в банке проверяется только для Latin/Cyrillic. ⇒ Ревью-вопрос «пара,
которой в репо нет, без правки Go» для не-кириллической цели отвечается НЕТ, а README это скрывает.
6. Ратифицированная норма зоны держится на СНЯТОЙ строке. DISCLOSURE_LAW_DESIGN.md:219-221:
«Пока строка бэклога 246 открыта, новый класс вводится в полосу ТОЛЬКО вместе со сверкой… Закроется
246 — оговорка снимается». 246 ЗАКРЫТА 04.09 (D39.194) ⇒ оговорка снялась молча, и это надо
подтвердить или переписать сознательно, а не по факту исчезновения строки.
7. ⚠ СЕМЬ ПРОТУХШИХ ТОКЕН-ЯКОРЕЙ В backend/docs/ — и до сегодня их не видел никто. Корень
backend/docs в линтере ОТСУТСТВОВАЛ с самого его заведения; добавлен 04.09 (docs/scripts/counts.py,
греп backend/docs в lint_anchors). ✅ ЗАКРЫТО 05.09: все семь пере-навешены (616a8e4 два мёртвых + e7d6b3f пять съехавших), --lint → 0. Ниже — состояние на середине дня, читать как историю. ⚠ Прежняя редакция: «починены ДВА из семи, пять живы» (DISCLOSURE_LAW_DESIGN.md:40-44 целят в quality.go · status.go ×3 · bookbuild.go — зона бэкенда, пинг в её секции). ⚠ Прежняя редакция этой строки говорила «семь пере-навешены» — ложь, выведенная из ожидания, а не из прогона линта; поймана внешним ревьюером. Починенные два не съехали, а УМЕРЛИ: целили в (DISCLOSURE_LAW_DESIGN.md:264 и MONEY_HONESTY_REPORT.md:285) не съехали, а УМЕРЛИ: целили в chunkrun.go=SourceEchoExpected: role == roleTerminologist, подстроки которой на HEAD нет вовсе — её съел переход на isBankRole. Прежняя редакция этой строки перечисляла краснеющие цели и была верна ровно до починки. Прежде краснели: DISCLOSURE_LAW_DESIGN.md:40-44 (пять целей
подряд — quality.go, status.go ×3, bookbuild.go), :264 и MONEY_HONESTY_REPORT.md:285
(chunkrun.go:40). ⚠ Эррата D15.2 от 02.09 УЖЕ указывала мимо — гейт не мог этого увидеть по
построению. Команда: python3 docs/scripts/counts.py --lint.
8. Ссылки «строка N» на строки, ВЫПАВШИЕ из таблицы при закрытии: README.md:26 (103 — фантом,
снят 31.08), pipeline.puml (99 · 100 · 101 · 125 · 145), DISCLOSURE_LAW_DESIGN (246 · 238 · 239 ·
194), internal/membank/decisions.go:84 (210 — закрыта 04.09). Бэклог закрытые строки НЕ хранит, а
доки зоны адресуют их как живые.
9. Мелочи с адресом: README.md:5 «актуализировано 01.08», тело цитирует ноты 23–28.08 ·
13-tech-debt-anchors.md:174 цитирует STACK.md в состоянии, которого там уже нет (ручка эффорта
pro — оба носителя датированы 04.09 и противоречат) · SEAM_PACK_FINDINGS.md:130 «у bank-apply
ноль вызывающих на платформе» — platform/internal/runner/bankapply.go строит вызов · :1133 «два
хита» → четыре · MONEY_HONESTY_PLAN-NOTE.md:35 «22 поля» → 21 на её же HEAD.
10. НЕ ОПИСАНО, А НАДО: пакет internal/langscreen (новый, на денежном пути вердиктов) в README
не упомянут вовсе · карта пакетов не называет ~20 несущих файлов internal/pipeline (volume.go,
rebill.go, reprice.go, refusal.go, terminologist.go, bookbuild.go…) и пять в internal/store ·
cmd/tmmutate (каталог посадок, объявленный ГЕЙТОМ; ⚠ число из этой строки снято 06.09 — стояло «141», в дереве 211: литерал в рабочей строке живёт дольше предмета, поэтому здесь его больше нет — счёт берётся из cmd/tmmutate/mutations.json) и cmd/tmvet не названы · цена закона
раскрытия («загейчен на 40 %», Г1/Г2 не построены) в статус-борде 09 не оговорена.
⚠ Что оркестратор поправил СВОЕЙ рукой в свою зону тем же заходом: статус-борд
09-target-architecture.md говорил «цикл РАЗОМКНУТ» и «канон 0.9.0» в день своего же «освежения» —
оба ложны с adf5e53/58bca19; висячая ссылка на закрытую 246 в шапке секции «Бэкенд»; корень
backend/docs в линтере.
Бэклог
⟶ ПЕРЕЕХАЛ 06.09 в BACKLOG.md (ратификация — D39.218). Таблица вынесена дословно, номера строк не менялись: «строка N» ищется там же, чем и здесь —
grep -n '^| N |' docs/BACKLOG.md. Заголовок оставлен НАМЕРЕННО, чтобы прежние ссылки «секция „Бэклог“ в PROGRESS» доезжали в один хоп. Счёт очереди — бюллетенем в шапке того файла; здесь копии НЕТ (один носитель на факт, D39.112).
(Указатели на архив-слайсы хроники — бюллетенем «Архивы хроники» в CURRENT-STATE; здесь копий нет.)
Бэкенд
⚠ ПИНГ ОРКЕСТРАТОРА №23 (17.09) — ТРИ ЯКОРЯ backend/docs/ УЕХАЛИ ИЗ-ЗА МОЕГО ВЫНОСА; ЧИНИТЬ ВАМ, В ВАШУ ЗОНУ Я НЕ ЛЕЗУ
17.09 по заказу владельца я срезал этот журнал с 5178 строк до 634: отчёты десяти ПРИНЯТЫХ паков уехали в
archive/PROGRESS-2026-09-07-16-backend-packs.md. Вместе с ними уехали цели трёх ваших якорей в
backend/docs/CHAPTER_STRUCTURE_DESIGN.md (строки 1774, 1783, 1785): они целятся в docs/PROGRESS.md:2880 и :1874.
Новые адреса — archive/PROGRESS-2026-09-07-16-backend-packs.md:2482 и :1476 (сдвиг ровно 398 строк: рез с 415-й плюс 16 строк шапки среза).
⚠ Я их ПОПРАВИЛ И ОТКАТИЛ ОБРАТНО, когда увидел, что лезу в чужую зону — файл сейчас побайтно равен HEAD, правка ваша.
⚠ Ниже точки реза якорей не было ни одного (пере-снято прибором перед выносом), так что больше у вас ничего не сдвинулось.
ОТЧЁТ пака «БАНК — ЧТО МОЖНО УЗНАТЬ И ПОЧИНИТЬ ЗА $0» (16.09, сессия textmachine-main-11). НЕ КОММИЧУ — дерево передаю оркестратору №23
Деньги пака: $0. Платных вызовов моделей не было ни одного. Все числа сняты по уже купленному сырью прогонов A и B, открытому только на чтение и только с КОПИЙ в скретчпаде.
Что построено — по пунктам заказа
| пункт | исход | чем предъявлено |
|---|---|---|
| §4.1 громкий отказ, когда у ЦЕЛИ нет строк инъекции | сделано, и ШИРЕ заказа: арм пять, а не три | backend/internal/pipeline/injectionpreflight.go:96=func (r *Runner) checkInjectionTexts + вызов backend/internal/pipeline/runner.go:389=if err := r.checkInjectionTexts(logger); err != nil { рядом с соседним отказом :364=if forWrite && r.Pipeline.Gates.Terminology.Enabled && r.pack == nil {; пин TestABankItsTargetCannotStateRefusesBeforeItIsBought (6 подтестов) |
| §4.1 предикат ПОЛНОТЫ, а не заголовка | сделано | lang.InjectionTexts.MissingKeys / Authored / GenderKeyGaps + реестр roleInjectionKeys (chunkrun.go); пины TestTheInjectionKeysAreOneVocabulary, TestAPartialInjectionSetIsVisibleToTheGuard |
| §4.2 отказ роли перестаёт быть передачей (путь а) | сделано; сентинел НЕ тронут | terminology.go — ветвь declined рядом с isNoDst; пин TestAProseDeclineLandsInTheDeclineBucketAndNotInTheBank |
| §4.2 мусор разведён с отказом по корзинам | сделано | ветвь hasLetter + счётчики NoLetters/DeclinedByPhrase; пины TestARenderingWithNoLettersReadsAsUnansweredNotAsCanon (парсер) и TestADeclineAndGarbageLandInDifferentBuckets (сквозной, все три исхода в одном ответе) |
| §4.2 реестр фраз — ДАННЫЕ, лендится пустым и запинен пустым | сделано, плоскость выбрана иначе — см. «Отклонения» | backend/internal/lang/bankdata/decline-phrases.txt + declinephrases.go; пины TestTheDeclineRegistryShipsEmpty, TestTheDeclineMatchIsTheWholeFieldAndFoldsTheShapesAModelWrites, TestAProseDeclineNeverBecomesTheBooksCanon (проводка) |
| §4.3 ДВА предиката | сделано | pre-call terminology.Candidate.Contest (contested.go), post-call pipeline.BankStopRow.Contest (stopcontest.go) |
| §4.3 $0-харнесс реплея | сделано | backend/cmd/tmbankprobe/ + движковый ридер таблицы стопа pipeline.ParseBankStopTable с раунд-трип пином |
| §4.3 таблица чувствительности на обоих источниках с обоими знаменателями | сделано | числа ниже; знаменатели напечатаны с компонентами |
| §4.4 носитель для «новой улики не было» | ответилось ЧИСЛОМ, а не «данных нет» | режим -passes того же харнесса |
| мутации новых мест | 37 записей, каталог 441 → 478, все помечены battery |
cmd/tmmutate/mutations.json |
§4.1 — что именно стережёт отказ, и почему условие ШИРЕ промта
Предмет: у цели без строк инъекции оба банк-блока рендерятся в НОЛЬ БАЙТ без ошибки (membank.RenderGlossaryBlock/RenderEditorConstraintBlock гейтятся на HasData(), а lang.InjectionTextsFor возвращает нулевое значение для незнакомой цели молча). Отказ стоит в openRunner, формой RefusalBadConfig, до открытия волн и до первого платного вызова, и только на пути записи — $0-чтение книги остаётся возможным (D20.4, запинено отдельной веткой).
⛔ Арм, по которым строки попадают в банк, ПЯТЬ, а промт называл три. Инъекция строится при r.baseMemory != nil, то есть мимо гейтов:
gates.terminology— роль консолидирует строки на этом прогоне;gates.banknote— черновик спрашивается о таблице терминов;book.yaml glossary_seed— сид;<book_id>.mined-delta.yaml— подписанные владельцем строки. ⚠ Путь ДЕРИВИРУЕТСЯ (backend/internal/config/book.go:210=b.MinedDelta = filepath.Join(dir, b.BookID+MinedDeltaSuffix)), поэтомуbook.MinedDelta != ""истинно ВСЕГДА и как арм негоден — проверяется НАЛИЧИЕ файла (decisionFilePresent);- авто-банк, оставленный в сторе предыдущим прогоном (
backend/internal/pipeline/mining.go:723=func (r *Runner) loadAutoBank). Гейт — ран-локальный конфиг книги (D39.126п.2а), а строки в сторе — нет: книга с выключенными гейтами, без сида и с банком от прошлого прогона инжектит так же молча.
Армы спрашиваются в порядке цены (backend/internal/pipeline/injectionpreflight.go:40=func (r *Runner) bankRowsReachTheWire): два поля конфига → один stat → чтение стора, и стор трогается только когда всё дешёвое сказало «нет». Ошибка чтения дверью не считается — WARN и «строк нет», по норме «предупреждение о деньгах не выдумывается из ошибки».
Полнота набора текстов — только по РЕНДЕРЯЩИМСЯ ключам, и вот какие вошли: glossary_header (блок переводчика) и editor_header (блок редактора) — по одному на роль, через реестр roleInjectionKeys, стоящий рядом с реестром рендереров. Не вошли: editor_unverified_header и unverified_marker — ОТСТАВЛЕНЫ (D39.104 п.2, ряд 134), их никто не рендерит, и требовать их значило бы заставлять новую пару заполнять мёртвый текст (ключи сделаны неэкспортируемыми, чтобы гард снаружи не смог их назвать). Гендерные директивы не требуются — цель без грамматического рода законно не пишет ни одной, и её строки обязаны рендериться без директивы; но ПОЛОВИНЧАТЫЙ набор (есть gender_male, нет gender_hidden) — это ошибка авторства, и на неё стоит WARN с перечнем недостающих ключей: механизм работает, теряется только формулировка владельца (D39.254 п.3).
Пин краснеет на ДАННЫХ, а не на отказе соседа: фикстура строит синтетическую пару zh→xx (реальный zh-источник langpack-а, каталог пары — копия zh-ru, промты пары на месте), и ПЕРЕД мутацией та же книга открывается на запись — то есть загрузчик и соседний отказ :356 пройдены. Четыре двери, доступные фикстуре (гейт терминологии · гейт банкноты · сид · мината-дельта · строки в сторе — пять подтестов, в каждом открыта ровно ОДНА); плюс негатив «книга без банка вовсе НЕ отказывается» (иначе условие выродилось бы в «у цели нет текстов») и ветка $0-чтения.
§4.2 — разбор ужесточён, корзины разведены
- Отказ прозой → та же корзина, что у сентинела: ключ присутствует с ПУСТОЙ передачей ⇒
Declined(плюс счётчикDeclinedByPhrase, потому что «роль отказалась словами» — это про ПРОМТ пары, и об этом иначе не узнать). - Мусор —
dstбез букв ВООБЩЕ («90»,——) → плохая строка, ключа в ответе нет ⇒Unanswered(плюс счётчикNoLettersи до восьми строк ОБРАЗЦАМИ). ⚠ Критерий — отсутствие БУКВ, а не наличие цифр: «Отряд 731» остаётся (контроль в пине). Направление ошибки объявлено в коде. - ⚠ Порядок проверок несущий, и фикстура это утверждает: односимвольный мусор («…») отбивается РАНЬШЕ, минимальной длиной
wellFormedLemma, поэтому пин использует ДВУхсимвольный — иначе он краснел бы и с удалённой веткой, то есть удовлетворялся бы чужой уликой. - Реестр отказных фраз лендится ПУСТЫМ: в боевом файле 0 строк данных при 26 строках файла (прибор —
grep -vc '^#\|^$', знаменатель напечатан), и пустоту стережёт пинTestTheDeclineRegistryShipsEmpty(internal/lang/declinephrases_test.go). Он утверждает три вещи разом: реестр парсится, в нём ноль языков, и файл ПРОЧИТАН (контроль по длине и по опорной строке) — «ноль строк» и «нет файла» здесь не путаются. ⛔ Условие, при котором вывод перестаёт держаться, названо в самом пине: реестр пуст, пока популяция отказов прозой не ИЗМЕРЕНА на купленном сырье (сегодня она ноль: 0 из 69 и 0 из 66 при контроле 69/69 и 66/66); появится замер — строка реестра и этот пин меняются ОДНОЙ правкой, и правка цитирует замер. МутацияBANK-decline-registry-ships-a-phraseсажает ru-фразу В ДАННЫЕ (не в Go — предмет пина тот же слой, что предмет посадки) и краснеет именно этим пином. Совпадение — СТРОГОЕ, по всему полю после свёртки (пробелы, кавычки любой формы, хвостовая пунктуация, регистр), и «клан, а не термин родства» остаётся передачей. Довод денежный: ложный отказ выбрасывает из банка строку, за которую книга ЗАПЛАТИЛА, а ретрая у банк-ролей нет вовсе (ряд 438). - Проводка запинена отдельно: открытый раннер обязан нести предикат (
r.declinedByPhrase != nil), потому что «реестр пуст» и «роль не получила реестра» на пустом реестре ведут себя ОДИНАКОВО, а состояния это разные — одно решение, другое незаметный баг. - Перекупки правка не вызывает: парсер в тождество запроса (
attemptRequest) не входит. Меняется СОДЕРЖИМОЕ банка ⇒memory_version⇒ пере-редактура под обычным согласием. Это записано в комментарии у самого файла данных.
§4.3 — два предиката и таблица чувствительности
Пороги в Go не зашиты ни одним значением. У обоих предикатов — структуры входов без умолчаний; единственный сегодняшний вызывающий — $0-харнесс, который варьирует их по сетке. Платного потребителя нет НАМЕРЕННО: маршрутизировать по неизмеренному признаку запрещает сам пак.
Знаменатели (заданы промтом, напечатаны с компонентами): pre-call — кандидаты на входе роли; post-call — строки, на которые роль ОТВЕТИЛА. На этом сырье они СОВПАДАЮТ, и видно почему: settled 0 · unresolved 0.
⛔ Расхождение 67/66 и 70/69 объяснено, и оно не про кандидатов: лишняя строка в bank_stop_presented — АЛИАС 方源的. Таблица пишется presentedSurfaces = src + ВСЕ алиасы кластера (mining.go), то есть это множество ПОВЕРХНОСТЕЙ, а не кандидатов, и знаменателем кандидатов быть не может. Одна и та же лишняя строка на обоих прогонах.
| порог (pre-call, знаменатель — кандидаты на входе роли) | A-покупка 1 | A-покупка 2 | B-покупка 1 | B-покупка 2 |
|---|---|---|---|---|
| conventions ≥ 2 | 9/69 = 13.0 % | 9/68 = 13.2 % | 8/66 = 12.1 % | 8/65 = 12.3 % |
| conventions ≥ 2, доля лидера ≤ 0.50 | 8/69 = 11.6 % | 8/68 = 11.8 % | 8/66 = 12.1 % | 8/65 = 12.3 % |
| conventions ≥ 3 | 3/69 = 4.3 % | 3/68 = 4.4 % | 4/66 = 6.1 % | 4/65 = 6.2 % |
| conventions ≥ 4 | 0/69 = 0 % | 0/68 = 0 % | 1/66 = 1.5 % | 1/65 = 1.5 % |
| «не поддержан» (черновики не дали НИ ОДНОЙ передачи) | 0 | 0 | 0 | 0 |
⚠ Знаменатель второй покупки на единицу меньше первой, и это не опечатка: строка, которую банк РЕШИЛ (NOT ASKED), до роли не доходит — фильтр решённых стоит перед первым платным вызовом, — поэтому она не входит НИ в pre-call, ни в post-call знаменатель. Первая версия моего харнесса держала её в pre-call и выбрасывала из post-call: два знаменателя расходились на строку, не дошедшую ни туда, ни сюда, и каждая доля слева была тихо разбавлена. Исправлено, числа выше — после исправления.
⚠ Арм доминирования на этом сырье почти инертен, и это свойство СЫРЬЯ: у мульти-конвенционных строк почти везде по одному чанку на вариант, то есть ничья; порог 0.50 двигает A с 9 на 8 и B не двигает вовсе. Значит на этой книге «спорный» определяется ОДНИМ числом — количеством конвенций.
| сигнал (post-call, знаменатель — строки, на которые роль ОТВЕТИЛА) | A-1 | A-2 | B-1 | B-2 |
|---|---|---|---|---|
| нет передачи (unresolved) | 0/69 | 0/68 | 0/66 | 0/65 |
конфликты (CONTRADICTS / банк уже держит) |
0/69 | 0/68 | 0/66 | 0/65 |
invented (передачи не было среди черновиков) |
11/69 = 15.9 % | 14/68 = 20.6 % | 17/66 = 25.8 % | 16/65 = 24.6 % |
conf ≤ 60 |
12/69 = 17.4 % | 11/68 = 16.2 % | 14/66 = 21.2 % | 14/65 = 21.5 % |
conf ≤ 70 |
27/69 = 39.1 % | 28/68 = 41.2 % | 25/66 = 37.9 % | 27/65 = 41.5 % |
conf ≤ 70 + invented |
28/69 = 40.6 % | 30/68 = 44.1 % | 28/66 = 42.4 % | 29/65 = 44.6 % |
conf ≤ 70 + invented + конфликты + unresolved |
28/69 = 40.6 % | 30/68 = 44.1 % | 28/66 = 42.4 % | 29/65 = 44.6 % |
Выбранное число И ЕСТЬ ответ на «сколько строк ушло бы на второй вызов». ⛔ Предикат, построенный на конфликтах, на этом сырье проверить НЕЛЬЗЯ — их популяция ноль, и это сказано прямо, а не выдано за замер. Контроль напечатан: invented виден в 11 и 17 записях, значит прибор omitempty-поля ВИДИТ.
⚠ Граница числа уверенности соблюдена и названа в коде: D39.102 п.2 ратифицирует conf как ordinal-очередь ревью ВНУТРИ одной модели. Порог здесь решает, КОГО посмотреть ещё раз, и ничего не весит; выбирать им передачу или сравнивать двух моделей код не может и не делает.
§4.4 — посылка «новой улики не было» получила носитель, и число сошлось с ратифицированным
Прибор: разбор ДВУХ таблиц стопа одной книги (project.db.bank-stop.txt первой и второй покупки) движковым ридером, соединение по поверхности, сравнение ВХОДА строки (тип, канал, частота, предложения черновиков с числом чанков, улики миньера, окна KWIC) — и никогда ответа.
- A: сменили передачу 12; из них вход был байт-идентичен у 11.
- B: сменили передачу 14; из них вход был байт-идентичен у 14.
- ⛔ ПОПРАВКА 16.09 (нашла приёмка, я подтверждаю): знаменатель у этих долей был НЕ ТОТ. Прибор печатал «12 из 69» и «14 из 66», а из ЧИСЛИТЕЛЯ строка, решённая банком, исключена — значит и в знаменателе её быть не должно: верно 12 из 68 и 14 из 65. Класс тот же, что у арма
unresolvedв пост-колл-сетке (ряд 462): доля считается по популяции, из которой её же предмет вычтен. Сами числа смен и совпадений (12 · 11 · 14 · 14, итог 25 из 26) от этого не двигаются — двигается только доля. - Итого 25 из 26 — ровно число
research/35§П1, снятое НЕЗАВИСИМЫМ методом, который вдобавок видит окна KWIC (метод K1 поnoteих не видел вовсе). - Единственное исключение названо:
宗祖祠堂у A — сменился ТИП (place→term), то есть уехал классификатор, а не улика черновиков. - ⛔ Из счёта смен исключены строки, которых вторая покупка НЕ СПРАШИВАЛА (
NOT ASKED): в обоих прогонах это方源. Его «смена» — артефакт того, что банк его решил, а не пере-решение; засчитав его, я бы раздула ровно то число, из которого считается экономика. - Что сменилось на самом деле, проверено: между покупками в обоих прогонах подписаны РОВНО ДВЕ строки (
方源,古月山寨), то есть уехали якорь подписи и состав батчей — при неизменном блоке каждой строки.
Чего в сырье нет и почему вопрос закрыт не полностью: тела запросов не хранятся нигде (LOG_LLM_BODIES=1 пишет их ТОЛЬКО в лог и только на LOG_LEVEL=debug, обрезая до 32 КБ), а СОСТАВ батча и содержимое ЯКОРЯ не сохраняются вообще. Значит «якорь против стохастики модели» по-прежнему не разделено — ровно как и говорил research/35.
Дизайн персистенции (предложение, $0 в производстве): хранить не тела, а состав батча — упорядоченный список ключей кандидатов — и строки якоря, которые для этого батча собрал CanonFor, ключом на (book_id, snapshot_id, batch_idx, request_hash), рядом с request_log. Это байты на покупку, строится в момент terminologyMessages, тождество запроса не трогает и отвечает на оставшийся вопрос ТОЧНО: если состав и якорь совпали, а ответ другой — это стохастика модели, и больше ничего.
Чем проверено — команды, которые можно повторить
- Пины и гейт зоны:
cd backend && make battery(цельbattery=build vet fmt lint test,-race). - Мутации:
go run ./cmd/tmmutate -root <КОПИЯ> -id <список>— 37 новых записей, по одному прогону на запись; полное подмножество —-battery. - Замеры:
go run ./cmd/tmbankprobe -sheet A-pass1=<...bank-stop.txt> … -db … -passes A=<первая>,<вторая>. - Базы читались ТОЛЬКО с копий,
mode=ro&immutable=1; оригиналы не тронуты (mtime всех трёх файлов — 15.09, прежний).
Отклонения от буквы промта — три, каждое с доводом
- Реестр отказных фраз — в bankdata-плоскости движка, а не в langpack. Langpack резолвится ПО КНИГЕ из
langpack_root, и книга вправе не иметь его вовсе (золотой ja→ru гоняется без пака) — тогда один и тот же ответ модели читался бы двумя способами в зависимости от пути вbook.yaml. Тем же доводом в дереве обоснован эмбеддед-блэклист провайдерских отказов (internal/lang/data/refusal.txt). Плоскость bankdata, а неdata/, потому чтоdata/складывается вEmbeddedVersion, который едет внутри каждого unit id: правка реестра пере-чеканила бы id всех книг, а разбор ответа не меняет ни байта ни одного запроса. - Условие §4.1 расширено с трёх дверей до пяти арм (гейты ×2, сид, мината-дельта, строки в сторе) — см. выше.
- §4.1 судит полноту набора, а не заголовок — по прямому ответу оркестратора, и только по рендерящимся ключам.
§10 — что НЕ удалось и чего я не проверяла
- ⛔ Отказ прозой на настоящем сырье проверить НЕЛЬЗЯ, и это цена пустого реестра. Сквозной пин работает на подменённом предикате; на боевых данных механизм инертен до первой авторской фразы. Пока фразы нет, ряд 445 закрыт ПОЛОВИНОЙ: мусор ловится всегда, отказ прозой — нет.
- Популяция мусора на купленном сырье — НОЛЬ (0 из 69 и 0 из 66; контроль: буквы есть у 69/69 и 66/66). Пин по необходимости синтетический, и это назвать обязательно: замером на сырье он не является.
- Половинчатый набор текстов инъекции сквозным пином не покрыт. В эмбеддед-данных ровно одна цель (
ru); синтетическая вторая пере-чеканила бы unit id каждой книги. Предикат запинен на байтах вinternal/lang, проводка — на цели БЕЗ строк вовсе. - Я не пере-майнила книгу. Кандидаты §4.3 восстановлены из проекции стопа — собственной записи движка о том моменте; настоящий реплей потребовал бы книги, langpack-а версии фриза и базы, которую движок открыть не может (см. п. 5).
- ⛔ База прогона A стоит на схеме 16 при голове 18. Следствие проверено чтением:
store.OpenReadOnlyприcurrent != len(migrations)ОТКАЗЫВАЕТ, аstore.Openприcurrent < len(migrations)МИГРИРУЕТ. То есть реплей через движковый стор по этой улике не «рискован», а невозможен без переписывания схемы купленного прогона. ⚠ И отдельно, почемуimmutable=1ОБЯЗАТЕЛЕН, а не желателен: обычныйmode=roНЕ бесследен — он создаёт/обновляет рядом с уликой файл-shm. Замерено на себе: первый мой зонд поA-afterоставилproject.db-shmс сегодняшним временем при БД, чьёmtimeосталось 15.09. Байты базы не изменились ни у одной из трёх, но каталог улики был тронут, и толькоimmutable=1этого не делает. Дисциплина (утверждена оркестратором как норма зоны): улики платных прогонов копируются в скретчпад, читаются своим ридером наmode=ro&immutable=1, хеши копий печатаются. - Пост-колл предикат на конфликтах непроверяем на этом сырье (популяция ноль на обоих прогонах, при непустых листах 660 и 648 строк).
- Денег второго вызова я не считала — харнесс даёт число СТРОК, а не сумму: цена зависит от модели и упаковки батчей, а это решение следующего пака.
- Режим
-compare(A↔B, два РАЗНЫХ прогона) даёт числа о другом предмете — там черновики покупаются заново, поэтому улика меняется по причинам, не имеющим отношения к пере-спросу решённого. Оставлен в инструменте, но в выводы §4.4 не входит. - ⛔ Мой собственный дефект метода, найденный и исправленный по ходу. Первая версия §4.4-инструмента читала
mined-signature.yamlи складывала в «улику» ВЫБРАННУЮ передачу — аnoteназывает только ЧИСЛО чанков у топ-предложения, но не его текст. Выходило «улика двигалась» у 100 % смен (0 из 12 и 0 из 14 «одинаковых») — число правдоподобное и целиком ложное. Переписано на таблицы стопа; прежний метод описан в комментарии файла, чтобы следующий не повторил. - ⛔ И дефект пина, найденный мутацией, а не глазом. Утверждение «ридер обязан отказать на незнакомой строке» я сперва проверяла строкой, ДОПИСАННОЙ в конец файла — а её ловит ДРУГОЙ гард («поле вне блока»). Мутация «default → continue» выжила; фикстура пере-построена так, чтобы строка стояла ВНУТРИ блока до первого контекста, и теперь пин краснеет именно на ней.
Адверсариальный проход по СВОЕЙ готовой работе (§5 промта) — восемь находок, все починены
Проход вёлся двумя руками: мой собственный разбор и ОДИН советчик-фабл (разрешённый промтом), которому было велено атаковать и грунтовать каждую находку адресом. Каждую его посылку я пере-проверила деревом сама; ниже — то, что подтвердилось, и что с этим сделано.
- ⛔ Ридер таблицы стопа ПАДАЛ на контексте, который движок пишет сам. Окно KWIC через границу абзацев несёт
\n\n(чанкер склеивает абзацы именно так,AttachKWICрежет только края), то есть в листе появляется ПУСТАЯ СТРОКА ВНУТРИ контекста — а я читала пустую строку как конец блока терма. Один такой терм делал НЕЧИТАЕМЫМ весь лист и замер невозможным. Воспроизведено моим собственным тестом до починки (a field line outside any term block), починено лукэхедом (пустая строка — граница, только если следующая непустая ОТКРЫВАЕТ ряд), фикстура раунд-трипа теперь несёт ровно такой контекст, посадкаBANK-stop-table-reader-breaks-on-a-paragraph-break. - ⛔ Разбор списка ФАБРИКОВАЛ элементы. Писатель склеивает
evidenceчерез", ", а майнер пишет одним элементом«related to mined 青山, 白山»— то есть с запятой ВНУТРИ. МойsplitListвозвращал три элемента там, где в прогоне было два, молча, при сходящемся числе рядов. Починено правилом «строка списка сохраняется ЦЕЛИКОМ»: сепараторы этого формата не экранируются, поэтому ридер не изобретает элементов, а раунд-трип утверждает асимметрию явно (whole), посадкаBANK-stop-table-reader-splits-a-list-item-in-two. Тот же класс уCONTRADICTS/THE BANK ALREADY HOLDSзакрыт тем же правилом. - ⛔ Реестр
roleInjectionKeysбыл НЕПОЛОН для редактора.RenderEditorConstraintBlockоткрывается тем же гейтомHasData(), аHasDataчитает ГЛОССАРНЫЙ заголовок — значит цель сeditor_headerи безglossary_headerпроходила бы гард и рендерила ноль байт. Сегодня это скрыто объединением ключей (во всех четырёх боевых пайплайнах есть обе роли), но реестр обязан быть верен ПО РОЛИ, а не по совпадению. Ключи редактора теперь{glossary_header, editor_header}, посадка перенаведена. - ⛔ Комментарий у файла данных называл пин, которого НЕ СУЩЕСТВУЕТ (
TestTheShippingConfigsDeclineNothingByProse;grepдаёт единственный хит — сам комментарий). Это ровно «якорь на несуществующую цель», который у нас класс ошибки. Заменён на два настоящих имени. - ⛔ Нулевое значение
StopContestOptsбыло АКТИВНЫМ армом. Сентинел «-1выключает» означал, что структура, которую никто не заполнял, выбирала все строки сconf=0— самые срочные строки листа. Файл, объявляющий «умолчаний здесь нет», не вправе иметь нулевое значение с поведением. Арм получил свой флагUseConf, посадкаBANK-stop-contest-zero-value-is-an-active-arm. - ⚠ JSON-сайдкар не несёт метки «не спрашивали» (
bankexport.goтакого поля не пишет), поэтому на ВТОРОЙ покупке решённая банком строка выглядела бы как «ответа не было», портя оба знаменателя. Харнесс теперь печатает это предупреждение для JSON-источников и велит брать ТАБЛИЦУ стопа; все итоговые числа сняты с таблиц. - ⚠ В «строках, которые спасло бы правило не-переспрашивать», сидели строки, которых никто не спрашивал. Решённые банком и неотвеченные в ОБЕИХ покупках теперь считаются отдельными классами и из этого числа исключены.
- ⚠ Неточность доккомментария: одиночный
—до счётчикаNoLettersне доходит — его отбивает минимальная длинаwellFormedLemmaна проверку раньше. Формулировки в коде и в WARN поправлены (в этом отчёте порядок был назван верно с самого начала).
Проверено и дефекта НЕ найдено (называю, чтобы был виден охват): путь подписи банка bank-apply новым отказом НЕ задет — он открывает стор напрямую (internal/pipeline/bankdecisions.go:179=lock, err := store.LockProject(book.ProjectDB)), мимо openRunner; в cmd/tmctl/main.go на запись раннер открывают только translate (:280) и redrive (:484), все прочие — NewReadOnlyRunner. ⚠ Следствие, которое я всё же НАЗЫВАЮ: redrive --dry-run идёт через тот же NewRunner, поэтому книга с уже оплаченным банком и целью без текстов не получит даже $0-проекцию плана — это тот же класс, что у соседних отказов (ключи, роутинг), но на УЖЕ оплаченной книге он режет и бесплатный путь. Также проверено и чисто: порядок ветвей ParseReply (сентинел → фраза → форма → буквы → эхо → язык), симметрия свёртки фраз, отсутствие кириллицы и CJK в строковых литералах новых файлов вне тестов и комментариев, и то, что ни одна книга дерева не имеет цели, отличной от ru. ⛔ ПОПРАВКА 16.09, и она про мой метод, а не про вывод: число «16 книг» я взяла из отчёта советчика и НЕ пере-снимала — ровно то заимствование чужого числа, которое этот же отчёт запрещает в другом месте. Пере-снято моей рукой: command grep -rl '^target_lang:' по корню даёт 24 файла, command grep -rh '^target_lang:' — 30 строк, все ru, не-ru ноль (command grep, а не обёртка, иначе каталог books/ не читается). Вывод держится; число было не моё.
Ось денег (§6 промта): что каждый механизм делает с ЧУЖИМИ деньгами, если сработает ошибочно
| механизм | ошибка в сторону «сработал зря» | ошибка в сторону «не сработал» | почему выбран такой перекос |
|---|---|---|---|
| отказ §4.1 | прогон, который сегодня работает, не стартует. Денег НЕ теряется — отказ стоит ДО первого платного вызова, — теряется время оператора | книга покупает банк-роли и стоп подписи, а в модель не уходит ни байта банка: заплачено за то, чего никто не увидит | перекос в сторону отказа выбран сознательно: цена ложного отказа — сообщение с рецептом, цена молчания — оплаченная волна. Ложный отказ при этом сужен пятью армами: книга БЕЗ банка любой цели проходит свободно (отдельный негативный подтест) |
| корзина «мусор» §4.2 | законная передача без букв (чистый символ) теряется — одна строка предложения, владелец подпишет рукой | «90» становится каноном книги на всю книгу и едет редактору законом | направление объявлено в коде тем же доводом, что у соседнего экрана языка ответа (OffLanguage) |
| реестр отказных фраз §4.2 | оплаченная ВЕРНАЯ передача выбрасывается из банка, строка пере-спрашивается на следующей покупке — а ретрая у банк-ролей нет вовсе (ряд 438) | отказ прозой остаётся каноном | именно поэтому реестр лендится ПУСТЫМ и совпадение строгое: цена ложного срабатывания здесь выше цены пропуска |
| предикаты §4.3 | сегодня — ничего: платного потребителя нет ни одного, предикат никем не читается | то же | маршрутизировать по неизмеренному признаку запрещает сам пак; сначала популяция, потом маршрутизатор |
| харнесс §4.3–4.4 | денег не тратит и не может: читает только файлы, immutable=1 |
— | но ЧИСЛО, снятое неверно, обоснует неверное денежное решение следующего пака, и поэтому у двух его методических правил стоят собственные пины (cmd/tmbankprobe/main_test.go) |
Что передаётся на лендинг
29 путей в backend/ (14 изменённых + 15 новых) плюс docs/PROGRESS.md; счёт снят git status --short --untracked-files=all backend/. Новые файлы (15): internal/pipeline/injectionpreflight.go · internal/pipeline/stopcontest.go · internal/pipeline/stopcontest_test.go · internal/pipeline/bankstopparse.go · internal/pipeline/bankstopparse_test.go · internal/pipeline/bankreplyparse_test.go · internal/terminology/contested.go · internal/terminology/contested_test.go · internal/terminology/decline_test.go · internal/lang/declinephrases.go · internal/lang/declinephrases_test.go · internal/lang/bankdata/decline-phrases.txt · cmd/tmbankprobe/main.go · cmd/tmbankprobe/passes.go · cmd/tmbankprobe/main_test.go. Изменённые (14): internal/pipeline/runner.go · chunkrun.go · mining.go · terminologist.go · contourpreflight_test.go · testdata/operator-messages.txt (+3 строки моих сообщений, +2 восстановленные — см. ниже) · internal/lang/embedded.go · bankdata.go · embedded_test.go · internal/terminology/terminology.go и три его тест-файла (механическая правка 13 мест вызова ParseReply под новый параметр) · cmd/tmmutate/mutations.json.
⚠ Одна правка в operator-messages.txt требует взгляда при лендинге: каталог держит ОДНУ строку на КАЖДЫЙ ВЫЗОВ, поэтому две его строки законно повторяются дважды (quality.go QualityReport и terminologist.go runBankRoleBatches <dynamic>). Мой первый скрипт вставки применил set() и обе дубли съел; замечено сразу по красному гейту, восстановлено, итоговый диф — +5 строк и ни одного удаления (git diff --stat это и показывает).
Как повторить замеры
Улики (оригиналы НЕ трогать, копировать): ~/tm-coldrun-a/evidence/bankstop-paid/project.db.bank-stop.txt (A, покупка 1) · ~/tm-coldrun-a/stand/books/bk_ROEHZBD46ALFI43E/project.db.bank-stop.txt (A, покупка 2) · ~/tm-coldrun-b/evidence/paid-bankstop/project.db.bank-stop.txt (B, покупка 1) · ~/tm-coldrun-b/stand/books/bk_NH6275ZIRFFTLZHG/project.db.bank-stop.txt (B, покупка 2) — последние два адреса промт не называл, я их нашла: у B есть СВОЙ каталог книги в стенде, а в нём вторая таблица стопа и БД после прогона.
cd backend
go run ./cmd/tmbankprobe -sheet A-pass1=<A1> -sheet A-pass2=<A2> -sheet B-pass1=<B1> -sheet B-pass2=<B2> -db A-after=<копия A project.db> -db B-at-stop=<копия B project.db> -passes A=<A1>,<A2> -passes B=<B1>,<B2>
Гейт зоны и мутации — числа
make battery (цель зоны, а не go test): MAKE_EXIT=0 — и это прогон ПОСЛЕ починок адверсариального прохода, на том дереве, которое я передаю. Линтер — 0 issues. (прогонов было три: первый красный на errcheck в моём же новом тесте — runToSignatureStop возвращает значение, реализующее error, лечится _ =, как у соседей; второй зелёный; третий — итоговый, после правок адверсариального прохода. Цель lint стоит ДО test, поэтому «тесты зелёные» до первой починки не значило ничего). Полнота сверена СПИСКОМ, а не хвостом: go list ./... = 24 пакета, вердиктов в логе 24, comm -23 пуст — и контрольный перевёрнутый comm -13 тоже пуст. FAIL — 0. ⚠ Пакетов стало 24, а не 23 как в акте D39.255: прибавился cmd/tmbankprobe.
SKIP — 4, названы поимённо: TestHelperEventsRun и TestHelperKillLoop (хелперы подпроцессов, скипаются по построению); TestMinerFullBookParity (нет стенд-данных: eval/exp16/data/jieba_dict_general_zh.txt отсутствует — проверено ls); TestCorpusBankKeyConflicts (нужен TM_CORPUS). ⭐ Последний я всё-таки прогнала — на своих КОПИЯХ улик, чтобы не трогать оригиналы: TM_CORPUS=<копии> go test ./internal/pipeline/ -run '^TestCorpusBankKeyConflicts$' → PASS, и он печатает свою популяцию с контролем: .db walked=3 · with a glossary table=3 · rows read=135 · approved=4 draft=131 · books with ANY conflict=0 · CONTROL: a planted contradicting unsigned row is reported on 2 of 2 books.
Мутации: каталог 441 → 478 (+37), помеченных battery 230 → 267. Прогнаны ВСЕ 37, по одному прогону на запись, на отдельных копиях дерева (одна копия — один мутатор; когда на первой шёл полный прогон подмножества, одиночные шли на ВТОРОЙ). Итог: 37 RED, но не с первого раза, и обе осечки записаны, потому что они про метод:
- 1 НЕИЗМЕРЕННАЯ (
BANK-silent-target-delta-door-closed): посадка не собиралась —presentстановился неиспользуемой переменной. «Не собралось» инструмент честно отдал отдельным исходом (nothing ran), а не зачёл как поимку; посадка пере-сделана на возвратfalseи пере-прогнана — RED. - 1 ВЫЖИВШАЯ (
BANK-stop-table-reader-skips-what-it-cannot-read), и она нашла настоящую дыру В ПИНЕ: моё утверждение «ридер обязан отказать на незнакомой строке» проверялось строкой, дописанной в КОНЕЦ файла, а её ловит ДРУГОЙ гард («поле вне блока»). Фикстура пере-построена — строка стоит ВНУТРИ блока до первого контекста, — и пин стал краснеть именно на том гарде, о котором говорит. Пере-прогон — RED. anchors swept: 0 of 478— ни одна запись каталога не протухла от моих правок. Сверх того я прогнала СОБСТВЕННЫЙ контроль по ВСЕМ 478 записям: строка-цель каждой найдена в дереве РОВНО один раз (прибор —python3, печатает число несовпавших; после правок адверсариального прохода две записи пришлось перенаводить, и контроль их нашёл). Тот же контроль — способ убедиться, что мутация не осталась в НАСТОЯЩЕМ дереве: пропавшая цель означала бы применённую правку; несовпавших 0 из 478.- ⚠ Две последние записи стерегут не движок, а МОЙ ПРИБОР (
cmd/tmbankprobe/main_test.go): «строка, решённая банком, не попадает ни в один знаменатель» и «сравниваемый вход НЕ несёт ответа». Оба правила я сперва нарушила, оба давали правдоподобные числа, и оба теперь краснеют посадкой.
Пере-снято вторым прибором
Каждое число сетки снято ДВАЖДЫ и разными приборами: Go-харнессом (tmbankprobe, движковые типы и движковый ридер) и независимым разбором на python3 тех же файлов. Сошлись: conventions ≥ 2 — 9 (A) и 8 (B); распределение конвенций B {1:58, 2:4, 3:3, 4:1}; conf ≤ 70 на B — 25 (сумма гистограммы {50:2, 55:8, 60:4, 65:1, 68:1, 70:9}); invented — 11 и 17; конфликты — 0 и 0 при непустых листах 660 и 648 строк. Сверх того JSON-сайдкар и ТАБЛИЦА стопа одной и той же покупки прочитаны двумя разными загрузчиками и сведены строка к строке: расхождений 0 из 66.
На чём судилась зелень
Гейт зоны прогнан на МОЁМ дереве (cd backend && make battery), не на чистом HEAD: предмет приёмки — дерево сдачи, а на HEAD ни одного из новых пинов нет. Полнота прогона сверялась СПИСКОМ (go list ./... против вердиктов лога), а не чтением хвоста. ⚠ Линтер якорей доков на грязном дереве даёт ложные красные (оркестратор видел 31 против восьми) — я на нём ничего не судила и его не чинила: он читает пути, которых в моей зоне нет.
Остаток, названный на момент сдачи
- ⭐ ЗАКРЫТО ПОСЛЕ СДАЧИ: полное батарейное подмножество каталога прогнано целиком —
267 mutation(s) run, 0 unexpected outcome(s), выживших 0,anchors swept: 0 of 478,TMMUTATE_EXIT=0(20:22:48 → 21:15:39, отдельная копия~/tm-mut-11/tree). ⛔ И контроль, без которого это утверждение было бы о другом дереве:diff -rq backend ~/tm-mut-11/tree— ноль расхождений, то есть измеренная копия байт-идентична тому бэкенду, который залендили. На момент самой сдачи прогон ещё шёл, и в акт он входит этим числом, а не молчанием. ⚠ Первый запуск я ОСТАНОВИЛА на 165 записях из 267 (выживших 0) и перезапустила с нуля: посреди него легли починки адверсариального прохода, а прогон шёл по ЗАМОРОЖЕННОЙ копии — его вердикт был бы о дереве, которого уже нет. Частичный лог сохранён отдельно (mutfull-prefix-tree.log), и выдавать его за прогон сдачи нельзя. - ⚠ Каталог копий не переживает смену, и это НЕ гипотеза: мой
~/tm-mut-11снёс оркестратор (rm -rfв окне 19:36–19:43 по слову владельца о сносе мусора; он назвал это сам). Мой первый запуск полного прогона упал наcp: cannot create directory … No such file or directoryв 19:45:42, хотя я удаляла только подкаталогtree. ⛔ И вот разбор, который тут важнее признания: прогон, дошедший до 165 записей, в это окно НЕ попадал — он стартовал в 19:47:15 на каталоге, который я пере-создала, шёл до 20:21:54 и остановлен МНОЮ; в его логе ноль ошибок чтения (единственное совпадение грепа по «cannot» — имя мутацииSTOP-the-spend-line-closure-cannot-reach-the-emitter). То есть его числа недействительны по МОЕЙ причине (дерево до починок), а не по чужому вмешательству, и путать две причины нельзя: у вмешательства вердикт был бы «файла нет», прочитанный как «мутация не поймана». Нынешний прогон начат в 20:22:48, уже после всего. ⇒ норма, которую стоит держать обеим сторонам: перед сносом чужого каталога спрашиваютps, а рабочий каталог живой сессии в репозитории не упоминается ПО ПОСТРОЕНИЮ, поэтому греп по репо его не находит.
Вопросы оркестратору (работу не блокируют) — ответы получены 16.09, решения его
⭐ Все три закрыты словом оркестратора при сдаче: (1) реестр ru-фраз — отдельной строкой бэклога с критерием «популяция измерена на сырье», строку заводит он; (2) дизайн персистенции §4.4 — строкой с весом «скоро», формой «состав батча + строки якоря ключом на request_hash»; (3) ряд 445 не снимается, а СУЖАЕТСЯ: половина про мусор закрыта, остаток — отказ прозой, инертный до первой фразы. Ниже — как вопросы были поставлены.
- Заполнение реестра ru-фразами — отдельной строкой бэклога с критерием «популяция измерена на сырье», как договорились. Моё предложение по критерию: фраза заводится, когда встречена в ОТВЕТЕ роли на купленном прогоне, а не когда звучит правдоподобно.
- Дизайн персистенции §4.4 (состав батча + якорь ключом на
request_hash) — заводить ли строкой бэклога и в чей пак. - Ряд 445 закрыт наполовину — мусор стережётся всегда, отказ прозой инертен до первой фразы. Как отмечать в реестре требований.
ЗАПИСКА-ПЛАН пака «БАНК — ЧТО МОЖНО УЗНАТЬ И ПОЧИНИТЬ ЗА $0» (16.09, сессия textmachine-main-11, промт docs/BACKEND_BANK_ZERO_LAYER_SESSION_PROMPT.md, ряды 441 · 445 · 459 + замер под 449). НЕ КОММИЧУ — дерево передаю оркестратору №23
Записка стоит ДО первой правки (§7 промта). Пак $0: платных вызовов моделей нет ни одного, всё — либо детерминированный код, либо замер по уже купленному сырью прогонов A и B, открываемому только на чтение.
Что беру и в каком порядке.
- §4.1 — громкий отказ, когда у ЦЕЛИ нет строк инъекции. Гейт в
openRunnerрядом с соседним отказом того же рода (backend/internal/pipeline/runner.go:356), формаRefusalBadConfig, условие шире гейта терминологии (терминология ИЛИ банкнота ИЛИ непустойglossary_seed— инъекция строится приr.baseMemory != nilмимо гейтов,backend/internal/pipeline/waverun.go:592). Текст отказа называет лечение: строки живут вbackend/internal/lang/data/injection.txt, их добавление двигаетlang.EmbeddedVersion()⇒ снапшот. Пин краснеет на ДАННЫХ: фикстура проходит загрузчик и соседний отказ и сверяет СВОЙ текст и класс. - §4.2 — отказ роли перестаёт быть передачей. Путь (а): сентинел
⟦TM-NO-DST⟧НЕ трогаю (снятие = отмена ратифицированногоD39.42п.1), ужесточаю разбор ответа и развожу ДВЕ корзины — отказ (сентинел + отказ прозой) →Declined, мусор (dstбез букв вообще) →Unanswered. Реестр отказных фраз — ЯЗЫКОВЫЕ ДАННЫЕ, не литералы в Go. - §4.3 — предикат «спорный» как ДВА предиката (pre-call на кандидатах до первой траты · post-call на строках стопа) + $0-харнесс реплея по купленным базам + таблица чувствительности по нескольким порогам, на обоих источниках, с обоими ЗАДАННЫМИ промтом знаменателями.
- §4.4 — носитель для посылки «новой улики не было»: что реально менялось во входе между двумя покупками одной строки, либо честный дизайн персистенции, если тел запросов нет.
- Мутации новых мест — в каталог, не разовым прогоном; гейт зоны
make batteryцеликом; адверсариальный проход по своей же готовой работе.
Чем меряю. Базы прогонов — python3 + sqlite3.connect('file:<путь>?mode=ro', uri=True) (CLI sqlite3 на машине нет); ключи сайдкаров считаю по ВСЕМ записям, а не по первой; рядом с каждым нулём печатаю контрольную величину. Пины — прогоняю и показываю вывод. Полнота батареи — сверкой СПИСКА go list ./... против вердиктов лога, а не чтением хвоста.
Что уже пере-снял своим прибором на входе (числа промта сошлись): B (/home/ubuntu/tm-coldrun-b/evidence/paid-bankstop/project.db) — glossary 0, bank_stop_presented 67, request_log 18, checkpoints 24, сайдкар 66 записей, поле conventions у 66 из 66, invented 17; A (/home/ubuntu/tm-coldrun-a/stand/books/bk_ROEHZBD46ALFI43E/project.db) — glossary 69, bank_stop_presented 70, request_log 33, сайдкар 69 записей, conventions 0 из 69 (поля нет вовсе), invented 11. Девятнадцать якорей промта прогнаны построчно — все 19 указывают туда, куда говорит проза.
Опасности, названные ДО работы (полный список — в эхо-протоколе оркестратору):
- ⛔ Схемы двух баз РАЗНЫЕ, а не только состояния: у B 17 таблиц, у A 16 (в A нет
wave_selection). ⇒ движковый стор этих баз не открываю НИКОГДА: он применит миграции и испортит улику. Go, если понадобится, работает на копии в скретчпаде. - ⛔ Знаменатель pre-call расходится с таблицей стопа на единицу с каждой стороны:
bank_stop_presented67 против 66 записей сайдкара (B) и 70 против 69 (A). Пока единица не объяснена, «доля спорных» будет утверждением о моём прочтении знаменателя, а не о предмете. - ⚠ Живая популяция §4.2 — ноль (
research/35§2.0, строка Б-5: 0 из 69 и 0 из 66 при контроле 69/69 и 66/66; пере-сниму сам) ⇒ пин по необходимости синтетический, и это называется, а не выдаётся за замер на сырье. - ⚠ Денежный риск пака — отказные ФРАЗЫ, а не мусор: ложное срабатывание превращает оплаченную верную передачу в отказ, книга теряет строку канона, а пере-спрос стоит денег на следующей покупке (ретрая у банк-ролей сегодня нет вовсе, ряд 438). ⇒ совпадение строгое, по всему полю, а не по вхождению подстроки.
- ⚠
HasData()— предикат ЧАСТИЧНЫЙ: он спрашивает толькоglossary_header; цель с заголовком глоссария, но безeditor_header, гейт пройдёт, а редакторский блок отрендерится с пустым заголовком. - ⚠ У предиката §4.3 в этом паке нет потребителя (маршрутизация — следующий пак) ⇒ лендится чистой функцией с $0-харнессом, ни один платный путь на него не смотрит; пороги в Go не зашиваю.
Отчёты бэкенд-паков 07–16.09 — ВЫНЕСЕНЫ В АРХИВ 17.09
Отчёты десяти паков, ВСЕ закрытые актами (
D39.225·D39.226·D39.228·D39.232·D39.240·D39.242·D39.245·D39.249·D39.251·D39.255), уехали вarchive/PROGRESS-2026-09-07-16-backend-packs.md— 4552 строк. Вынесено по заказу владельца 17.09 на снос устаревшего. Живое из этих отчётов живёт нотами и строками трекера, а не здесь. ⚠ Отчёт пака «БАНК ЗА $0» (D39.257) ОСТАВЛЕН выше: он вход следующего банк-пака.
Отчёты пака «закон банка честно» и петли D39.191 — ВЫНЕСЕНЫ В АРХИВ 11.09
Хроника закрытых пунктов — строки 210 · 113→46 · 134 · 140 · 184(а) и дофикс чужого пака (номера названы здесь намеренно: греп по номеру строки обязан приземляться на указатель, а не мимо), разметка свободы, самопроверка, «что не удалось», дофикс приёмки 04.09, круги 2 и 3 петли
D39.191) уехала вarchive/PROGRESS-2026-09-04-07-bank-law.md— 196 КБ, 14 секций. Вынесено по мандату владельца на снос протухшей прозы (D39.239п.4); ссылок извне на блок было 0. Живое из этих отчётов живёт нотами и строками трекера, а не здесь.
Полигон
ХОЛОДНЫЙ ПРОГОН A — КНИГА ДОШЛА ДО КОНЦА (11.09, полигон-сессия, пак POLYGON_COLD_RUN_A_SESSION_PROMPT.md)
Строка бэклога 16 закрыта замером: доведённая до конца книга стоит $0.419424. 蛊真人, главы 1–3,
zh→ru, от интейка до файла, прочитанного человеком. Отчёт (пре-рег + результаты + три прохода
критиков) — docs/experiments/24-door-to-file.md, инструменты — eval/door_to_file/, фризы be53cc8
(пре-рег и инструменты) и 44b33d9 (драйвер); бинари собраны из кода b0f5d89. Сырые платные
выходы — books/gu-zhenren/door-to-file/ (33 файла, не коммичены: репозиторий книг отдельный).
- Прогон: 25 мин 31 с, две попытки (банк-стоп exit 3 → резюм exit 0),
status: ready,paused_reasonпусто, 4 юнита из 4translated,exports.complete = tу txt (54 151 Б) и epub (20 187 Б). Сборка: семь полей чисты. Стоп-правила не срабатывали ни разу. - Деньги сошлись СЕМЬЮ путями на 419 424 µUSD; ⚠ независимый среди семи — ОДИН: движок считает, движок пишет, платформа материализует из его же потока. Открытых резерваций 0.
- ⭐ ВПЕРВЫЕ КОНСИСТЕНТНОСТЬ ТЕРМИНОВ ЗАМЕРЕНА ПО ТЕКСТУ ЧИТАТЕЛЯ, а не по черновику. Движок сам
называет две популяции вопроса (
spread≥2— 9 термов,INVENTED(no draft proposed it)— 11, из них 7 вне первой): 16 из 69. Исход: 9 доехали формой банка · 6 отданы НЕ банковской формой (高脚吊楼: банк «дом на сваях», в файле «свайный дом» ×4, главы 1 и 3) · 1 отдан двумя формами («церемония открытия апертуры» ×9 и «великая церемония…» ×1, обе в главе 1). Механизм работает и работает не везде — и теперь у этого есть числа. Это прямой ответ на приоритет владельца №1. - ⛔ Четверть денег купила пустоту: 4 вызова из 27 вернулись на потолке
max_tokens($0.106472 = 25.4 %), три из них — РОВНО 0 символов ($0.094835 = 22.6 %), включая самый дорогой вызов книги ($0.071009,edit/deepseek-v4-pro, 16 000 оплаченных выходных токенов). Движок лечит перевыпуском с удвоенным потолком — 4 раза из 4 успешно: путь не рвётся, а дорожает вдвое. Вторая точка того же явления (08.09 было 32 %). - ⛔ Пин цены
deepseek-v4-flashпротух: вендорская страница сегодня даёт вход 0.30 / cache-hit 0.006 / выход 1.20 против наших 0.44 / 0.014 / 1.32 (уproсовпадает точно). Прогон по живым числам стоил бы $0.397246 — наш прайс завышает на 5.6 %. Прогон шёл 01:29–01:54 UTC в пятницу, внутри вендорского пикового окна 01:00–04:00 UTC ⇒ пиковое основание было верным. - ⛔
model_actual=deepseek-flashна 28 строках из 33, а шлёмdeepseek-v4-flash: нас считают под именем, которого в нашем реестре нет. Алиас это или другая модель — НЕ установлено. - ⛔ Терминологический контур оплачен дважды (до стопа и после резюма): 15.6 % книги, из них 6.9 % — второй заход. Разделения этих денег раньше не было.
- ⛔ Три ловушки для того, кто станет считать деньги по этим таблицам:
run_attempts.spend_micro_usd— величина НАКОПЛЕННАЯ (сумма по попыткам завышает цену на 38 %);errпуст на ВСЕХ 33 строках, включая четыре провальные (отказ виден только вdegraded); Σchunk_status.cost_usdнедобирает ровно терминологию ($0.354127 против $0.419423). - Строка бэклога 224 воспроизведена живьём: на банк-стопе
.bank.jsonнесётterms: []иproposed[]из 69 термов; проекция платформы — 0 до закрытия прогона и 69 строк после. - Две находки про развёртывание: книга, которую пайплайн переводит бесплатно, НЕ ПРОДАЁТСЯ
(
step_max_usd = 0→409 not_priced); шаблон книги по рецепту стенда роняет каждый стартc1безlangpack_root(exit 10). Ряды 411 и 412 завёл оркестратор. - Фриз-процедура пака была вырожденной: бинарь из линкованного git-воркри не несёт
vcs.*вообще, и правило «отказать приvcs.modified=true» на нём выполняется всегда. Заменено клоном. - ⚠ Круги НЕ сошлись: три прохода критиков дали 13 → 4 содержательных находок, и третий нашёл, что мой заказ следующей сессии чинил не ту функцию прибора, а знаменатель был не один. Всё внесено; сходимость не объявляю. Слабое место прогона названо в §11 отчёта — прибор расхождения форм и то, что защиты (стоп-правила, потолки) на боевой руке ни разу не выстрелили.
⚠ ПИНГ ОРКЕСТРАТОРА №23 (10.09) — ПЯТЬ ЯКОРЕЙ В ВАШИХ ДОКАХ УКАЗЫВАЮТ НЕ ТУДА
docs/experiments/ — ваша зона, рукой не трогаю. Адреса пере-снял своим прибором по тому же токену:
00-provider-quirks.md:163→backend/internal/llm/httpllm.go:517-522→ 739–751, токенSystemMessagesSingle;00-provider-quirks.md:164→backend/configs/models.yaml:137→ 173 (system_messages: single) иbackend/internal/llm/httpllm.go:528→ 750 (func toOpenAIMessages);23-editor-tier.md:5274→ тот жеmodels.yaml→ 173;:5276→ тот жеhttpllm.go→ 750.
Все пять сдвинул мой лендинг 3f05fab (пак оборванных вызовов правил httpllm.go и models.yaml).
Ещё два якоря 23-editor-tier.md:7739-7740 (pipeline-c1.yaml:95, pipeline-arm-glm.yaml:6) уехали
РАНЬШЕ и не от меня — цели я не трогал, токенов по прежним адресам там нет.
📌 02.09 · ПИНГ ОРКЕСТРАТОРУ (два входа в бэкенд) + ИТОГ СЛЕПОГО ЧТЕНИЯ. Решения владельца от 02.09 внутри.
Носители: пре-реги и результаты — eval/dovodka/blind-read/ (PREREG-BLIND-READ.md + RESULT-BLIND-READ.md с семью эрратами, PREREG-2-BLIND-READ.md + RESULT-2-BLIND-READ.md), прибор дрейфа — eval/dovodka/dreif.py.
-
РЕШЕНИЯ ВЛАДЕЛЬЦА 02.09 (ратификация за оркестратором). (1) Дефолт редактора —
low, бремя доказательства на том, кто включает дорогой режим. (2) Вопрос «offпротивlowпо качеству» закрыт как неизмеримый этим прибором — судейских реплик не покупать. (3) Питон-прибор дрейфа пишет полигон (сделано), настоящий прибор — в движок, это пинг ниже. (4) Покупка 50 глав на длину отложена до прогона в бэкенде (слово владельца). -
⚠ ВХОД 1 — офлайн-пересчёт по уже оплаченному тексту (
tmctl recheckили равное). Проверки движка исполняются ТОЛЬКО в момент генерации; готовый текст в базе перепроверить нечем, и потому частота ложных тревог пост-чека не измерима без покупки. Полигон закрыл дыру питон-двойником (dreif.py), но это не тот же прибор: у движка стеммер целевого языка и сохранённые формы, у двойника — сопоставление по началу слова. Два «детерминированных» прибора с разными ответами — тихий дрейф нормы; строку в бэклог просит полигон, решение за оркестратором. -
⚠ ПОПРАВКА К ЭТОМУ ПИНГУ (02.09, позже в тот же день): входов НЕ ДВА, А ЧЕТЫРЕ, и «включить гейт» из них самый мелкий. Разбор начат вопросом владельца («в бэкенде нет майнинга term — „мастер гу“ не замайнится»). Проверено исполнением: майнинг term РАБОТАЕТ (68 записей класса
term,蛊师 → гу-мастерв банке есть), но владелец прав по сути — цепочка «намайнил → классифицировал → подписал → инжектнул как закон → проверил» рвётся в ЧЕТЫРЁХ местах, и замеренный дрейф (30 ключей из 102 несут >1 передачу, максимум 7 форм) — их следствие.- (1)
term— класс-умолчание, а не решение.backend/internal/pipeline/banknote.go:79дословно: «bankTypeOK is the accepted type set; anything else falls back to "term" (a benign default)». Две трети банка пробы (68 из 102) сидят в этом умолчании. - (2) Классификатор умеет различать
term, но в пробе НЕ ДОБЕЖАЛ. Определение вbackend/prompts/zh-ru/classifier.md:20-23точное («реалия, понятие, предмет, материал, вещество, класс существ — всё, что переводится ПО СМЫСЛУ», пример元石 term). Однако лог пробы:batches_planned=8 · batches_running=6 · classify_batches_dropped=4приbudget_usd=0.05противestimate_usd=0.0978; итогunanswered=7,reclassified=5. Движок сам предупредил: «this bank is PARTIALLY consolidated — a budget cut a pass, so some terms were never offered to the role at all». ⇒ типы выставила банкнота или умолчание кода, а не тот механизм, который умеет. - (3) Промпт банкноты недоспецифицирует класс
term.backend/prompts/zh-ru/translator-banknote.md: просит «новых имён собственных и терминов», список типов даёт, но определенияtermнет, а единственный пример —师父 наставник title, то есть образец уводит в титулы; лимит «не более 20 строк» на фрагмент вытесняет понятия в пользу имён (имена заметнее). Правка промта — не Go и пары не касается. - (4) Инжект фильтрует по ПОДПИСИ, а не по классу.
backend/internal/membank/memory.go:663:status == "approved"→Confirmed, иначеAmbiguous;priorityRank(там же, ниже) вытесняет неподписанное первым при token-бюджете (glossary_token_budget: 800на 102 записи). Приapproved=0весь банк едет «неуверенным кандидатом» — форма не объявлена законом, и удерживать её нечему. Это и есть механизм дрейфа蛊师(«гу-мастер» / «мастер гу») и元石(семь форм). - ⚠ (5) НАБЛЮДАЕМОСТИ НЕТ на редакторской стадии.
retrieval_stateв базах пробы держит 35 строк, все под DRAFT-снапшотом (8d5721f65596), под edit-снапшотом (b76ab168d95b) — НОЛЬ строк. Доехал ли банк до редактора и сколько записей вытеснено бюджетом, из артефактов узнать НЕЧЕМ. Все счётчики на черновой стадии нулевые закономерно: банк рождается ИЗ черновика, на нём его ещё нет. - Порядок, который из этого следует (предлагается, решение за оркестратором): наблюдаемость инжекта на edit-стадии → бюджет классификатора (пять центов режут половину работы) → определение и пример
termв промте банкноты → подпись банка и заполнение форм → и только потом жёсткий режим гейтов. - ⚠ ТРИ ПОПРАВКИ К МОИМ ЖЕ УТВЕРЖДЕНИЯМ ВЫШЕ, найдены консилиумом 02.09 и пере-проверены мной исполнением.
· (5) сформулирован неверно в ПРИЧИНЕ. «Ноль строк под edit-снапшотом» — не разрыв, а схема:
PRIMARY KEY (book_id, chapter, chunk_idx)без snapshot_id (store/migrate.go), редактор мержит в ту же строку, иsnapshot_idв ней — просто последнее записанное. Вывод «наблюдаемости нет» ОСТАЁТСЯ верным, но дыра в другом: счётчики инжекта редакторской волны не пишутся никуда (pipeline/chunkrun.go:202). · «ни один $0-гейт не поймал латиницу» — неточно. Детектор латиницы ЕСТЬ и вызывается всегда (checks/cheapgates.go:192,lintLatinResidue), но по построению он наблюдатель, а не вердикт: дословноcheapgates.go:22-27— «They are OBSERVABILITY, never hard gates… never changes a chunk disposition». Гейт видел и молчал, потому что так устроен. · Источник «cultivation» — НЕ glm-5. Пере-проверено по стадиям: слово рождается в ЧЕРНОВИКЕ (deepseek-v4-flash, 7 клеток) во ВСЕХ руках, потому что черновик общий; редакторы DeepSeek его вычищают (0 в финальных текстахp9-low/p7-off), аglm-5— нет (3 клетки на edit, 2 доживают до финала). Значит это дефект не породителя, а фильтра, и прежняя формулировка «glm-5 опознаётся по латинице» верна по факту, но неверна по причине. - Улика к строке 46, а НЕ находка: полный провал языка цели.
books/dovodka/dv-i-z8-fb9ed5709e.json— глава пары zh→ru переведена целиком на английский: пере-считано мной, 7104 латинских знака, 0 кириллицы,finish=stop. ⚠ Прежняя формулировка «главного, чего в пинге не было» СНЯТА 03.09: это уже заказанная работа. Строка бэклога 46 называет ровно этот случай дословно — «Экран целевого языка: „полный связный перевод на английский" проходит»; дизайн пака заморожен владельцем (D39.92 п.1 closed-set + D39.93 изолированный модуль), предгейт — строка 113 (фикстура ~20 off-target). ⇒ ценность вычитки здесь — не гейт придумать, а дать строке 46 живую улику с боевого прогона.
- (1)
-
📌 03.09 · ВЫЧИТКА 17 ГЛАВ БОЕВОГО ПЕРЕВОДА ($0, 17 агентов Opus, по агенту на главу с исходником). Материал —
p9-low(дефолт редактора по решению владельца 02.09), экспортtmctl export --pairs. Инструкция вычитчику разделяла ДВА уровня: «читатель споткнётся» (против них меряется планка владельца ≤2 на главу, D39.20) и «мелочь корректора».- Планка НЕ взята: 59 блокирующих претензий на 17 глав = 3.5 на главу. В планку уложилась 1 глава из 17. При этом все 17 вычитчиков независимо ответили «читается как книга» = ДА.
- Классы (всего / из них ловится детерминированно): смысл-искажён 12/0 · имя-термин-непоследователен 10/10 · translationese-грубый 9/2 · род-гу 7/6 · логика-действия 6/1 · иное 5/3 · язык-не-тот 4/4 · пропуск 3/3 · меры 3/3. ⇒ механизируемо 32 из 59 (54%) ПО ОЦЕНКЕ ВЫЧИТЧИКОВ; ⚠ оценка завышена: прогон существующих
RunCheapGatesпо 11 цитатам дал 1 срабатывание из 11 (сегодняшний код берёт заметно меньше). - Остаток, который не берёт ни один детерминизм: 12 искажений смысла + 6 сломанных мизансцен = 1.1 на главу — то есть НИЖЕ планки владельца. Образец (гл.1): «перекрыл им путь, сделав шаг в сторону» — по-русски «посторонился», фраза противоречит себе; в оригинале 横跨一步 = шагнул НАПЕРЕРЕЗ.
- ⛔ Найдено проверкой самих вычитчиков (системнее, чем они доложили): заголовки глав теряются. Исходник даёт
第二十六节:一切组织的本质— номер И название; движок кладёт в заголовок только номер (chunk/chunker.gostripHeading/ApplyHeading), название сваливается в тело как обычная строка. Дальше как повезёт: название уцелело у 11 глав из 17, потеряно у 6 ⇒ на 2283 главах это ~800 глав без названия вперемешку с озаглавленными. Ловится тривиально: заголовок состоит только из номера. Улика к строкам бэклога 160/161/162 и 201. - Сырьё вычитки:
/tmp-экспорт не сохранён (волатилен), воспроизводится командойtmctl export --config arms/p9-low.book.yaml --pairs; вердикты 17 агентов — в задаче воркфлоуwfofkln2i.
-
📌 03.09 · КАНОН СУЩЕСТВУЕТ, ПОДПИСАН И НЕ ПОДАН В СТЕНД (проверено исполнением).
~/books/gu-zhenren/guzhenren-seed-v2.yaml— 58 записей, из них 53status: approved, 16 с полемgender. В нём ровно те термины, на которых спотыкались вычитчики:资质 → талант(канон владельца D39.21),元石 → первобытный камень(а в пробе намайнилось 7 форм),甲等/乙等/丙等 → класс А/Б/В(а в переводе «категория C» ЛАТИНИЦЕЙ),蛊师 → гу-мастер. В~/books/gu-zhenren/probe-4axes/book.yamlключаglossary_seedНЕТ — 0 вхождений, и шапка стенда объявляет это сознательно: «Сид НЕ подключается — банк рождается майнером + банкнотой, как в холодном прогоне». ⇒ Прежняя формулировка «банк не подписан» (запись 02.09) НЕТОЧНА и настоящим уточняется: не подписан МАЙНЕНЫЙ банк, а подписанный канон просто НЕ ПОДКЛЮЧЁН. Весь измеренный дрейф (30 ключей из 102 с >1 передачей) — дрейф конвейера с отключённым каноном. Контр-факт на той же книге: с подписанным банком эффективная консистентность 99.3–100% (Д50.2, 375–548 пар). ⚠ Записи蛊в сиде НЕ ХВАТАЕТ поляgender(средний род прописан прозой вnote) и стоитallow_short: falseприminKeyLenHan=2⇒ односимвольный ключ структурно вне автомата. Это две строки ДАННЫХ, не код. -
📌 03.09 · СВЕРКА С ПЛАНОМ ПОСЛЕ ЗАМЕЧАНИЯ ВЛАДЕЛЬЦА — 10 «предложений» из 11 оказались уже заказанной работой. Владелец: «вы рассуждаете без оглядки на ту архитектуру и код, что уже построена или ЗАПЛАНИРОВАНА». Замечание верное: консилиуму давали код и данные вычитки, но НЕ давали целевую архитектуру, ЕДИНЫЙ БЭКЛОГ и журнал решений. Тот же консилиум, подняв прежний контекст, прочитал план и снял свои же предложения. Сверено мной по носителям.
- Уже в плане: вынести вердикт-поля из хеша = строка 49 (спека
backend/docs/D15.2-content-addressed-resume-spec.md) · экран языка цели = строка 46 · заголовки глав = строки 160/161/162 и 201 (гейт пал словом владельца 15.08, D39.136 п.3) · петля ремонта = построена заenabled:false, включение — строка 13 (владелец) · морфо-гейт рода = строка 82 · числа и меры = строка 12 через триггер D39.79 п.4 · критик = строка 2 (владелец). - Уже ПОСТРОЕНО: род
neuterend-to-end — D39.69 §3 (13-tech-debt-anchors.md: «носитель ПОСТРОЕН»). Остаток по роду «гу» — две строки ДАННЫХ в сиде стенда (guzhenren-seed-v2.yaml:291-300:allow_short: false, поляgenderнет) плюс ключglossary_seed. - ⛔ Противоречит ратифицированному: патч-протокол редактора ↔ D39.108 п.1 «диффы откладываются» · критик как стадия движка ↔ D38.4 п.2 «семантический span-судья — ОТКАЗ» · подпись ~30 ключей поимённо ↔ D39.144 «подписывается ВЕСЬ банк ОДНИМ ОК; пер-термная масс-подпись = инерция» · канал идиом врезкой dst ↔ D38.4 п.1 «глоссарий-сидинг чэнъюй НЕ делаем» · таблица мер ↔ D39.79 п.4 «HARD-value-детектор НЕ строить».
- Что вычитка дала по-настоящему: улики к уже открытым строкам — 46 (глава на английском), 82 (7 дефектов рода), 142/13 (классы для точечной починки), 160 (6 глав из 17 без названия ⇒ ~800 на книгу), 12 (триггер реопена по числам НАЖАТ: #46/#13/#11). Это подтверждение заказанного, а не новый список.
- Метод-урок, дороже находок: сутки ушли на переоткрытие бэклога, потому что план не был подан консилиуму. Любой панели, обсуждающей ЧТО СТРОИТЬ, план подаётся вместе с кодом — иначе она уверенно переизобретает заказанное. ⚠ Для полигона отсюда следует и граница: строки 46/49/82/142/160/12 — зона бэкенда, полигон в них не лезет; его законная часть — улики и замер (см. ниже).
- Уже в плане: вынести вердикт-поля из хеша = строка 49 (спека
-
⚠ ВХОД 2 — пост-чек банка не имел ВХОДА, а не только был выключен. В пробе
gates.coverage.enabled: falseи блокаgates.glossaryнет — это известно; но сверх того: из 102 записей банка ни одна не доведена доapproved, иdeclпуст у ВСЕХ. Пост-чек проверяет подписанные термины (membank/mempostcheck.go), значит молчал он по двум причинам сразу. Условие включения жёсткого режима записано в самом коде — «после того, как владелец подтвердит точность», а точность мерить не на чем, пока банк не подписан. Порядок для бэкенда: подписать банк → заполнить формы → замер ложных тревог → решение владельца. -
ИТОГ СЛЕПОГО ЧТЕНИЯ (две редакции, 219 судей Opus, $0.66 на реплику
low₂). Редакция 1 дала 18:6 «дешёвая рука лучше» — вывод СНЯТ: судьям показывали усечённый черновик (стадияeditсклеивает несколько draft-чанков; в 10 юнитах из 15 опора покрывала 55–79%). Редакция 2 на склеенном по манифесту черновике (покрытие 99–100%) плюс активные нули (low₁противlow₂): судьи назвали победителя в 29 голосах из 30 на чистом шуме, перекос на шуме (80%) БОЛЬШЕ боевого (70%). Первичные исходы: точность 12:10:8 (p=0.842), художественность 19:8:3 (p=0.070, Холм 0.141) ⇒ различие НЕ ПРЕДЪЯВЛЕНО. Механика вскрыта: в 73 голосах из 74 побеждал вариант с меньшим числом претензий, а счётчик упирался в потолок в половине голосов. Текстовый шум одной руки (0.799) больше межрежимного (0.820). -
ПРИБОР ДРЕЙФА, первые числа ($0, на уже купленном). Терминов с более чем одной передачей в тексте — 13–16% от измеренных; сменивших форму между главами — 6–8%. Независимым путём (поле
spread, считает сам движок): 30 записей из 102 несут >1 передачу, максимум 7 форм у одного ключа (元石: «юаньши · камень юань · изначальный камень · первородный камень…»). ⚠ Разброс МЕЖДУ режимами (0.3–1.9%) не превышает шум-пола (2.4%, снят по паре реплик одной руки) ⇒ дрейф на этом отрезке — свойство черновика и банка, не редактора; экономия на редакторе к нему отношения не имеет. -
⚠ Мои ошибки этого пака, названные вслух: первая редакция пре-рега имела невалидный первичный тест (ничьи в знаменателе против H₀=50% дают ошибку I рода 17.8%) и правило решения с непокрытым пространством исходов; гейт слепоты искал
[A-Za-z]{2,}и пропускал одиночные латинские буквы (23–25 на руку, слепота при этом не пробита — асимметрия 8%); первый гейт покрытия мерил долю совпавших слов и срезал 14 юнитов из 15, потому что смешивал «нет опоры» с «сильно правил»; первый парсер банка искалsrc:вместо формата «ключ⇥передача» и печатал «дрейф 0%» на пустых вариантах — отказ пойман гейтом парсера, который теперь в приборе. Сверка с нормами оркестратора post-hoc: риг нарушил «оба порядка» (обе редакции), «полно-evidence окна» (редакция 1), «шум-полы измерены» (редакция 1), «детерминированный скорер > судьи» и D39.61 «вывод на агрегате до вскрытия единиц».
📌 02.09 · ПРОБА РЕДАКТОРА ПО ЧЕТЫРЁМ ОСЯМ КУПЛЕНА И ЗАКОНЧЕНА. Ответ на вопрос владельца «почему редактор дорог» получен: ОН ДУМАЕТ, А НЕ ПИШЕТ.
Отчёт — docs/experiments/23-editor-tier.md Д54. Пре-рег стенда — eval/dovodka/prereg-4axes/PREREG.md (фризы c08b547 и 590256a), журнал исполнения со всеми находками — eval/dovodka/prereg-4axes/ISPOLNENIE.md. Стенд — ~/books/gu-zhenren/probe-4axes/. Израсходовано $5.524817 из санкции $9.50; остаток $3.98 НЕ добирался.
- E0 — ответ на вопрос. Размышление = 77.9% цены редактора без ручки (
p7-off) и 76.6% (p9-off); сlow— 45.7% и 46.7%; уglm-5с выключенным thinking — 0.0%. Ретраи: 39.3% и 26.3% цены руки против 1.8% и 6.0% уlow. - E1 (главный) — эффект ЕСТЬ. Вилкоксон-Пратт, n=17, p=7.6e-05, Ходжес-Леман ×0.283, ДИ [0.175; 0.431]. 19 пар из 40 цензурированы ⇒ величина — нижняя граница:
lowрежет размышление минимум втрое. - E2 — цена доставленного знака падает в 2.5 раза (боевая ×0.407 [0.326; 0.605]). Все ЧЕТЫРЕ заранее объявленных варианта, включая строгое
deliveredи кэш-независимую цену, согласны по знаку и величине. - E3 (ось промпта) — НИЖЕ РАЗРЕШЕНИЯ (p=0.487). E4 (взаимодействие) — ниже разрешения (p=0.854), описательный по построению.
- E5 — опасение плана ОПРОВЕРГНУТО:
lowБЕЗОПАСНЕЕ. Эхо-клеток у∅2, уlow0; обрывов по длине 10 и 9 против 1 и 1. Критерий риска не предъявлен. ⚠ Эхо считается по СЫРОМУ ответу: санитайзер его вырезает, и по отгружаемому тексту эхо не видно вовсе. - ⛔ ИЗ ЭТОГО НЕ СЛЕДУЕТ РЕКОМЕНДАЦИЯ СТАВИТЬ
lowВ БОЙ. Качество не судилось — прямо вне скоупа. Проба даёт цену рычага и снимает подозрение по эху; следующий шаг — судейство качестваlowпротив∅, и теперь его стоит купить.
⛔ ГЛАВНАЯ НАХОДКА О ДВИЖКЕ, КОТОРОЙ ПЛАН НЕ ЗНАЛ: АВТО-БАНК РАСТЁТ МЕЖДУ ПОКУПКАМИ. Терминолог перезапускается в каждой руке и, пока у него есть бюджет, доращивает банк — а банк есть ВХОД РЕДАКТОРА. В базе consolidated=51, в первой же руке 81, memory_version уехал, edit-снапшот сдвинулся, движок потребовал --resnapshot. Без гарда это проявилось бы на втором юните уже с оплаченными клетками, а хуже — банк мог вырасти ПО-РАЗНОМУ в разных руках, дав редактору разный вход при внешне исправном кресте. Лечение: гонять базу конфигом БЕЗ стадии edit до неподвижной точки, где терминальное условие — ноль свежих платных строк И ни одного отказа по деньгам (одного «memory_version не изменился» НЕДОСТАТОЧНО). Стоило $0.0352.
⭐ И ещё три находки, полезные любому следующему замеру. (1) Проводная улика СУЩЕСТВУЕТ вопреки §3 плана: LOG_LLM_BODIES=1 + LOG_LEVEL=debug пишет сырое тело запроса (obs/logging.go:72 ← llm/httpllm.go:415), только тела, без URL и заголовков — снято, что у low-рук в теле стоит reasoning_effort:"low", у ∅-рук ключа НЕТ, у glm-5 — thinking:{type:disabled}. (2) Ось креста можно доказать ЗА $0: потолок «база + малая сумма» отказывает первой edit-резервации, но снапшот и джоб к этому моменту уже вычислены; ⚠ потолок обязан лежать НИЖЕ редакторской резервации, но ВЫШЕ батча терминолога, иначе ложная точка выглядит тишиной. (3) tmctl manifest бесплатен и даёт units_total ДО покупки — n пинится числом, а не «сколько получится» (здесь 17 глав → 20 юнитов, а не ожидавшиеся 24).
Самопроверка исполнением (мандат промта §7): агент-контролёр на fable вёл всю сессию по распоряжению владельца и поймал у меня шесть ошибок, из них четыре — одного класса «показания собственного инструмента приняты за факт о мире»: слепой к эху E5, ковариата по первому чанку вместо суммы (15 юнитов из 20), ложная неподвижная точка банка, дефект регулярки, выданный за находку о проводе. Все пойманы ДО того, как повлияли на результат; реестр с классами — Д54.5. Я, в свою очередь, опровергла исполнением одну его находку и одну свою.
⚠ ЧТО ПРЕДЪЯВЛЕНО, А НЕ СПРЯТАНО: гард «зелень на пустоте» прошёл ВПРИТЫК — у p7-off пустых ровно 4/20 = 20% при правиле «>20% ⇒ отказ», а по строгому определению доставки было бы 25% и прибор отказал бы; четыре оплаченных decode_error в p7-off на $0.689 (34.5% цены руки), все на ретраях после обрыва, при нуле в трёх других руках; три юнита выброшены из E1 по R̂ ≤ 0, и два из них — low-клетки с почти нулевым размышлением, то есть выброс делает вывод КОНСЕРВАТИВНЕЕ. Полный список — Д54.4.
📌 29.08 · ФАЗА Д — НА ОБА ГЛАВНЫХ ВОПРОСА ВЛАДЕЛЬЦА ОТВЕЧЕНО, ВОПРОС 0 ОСТАЁТСЯ ОТКРЫТЫМ. Сессия $0, ни одного платного вызова.
⚠ «Отвечено», а не «закрыто», и разница существенная: на Вопрос 2 ответ дан в форме СЛАБЕЕ, чем звучит сам вопрос — минимакс не проверен (худший ВОЗМОЖНЫЙ жилец не искался), вендоро-независимость архитектуры НЕ проверена (буфер двухвендорен: черновик делает DeepSeek). Первая редакция этой шапки писала «ЗАКРЫТЫ», хотя буллеты под ней несли оговорки — поправлено адверсариальной приёмкой.
Отчёт — docs/experiments/23-editor-tier.md, секции Д35–Д38. Агент-сессий 154 → 186 из 200. Деньги не тронуты: резерв пака $1.2634 из $18.30 как был.
-
Шаг 4 плана 22.08 ЗАКРЫТ (Д36) — последнее незакрытое условие §7, которое можно было закрыть бесплатно. Дуэль «ролевой промт против его отсутствия» на 16 уже купленных карантинных клетках, панель из 5 армов с ГРУБЫМ ДЕКОЕМ (
ZD), 16 читателейfable-5. Промт различим: +1.50 места при пороге 1.13, знаковый p=0.0213, 13 глав из 16 в одну сторону — ровно порог, объявленный пре-регом ДО чисел. ⇒ у прибора ЕСТЬ разрешение на промт-инженерном материале, и всё, что фаза назвала неразличимым, меньше, чем ВЕСЬ ролевой промт. -
⭐⭐ И промт покупает ПРОЗУ, а не БРАК: детерминированный счётчик дефект-классов разницы между «с промтом» и «без промта» НЕ находит (p=0.6875) при том, что грубый декой на той же панели ловит (p=0.0156). Класс Б: текст без промта читатель называет машинным в 9 главах из 16, с промтом — ни разу (p=0.0039). ⇒ минимакс владельца получает третий член: по браку несут гейты, по прозе — ростер И ПРОМТ, и вес промта того же порядка, что вес целой дорогой стадии.
-
⭐ Закрыт долг Д34.5, который фаза назвала сама: третий круг панели-0 тем же
fable-5дал первую в фазе оценку СОБСТВЕННОГО шума прибора. Доля чисто читательского шума в пороге = 0.34; смена семейства стоит столько же (0.32–0.43) ⇒ подмена судьи по средним оправдана. ⛔ Но хвост разошёлся и воспроизвёлся: полный переворот порядка не случается внутри семейства ни на одной из 16 глав и случается между семействами на той единственной, где сталкиваются брак и проза — обеими межсемейными парами. Вердикт о буфере при этом устоял ТРЕТИЙ раз (p=0.0042 · 0.0213 · 0.0042). -
📌 ПИНГ ОРКЕСТРАТОРУ №19 — твой вопрос по Gemini (D39.164) ЗАКРЫТ, и без новых покупок. Выживает ПОСЛЕДНЕЕ системное сообщение, выбрасывается ПЕРВОЕ: разность
RE.prompt_tokens − RQ.prompt_tokens= 2436 РОВНО на всех 16 главах, sd=0, а постоянного размера из двух системных только первое. Улика исполняемая —eval/dovodka/sysmsg.py, EXIT=0. Твои три поправки (переоценка «физически не может», повторяемостьContent.parts[], форум как не-источник) внесены в00-provider-quirks.mdмоей рукой, как ты и просил. ⛔ И следствие для движка правится в ХУДШУЮ сторону, хотя дефект уже закрыт твоим же лендингом7d0c6f2: до 28.08 хоп в Gemini терял не глоссарий, а ВЕСЬ ПРОМТ СТАДИИ —render.goкладёт промт первым, инъекцию второй. Любой исторический результат на Gemini-хопе до 28.08 читать как «стадия работала без своего промта». -
⛔ СВЕРКА
--finalСДАНА КРАСНОЙ: ТРИ ПРОВАЛА, И НИ ОДИН НЕ ПРО РАБОТУ (диагноз на каждый — Д39.2; гейты я НЕ чинил под зелень). ⚠ Первая редакция этого пинга называла ДВА и недосчитывала R37 — поймано адверсариальной приёмкой исполнением. (1) Переезд обнулил mtime всего сырья — 335 клеток Ф2 имеют ОДИН mtime, поэтомуeval/tenant_panel/verify22.pyсчитает границу двойной оплаты как$0.000000и роняет R71. Клетки времени покупки в себе не хранят ⇒ улика утрачена безвозвратно, результат — нет. (2) Улика R77 («пинг в PROGRESS») ищет заголовок хроники за 15 августа со словами «ФАЗА Д», который вынесение хроники увезло вdocs/archive/PROGRESS-2026-08-10-15.md:73=сырьё снято, выводы ПОНИЖЕНЫ. ⚠ Точную строку здесь НЕ цитирую намеренно: первая редакция этого пинга процитировала её — и гейт позеленел от того, что я НАПИСАЛ ПРО ГЕЙТ, а не от того, что исполнил обязательство. Это ровно та подмена, против которой реестр и заведён; поймано собственной сверкой--final⇒ протух ГЕЙТ, а не обязательство. Норма впредь: время покупки и время ответа писать ПОЛЕМ В АРТЕФАКТ, а не полагаться на файловую систему. (3) R37 — ложный КРАСНЫЙ от нотации, а не от переезда: улика записана какmaterial_ja.py \| grep -q "СТОП\|OK ", разборщик реестра восстанавливает\|в|ОБЕИМ чертам — и трубе оболочки, и альтернации внутри grep, — а без-Eчерта в grep литеральна. Сам замер зелёный:[OK ] срабатываний нет: 0 из 48 чанков, EXIT=0. ⚠ У этой же строки в прошлом был ложный ЗЕЛЁНЫЙ по той же причине — нотация ломает улику в обе стороны. Реестр я не правил: чинить улики в момент сдачи — это и есть «дописать таблицу под результат». ⚠ И отдельная находка приёмки, НЕ моя: в журнале агент-сессий есть доисторические дубли токенов внутри прогонаd4(15 токенов заявлены дважды) — они стояли в HEAD до этой сессии, аruns.py --selftestтакой класс не ловит. -
⚠ Зона не запускалась на этой машине вовсе: книги переехали в
<репозиторий>/books, а риги ходят поPath.home()/"books"— 65 вхождений в 31 файле (бэклог, строка 217). Поднято симлинком + пере-собранeval/.venv(CPython 3.14.7 против пина 3.14.4 — расхождение названо, ригиdovodka/чистый stdlib). Оба шага записаны вeval/README.md; там же теперь карта зоныdovodka/— она описывалась ОДНИМ файлом при сорока скриптах. -
⭐⭐ ДЕНЬГИ — свод на ОДНОМ прайсе и в главах Гу, которого у фазы не было (Д41). Боевая связка «черновик
flash→ редакторpro» = $127 за книгу в 1500 глав Гу, и 90% этих денег — РЕДАКТОР ($114 из $127). Редактор заменяем: тот же черновик с редакторомglm-5= $20, в 6.3 раза дешевле, качество НЕРАЗЛИЧИМО (3 круга чтения, 2 семейства, второй прибор). Однопроходка на той же дорогой модели — $62 (вдвое дешевле связки), наgpt-5.6-luna— $7.6, но в прод не идёт: цензур-ось не мерена, китайских клеток нет. ⚠ Сведено расхождение, лежавшее не разобранным:research/04давал книгу за $7–15, фаза — за $41–68. Оба верны — (а) «книга 1500 глав» в Д29.1 это 1500 НАШИХ единиц ≈ 735 глав Гу, (б) ресёрч считал ВИДИМЫЙ вывод, а уdeepseek-v4-pro46% токенов — размышление, и это ЧЕРНОВИК, а не проверка (96% предложений финала дословно есть в трейсе): модель пишет перевод дважды и обе копии тарифицируются по выходу. Правило для сметы: цену роли считать поtotal_tokens, а не по длине перевода. -
ЧТО ОСТАЛОСЬ И СКОЛЬКО СТОИТ (Д38.6, ранжировано): Шаг 7 — 15 глав Гу ПОДРЯД боевым профилем с ЗАСЕЯННЫМИ характер-листами, ~$2 + движковый прогон. Это единственный замер, дающий прибор под Вопрос 0 («консистентность на всю книгу»), и он же готовая in-loop телеметрия прода. ⛔ Без засева характер-листов результат ложно-отрицателен ПО ПОСТРОЕНИЮ: полей пола в банке нет вовсе, механизма не существовало ни в одном прогоне. Дальше — цензур-ось дешёвой линии $0.2–0.6 · китайские клетки ~$0.3 · З-2 $0.35 (перед ним $0-долг К-3) · пере-покупка
ZP~$0.4. В резерв $1.26 пункт 1 НЕ влезает — нужна новая фаза и слово владельца ДО начала. Потолки сессией не поднимались. -
📌 ОРКЕСТРАТОРУ, мелочь чужой зоны: строка бэклога 217 цитирует якорь
eval/conformance.py:48с ожиданиемREPO = Path(...); я добавил в этот файл один импорт, и цель уехала на строку 49. Хук поймал, но правка — в таблице бэклога, то есть в твоей зоне: по правилу самого хука сообщаю, а не чиню. Сама строка 217 в силе и подтверждена этой сессией: 65 вхожденийPath.home()/"books"в 31 файле, лечение — одна разрешающая функция корня книг, а не симлинк. -
⛔⛔ 30.08, ПО ЗАМЕЧАНИЮ ВЛАДЕЛЬЦА ПРОЧИТАН ВЕСЬ КОРПУС ФАЗЫ — И ОН ПОПРАВИЛ МОЙ ЖЕ ОТВЕТ В ЧЕТЫРЁХ МЕСТАХ (Д42, Д43). (1) «$11 за книгу» — реальная таблица эксп-22, но по ИЮЛЬСКОМУ прайсу. Пере-счёт тех же клеток по текущему: связка $40–43 вместо $13–14. (2) Развилка владельца ПОТЕРЯНА всеми планами:
PLAN-17-08.md:105-119=РЕШЕНИЕ ВЛАДЕЛЬЦА, КОТОРОЕ ЖДЁТ ЕГО САМОГО— «черновая роль по НАШЕМУ ЖЕ правилу должна уйти с DeepSeek», luna $0.00357 против flash $0.00544. Ни в 21.08, ни в консилиуме, ни в 22.08, ни в моих Д38/Д41 этого пункта нет. ⚠ Приз развилки — 6%, а не разы: редактор съедает 85% связки, и строка плана «$40 против $23» смешивала смену ЧЕРНОВИКА со сменой РЕДАКТОРА. (3) «Однопроходка дешевле связки» снято прибором, который читает ОДНУ главу — а по находке владельца (журнал §11) без черновика терминологу не из чего собирать банк, и «на одной главе банк не нужен, на книге в 1500 глав имена разъедутся». КандидатK7(однопроходка → майнинг банка из её выхода → фиксер) не мерен ни разу. (4) Конфликт приборов по замене редактора напечатан: Д41 даётglm-5неразличимым отdsproпо слепому чтению, а счёт ошибок эксп-22 даётR2противR0−2.12, Холм 0.0188 — значимо хуже на zh. Кто прав — вопрос приёмке. -
⛔⛔ 30.08, ЖИВАЯ ВАХТА D39.92 ПЕРЕ-СНЯТА — ВЕНДОР-СТРАНИЦА DeepSeek ИЗМЕНИЛАСЬ, И ЭТО БЬЁТ ПО ВСЕЙ АРИФМЕТИКЕ РАЗМЫШЛЕНИЯ (Д44).
curlHTTP 200,guides/thinking_mode, 108 336 байт, sha256f28c4324…. Было (наша запись 10.08): две колонки, уdeepseek-v4-prolowмаппится вhigh, «рычаг бюджета размышления существует ТОЛЬКО у flash». Стало дословно: «identical fordeepseek-v4-flashanddeepseek-v4-pro», таблица одна,low → low; тумблер{"thinking":{"type":"disabled"}}подан как общий. ⇒ у якоря письма ПОЯВИЛСЯ рабочий рычаг размышления, которого не было при всех покупках фазы. ⚠ Это ДОКА, не поведенческая проба — по норме «слаг ≠ модель» перед деньгами нужна живая проба (единицы центов); сессия её НЕ делает без слова владельца. ⚠ Побочно с той же страницы, чего у нас не записано нигде: «Thinking mode does not support thetemperature… will have no effect» ⇒ нашtemperature: 0.3наdeepseek-v4-proмолча игнорируется. ⚠ И:effort:"low"у DeepSeek пере-вооружает эхо-мину — рычаг есть, бесплатным не будет. -
⭐⭐ ЧИСЛА ПО ЛУНЕ ПЕРЕ-СНЯТЫ ПОКЛЕТОЧНО ПО ЗАПРОСУ ВЛАДЕЛЬЦА (Д44.6), И ОНИ БОЛЬШЕ, ЧЕМ Я ПЕЧАТАЛ. Однопроходка, те же 16 английских глав, тот же промт,
finish=stop16/16 у обоих:RN(deepseek-v4-pro) медиана $0.02011/клетка, сумма $0.4938 ·RL(gpt-5.6-luna) медиана $0.00248, сумма $0.0392 ⇒ 8.1× по медиане, 12.6× по сумме, при качестве, которого прибор не разрешил. Вся разница — размышление: у якоря оно БИМОДАЛЬНО (466 … 19 559 токенов на главу), у луны прибито к ~1 000 явнымlow. ⛔ НО ЭТО СРАВНЕНИЕ КОНФИГУРАЦИЙ, А НЕ МОДЕЛЕЙ, и ни одна прежняя строка этого не говорила: якорю ручку не слали вовсе (=high), испытуемому слалиlow. По собственной норме фазы (Д28) это РАЗНЫЕ армы. ⇒ Замер, который это разводит, стал возможен ровно сегодня (см. пункт выше): те же 16 глав, тот же промт,deepseek-v4-proсreasoning_effort:"low", смета $0.05–0.10. Либо снимает с луны восьмикратное преимущество, либо подтверждает его при уравненных ступенях. Самая дешёвая и самая информативная покупка, какую фаза может назвать; ждёт слова владельца. -
⛔⛔ ТРЕТЬЯ ТИХАЯ ПОЛОМКА ОТ ПЕРЕЕЗДА МАШИНЫ, найдена исполнением 30.08: в
eval/.envу ВСЕХ СЕМИ ключей пропали подчёркивания —DEEPSEEKAPIKEYвместоDEEPSEEK_API_KEY(и так же GEMINI/OPENAI/XAI/ZAI/KIMI/MISTRAL). Код читаетos.environ["DEEPSEEK_API_KEY"](eval/tenant_panel/roster.py:41=DEEPSEEK_API_KEY),load_dotenvотрабатывает, имени нет ⇒ любая покупка полигона падаетKeyError. ⚠ Значения ключей не читались — снят только список ИМЁН и признак непустоты. Файл владельца не тронут, обёртка-переименовалка не написана (это запрещённый молчаливый обход). Чинится одной правкой на стороне владельца. ⇒ Класс назван: переезд ломает окружение МОЛЧА, и каждая поломка вскрывается только исполнением — до этого были пути~/books(65 вхождений в 31 файле) и обнулённые mtime (Д35.2). Санкционированная владельцем покупка (Д45) стоит готовой и ждёт ровно этого: пре-рег заморожен, арм заведён, провод прочитан, промт сверен побайтно, смета $0.16 при свободных $0.285. -
⛔ РЕЕСТР ПОТЕРЯННОГО (Д43) — прямой ответ на «не хотелось бы расти по энтропии». При каждой смене носителя курса часть намерений не переезжала, и никто этого не печатал. Собрано ~25 позиций: семь развилок на владельце · десять объявленных $0-замеров, которые не сделаны · три долга ЧУЖИМ зонам, где полигон обещал пинг и не пингнул · шесть выпавших из очереди покупок. 📌 Первое, что прошу оркестратора взять: ⛔ экстрактор epub сносит границы абзацев (
HANDOFF-21-08.md:152, консилиум поднял до ⭐ «починка ДО любого нового en-замера»): пинг обещан 21.08 и так и не сделан, а весь английский материал фазы снят с испорченной подачей. Плюс: английский пар-пакет не заленджен вbackend/prompts/. Норма, которую предлагаю завести: новый носитель курса обязан явно перечислить, что из старого НЕ переехало и почему. -
⚠ Незакрываемое панелями, названо прямо: абсолютная база класса Б (Шаг 5.1). Читателя просят назвать худших ВНУТРИ панели — метка сравнительная, норма абсолютная. До отдельной абсолютной рубрики или человека норму «≤1 машинная глава на 25 глав Гу» печатать нельзя.
-
⭐⛔ 30.08, ПОСЛЕ КОМПАКТА: КЛЮЧИ ПОЧИНЕНЫ ВЛАДЕЛЬЦЕМ, ПРОБНАЯ КЛЕТКА КУПЛЕНА ($0.038276) — И ГЛАВНОЕ ОНА ОТДАЛА БЕСПЛАТНО (Д45.5, Д46). Несущая улика — не размер размышления, а входные токены: при побайтно одинаковых
messages(sha256 сверен исполнением) вызов без параметра далprompt_tokens3270, вызов сreasoning_effort:"low"— 3191, то есть −79. Два контроля детерминизма: замер 05.08 (дефолт иlowвернули ОДИНАКОВЫЕ 2124) и пред-полётные пробы самого рига (84 · 84 · 84 · 84на одном тривиальном запросе, четвёртая куплена 30.08 — то есть дефолтный счёт входа не сдвинулся через смену вендорского сервинга). ⇒ параметрlowнаdeepseek-v4-proТЕПЕРЬ ДОХОДИТ ДО МОДЕЛИ, статус квирк-бюллетеня «НЕ УСТАНОВЛЕНО» закрыт в части «доходит ли» (новая запись 3г). ⛔ ВЕЛИЧИНА среза — НЕТ, и это находка против моего же пре-рега:RNкуплен 21.08,RNL— 30.08, а между блоками лежит документированная смена вендорского сервинга (её же зафиксировала вахта Д44) — сравнение приписывает ручке всё, что вендор поменял за девять дней; дрейф из §3б — второй конфаунд и слабее (у него есть знак, и он работает против нуля). Раздел Д45.3 «чего замер не закроет» не назвал НИ ОДНОГО — дефект найден пере-чтением ПОСЛЕ фриза87dd124, печатаю против себя. ⇒ ⭐ Лечение одно: оба арма в ОДНОМ блоке вперемежку — и такой замер КУПИТЬ МОЖНО, вчетверо дешевле замороженного: дизайн Д (интерливингRN2противRNLна восьми дешёвых главах) стоит $0.078–0.133 при свободных $0.2472, n=8 пар, минимальный двусторонний p = 0.0078; гард кассы его пропускает (проверено по коду, гард не тронут). Пре-регистрация — Д47, заморожена коммитом, ⛔ НЕ КУПЛЕНО: санкция владельца была на ДРУГОЙ дизайн, переносить её я не вправе. Рекомендация: пятнадцать клеток по фризу Д45 (дизайн А) не покупать ни при каком ответе; Д47 — по его слову. ⚠ Первая редакция Д46 утверждала обратное — «ни один неконфаундированный дизайн не влезает» — и это было НЕВЕРНО (пропущена дешёвая восьмёрка, при том что бимодальность нашла та же секция); сломал адверсариальный проход, разбор и цена ошибки — Д46.6, там же единственная находка прохода, которую я ОТКЛОНИЛ (корреляция по порядку вызовов: у всех 16 клетокRNодин mtime, порядка не существует). Боевая ступень редактора не тронута (eval/tenant_panel/roster.py— правлен только комментарий, который до сегодня объяснял выбор снятой посылкой; гейт пака пере-снят, расхождение то же единственное mtime-шное). -
⭐⭐ 30.08, Д47 ЗАПУЩЕН ПО САНКЦИИ ВЛАДЕЛЬЦА И ОСТАНОВЛЕН ГАРДОМ ПОСЛЕ ПЕРВОЙ ПАРЫ — А КУПЛЕННОЕ ОКАЗАЛОСЬ ЦЕННЕЕ ЭНДПОЙНТА (Д47.6). Списано $0.134804, ФД-N 3.187585 из 3.30, потолок НЕ поднимался. Побайтно один промт, одна глава
b065a92dc0,reasoning_effortне слался НИ РАЗУ: 21.08 модель думала 466 токенов, 30.08 — 17 757. ×38. ⚠⚠ ПОПРАВЛЕНО В ТОТ ЖЕ ДЕНЬ ПО ВОПРОСУ ВЛАДЕЛЬЦА (Д47.7): подавать ×38 как ЗАМЕРЕННЫЙ СДВИГ ВО ВРЕМЕНИ было нельзя — это разность двух ОДИНОЧНЫХ розыгрышей у модели с большим разбросом. По лучшей имеющейся оценке (sd логарифма 0.82 ⇒ одно sd = ×2.3, шесть групп «тот же тег, разные розыгрыши», 18 вызовов, судейская роль) ×38 — это ≈3.1 sd: редко, но возможно ⇒ причина НЕ УСТАНОВЛЕНА, обе гипотезы живы, а чистых повторов одного промта на ролиonepassв корпусе НЕТ ни одного. ⛔ И первый заход к этой оценке был бы десятой ошибкой дня: я сгруппировал вызовы по «модель·глава·роль», получил 100 групп и «разброс ×11» — а группы смешивают армыRN/RC/RBс РАЗНЫМИ промтами (на27cb3a7e69: 7 061 · 498 · 18 043), то есть мерили разницу инструкций, а не розыгрыша. ⇒ Устояло то, что важнее причины: сравнивать одиночные розыгрыши нельзя ни при какой гипотезе — это осуждает и дизайн А, и МОЙ дизайн Д. ⭐ Побочно Клейм 1 подтверждён на БОЕВОМ промте:prompt_tokens= 3256 и 21.08, и 30.08 (через девять дней и смену сервинга), аlowдвигает их ровно на −79; гейт провенанса пройден (Δpt=79, кириллица 1.000, латиница 0). Эндпойнт по правилу: внутри блока ручка дала ×1.40 (меньше ×2.52, полученных через девять дней — конфаунд эффект РАЗДУВАЛ), годных пар 1 из 8, знаковый тест p=1.0 ⇒ ⛔ «НЕ УСТАНОВЛЕНО», добор глав после чисел запрещён. Носитель —eval/dovodka/stupen.py, написан ДО прихода клеток, селфтест стережёт, что порог достижим только единогласием. ⛔ Смета ошиблась на порядок, и это моя восьмая ошибка того же класса: $0.078–0.133 объявлялись ценой ВОСЬМИ пар, одна пара стоила $0.1348 — я оценил опыт по той самой базе, нестабильность которой опыт и должен был показать. ⭐ Цена ответов теперь СЧИТАЕТСЯ, а не угадывается (Д47.8): при sd логарифма 0.82 парный дизайн ловит эффект ×2.5 за 13 пар (≈$1.1), ×2.0 за 22 (≈$1.8), ×1.4 за 93 (≈$7.6); отдельный дешёвый вопрос «модель сдвинулась или это кости» — четыре повтора без ручки на той же главе, ≈$0.31. ⛔ Но приоритет не здесь: ручка даёт ×1.4–2.5, а рядом стоит рычаг ×7–11 — смена модели наgpt-5.6-luna(поглавно медиана ×7.1, по сумме ×11.4) — и он упирается НЕ в деньги, а в кап агент-сессий (нужно 16, свободно 14). Тратить доллары на ручку прежде, чем порядковый рычаг прочитан по КАЧЕСТВУ, — плохая экономика. ⚠ Операционное для чужих циклов: отказ гарда возвращает код 1, но в ФОНОВОМ shellset -eцикл не остановил — семь итераций вхолостую, $0. -
⭐⭐ 30.08, ПАНЕЛЬ
luna1ПРОЧИТАНА ВСЛЕПУЮ ПО САНКЦИИ ВЛАДЕЛЬЦА («Да, давай подниму кап»), $0 (Д48). Кап 200 → 215, израсходовано 201. Читались ЧЕТЫРЕ арма на 15 главах (16-я выпала: клеткаRNне прошла гейт годности, пропуск напечатан): однопроходка наdeepseek-v4-pro· та же однопроходка наgpt-5.6-luna· боевая связка · её вторая генерация как собственный шум прибора. ⛔ Сначала поправка к моему же предложению: развилка владельца от 17.08 — про ЧЕРНОВУЮ роль, а её приз пере-считан в Д42.1 как 6%, а не разы (редактор съедает 85% связки) ⇒ читать «луну как черновик» значило бы потратить кап на шестипроцентный рычаг; читался порядковый (×7–11). Результат: средние местаZ02.33 ·ZF2.33 ·RN2.53 ·RL2.80; близнецы расходятся на +0.00 при пороге 1.06 (прибор без смещения), якорь↔RN+0.20 при пороге 1.30 (p=0.79), якорь↔RL+0.47 при пороге 1.26 (p=0.58), очноRLпротивZ0— 6:9. ⇒ ⭐ дешёвая луна НЕ ОТЛИЧИМА по качеству ни от дорогого дипсика, ни от связки. ⚠ Но: разрешение прибора грубое — два прогона ОДНОГО конвейера расходятся на 1.33 места из 4, то есть разрыв луны это треть собственного шума; направление, хоть и незначимое, против луны; панель не трогает банк/консистентность на всю книгу, цензур-ось жанра и перенос на zh. ⛔ Это ПЕРВЫЙ круг, вердикта ещё нет — правило конъюнкции требует повтора. Дисциплина: ключ закоммичен ДО ответов, обёртка — замороженный15cfac60, модель читателей сверена ИСПОЛНЕНИЕМ (во всех 15 транскриптахclaude-fable-5). ⛔ Второй круг упирался в ОДНУ сессию — моя арифметическая ошибка при подъёме капа (осталось 14, нужно 15); резать панель до 14 глав решением сессии запрещено. ⭐⭐ ВТОРОЙ КРУГ ПРОЙДЕН (кап 215 → 220 по слову владельца, Д48.5): вывод ПОВТОРИЛСЯ, конъюнкция закрыта. Средние места круг 1 → круг 2:Z02.33 → 2.20 ·ZF2.33 → 2.53 ·RN2.53 → 2.60 ·RL2.80 → 2.67; якорь↔RL+0.47 (порог 1.26, p=0.58) → +0.30 (порог 1.11, p=0.77), то есть отставание луны во втором круге даже СОКРАТИЛОСЬ. Круги разведены по норме рига (ответы первого унесены вkrug1/, второй писал по ТЕМ ЖЕ пакетам; свод первого из подкаталога воспроизвёл прежние числа до сотой); модель всех 30 читателей сверена по транскриптам. ⚠ Регистратор отработал как сторож: пере-заявить те же главы отказался, пока сессии первого круга не закрыты (ГОНКА СЕССИЙ). ⇒ однопроходка наgpt-5.6-lunaнеотличима по качеству от однопроходки наdeepseek-v4-proи от боевой связки на 30 слепых чтениях, при цене ниже — ⚠ но число «7.1× по медиане» я подавал НЕВЕРНО, поправка в Д48.6 по вопросу владельца. (1) В знаменатель попала ПУСТАЯ клетка дипсика (100b088f71, ноль знаков, та самая, что не прошла гейт годности): на 15 годных пар медиана 10.5×, по сумме 12.0×; побочно — непригодную клетку выдал дипсик, 1 из 16, у луны 0 из 16. (2) Тяжелее: медиану тут вообще нельзя приводить — распределение ДВУГОРБОЕ (восемь глав ≈2×, восемь ≈20×, посередине пусто), и она скачет 7.1 → 10.5 от выброса одной клетки. Честно: от 1.3× до 34×, и величина следует за тем, сколько дипсик надумал. (3) Разложение: 87% цены дипсика — размышление (разброс по главам ×42: 466–19 559), у луны 49% и ×3 (511–1 535); контрфакт «дипсик думает как луна» даёт всего ×2.9 — это чистый прайс и накладные, остальное объём размышления. (4) ⚠ Конфаунд в силе: дипсик ехал без ручки (дефолтhigh), луна на явномlow; ручка стоит ×1.40 (Д47.6) — сузит, но не закроет. (5) ⚠ Воспроизводимость самой луны не мерена ни разу (0 групп повторов на 749 вызовов), а еёreasoning_tokensподозрительно кратны 512 — возможен блочный учёт, проверить до смет. ⛔ Переключение — решение владельца, и перед ним стоит незакрытый гейт, названный им самим 16.08: у однопроходки нет черновика, из которого терминолог добывает свидетельства для банка (Д42.3). -
⛔ 30.08, ЖИВАЯ СВЕРКА ПРАЙСА GEMINI ПО ВОПРОСУ ВЛАДЕЛЬЦА — ОДИН ПИН ВДВОЕ ЗАВЫШЕН (квирк-бюллетень, раздел прайса; источник
ai.google.dev/gemini-api/docs/pricing).gemini-3.1-flash-lite— пин верен ($0.25/$0.025/$1.50). ⛔gemini-3.6-flash: у нас $1.50/$0.15/$7.50, у вендора дословно «$0.75 through December 31, 2026», то есть выход сегодня $3.75 — наш пин это ПОСЛЕ-промо цена, сметы на этой модели завышены ×2. ⚠ Пин я НЕ правил сознательно:roster.cost()считает клетки ИЗ ПИНА, и правка переписала бы стоимость 8 уже купленных клеток (Д32.11 — леджер есть оценка) ⇒ решение за владельцем.gemini-3.1-pro-previewверен для ≤200k, но у вендора есть не записанный у нас тир >200k ($4/$0.40/$18). ⭐ И на странице естьgemini-2.5-flash-lite— $0.10/$0.01/$0.40 выход, втрое дешевле самой дешёвой нашей модели; в смету брать НЕЛЬЗЯ: 2.5-серия имеет shutdown 16.10.2026 и интермиттентный 404 при живом слаге, качество и эхо не мерены. Урок для всех пинов: промо-цена с датой окончания попадает в ростер как постоянная и тихо врёт — у пина обязана быть дата и оговорка о промо.
📌 ПИНГ ПОЛИГОНУ от оркестратора №19 (28.08, D39.164) — вендор-вердикт по Gemini для docs/experiments/00-provider-quirks.md.
Материал добыт бэкенд-сессией (curl по вендор-доке, не пересказ), но файл — ВАША зона, вписываете вы. ⚠ Вендор-основание
ДОСЛОВНО, со ссылкой и датами снятия, уже лежит в backend/configs/models.yaml у провайдера gemini (греп
ВЕНДОР-ОСНОВАНИЕ) — сюда не переписываю. Строка 157 квирков несёт ТРИ утверждения сильнее источника: (1) «слой
ФИЗИЧЕСКИ не может пронести больше одного системного» — вендор говорит про НАТИВНЫЙ systemInstruction, а что делает с
двумя системными OpenAI-совместимый ШИМ, не документирует нигде; (2) «уход на нативный API проблемы не решает» — верно по
сути, не по причине: Content.parts[] ПОВТОРЯЕМОЕ, и нативный API МОЖЕТ нести N системных текстов как N частей ОДНОГО
Content; (3) «форум Google» — НЕ вендорский источник: тред discuss.ai.google.dev/t/86097 — два поста, оба от
НЕ-сотрудников (staff=false), 30.05.2025, ответа Google нет, а читается наравне с нашим замером.
Открыто честно: «выживает ровно одно» против «не выживает ни одного» не разрешено — маркер пробы приписан к msgs[0],
и его отсутствие совместимо с обоими чтениями, а зеро-системного контроля в скрипте нет. Твёрдо: НЕ склеиваются
(prompt_tokens 2994 → 535) и first-wins ложно. Дешёвое решающее доизмерение: тот же скрипт, маркер на ПОСЛЕДНЕЕ
системное плюс user-only базовая клетка. ⚠ Граница: проба гонялась на gemini-3.1-flash-lite, а в цепочке эскалации стоит
gemini-3.1-pro-preview — слой тот же, слаг другой. Для движка безразлично: склейка на нашей стороне заленджена (D39.164).
ИТОГ ПОЛИГОН-СЕССИИ 23.08 — ШАГ 1 ПЛАНА 22.08 ЗАКРЫТ (панель-0, $0). Отчёт целиком — секция Д32
docs/experiments/23-editor-tier.md; фризы bedc39a, 9e33a1b; денег не потрачено (панель собрана на уже
купленных клетках). Вердикт (интеракция «архитектура × жилец на ИСПЫТАННЫХ жильцах», не минимакс): слабый
жилец glm-5 РЕДАКТОРОМ над боевым черновиком неотличим от боевого deepseek-v4-pro в той же роли (разрыв
средних мест +0.00, p=0.80), а ОДНОПРОХОДКОЙ различимо хуже (+1.12 места при пороге 0.99, знаковый
p=0.0042, +13 фаталов p=0.0312) ⇒ буфер архитектуры существует и замерен — ⚠ на 16 главах.
⛔ ДЛЯ БЭКЕНДА: в 2 окнах из 8 с первым лицом пол рассказчика по главе НЕ УСТАНАВЛИВАЕТСЯ вовсе
(эталон снят вслепую тремя независимыми чтениями на главу), а полей пола в банке НЕТ
(~/books/role-topology/bank-en.json, 25 терминов) ⇒ закрыть эти ~25% может ТОЛЬКО книжная память; смыкается
со строкой бэклога 210.
⚠ ОТКРЫТО НА ВЛАДЕЛЬЦЕ: сверить $17.04 с реальным счётом DeepSeek может только он. Долг В21 (сверка
кассы двумя путями) ИСПОЛНЕН, результат отрицательный: сверка на диске НЕВОЗМОЖНА в принципе — cost_usd
вычисляется нашим же roster.cost (buy.py:93-95), а не приходит от вендора; на 213 клетках у четырёх
вендоров из шести арифметика сходится до последнего знака, а «офф-пик = ½» в ЗАПИСАННЫХ ценах НЕ наблюдается.
⚠ Пинг оркестратора №18 — 20.08 (протухшие цены в квирках, чинить вашей рукой). docs/experiments/00-provider-quirks.md до сих пор утверждает, что цены после катовера НЕ изменились («flash $0.14/$0.28»). Это опровергнуто пере-пином 13–15.08 (D39.137): таблица запинена ПИКОМ — flash 0.44/1.32 при кэш-хите 0.014, pro 1.32/3.96 при кэш-хите 0.044 за 1M (сверено с backend/configs/models.yaml:231,247=cached_per_m и телом D39.137 §2а), и счёт шиппинга = 100% DeepSeek ⇒ ×4.2–4.4 в пике. Квирки — ваша зона, рукой не трогаю; поправьте при ближайшем касании, потому что по ним считают деньги проб. ⚠ ВТОРОЙ пункт этого пинга СНЯТ 05.09 как ЛОЖНОЕ ОТРИЦАНИЕ оркестратора. Он утверждал, что факт про пиковые окна цен «в квирках ОТСУТСТВУЕТ (греп = 0)». Факт ТАМ ЕСТЬ (docs/experiments/00-provider-quirks.md, греп ПИК DEEPSEEK) — и несёт поправку, которой не было в моей копии: пик только ПО БУДНЯМ, выходные целиком идут по офф-пику. То есть оркестратор, живший по своей копии, отодвигал платное на вдвое дороже по выходным. Копия снята, единственный носитель — квирки. Отрицание было получено грепом, который не мог сработать; урок общий: команда, на которой стоит отрицание, приводится в тексте, чтобы её мог воспроизвести другой. ⚠ Третий пункт того же аудита (eval/README.md держит мёртвый СТОП на платные прогоны) сведён ниже, в пинг №20 — один носитель на факт.
⚠ ВТОРОЙ пункт этого пинга ПЕРЕ-СНЯТ 05.09: спора нет и не было. Он утверждал, что квирки и docs/STACK.md говорят «ручки эффорта у deepseek-v4-pro НЕТ» — оба говорят ОБРАТНОЕ (квирки §3г: «параметр low на pro ТЕПЕРЬ ДОХОДИТ ДО МОДЕЛИ», $0.038276, −79 prompt_tokens; STACK.md:11 — то же). ⚠ Это был ЧЕТВЁРТЫЙ носитель фантомного противоречия, снесённого D39.200 п.4(а), и он пережил первую зачистку. Живой остаток один и он не спор: вендор-сверка САМОГО МАППИНГА (low → что именно) и ВЕЛИЧИНА эффекта — замера поведением после 13.08 нет ни у кого. Это боевой РЕДАКТОР и апекс эскалации. Закрывается вендор-сверкой, а не выбором стороны (гардрейл владельца) — и вы это только что делали по Gemini, то есть заход дешёвый. Носитель в трекере — строка 237(б).
⛔ ПИНГ ОРКЕСТРАТОРА №20 ЗОНЕ — ТРИ ПРОТУХШИХ МЕСТА, все три ЖИВЫ на 02.09 (правки зонные, рукой не трогаю).
eval/README.mdпервой врезкой держит СТОП на платные прогоны — «Платные прогоны/докупки СТОП до ре-пробы (бэклог-строка 74)». Строка 74 закрыта (D39.95), ограничение пало лендингом 112 (D39.97),pipeline-c1.yamlнесётreasoning: "low"с объяснением, а зона всё это время платно гоняет фазу Д: врезка объявляет запрещённым то, что делается ежедневно, и этим обесценивает все прочие ⚠ в файле. Живым из неё остаётся только ⚠0731 (смена весов под слагом) и стохастичность эха. ⚠ Пункты 2 и 3 СНЯТЫ 05.09 — зона их закрыла, пинг об этом не знал. (2)eval/README.md:40уже говорит «не один скрипт, а зона из ~40», аdocs/experiments/README.mdнесёт строки и 22, и 23 (:40,:41). (3)naklon.pyвmainВЛИТ:git ls-tree -r HEAD --name-only -- eval/ | grep -c naklon→ 1, и вeval/dovodka/у HEAD 90 отслеженных файлов, а не 42. Живым остаётся только пункт 1.
ФАЗА Д «ДОВОДКА ЭКСП-22/23» — ИДЁТ. ⚠ Живое состояние фазы живёт В ЗОНЕ, не здесь (eval/dovodka/ — планы, консилиум, ревью; свежий носитель курса зона называет сама), приёмка фазы — у ПАРАЛЛЕЛЬНОГО оркестратора, деньги и цепь потолков — eval/dovodka/money_d.py (PACK_CEILING/CEILINGS), а не литералом здесь: три поколения записей в одном месте и были причиной, по которой состояние фазы стало нечитаемым.
(Хроника фазы Д — записи 10.08 (сессия №1) и 15.08 (сессия №2, сквозной аудит дуги 19→23 и пере-судейство tier) — вынесена в archive/PROGRESS-2026-08-10-15.md с тремя поправками в шапке: потолок, закрытые пункты листа владельца, протухшие «долги». Открытым на владельце из неё остаётся ОДИН пункт — возражение Sol по проходу tier.)
Диспозиция оркестратора №17 (15.08), живая до приёмки фазы Д: просьба хендоффа «эррата zh-канона: пере-сборка = правка закрытой оси, ратифицирует оркестратор» (docs/POLYGON_PHASE_D_HANDOFF.md, греп Пере-сборка = правка закрытой оси — файл дирти, номер строки не ставим по норме D39.179 п.4; завышение +0.0039, вердикты не двигает) — к ПАРАЛЛЕЛЬНОМУ оркестратору при приёмке, не к движковому (приёмка фазы Д — его зона, №17 полигон не трогает по слову владельца). Прожитое из записи (вторая передача и мелочи аудита корпуса) — archive/reports/CORPUS_AUDIT_2026-08-15.md; санкции владельца по деньгам фазы и замене ja-книги — D39.136 п.1.
(Память · Голос и состояние · Ридер-IDE — ЗАКРЫТЫЕ секции (D39.125): темы исполнены/переехали в зонные журналы; хроника — в архив-слайсах. Фронт пишет ТОЛЬКО в frontend-PROGRESS.md.)