diff --git a/docs/NEXT_PACKS_PLAN.md b/docs/NEXT_PACKS_PLAN.md index a19a24b2..4ce62da1 100644 --- a/docs/NEXT_PACKS_PLAN.md +++ b/docs/NEXT_PACKS_PLAN.md @@ -234,7 +234,12 @@ - **`PD-438` — остаток назвать явно:** лечение в дереве, но парковка не видна ни в `runs`, ни гейджем, ни колонкой. План первой редакции не назвал его ни взятым, ни отложенным. -## 3. ЧТО ОСТАЁТСЯ НА ВЛАДЕЛЬЦЕ — три решения, без которых состав неполон +## 3. РЕШЕНИЯ — ВСЕ ЗАКРЫТЫ 04.09 (`D39.190`), лист пуст + +> Владелец 04.09: «делаем как ты и Fable 5 рекомендуете». Ниже — исходный лист; каждый пункт несёт +> исход. ⚠ При сведении нашлось ЧЕТВЁРТОЕ, которого не видели ни план, ни разбор: строка 160 бампает +> `manifestVersion`, а платформенный пак в это же окно гонит ЖИВОЙ ПЛАТНЫЙ прогон — бамп сорвал бы +> его, потому что гейт интейка строгое равенство. Поэтому 160 отложена ПОРЯДКОМ, а не приоритетом. 1. ~~**Санкция на платный сквозной прогон**~~ — **ДАНА 03.09 (`D39.189`):** «разрешаю платные прогоны с ключами для тестов». ⚠ Потолок числом НЕ назван, поэтому его называет пак: оценка своим замером + diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index aef53ba1..381a85a7 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -1,6 +1,6 @@ # Журнал прогресса -> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-03, голова D39.189 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №22** (единственный носитель — здесь; роль передана 01.09, №21 закрыт нотой передачи D39.184). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **88** живых доков в `docs/` против **198** заархивированных, 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 88 три ВРЕМЕННЫЕ (`DOC_CLEANUP_PLAN` · `DOC_REVISION_FINDINGS` · `DOC_REVISION_REFUTED`), они уедут в архив по закрытии разбора, то есть постоянных **85**; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 97 (major 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) РАЗРЫВ ЦИКЛА: книга не отдаётся файлом ПОЛЬЗОВАТЕЛЮ — открыта ПЛАТФОРМЕННАЯ половина.** Движок пишет файл с 30.08 (`tmctl build` — EPUB 3 + чистый txt, D39.175), и холодный прогон 31.08 предъявил это живьём: собранный EPUB настоящего перевода прошёл `epubcheck` 0/0/0/0 и передан владельцу. Открыто ровно одно: канон обещает `createExport`/`getExport`, а платформа их НЕ монтирует (смонтировано 15 операций из 20; нет также `getRun`, `updateBook`, `deleteBook`). Долг числится с P8 (`platform/BACKLOG.md` П-17), и НИ ОДИН пак платформы после P7 его не взял (проверка вместо ручного счёта, чтобы не гнило при каждом лендинге: `grep -rn 'createExport\|getExport' platform/internal/ --include=*.go` — пусто). **Слово «отдаёт результат» ложно по букве ТОЛЬКО платформенной половиной** (п.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. ⚠ **Причина большой доли редактора НЕ УСТАНОВЛЕНА** (каузальные истории и их снятие — §4 отчёта). Доля редактора идёт с ДВУМЯ знаменателями: **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.9.0`, и первый из них — ЛОМАЮЩИЙ 0.3.0), 16 операций против 20; отставание ратифицировано D39.142 п.5 на время фриза и две ручки разъехались, размораживать раньше значит перегенерировать типы дважды. ⚠ **ДВА ЗАГЕЙЧЕННЫХ ТРИГГЕРА НАЖАТЫ И НЕ ОТРАБОТАНЫ — строка бэклога 237** (`go.work` · вендор-сверка эффорта `deepseek-v4-pro`; реестр `13-tech-debt-anchors.md` §Б-108). ⚠ **Состояние git — снимать КОМАНДАМИ, не чтением** (ветка `polygon` ушла вперёд, коммит здесь не цитирую): работа полигона лежит на ней и в `main` НЕ влита, а `git status -- eval/` в main-дереве пуст ПО ПОСТРОЕНИЮ и уводит в ложный вывод «работы нет»; **«развязка git с origin» ОПРОВЕРГНУТА** — `origin/main` остаётся ПРЕДКОМ `main`, расхождения нет (`git merge-base --is-ancestor origin/main main` → rc 0). ⚠ Пункт «развязка git с origin» в листе владельца ниже держится ТОЛЬКО как вопрос про force-push его рукой; утверждением о расхождении дерева он не является — арбитр этой пары именно здесь. +> **⟶ ТЕКУЩЕЕ СОСТОЯНИЕ** (на 2026-09-04, голова D39.190 — КУРС: движок и платформа до «работает и отдаёт результат», фронт ЗАМОРОЖЕН и P7 его НЕ размораживает (D39.147). **ОЧЕРЕДЬ №22** (единственный носитель — здесь; роль передана 01.09, №21 закрыт нотой передачи D39.184). ⚠ **ЗАКАЗ ВЛАДЕЛЬЦА 01.09 — ПЕРВЫМ:** (0а) **ревизия документации на ПРОТУХШЕЕ** — по всем зонам, не только тронутым; (0б) **планы доработок в БЭКЕНД и ПЛАТФОРМУ** по остатку бэклога и регистра; (0в) **вынос неактуального в АРХИВ** (`docs/archive/`, `platform/docs/archive/`) — за сутки 31.08 закрыто много, и часть носителей стала историей. ⚠ Трезвость по масштабу (пере-считано 02.09): **88** живых доков в `docs/` против **198** заархивированных, 8 в `platform/docs`, 9 в `backend/docs` — ⚠ из 88 три ВРЕМЕННЫЕ (`DOC_CLEANUP_PLAN` · `DOC_REVISION_FINDINGS` · `DOC_REVISION_REFUTED`), они уедут в архив по закрытии разбора, то есть постоянных **85**; счёт бэклога — бюллетенем ниже, открытых рядов регистра платформы — 97 (major 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) РАЗРЫВ ЦИКЛА: книга не отдаётся файлом ПОЛЬЗОВАТЕЛЮ — открыта ПЛАТФОРМЕННАЯ половина.** Движок пишет файл с 30.08 (`tmctl build` — EPUB 3 + чистый txt, D39.175), и холодный прогон 31.08 предъявил это живьём: собранный EPUB настоящего перевода прошёл `epubcheck` 0/0/0/0 и передан владельцу. Открыто ровно одно: канон обещает `createExport`/`getExport`, а платформа их НЕ монтирует (смонтировано 15 операций из 20; нет также `getRun`, `updateBook`, `deleteBook`). Долг числится с P8 (`platform/BACKLOG.md` П-17), и НИ ОДИН пак платформы после P7 его не взял (проверка вместо ручного счёта, чтобы не гнило при каждом лендинге: `grep -rn 'createExport\|getExport' platform/internal/ --include=*.go` — пусто). **Слово «отдаёт результат» ложно по букве ТОЛЬКО платформенной половиной** (п.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. ⚠ **Причина большой доли редактора НЕ УСТАНОВЛЕНА** (каузальные истории и их снятие — §4 отчёта). Доля редактора идёт с ДВУМЯ знаменателями: **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.9.0`, и первый из них — ЛОМАЮЩИЙ 0.3.0), 16 операций против 20; отставание ратифицировано D39.142 п.5 на время фриза и две ручки разъехались, размораживать раньше значит перегенерировать типы дважды. ⚠ **ДВА ЗАГЕЙЧЕННЫХ ТРИГГЕРА НАЖАТЫ И НЕ ОТРАБОТАНЫ — строка бэклога 237** (`go.work` · вендор-сверка эффорта `deepseek-v4-pro`; реестр `13-tech-debt-anchors.md` §Б-108). ⚠ **Состояние git — снимать КОМАНДАМИ, не чтением** (ветка `polygon` ушла вперёд, коммит здесь не цитирую): работа полигона лежит на ней и в `main` НЕ влита, а `git status -- eval/` в main-дереве пуст ПО ПОСТРОЕНИЮ и уводит в ложный вывод «работы нет»; **«развязка git с origin» ОПРОВЕРГНУТА** — `origin/main` остаётся ПРЕДКОМ `main`, расхождения нет (`git merge-base --is-ancestor origin/main main` → rc 0). ⚠ Пункт «развязка 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. Прожитые дампы приёмок 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, одна строка на ноту). @@ -16,7 +16,8 @@ **Залендены и ратифицированы, приёмочные дампы — телами нот:** платформенный **P11** — D39.169 · движковый пак **«деньги»** — D39.170 · платформенный **P12** — D39.180 (вместе с контрактным минором **0.9.0**; `PD-425` закрыт им же) · бэкенд-пак **«деньги и честность выдачи»** — D39.182 (тестов 1045→1083, удалённых ноль) · **закон раскрытия** движка — D39.181, ратифицирован владельцем и применён к одиннадцати экземплярам. -**ОТРАБОТАНЫ 03.09, ПРИНЯТЫ С ДОФИКСОМ и заленджены** (`D39.187` движок, `D39.188` платформа; промты в `archive/prompts/` с баннерами исхода; следующие паки ПЛАНИРУЮТСЯ — `NEXT_PACKS_PLAN.md`, промты не выданы до обоюдного «ок» оркестратора и контролёра, слово владельца 03.09): платформенный **P13** «шов возврата оплаченного прогона» (`docs/PLATFORM_P13_SESSION_PROMPT.md`: `PD-168` бюджет из холда · `PD-89` ключ на пути ошибки · `PD-426`/`PD-214` чужая строка не карантинит проекцию · `PD-374` гейт батареи · гейт против класса серьёзности · строка рантбука деплоя) и бэкендовый **«число согласия на пути второй покупки»** (`docs/BACKEND_CONSENT_SESSION_PROMPT.md`: ФЧ-5 ось модели · строка 232 остаток слота · ФЧ-4 обе половины · ФЧ-1 три гарантии). ⚠ **Сцепление по деплою названо в обоих: у формы манифеста БЕЗОПАСНОГО ПОРЯДКА НЕТ** — гейт интейка `platform/internal/ingest/manifest.go:112`=`if m.Version != KnownManifestVersion` сравнивает со строгим равенством одной константе, окна двух версий нет; рантбук `platform/deploy/README.md:217`=`сначала платформа, потом движок` советует обратное и отдан на починку паку P13 пунктом 6. +**ВЫДАНЫ 04.09 и РАБОТАЮТ ПАРАЛЛЕЛЬНО** (зоны независимы по коду; сцепление одно — **форма манифеста ЗАМОРОЖЕНА на время окна**, чтобы бамп не сорвал платный прогон платформы, `D39.190` п.5): бэкенд — вайр-батч `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/` с баннерами исхода; следующие паки ПЛАНИРУЮТСЯ — `NEXT_PACKS_PLAN.md`, промты не выданы до обоюдного «ок» оркестратора и контролёра, слово владельца 03.09): платформенный **P13** «шов возврата оплаченного прогона» (`docs/PLATFORM_P13_SESSION_PROMPT.md`: `PD-168` бюджет из холда · `PD-89` ключ на пути ошибки · `PD-426`/`PD-214` чужая строка не карантинит проекцию · `PD-374` гейт батареи · гейт против класса серьёзности · строка рантбука деплоя) и бэкендовый **«число согласия на пути второй покупки»** (`docs/BACKEND_CONSENT_SESSION_PROMPT.md`: ФЧ-5 ось модели · строка 232 остаток слота · ФЧ-4 обе половины · ФЧ-1 три гарантии). ⚠ **Сцепление по деплою названо в обоих: у формы манифеста БЕЗОПАСНОГО ПОРЯДКА НЕТ** — гейт интейка `platform/internal/ingest/manifest.go:112`=`if m.Version != KnownManifestVersion` сравнивает со строгим равенством одной константе, окна двух версий нет; рантбук `platform/deploy/README.md:217`=`сначала платформа, потом движок` советует обратное и отдан на починку паку P13 пунктом 6. ⛔ **Проводка `--max-units` в платформу остаётся ГЕЙЧЕНОЙ. Живое основание одно и оно механическое:** единственный писатель `bank_moved_at` — дверь правок банка (`platform/internal/runs/bank.go:182`), а рост АВТО-банка от майнинга этого флага не ставит, поэтому майнящая книга на второй покупке идёт без `--resnapshot` и умирает на снапшот-гарде движка — холд взят, попытка сожжена (`PD-422`). Это чинится проводкой признака движения банка от майнинга, а не решением владельца. diff --git a/docs/README.md b/docs/README.md index b546c6ef..89a791cc 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,8 +22,8 @@ | Роль | Активный промт | Статус | |---|---|---| | Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE | - | Бэкенд | активного НЕТ | пак «число согласия на пути второй покупки» ОТРАБОТАН и принят с дофиксом 03.09 (**D39.187**), промт в [archive/prompts/](archive/prompts/BACKEND_CONSENT_SESSION_PROMPT_2026-09-02.md) с баннером исхода. Следующий пак ПЛАНИРУЕТСЯ — [NEXT_PACKS_PLAN.md](NEXT_PACKS_PLAN.md); до обоюдного «ок» оркестратора и контролёра промт не выдаётся (слово владельца 03.09) | - | Платформа | активного НЕТ | пак **P13** ОТРАБОТАН и принят с дофиксом 03.09 (**D39.188**), промт в [archive/prompts/](archive/prompts/PLATFORM_P13_SESSION_PROMPT_2026-09-02.md) с баннером исхода. Следующий пак ПЛАНИРУЕТСЯ — [NEXT_PACKS_PLAN.md](NEXT_PACKS_PLAN.md); до обоюдного «ок» промт не выдаётся | + | Бэкенд | [BACKEND_WIREBATCH_SESSION_PROMPT.md](BACKEND_WIREBATCH_SESSION_PROMPT.md) | **ВЫДАН 04.09** — вайр-батч «род, экран цели, заголовки инъекций»: строки 210 · 113→46 · 134 · 140 · 184(а) + дофикс чужого пака и ФЧ-7. Пере-снапшот батча ратифицирован единым актом (**D39.190** п.4). Предыдущий пак принят с дофиксом 03.09 (**D39.187**), промт в [archive/prompts/](archive/prompts/BACKEND_CONSENT_SESSION_PROMPT_2026-09-02.md) | + | Платформа | [PLATFORM_EXPORT_SESSION_PROMPT.md](PLATFORM_EXPORT_SESSION_PROMPT.md) | **ВЫДАН 04.09** — «закрыть цикл»: живой ПЛАТНЫЙ сквозной прогон через API (санкция **D39.189**, потолок — грант $1.5, эррата 04.09-а о механизме) · дверь выдачи `createExport`/`getExport` · `PD-424` · дофикс и три райдера. Предыдущий — P13, принят с дофиксом 03.09 (**D39.188**) | | Полигон | [POLYGON_EXP2223_REDO_SESSION_PROMPT.md](POLYGON_EXP2223_REDO_SESSION_PROMPT.md) (отложенный — [POLYGON_PACKAGE4_SESSION_PROMPT.md](POLYGON_PACKAGE4_SESSION_PROMPT.md), строка 85) | фаза Д ИДЁТ; ⚠ живой носитель курса — в `eval/dovodka/`, какой именно называет зона (⚠ [POLYGON_PHASE_D_HANDOFF.md](POLYGON_PHASE_D_HANDOFF.md) — перекрытый снимок, читать не как курс) | | Фронт | активного НЕТ | **ЗОНА ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: разморозка отдельным словом владельца, не привязана к P7); перечень первого касания — в зонном журнале | | Контракт | активного НЕТ | канон — `architecture/14-api-contract/`; ⚠ версию брать ФАЙЛОМ (`grep '^ version:' openapi.yaml`), не отсюда: миноры ратифицируются D-нотами и их содержание грепается по реестру нот. | diff --git a/docs/architecture/05-decisions-index.md b/docs/architecture/05-decisions-index.md index 18f89cb6..23e6b5b0 100644 --- a/docs/architecture/05-decisions-index.md +++ b/docs/architecture/05-decisions-index.md @@ -248,3 +248,4 @@ | D39.187 | 03.09 | **Приёмка бэкенд-пака «число согласия» и его дофикса.** Принят исполнением в два круга: батарея зелёная, тестов 1083→1105 при нуле удалённых, каталог мутаций 73→92 и все 19 новых КРАСНЫЕ. ⚠ Норма, купленная паком: **приёмка обязана сажать СВОИ мутации, а не пере-гонять чужие** — первый круг пропустил три неприбитые гарантии, нашли их только собственные посадки. Ратифицированы СВЕРХ заказа два правила денежного пути (обход `usd()` через $0-вызов · раскрытие $0-строки с чужим новейшим вызовом) — направление п.1 D39.150 | жив | ЖИВОЕ: развилка стоп-строки прибита с одной стороны · граница `bound()` не прибита · семантика переноса отложена словом владельца 03.09 | приёмка бэкенд деньги мутации | | D39.188 | 03.09 | **Приёмка платформенного пака P13 и его дофикса.** Заказ пункта 3 был НЕДОСТАТОЧЕН: голое пере-упорядочивание отказов расширяло класс — зона доказала это до и после правки, завела `PD-438` (major) и вылечила остановкой чтения на чужом handshake'е; приёмка опровергла ОБОСНОВАНИЕ («Nothing of ours can follow»), дофикс дал припаркованной попытке `ErrForeignStreamAhead` + ресинк. Гейты доведены до своих обещаний; 20 посадок приёмки красны. Закрыты `fixed(6ae3e76)`: `PD-89` · `PD-168` · `PD-214` · `PD-426` | жив | ЖИВОЕ: записка о хосте различает по имени машины, а оно общее · `PD-439` и правило ухода из класса — на оркестраторе · остаток `PD-374`: имя условия через константу невидимо | приёмка платформа шов гейты | | D39.189 | 03.09 | **Санкция владельца: платные прогоны с ключами разрешены для тестов.** Снимает предусловие живого сквозного прогона через API платформы (строка 202) — до сих пор он не гонялся ни разу, форму настоящих данных платформа сочинила сама. ⚠ Потолок числом НЕ назван, поэтому его называет ПАК: оценка своим замером + обязательный `--ceiling-usd` + правило «перелёт — стоп и пинг». Опора для оценки — холодный прогон 31.08 ($0.436110 на десяти главах) | жив | ЖИВОЕ: операционное предусловие — `TM_PLATFORM_ENGINE_KEYS_PATH` абсолютным путём на заполненный файл, проверять прогоном | санкция деньги прогон | +| D39.190 | 04.09 | **Три решения очереди по слову владельца «делаем как рекомендуете».** 160 (структура глав, Этап 0) БЕРЁТСЯ, но своим паком ПОСЛЕ двери — причина порядковая: она бампает `manifestVersion`, а у бампа формы безопасного порядка деплоя нет, и параллельный ПЛАТНЫЙ прогон платформы был бы сорван · 142 — после шагов 0–1 полигона (precision глоссарного флага 0.067; формы пре-гейта детальнее ноты нет нигде ⇒ первым будет дизайн) · пере-снапшот вайр-батча ратифицирован единым актом (цена сегодня $0: продолжаемых книг нет). Промты обоих паков ВЫДАНЫ 04.09 | жив | ЖИВОЕ: форма манифеста заморожена на время окна; окно закрывается первой внешней книгой | очередь порядок деплоя | diff --git a/docs/architecture/05-decisions-log.md b/docs/architecture/05-decisions-log.md index b9670f04..0aad033d 100644 --- a/docs/architecture/05-decisions-log.md +++ b/docs/architecture/05-decisions-log.md @@ -1,4 +1,4 @@ -# Журнал решений оркестратора — контракт D1–D39.189 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) +# Журнал решений оркестратора — контракт D1–D39.190 (живой файл: карта · эрраты · живые тела · голова D39.124+ (подрезка D39.139); тела закрытых эр — в слайсах `docs/archive/architecture/`, указатель ниже; реестр всех нот — `05-decisions-index.md`) > **⟶ КАРТА АКТУАЛЬНОСТИ (ревизия D31, продлена до D38.2 [12.07]; исторические записи ниже НЕ переписываются — дисциплина D23.3).** Работая с контрактом (греп номера: живой файл → слайсы, целиком НЕ читать — D39.125), держи под рукой, что чем перекрыто: > ⚠ **Эррата 09.08 (D39.125):** D39.111 п.1 предписывал промту S3 «максимум = баланс МИНУС открытые холды» — формула ОШИБОЧНА (вычитание дважды), исправлена D39.115 п.2(а): максимум = Balance КАК ЕСТЬ; тело D39.111 живёт ниже в этом файле (голова D39.106+). @@ -1993,3 +1993,15 @@ Fable 5.1 со сквозным контекстом (решение владе **3. Операционное предусловие, живое и $0.** Конвенционного `.env` нет ни у одной книги корпуса; движковый прогон обязан передавать `--keys-file` АБСОЛЮТНЫМ путём и только на `translate`, а платформе нужен ДРУГОЙ файл — `TM_PLATFORM_ENGINE_KEYS_PATH`, тоже абсолютным путём (`platform/internal/config/config.go`, греп `must be an absolute path`). Лечение — направить переменную на уже заполненный файл; проверять ПРОГОНОМ, не чтением (гардрейл `.env`: читать его запрещено). **4. Область.** Санкция читается как разрешение класса «платный прогон ради ПРОВЕРКИ механизма», а не как открытый бюджет: каждый пак предъявляет своё число и свой потолок, и на пере-оплату спрашивает отдельно. (03.09.2026, оркестратор №22) ✅ + +## D39.190 — ТРИ РЕШЕНИЯ ОЧЕРЕДИ ПО СЛОВУ ВЛАДЕЛЬЦА 04.09 («делаем как ты и Fable 5 рекомендуете»): 160 отложена ПОРЯДКОМ, 142 — после полигона, пере-снапшот батча ратифицирован единым актом (04.09). ✅ + +**1. Форма решения.** Владелец 04.09 передал три открытых пункта на совместную рекомендацию оркестратора №22 и контролёра (Fable 5.1), сверявшего план по всему бэклогу и всему журналу. Ниже — что решено и ПОЧЕМУ, потому что «как рекомендуете» без записанного довода через месяц читается как произвол. + +**2. Строка 160 (структура глав, Этап 0) — БЕРЁТСЯ, но НЕ СЕЙЧАС, и причина ПОРЯДКОВАЯ, а не приоритетная.** Её вес подтверждён свежей уликой полигона: вычитка семнадцати глав боевого перевода нашла потерянный заголовок у **шести глав из семнадцати** (≈800 на книге), и это ровно то, что уедет читателю через дверь выдачи. Гейт строки ПАЛ (слово владельца 15.08, `D39.136` п.3), блокер 236 закрыт `D39.175`. ⛔ **Но 160 бампает `manifestVersion`, а у бампа формы манифеста безопасного порядка деплоя НЕТ ни в одну сторону** (`PD-436`): гейт интейка платформы — строгое равенство ОДНОЙ константе (`platform/internal/ingest/manifest.go`, греп `m.Version != KnownManifestVersion`; обе стороны сегодня на `tm-manifest-v2`), окна двух форм нет. Платформенный пак В ЭТОТ ЖЕ МОМЕНТ гонит ЖИВОЙ ПЛАТНЫЙ прогон книги через API. Бамп формы в параллельном окне отправил бы каждую новую книгу в `parser_unavailable` и сорвал бы оплаченный прогон. ⇒ **160 идёт СВОИМ паком ПОСЛЕ двери выдачи, стоп-миром**, и дешёвое окно для неё всё ещё открыто (внешних пользователей нет). Найдено при сведении плана с разбором контролёра; ни план, ни разбор порядкового конфликта сами не назвали. + +**3. Строка 142 (механический пре-гейт перед редактором) — ПОСЛЕ шагов 0–1 полигона.** Форма ратифицирована `D39.117` (брак 5 клеток против 10/23 при половинной цене), стройка ждала «команды владельца». Довод отложить — не вкус: у глоссарного флага **precision 0.067**, то есть четырнадцать ложных срабатываний на одно верное, и пре-гейт приехал бы с мусорным входом; полигон чинит это шагом 0 своего плана. ⚠ И вторая половина, названная контролёром: **формы пре-гейта детальнее самой ноты не описано нигде**, поэтому когда очередь придёт, первым пунктом там будет ДИЗАЙН, а не стройка. + +**4. Пере-снапшот вайр-батча единым актом — РАТИФИЦИРОВАН.** `§5.4` шаг 6 требует подписи владельца под пере-снапшотом. Сегодня его цена **$0**: пере-снапшот стоит денег только на книге, которую ПРОДОЛЖАТ, а таких нет — `coldrun-v16` закрыт словом владельца «не доводить», стендовый корпус одноразовый (`D39.63` п.3: «перекупать их не для чего»). ⇒ Батч вносится ОДНИМ касанием, голден пере-захватывается один раз вместо пяти. ⚠ **Это ратификация оркестратора по строке 182, и она сказана вслух именно потому, что молчаливое исполнение подписного пункта — та же тихая девиация.** Окно закрывается первой книгой внешнего пользователя (`D39.136` п.3). + +**5. Что этим выдано.** Промты `docs/BACKEND_WIREBATCH_SESSION_PROMPT.md` и `docs/PLATFORM_EXPORT_SESSION_PROMPT.md` — ВЫДАНЫ 04.09; паки работают ПАРАЛЛЕЛЬНО (зоны независимы по коду: разные модули, перекрёстных импортов ноль, `go.work` в корне нет). Сцепление по деплою одно и оно названо в обоих промтах: **форма манифеста заморожена на время окна** — бэкенд её не двигает (прямой запрет в его границах), поэтому платформенный платный прогон защищён. (04.09.2026, оркестратор №22) ✅