262 lines
54 KiB
Markdown
262 lines
54 KiB
Markdown
# Ближайший горизонт — 3–5 промтов
|
||
|
||
> Рабочая записка оркестратора №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. ✅ **СОДЕРЖИМОЕ УЗЛА ПОДПИСИ БАНКА — ЗАКРЫТО 17.09 актом `D39.262`** (`ffd3751`): у секции предложений появился
|
||
читатель, и на обоих купленных прогонах экран отдаёт **69** и **66** вместо нуля; собственный контроль ряда 224
|
||
(«`json:"proposed` в `platform/` — 0 хитов») ушёл с 0 на 1. Секции читаются ВМЕСТЕ с границей, на которой сняты,
|
||
и «секции нет» отличается от «секция пуста» механически. ⛔ **Остаток назван и не спрятан:** ряд **479** (части
|
||
ярлыка `variants` не опубликованы — клиент не отрисует их на языке читателя, движковый долг) и ряд **353**
|
||
(у `SettledByBank` нет свидетеля, движковая зона). ⚠ Прежняя редакция пункта, как история замысла: у секции предложений
|
||
читателя нет (`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 · 453–456. Пак пережил ПОТЕРЮ сессии b1 и доведён `textmachine-main-b1` разделом ред. 5; конструкция пере-решена владельцем 11.09: стандартная остановка, не флаг (эррата 15.09-а к `D39.204`). **Слот бэкенда СВОБОДЕН** · (б) закрыт · (в) прогон B принят (`D39.252`), заперт теперь слотом и порядком — см. пункт 10 |
|
||
| 6 | **фронт** | поверхность показа | пак | разморозка + пункты 1–5 |
|
||
| 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 на сборке вида, ряды бэклога 441–450. ✅ **СЛОВО ВЛАДЕЛЬЦА ПОЛУЧЕНО 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 владельца непроверяем в принципе — и любая
|
||
работа над ВИДОМ выдачи улучшает то, что мы не умеем измерять. Ряды 406–409 почти целиком $0 и
|
||
переиспользуют построенное; ряд 408 — вообще ДАННЫЕ, а не Go. Носитель разбора —
|
||
`docs/research/34-memory-bank-quality-audit.md`, акт — `D39.243`.
|
||
|
||
## СОСТОЯНИЕ НА 17.09 — что выяснено кругом 16–17.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 рядов, часть склеивается)** — расхождения ратифицированного,
|
||
найденные консилиумом. Срок в его плане — «сразу». ⚠ **ПЕРЕ-СНЯТО 17.09: написаны ШЕСТЬ эррат (17.09-а…-е), и ими закрыты девять строк консилиума** — Д-4 · Д-5 · Д-7 · Д-8 · Д-9 · Д-12 · Д-14 · Д-16 · Д-18, плюс Д-13 ОТКЛОНЁН (доктрины под названным именем в носителе нет) и Д-11 закрыт `D39.261`. **Остаток — четыре строки в двух нотах:** Д-1+Д-2 (производитель проактивного `hidden`: роль, названная двумя ратифицированными носителями, в движке отсутствует — 0 файлов из 466 при контроле 188) и Д-6+Д-17 (замена недостижимых условий; сужение области `D39.144` п.1 — НЕ отмена). ⚠ Д-3 разобран и ОТКЛОНЁН в предъявленной форме (его адрес указывал в несуществующий путь, а по верному ветка статуса не касается), но проверка вскрыла другое и оно заведено рядом **487**. ⛔ Обе ноты готовы и ждут одного: новый номер двигает голову, а голова живёт в том числе в журнале прогресса, который сейчас занят зоной бэкенда.
|
||
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 по находкам сессии пака, не попавшим в акт:** ряды **469–476** (два компаратора с разными числами ·
|
||
молчаливая потеря данных ридером стопа при ложном комментарии · два смысла одного контроля · `immutable=1` без пина ·
|
||
прибор не печатает контроль своего же акта · половинчатый набор инъекции без сквозного пина · улики прогона A нечитаемы
|
||
движковым стором · деньги второго вызова не посчитаны), **477** (замер M2) и **478** (ординал батча).
|
||
**Эрраты к `D39.257`:** 16.09-б (причина смен — ГИПОТЕЗА, а не замер) и 16.09-в (знаменатель §4.4 описан в прошедшем
|
||
времени, починки нет).
|
||
|
||
**ПЛАТФОРМА — ✅ ПОСТРОЕНО И ПРИНЯТО 17.09, акт `D39.262`** (`ffd3751`, 21 путь, контрактный минор **0.16.0**). Платформенные половины рядов **224** и **253** закрыты: на экране подписи было 0, стало 69 и 66 на обоих купленных прогонах; ридер читает обе секции вместе с ГРАНИЦЕЙ, на которой они сняты, и «секции нет» отличается от «секция пуста» механически, а не в комментарии. ⛔ Мажор приёмки: канон объявлял `confidence` неотрицательным, а движок, ридер, хранилище и проекция согласованно слали `-1`; вылечено КЛАССОМ — гейт, читающий диапазоны ИЗ канона, покраснел на ЧЕТЫРЁХ полях, и правило «число вне объявленного диапазона читается как не названо» поставлено У ШВА. Остаток — ряды **479** (части ярлыка `variants` не опубликованы, движковый долг) и **353** (свидетель `SettledByBank`, движковая зона). ⚠ Прежняя редакция этого абзаца (ниже, как история замысла): Ряд **224** плюс **468**:
|
||
на стоп-границе — единственном человеческом узле всего потока — проекция несёт `terms=0` при `proposed=69` (прогон A)
|
||
и 66 (B), секция консолидации в файле есть, а ридер платформы парсит ТОЛЬКО секцию терминов. ⇒ экран подписи пуст не
|
||
потому, что предлагать нечего. ⚠ В спецификации слово `proposed` уже занято статусом строки УПРАЗДНЁННОЙ пер-термной
|
||
модели — минор придётся проектировать, а не копировать. Аудит контракта на переусложнение заказан 17.09.
|
||
|
||
**Вопросы владельцу, заданные 17.09 — ЧЕТЫРЕ ИЗ ПЯТИ ЗАКРЫТЫ ЕГО ЖЕ ОТВЕТАМИ В ТОТ ЖЕ ДЕНЬ:** деньги за пустоту — платит читатель (`D39.258` п.1) · метка источника при переносе — банк едет СУЩЕСТВУЮЩИМ механизмом сида, новых сущностей не вводить (`D39.258` п.2) · когда твердеет нарезка — обе точки названы (`D39.258` п.7–8) · зависимость банка от истории покупок принята как цена (`D39.261`). ⛔ **ОТКРЫТ ОДИН: какую «готовность» он имел в виду** — полноту функционала или качество перевода. ⚠ Прежняя редакция (история): что движок
|
||
делает с противоречием в банке (ряд 330) · когда твердеет нарезка · какую «готовность» он имел в виду.
|
||
|
||
⭐ **ДВА ПАКА 17.09: ПЛАТФОРМЕННЫЙ ПРИНЯТ И ЗАЛЕНДЕН, БЭКЕНДСКИЙ В РАБОТЕ** (пере-снято 17.09; прежняя редакция абзаца говорила «написаны и ждут второго рубежа» — оба рубежа пройдены, промты выданы коммитом `180c41e`). **Платформенный** — `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 юнитов). Брать **главы 1–3**
|
||
(≈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.3–2.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 сессию,
|
||
ну как у тебя»). Прежде потолок 1–2 читался как относящийся только к оркестратору. Носитель — гардрейл
|
||
`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` п.7–8). **В-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) — ЧЕТЫРЕ ИЗ ПЯТИ УЖЕ РАТИФИЦИРОВАНЫ, и держать их здесь
|
||
открытыми было дефектом НОСИТЕЛЯ: тот же класс, из-за которого я однажды заново спросил владельца о том,
|
||
на что этот план отвечал сорока строками выше. Пере-снято 17.09 по ратифицированному, с адресами:
|
||
- **стоп или флаг на разъехавшемся термине — ЗАКРЫТ `D39.198` п.3:** приоритет владельца говорит не о весах,
|
||
а о том, чей отказ ОСТАНАВЛИВАЕТ выпуск — «разъехавшийся термин — стоп (банк, чинится); выдумка — стоп
|
||
(ложь читателю); сухая фраза — не стоп, это доводят»;
|
||
- **входит ли ГОЛОС в приоритет №1 — ЗАКРЫТ `D39.248`** словом владельца «Входит»; этот же план помечает его
|
||
✅ в разделе «уже полученные» — противоречие внутри одного файла и было дефектом;
|
||
- **один перевод у НЕподписанного термина — ЗАКРЫТ доктриной инжекта `D39.104` п.1:** право «перевести иначе,
|
||
если сомнительно» УПРАЗДНЕНО, банк на проводе — закон для всех ролей независимо от статуса строки;
|
||
неподписанная передача применяется последовательно и правится уровнем выше — банк-правкой и ре-эдитом;
|
||
- **накапливать ли банк между прогонами — ЗАКРЫТ `D39.254` п.1** («держать решение банка между покупками — да»),
|
||
и достроен `D39.258` п.2 (перенос едет СУЩЕСТВУЮЩИМ механизмом сида, новых сущностей не вводить) и `D39.261`
|
||
(зависимость банка от истории покупок ПРИНЯТА как цена). ⇒ прежняя пометка «15.09 стал блокером пункта 10»
|
||
снята: блокер разрешён решением владельца.
|
||
⛔ **ОТКРЫТЫМ ОСТАЁТСЯ ОДИН: остановка на подпись — ОПЦИЯ или СВОЙСТВО продукта.** Замер 17.09: ни одной
|
||
ратификации ни в одной форме (`остановка на подпись` · `стоп на подпись` · `signature-stop` → 0 в журнале
|
||
решений при контроле «подпис» → 124 хита там же). Носитель разбора — `docs/research/34-*`.
|
||
|
||
## Вычеркнуто
|
||
|
||
Лендинг (строка **384**) — отдельная поверхность. Брокер конкурентности — решается определением «один гость».
|
||
Корректность остановки — после A, объёмом по его уликам; четыре однострочника «без мусора» идут приложением
|
||
к пункту 4, kill-харнесс — следующим слотом.
|
||
|
||
## Мои ошибки, снятые разбором — чтобы не повторить
|
||
|
||
1. «По рецепту P9» — рецепт идёт мимо фронта и обрывается до последней трети.
|
||
2. «Второй контур наблюдения» как условие — гейтил бы прогон стройкой ненужного ему.
|
||
3. «Приоритет №1 не исполняется кодом вовсе» — **неверно**: консистентность держится инъекцией банка и
|
||
пост-проверкой, которая ФЛАГУЕТ и ОТГРУЖАЕТ. Это «нет ОТКАЗА», а не «нет носителя».
|
||
4. «Прогон A — зона платформы» — **нет, полигона**: он не пишет кода зон, это эксперимент с пре-регистрацией.
|
||
Слот платформы поэтому свободен.
|
||
5. **«Вход» как дыра из трёх частей** — две части оказались не дырами (грант ратифицирован, байтовый
|
||
потолок построен), и я объявил их отсутствующими, не спросив дерево. Замер и правка — в самой дыре 1.
|