textmachine/docs/NEAR_TERM_PLAN.md

242 lines
47 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ближайший горизонт — 35 промтов
> Рабочая записка оркестратора №23. **Только порядок и зоны**, не заказы. Живёт до исполнения, потом в архив.
> Долг живёт строками `BACKLOG.md`, решения — нотами. Разобрано со старшим коллегой 11.09, его правки внесены.
>
> ⚠ **Раскладка (слово владельца 11.09):** одновременно лежат промты РАЗНЫХ зон — бэкенд · платформа ·
> полигон · фронт. **Двух промтов одной зоны быть не может**; слот освобождается закрытием пака актом.
## Критерий полноты базового функционала — ответ на сомнение владельца
**Фронт размораживать, когда каждый шаг пути имеет на бэкендах: (а) смонтированную дверь по канону,
(б) СОДЕРЖИМОЕ, которое эта дверь отдаёт, (в) словарь исходов, которым она отказывает.** Реестр требований
целиком критерием быть не может — 🔶 стоит у 24 строк из 45, «без 🔶 на ядре» не наступит никогда.
По этому критерию путь ОДНОГО гостя zh→ru полон до последнего шага, а неполнота сидит в **трёх местах**:
1. **ВХОД — ⛔ ФОРМУЛИРОВКА ИСПРАВЛЕНА 11.09 ЗАМЕРОМ, ДВЕ ТРЕТИ ЕЁ БЫЛИ МОЕЙ ОШИБКОЙ.** Пере-снято:
**(а)** пригласительного гейта и allow-list действительно НЕТ — учётку получает кто угодно, прошедший
провайдера (греп `invite|allowlist|AllowedDomains` по `platform/internal` и `cmd`: живых механизмов 0
при контрольных 204 Go-файлах); **(б)** грант новичку 0 — это НЕ дыра, а **ратифицированное решение
владельца** (`D39.176` п.1: «никаких квот, живём на покупке API; бонусы зачисляются из админки»), и он же
работает экономическим гейтом закрытой беты: аккаунт заводится, но без ручного пополнения не может
ничего; **(в)** «лимита размера загрузки нет» — **НЕВЕРНО**: байтовый потолок стоит на маршруте интейка,
`platform/internal/httpapi/server.go:98`=`UploadLimits{MaxBytes: 64 << 20, Deadline: 10 * time.Minute}`,
механизм — `http.MaxBytesReader` (`middleware.go:22`).
⇒ **Живой остаток — операционная гигиена, и `D39.176` п.1 прямо называет её инженерной, без слова
владельца:** число аплоадов ничем не ограничено · у статуса `rejected` нет выхода · каталоги-сироты никто
не подметает. Плюс ряды регистра: ⚠ **испр. 16.09 (сквозной аудит) — живой ОДИН, `PD-162`**; `PD-455` и `PD-448` закрыты паками «правда у двери» и «ответ двери», в регистре их статус уже не `open` (пере-снято мной по списку открытых). Платформа, дни.
**Продуктовых квот и фри-тир-лимитов НЕ ПРОЕКТИРОВАТЬ**`D39.176` п.1 закрыл вопрос целиком.
2.**СОДЕРЖИМОЕ УЗЛА ПОДПИСИ БАНКА** — человеческий узел потока показывает ПУСТОТУ: у секции предложений
читателя нет (`json:"proposed` — 0 хитов при 356 json-тегах), живой экран 04.09 отдал `total 0, signed 0`.
3. **ВТОРАЯ ПАРА** — японская книга получает китайскую транскрипцию. «Требуется проекту», не показу zh→ru.
Условное (4): **CORS/same-origin**`Access-Control` 0 хитов при 201 Go-файле. ⛔ **Испр. 11.09 (поправка старшего коллеги, пере-проверена по ячейке пункта 9): это НЕ предусловие прогона B.** B идёт «платформа → бэкенд → ФАЙЛ», то есть `curl`/API, а браузерного источника в нём нет вовсе — фронт заморожен тем же словом владельца. CORS — предусловие РАЗМОРОЗКИ ФРОНТА (пункт 6), и там его место.
**«Качественно готовы» имеет ВТОРОЕ чтение, и его надо назвать владельцу:** качество перевода на целевом
жанре не измерено и кодом не обещано. Эта готовность наступает только ПОСЛЕ настоящей книги — то есть после
прогона, а не до него.
## Горизонт
| № | зона | предмет | цена | состояние (пере-снято 16.09) |
|---|---|---|---|---|
| 1 | **бэкенд** | структура глав, ДИЗАЙН | $0 | ✅ **ЗАКРЫТ АКТОМ `D39.245`** без сходимости, правилом остановки |
| 2 | **платформа** | правда у двери: `PD-455` · `PD-448` (разбор) · `PD-162` | $0 | ✅ **ЗАКРЫТ АКТОМ `D39.246`** с дофиксом по двум находкам приёмки |
| 3 | ~~полигон~~ | **прогон A**: настоящая книга до ФАЙЛА, платный провайдер | **факт $0.419424** | ✅ **ЗАКРЫТ АКТОМ `D39.247`**; строка 16 закрыта замером; ⚠ зона ВНЕ СКОУПА с 11.09 |
| 4 | **бэкенд** | ⛔ **КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ**: ряды **406** · **407** · **408** · **409**, плюс купленные прогоном **417** (закон банка не виден в тексте) и **419** (стеммер: 11 из 18 промахов — ложные) | пак, почти весь $0 | ✅ **ЗАКРЫТ АКТОМ `D39.249`** с дофиксом |
| 5 | **бэкенд** | «ВЫДАЧА, КОТОРУЮ ВИДИТ ЧИТАТЕЛЬ» — ⛔ **РАЗОБРАН 11.09 ЧТЕНИЕМ РЯДОВ И РАЗВЕДЁН НА ДВА ПАКА, один ряд закрыт замером.** **(а) `291` ЗАКРЫТ актом `D39.255`** — промт в `archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md` с баннером-исходом, решено владельцем (`D39.204` с «Эрратой 15.09-а»), дефект был жив на 11.09 (возврат ошибки из цикла попыток до `UpsertChunkStatus`, `backend/internal/pipeline/stagerun.go`); акт ОДИН с платформенной половиной (⚠ испр. 15.09: платформенная половина пуста по замеру сессии, отдельного промта нет). **(б) `307` ЗАКРЫТ, а не заказан:** честная форма ПОСТРОЕНА и запинена коммитом `6ceb133``runOrderedChapters = (case when r.ordered_units is not null then null else r.ceiling_chapters end)`, плюс `TestACharacterOrdersVolumeIsPublishedInTheUnitItWasSoldIn`; ряд снят с таблицы. Заказать его значило бы заказать готовое — мой повторяющийся класс. **(в) `283` + `284` + `201` — СЛЕДУЮЩИЙ пак «структура и заголовки», и он идёт ПОСЛЕ прогона B:** 283 требует единственного окна пере-снапшота, а пере-снапшот двигает НАРЕЗКУ ⇒ единицы A и B станут несравнимыми, и B ответит на другой вопрос (поправка старшего коллеги, принята). У 284 сверх того нет слова владельца о ПОДПИСИ стадии | пак, $0 | ✅ (а) **ПРИНЯТ 16.09 актом `D39.255`**, лендинг `af88680` (29 путей, $0): закрыты ряды **291** и **379** (379 — ЗАМЕРОМ, мутант 8/8 против 7/8 в ряду), остаток — 375 · 232 · 453456. Пак пережил ПОТЕРЮ сессии b1 и доведён `textmachine-main-b1` разделом ред. 5; конструкция пере-решена владельцем 11.09: стандартная остановка, не флаг (эррата 15.09-а к `D39.204`). **Слот бэкенда СВОБОДЕН** · (б) закрыт · (в) прогон B принят (`D39.252`), заперт теперь слотом и порядком — см. пункт 10 |
| 6 | **фронт** | поверхность показа | пак | разморозка + пункты 15 |
| 7 | ~~полигон~~ | ⛔ **ЗОНА ВНЕ СКОУПА — слово владельца 11.09**; четыре промта уведены в `archive/prompts/` с баннерами | — | снято |
| 8 | **бэкенд/деньги** | ⛔ **«ПАДЕНИЕ, КОТОРОЕ ВИДНО»** — четверть COGS в одном механизме (**415**), слепые приборы отказа (**414**, **422**), молчащая подстановка цены. ⚠ Пин цены **413** из пака ВЫНУТ: это данные и отдельное решение | пак, $0 | ✅ **ЗАКРЫТ АКТОМ `D39.251`** (испр. 15.09; дальше — запись 11.09) · ✍️ **НАПИСАН 11.09**`BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md`; выдаётся СВЕЖЕЙ сессии сразу по закрытии 4 ⛔ **КРИТЕРИЙ ПРИЁМКИ ПАКА — МЕХАНИЗМ, А НЕ ПРОПОРЦИЯ** (поправка старшего коллеги 11.09): лекарство есть распространение ратифицированного образца `D2` п.3 на вторую причину, и оно верно при 25 % и при 5 % — пропорция задаёт очерёдность, не форму. ⇒ судить по строкам «ни одного удвоения без вердикта о вырождении; каждая выброшенная попытка — строкой леджера с причиной», а не по «с 25.4 % до X». Значит прогон B пак не гейтит и паком не гейтится.|
| 9 | **платформа+бэкенд** | ⭐ **ХОЛОДНЫЙ ПРОГОН B — платформа → бэкенд → файл, ВТОРОЙ раз.** Уточнение владельца 11.09: спрашивая «перепрогоны нужны», он имел в виду именно сквозной прогон, а не пере-запуск тестов. Покупает ЧЕТЫРЕ вещи, которых нет ни у кого: **(1)** миграция **v17** (`wave_selection`) пака консистентности ни разу не шла на живом прогоне — только в тестах; **(2)** прибор консистентности впервые даст числа с ЖИВОГО прогона, а не с пере-скана сохранённой базы прогона A — сегодня все `I1`/`I2` получены повторным чтением одних и тех же данных; **(3)** платформенный пак (идемпотентный резюм, терминальное состояние) проверяется сквозь, а не юнитами; **(4)** ⛔ **вторая точка по денежной дыре, и она нужна по норме, а не для красоты** — весь довод «четверть денег купила пустоту» стоит на ЧЕТЫРЁХ одиночных розыгрышах, а квирки §3д прямо говорят: смета DeepSeek с одиночного вызова может ошибиться на порядок, сметы строятся на ПОВТОРАХ. ⇒ у числа 25.4 % есть знак и нет величины, пока прогон не повторён. **Цена ≈$0.42 по образцу прогона A, машинный кап ≈$2.5.****ПРЕ-РЕГИСТРАЦИЯ ЗНАМЕНАТЕЛЯ, иначе B ответит числом на другой вопрос** (поправка старшего коллеги 11.09): B — ЕЩЁ ОДИН одиночный прогон, и две точки распределением не станут. Настоящая ценность B не «вторая точка к 25.4 %», а `request_log` ВСЕХ единиц прогона ⇒ **доля выброшенных первых попыток ПО ЕДИНИЦАМ, а не по вызовам.** Это и пре-регистрируется. ⚠ И идёт B **ПАРАЛЛЕЛЬНО** паку о падениях, а не после: они в РАЗНЫХ слотах (бэкенд против платформы), и правило «один промт на зону» их не сталкивает | ≈$0.42 | ✅ **ЗАКРЫТ АКТОМ `D39.252`**, факт $0.396657 |
| 10 | **бэкенд** | ⛔ **БАНК: РЕШЁННОЕ ОСТАЁТСЯ РЕШЁННЫМ** — предмет пере-определён проверкой 15.09. Пак 12.09 «в банк по разнобою» (`archive/prompts/BACKEND_WHAT_THE_BANK_IS_MADE_OF_SESSION_PROMPT.md`) снят баннером: все термы со `spread ≥ 2` уже в банке (A 9 из 9, B 8 из 8). Настоящий дефект приоритета №1 — пере-решение банка терминологом: на подписи замерено (у неподписанных строк сменились передачи A 12 из 69, B 14 из 66), на каждой следующей покупке глав выведено из кода — отгруженные главы по порядку слотов остаются со старыми передачами (`backend/internal/pipeline/volume.go`, греп `DELIVERY BEFORE REWORK`). Ряды 130 · 330 · 438 · 440 | $0 + центы перекупки банк-ролей | ⛔ **ПРОЕКТ ОРКЕСТРАТОРА ОТОЗВАН 15.09.** «Банк — журнал решений с окнами» (две редакции Fable 5) расходился с 12 пунктами решённого, замеренного и этого же плана и опирался примерно на десятую часть относящегося; улики — `archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/`. ✅ **КОНСИЛИУМ ОТРАБОТАЛ, акт `D39.253` (16.09).** Итог — `research/35-bank-memory-consilium.md`: банк как решение по уликам с пятью событиями пересмотра, N-1 на построенном фильтре, N-3 на сборке вида, ряды бэклога 441450. ✅ **СЛОВО ВЛАДЕЛЬЦА ПОЛУЧЕНО 16.09** (`D39.254`): держать решение между покупками — да · при невозможной безродовой форме — перестроить фразу, иначе «как лучше читается» · богаче контекст — да, меру решает замер M4 · голос и ты↔вы — строить. ⚠ **Вопрос об отказе терминолога ПЕРЕ-ОПРЕДЕЛЁН владельцем:** у банк-ролей нет ни ретрая, ни фоллбека (ряды 435, 438), и он считает это дырой ⇒ заведён ряд 451 «умный участок в точке банка», ряд 452 — голос. ✅ **ГРАНИЦЫ ДАНЫ ВЛАДЕЛЬЦЕМ 16.09** — «в границах ратифицированного», и слот бэкенда освобождён приёмкой `D39.255`. ✅ **ПАК 1 ПРИНЯТ 16.09 актом `D39.257`** (29 путей, $0; посылка В1 закрыта замером — 25 из 26 при идентичном входе). Промт написан был 16.09 — `BACKEND_BANK_ZERO_LAYER_SESSION_PROMPT.md`, пак $0 (громкий отказ при цели без инъекционных текстов до первой траты · отказ роли перестаёт ехать законом · предикат «спорный» как ДВА предиката с заданными знаменателями · носитель посылки «новой улики не было»); круг опровергателя пройден. ✅ **ВЫДАН и ПРИНЯТ 16.09** — акт `D39.257`. Вопросы владельцу, в том числе ряд 130 (`research/34` §4 п.4), ставит его итог; он же решает порядок относительно 5(в). Довод «перекрой глав без якоря пере-решил бы банк платной книги» остаётся входом ✅ **ПЕРЕНОС БАНКА РЕШЁН ВЛАДЕЛЬЦЕМ 16.09 — акт `D39.256`:** в КНИГУ-ПРОДОЛЖЕНИЕ едут ПОДПИСАННЫЕ строки ПЛЮС строки, РЕШЁННЫЕ ДВИЖКОМ; стройка ДВУХЗОННАЯ и ещё не начата — ряд **461**. ⚠ **Эррата 16.09-б:** формулировка «причина смен передачи — якорь» в `D39.256` и `D39.257` СИЛЬНЕЕ замера — измерено лишь отсутствие новой улики во ВХОДЕ, причина остаётся гипотезой, гейт — ряд **466**. Прочее живое банка: ряды **462** · **465**. |
**ПОЧЕМУ 4 ВСТАЛ ПЕРЕД 5 (решение 11.09 по мерилу владельца).** Мерило — «качественный КОНСИСТЕНТНЫЙ
перевод длинных книг». Аудит банка 11.09 показал, что **книжного вопроса о консистентности не задаёт ни один
прибор**: мера расхождения форм построена, но считается по ЧЕРНОВИКУ до редакторской волны, а по
отгружаемому тексту её нет вовсе. Пока её нет, приоритет №1 владельца непроверяем в принципе — и любая
работа над ВИДОМ выдачи улучшает то, что мы не умеем измерять. Ряды 406409 почти целиком $0 и
переиспользуют построенное; ряд 408 — вообще ДАННЫЕ, а не Go. Носитель разбора —
`docs/research/34-memory-bank-quality-audit.md`, акт — `D39.243`.
## СОСТОЯНИЕ НА 17.09 — что выяснено кругом 1617.09 и что из этого следует
**ЭТАП ПО БАНКУ НАЗВАН ЧЕСТНО: спроектировано всё, ПОСТРОЕН ОДИН механизм из семи.** Консилиум сдан и принят (`D39.253`),
решения владельца получены (`D39.254`), перенос ратифицирован (`D39.256`), два пака приняты (`D39.255`, `D39.257`).
Построен `N-4` (громкий отказ при цели без текстов инъекции) плюс поведенческая правка Б-5 и ПОЛОВИНА меток спора
(считать научились, платного потребителя нет). **Главный механизм `N-1` «решённое не пере-спрашивается» НИКОМУ НЕ ВЫДАН.**
**Перед паком 1 стоят ТРИ предусловия, и два из них — работа оркестратора, а не зоны:**
1. **Замер M2** — популяция книг с двойником ключа. ⚠ Пере-определён 16.09: это правка `membank`, а НЕ $0-ресёрч
(прибор ключуется на поверхность и вернёт ноль по построению). Носитель — ряд **477**.
2.**ЧЕТЫРНАДЦАТЬ НОТ ОРКЕСТРАТОРА (Д-1…Д-18, живых 17 рядов, часть склеивается)** — расхождения ратифицированного,
найденные консилиумом. Срок в его плане — «сразу». **Не написана ни одна. Это мой долг, и он гейтит пак 1.**
3. **Стройка стратифицированного отбора** (ряд **449**) — её гейтом стоял ответ владельца на В4, и он ПОЛУЧЕН
(`D39.254` п.4: «да, богаче контекст, но насколько — не знаю»); вес ряда исправлен 17.09, гейт снят.
**РЕТРАИ И ФОЛЛБЕК БАНК-РОЛЕЙ — НЕ ПОСТРОЕНЫ, и «просто включить» НЕ РАБОТАЕТ.** Эскалация построена и ратифицирована,
но выключена ДАННЫМИ (ряд **435**), а сверка деревом 16.09 показала: включение бюджета банк-ролям не поможет — у внутренних
вызовов хоп эскалации нулевой НАМЕРЕННО. Отдельно банк-роли идут мимо ОБЕИХ ветвей лечения (ряд **438**): на прогоне B
классификатор оставил **42 терма из 66 без машинного типа, оба провальных батча ОПЛАЧЕНЫ, регенерации не было**, тогда как
у черновой стадии та же мина лечится 5 раз из 5. Собрано в ряд **451** («умный участок в точке банка», слово владельца
`D39.254` п.2) и остаётся ДИЗАЙНОМ. ⚠ Границы: `D39.102` п.2 не пере-открывается.
**ПЕРЕНОС БАНКА (ряд 461) ЗАПЕРТ РАЗВИЛКОЙ МЕТКИ ИСТОЧНИКА — вопрос владельцу задан 17.09.** Как «добытое движком» —
терминолог тома 2 пере-спросит и пере-оплатит каждую строку; как подписанный сид — не пере-платится, но перенесённую ошибку
нельзя поправить с экрана подписи, и слово движка ложится в файл руки владельца. Предложен третий источник «унаследованное».
⚠ Независимо подтверждено ДВУМЯ источниками: «решённое движком» не существует как хранимый статус — это ВЫВОД фильтра,
привязанный к базису книги, и у продолжения улики другие по построению. ⚠ Плюс нужен $0-глагол экспорта: собрать переносимую
строку из проекции платформа не может (в ней нет рода, склонения, заметки), а копировать слияние руками — пере-реализация
закона движка.
**ДЕНЕЖНАЯ НАХОДКА 17.09 — ряд 478: ординал батча входит в ключ покупки.** Снятие одной решённой строки сдвигает номера
всех последующих батчей, их хеши меняются, чекпойнт не находится — и они покупаются заново ДАЖЕ при неизменных сообщениях.
⇒ чем лучше работает «решённое остаётся решённым», тем дороже обходится сдвиг. Это надо заказывать ВМЕСТЕ с паком 1.
**Гипотеза про якорь (ряд 466) — научная, не денежная.** Содержимым якоря объяснимы **3 смены из 25**; окончательно
разделить за $0 нельзя ПО ПОСТРОЕНИЮ (байт-идентичный вход даёт реплей из чекпойнта, а не второй сэмпл). ⇒ перед рядом 461
её ставить не надо: при любой причине лечение одно.
**Заведено 17.09 по находкам сессии пака, не попавшим в акт:** ряды **469476** (два компаратора с разными числами ·
молчаливая потеря данных ридером стопа при ложном комментарии · два смысла одного контроля · `immutable=1` без пина ·
прибор не печатает контроль своего же акта · половинчатый набор инъекции без сквозного пина · улики прогона A нечитаемы
движковым стором · деньги второго вызова не посчитаны), **477** (замер M2) и **478** (ординал батча).
**Эрраты к `D39.257`:** 16.09-б (причина смен — ГИПОТЕЗА, а не замер) и 16.09-в (знаменатель §4.4 описан в прошедшем
времени, починки нет).
**ПЛАТФОРМА — предмет назван и измерен (санкция владельца на выдачу получена 17.09).** Ряд **224** плюс **468**:
на стоп-границе — единственном человеческом узле всего потока — проекция несёт `terms=0` при `proposed=69` (прогон A)
и 66 (B), секция консолидации в файле есть, а ридер платформы парсит ТОЛЬКО секцию терминов. ⇒ экран подписи пуст не
потому, что предлагать нечего. ⚠ В спецификации слово `proposed` уже занято статусом строки УПРАЗДНЁННОЙ пер-термной
модели — минор придётся проектировать, а не копировать. Аудит контракта на переусложнение заказан 17.09.
**Вопросы владельцу, заданные 17.09:** деньги за пустоту (кто платит) · метка источника при переносе банка · что движок
делает с противоречием в банке (ряд 330) · когда твердеет нарезка · какую «готовность» он имел в виду.
**ДВА ПАКА НАПИСАНЫ 17.09 И ЖДУТ ВТОРОГО РУБЕЖА (опровергатель промта).** **Платформенный**`PLATFORM_BANK_READOUT_SESSION_PROMPT.md`:
читать секции предложений и консолидации из проекции банка и отдавать их контрактным минором. ⭐ Он закрывает **пункт 2 «Критерия полноты»**
этого же плана — пустой человеческий узел подписи. **Бэкендский**`BACKEND_BANK_RETRY_LADDER_SESSION_PROMPT.md`: вынести лестницу попытки
в ОБЩИЙ контур и подключить к ней банк-роли (движок уже вычисляет вердикт о негодном ответе и выбрасывает его), плюс тождество банк-батча
по содержимому (ряд 478). ⚠ Заказан РЕФАКТОРИНГ, а не заплатка — слово владельца 17.09, ратифицировано `D39.258` п.3.
## Прогон A — точечно (пере-написано 11.09 после разбора со старшим коллегой)
**ПРЕДМЕТ — строка 16: цена книги, ДОВЕДЁННОЙ ДО КОНЦА, не измерена ни разу.** Цикл замкнут живьём 04.09
(`D39.194` п.1: скачанный EPUB прошёл `epubcheck`), но книги, дошедшей до `exports.complete = true`, через
API не было: 04.09 упёрлось в потолок (`PD-440`, с тех пор лечено `D39.206`/`D39.208`). Прогон A ведёт одну
настоящую книгу от двери до ФАЙЛА и печатает, чем каждый узел предъявлен.
**ЛОКАЛЬНОЙ МОДЕЛИ НЕТ** (слово владельца 11.09 — на машине нет видеокарты): провайдер `local` смотрит в
`http://127.0.0.1:11434/v1`, а на хосте нет ни `nvidia-smi`, ни `ollama`, ни слушателя на 11434 (контроль:
слушателей всего 5, на 11434 — 0). Значит настоящие узлы можно пройти только платно.
**ТРИ МОИ ОШИБКИ В ЭТОМ РАЗДЕЛЕ, СНЯТЫЕ РАЗБОРОМ 11.09:**
1. **«Книга со стенда P9»** — на P9 (27.08) стояла встроенная трёхглавая ЗАГЛУШКА (`seed` «demo.txt») и
крафтовая проба в 1222 байта на `fake_provider.py`. Настоящая короткая книга — это 04.09:
`books/gu-zhenren/coldrun-v16/guzhenren-ch1-10.gb18030.txt` (10 глав, 14 юнитов). Брать **главы 13**
(≈4 юнита, глава 1 двухъединичная — пере-проверить манифестом ДО фриза).
2. **«Пробой 27.08 оборвался на правке банка»** — неверно: транскрипт показывает preview → apply →
`already_applied``409` на противоречии → resume → `ready 6/6`. Он не оборвался, а кончился там, где
кончался тогдашний контракт: без провайдера, без настоящей книги и без двери выгрузки.
3. **«Заглушка годится только как двадцатиминутный дым»** — наоборот: **$0-дым по заглушке ОБЯЗАТЕЛЕН
фазой 0.** Он валидирует драйвер, сборщики следов и дверь выгрузки бесплатно; без него первая же
инфраструктурная осечка сожжёт «холодность» платной книги.
**ДЕНЬГИ — ДВА ЧИСЛА, И Я ЗНАЛ ТОЛЬКО ОДНО.** Ожидаемая трата ≈ **$0.30** (замер 08.09: 10 глав за
`committed=$1.259217`). Но машинный КАП — это ХОЛД, а не ожидание: на `c1` книжный бонд
`book_once = budget_usd 1.00 + classify_budget_usd 1.00 = $2.00`, поэтому холд трёхглавой книги ≈ **$2.32.5**,
и грант обязан быть не меньше, иначе допуск откажет. ⇒ **владельцу называются оба: «ждём ≈$0.30, кап ≈$2.5».**
**Предусловия, которых в плане не было (замерены 11.09):** артефакта контраста майнинга нет НИ ОДНОГО на
файловой системе (`CheckMiningContrast` откажет на старте и оставит `failed`-прогон, после которого книга уже
не холодная) · `eval/.venv` не существует, jieba не установлен · кластер Postgres опущен · `epubcheck`/`java`
на хосте нет. Всё это ставится ДО фриза.
**Фриз** — sha коммита ПЛЮС бинари, собранные из `git worktree add <путь> <sha>`: сборка из главного дерева
даёт `vcs.modified=true` от любого untracked-файла, и драйвер обязан отказывать по `go version -m`.
⚠ Прогону A **запрещено чинить найденное** — только пинги. Приёмка узла — по ТРЁМ независимым следам
(Postgres · диск и systemd · HTTP), не по самоотчёту движка. Ожидаемый исход каждого шага пишется ДО
прогона. ⛔ **Претрейн:** 蛊真人 узнаётся моделями 4 из 5 ⇒ пре-рег объявляет, что клеймов О КАЧЕСТВЕ пак
не делает вовсе; узлы судятся механизмом (кадры, флаги, леджер), а не чтением текста.
## Решения владельца, уже полученные (носитель — ЗДЕСЬ; заведён 11.09, прежде его не было ни в одном доке)
-**ЗА ВСЁ ПЛАТИТ ЧИТАТЕЛЬ, вопрос отложен** (слово 11.09: «пока платит за все юзер, потом будем решать
эту проблему»). ⇒ **ни один пак не строит механизм „платит продукт“** и не меняет, кому что
выставляется. Вопрос «считается ли доставленная пустота расходом читателя» снят с очереди решений и
висит ОТЛОЖЕННЫМ; носители — ряды **415** · **414** · **422**. ⚠ И рядом стоит расхождение, которое
надо будет разрешить вместе с ним: объёмный леджер СЕГОДНЯ считает флагованный юнит НЕ доставленным
(`backend/internal/pipeline/volume_test.go`, греп `TestAFlaggedUnitIsNotReportedAsDelivered`), то есть
грант за него не съеден — это поведение ПРОТИВОРЕЧИТ «платит за всё читатель» и существует ДО этих
паков. Не трогать молча: назвать при разборе отложенного вопроса.
-**НАЗВАНИЕ КНИГИ И ЗАГОЛОВКИ ГЛАВ ИДУТ БАНКОМ, подпись — АВТО либо ПОЛЬЗОВАТЕЛЬСКАЯ** (слово 11.09:
«да, это идет банком и делается автоподпись\подпись юзера просто, вот и все»). ⇒ отдельного узла
подписи для заголовков НЕ проектировать: переиспользуется механизм подписи банка, каким подписывают
термины. Носитель предмета — ряд **284**; это снимает вопрос «какая у стадии подпись», висевший
открытым с 05.09.
-**ФАБЛ-СОВЕТЧИК РАЗРЕШЁН КАЖДОЙ ЗОННОЙ СЕССИИ — ОДИН** (слово 11.09: «разрешаю 1 фабла на 1 сессию,
ну как у тебя»). Прежде потолок 12 читался как относящийся только к оркестратору. Носитель — гардрейл
`CLAUDE.md`; промты зон обязаны НАЗЫВАТЬ механизм и форму (вопросы досылаются ОДНОМУ, второго не
поднимают).
-**СКВОЗНОЙ ПРОГОН B РАЗРЕШЁН** (слово 11.09: «разрешаю», в ответ на прямой вопрос с числами —
«ждём ≈$0.42, кап ≈$2.5 холда»). ⚠ Санкция названа ЗДЕСЬ и датирована, потому что норма «согласие —
ДО траты, явным словом» уже однажды стоила смены: промты ссылались на разрешение как на факт, а в
дереве его не было ни строкой. Предусловие санкции, объявленное вместе с ней: **пре-регистрация
знаменателя** — доля выброшенных первых попыток ПО ЕДИНИЦАМ, а не по вызовам, — и **фриз HEAD и
бинарей** (`git archive`), чтобы лендинги во время прогона не двигали прибор под замером.
-**ПЛАТНЫЙ ПРОГОН A РАЗРЕШЁН** (слово 11.09: «Разрешаю»). Ожидание ≈$0.30, машинный кап ≈$2.5 (холд, см.
раздел выше). ⚠ Санкция названа ЗДЕСЬ, потому что опровергатель 11.09 поймал: промты ссылались на неё как
на факт, а в дереве её не было ни строкой — «известное со слов» не носитель.
-**ОТКАЗ ДЕНЕГ НА ПОВТОРНОЙ ПОПЫТКЕ — СТАНДАРТНАЯ ОСТАНОВКА, А НЕ ФЛАГ** (слово 11.09: «…иметь возможность поднять
просто потолок и возобновить прогон, так как это ситуация всё же СТАНДАРТНАЯ СО СТОПОМ, просто он произошёл по
какой-то другой причине»). Позиция получает не-терминальную метку со своей причиной, кадр `ceiling` несёт недостачу,
пополнение и резюм доделывают юнит. ⚠ Четыре дня жило только в промте пака; ратифицировано «Эрратой 15.09-а» к `D39.204`.
-**Остановка остаётся ЖЁСТКОЙ, деньги терять ДОПУСТИМО, но остановка обязана быть КОРРЕКТНОЙ** — без
гонок, без половинчатых состояний, с верным возобновлением (`D39.240`).
-**ГОЛОС ВХОДИТ В ПРИОРИТЕТ №1** (слово 11.09: «Входит»). Прежнее расхождение канона проекта («термины/голоса») и ратифицированного списка 05.09 (голос №3) снято. ⛔ **Форма работы задана тем же словом: проектирует и контролирует голос FABLE, исполняет ОПУС** — сессии обсуждают имплементацию с агентом Fable 5, а не решают сами. Носитель предмета — строка бэклога **410**. ⚠ **Её голова ПЕРЕПИСАНА 11.09 пере-замером: «мёртв в четырёх местах» было НЕВЕРНО** — голос построен сквозь (схема сида · загрузчик · хранилище · инъекция · флаггер по отгруженному тексту · поле отчёта) и выключен ровно двумя вещами: профиля не написал никто ни разу, и `InjectVoice` — константа без ключа конфига, чьё включение стоит полного `--resnapshot`. ⇒ работа мельче, чем читалась: не «построить голос», а написать профиль, открыть ручку и заплатить ре-снапшотом.
-**Автономия смены (11.09):** решения принимаю сам, советуясь со старшим коллегой; мерило — главные
ценности продукта (качественный консистентный перевод длинных книг), затем архитектура и чистый код,
необходимый рефакторинг и отсутствие велосипедостроения.
## Что решает владелец — ОСТАЛОСЬ
- **Определение показа:** аудитория и вход · какая книга · один гость или несколько · **бюджет времени**
(`ПТ-19` называет скорость киллерфичей, а времени у экрана никто не мерил).
- **Деньги гостя на показе** — стенд сеет $25, продукт 0; дневного потолка в шаблоне намеренно нет.
- Какую из двух «готовностей» он имел в виду — полноту функционала или качество перевода.
-**ПЯТЬ ВОПРОСОВ ПО СТРУКТУРЕ ГЛАВ — К ВЛАДЕЛЬЦУ СЕГОДНЯ НЕ ИДЁТ НИ ОДИН** (разбор — `backend/docs/CHAPTER_STRUCTURE_DESIGN.md` §11,
ратификация — `D39.258` п.78). **В-4 и В-5 ЗАКРЫТЫ 17.09:** ответ владельца совпал с его же решением 09.08 — нарезка и деньги
твердеют на ЧЕРНОВОЙ ВОЛНЕ, вид читателя — на ПОДПИСИ БАНКА (`docs/research/27-chapter-detection.md:35`=`Freeze на этой стадии
относится к НАРЕЗКЕ/деньгам`, `:36`=`С этой точки структура затвердевает`); прежде ни одна точка не была ратифицирована нотой.
**Пятый СНЯТ с владельца самим дизайном** и переведён в замер (у размена неизвестна одна сторона). **В-1** (какой номер главы видит
читатель) остаётся владельческим, но упирается во ФРОНТ, замороженный `D39.147` ⇒ не срочен. **В-2** и **В-3** (судьба переведённых
книг при перекрое · кто платит за пере-нарезку) почти бесплатны, пока платная книга одна (`D39.190` п.4), и становятся продуктовыми
после впуска пользователей.
-**ДЕНЬГИ ЗА ПУСТОТУ — РЕШЕНО 17.09, акт `D39.258` п.1: ПЛАТИТ ЧИТАТЕЛЬ.** ⛔ **И это было ПОДТВЕРЖДЕНИЕ, а не новое
решение — дефект носителя мой:** тот же план выше несёт «за всё платит читатель» словом 11.09, а здесь сорока строками
ниже держал вопрос открытым с тремя вариантами, и я задал его владельцу заново. Замер, ради которого вопрос заводился,
остаётся фактом: 4 вызова из 27 вернулись без пригодного текста и стоили **$0.106472 = 25.4 % цены книги**, три из них
дали РОВНО 0 знаков. ⇒ доставленная пустота считается реальным расходом читателя; **инженерная половина — пометка класса
у негодной выдачи (`degraded`) — за оркестратором и решается без владельца.** Носители — ряды **415** · **414** · **422**.
- **Пять вопросов банка памяти**, поднятых аудитом 11.09 (стоп или флаг на разъехавшемся термине · входит ли
ГОЛОС в приоритет №1 · один перевод у НЕподписанного термина · накапливать ли банк между прогонами ·
остановка на подпись — опция или свойство продукта). Носитель разбора — `docs/research/34-*`. ⚠ **15.09: вопрос «накапливать ли банк между прогонами» получил числа и стал блокером пункта 10.**
## Вычеркнуто
Лендинг (строка **384**) — отдельная поверхность. Брокер конкурентности — решается определением «один гость».
Корректность остановки — после A, объёмом по его уликам; четыре однострочника «без мусора» идут приложением
к пункту 4, kill-харнесс — следующим слотом.
## Мои ошибки, снятые разбором — чтобы не повторить
1. «По рецепту P9» — рецепт идёт мимо фронта и обрывается до последней трети.
2. «Второй контур наблюдения» как условие — гейтил бы прогон стройкой ненужного ему.
3. «Приоритет №1 не исполняется кодом вовсе» — **неверно**: консистентность держится инъекцией банка и
пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя».
4. «Прогон A — зона платформы» — **нет, полигона**: он не пишет кода зон, это эксперимент с пре-регистрацией.
Слот платформы поэтому свободен.
5. **«Вход» как дыра из трёх частей** — две части оказались не дырами (грант ратифицирован, байтовый
потолок построен), и я объявил их отсутствующими, не спросив дерево. Замер и правка — в самой дыре 1.