60 lines
38 KiB
Markdown
60 lines
38 KiB
Markdown
# TextMachine — документация
|
||
|
||
Проект: издательский художественный перевод крупных текстов (книги, ранобэ, вебновеллы) мультиагентным пайплайном поверх LLM API; **пара языков — данные, не код**, сегодня боевая zh→ru. Go-бэкенд + веб-фронт ридер-IDE (Ф3) + платформа (SaaS control plane, `platform/`, D39.81). Цели и мерило — канон в [../CLAUDE.md](../CLAUDE.md); онбординг сессий — там же. Стартовый бриф владельца: [../START_PROMT.MD](../START_PROMT.MD) — **живой документ**, его V-идеи разобраны в реестр требований (ниже).
|
||
|
||
**Состояние проекта НЕ здесь** — кроме таблицы активных промтов ниже, и это осознанное исключение: она отвечает на вопрос «какой файл мой», без которого холодная сессия выбирает роль сама (проверено слепым замером входа). Всё остальное состояние — Очередь и курс — CURRENT-STATE в шапке [PROGRESS.md](PROGRESS.md), а долг — единый бэклог [BACKLOG.md](BACKLOG.md); решения — [architecture/05-decisions-log.md](architecture/05-decisions-log.md) (при конфликте с любым доком побеждает он). Эта страница — только карта «что где лежит».
|
||
|
||
## Карта
|
||
|
||
- [glossary.md](glossary.md) — жаргон и сокращения (D-номер, паки, банк, голден, K/DC/H/L…) одним экраном.
|
||
- [product-requirements.md](product-requirements.md) — реестр «что продукт обязан уметь»: производное живого брифа владельца и его находок, статусы сверены кодом.
|
||
- `architecture/` — синтез и контракты:
|
||
- [05-decisions-log.md](architecture/05-decisions-log.md) — **источник истины по решениям**: ратифицированный контракт, при конфликте побеждает он. Дисциплина чтения (грепать номер, не читать целиком, баннер прежде тела) — в каноне `../CLAUDE.md`, здесь не дублируется. Статус и тело ЛЮБОГО номера одним хопом — реестр [05-decisions-index.md](architecture/05-decisions-index.md) (все ноты, колонка тем для грепа «какой закон по X»).
|
||
- [09-target-architecture.md](architecture/09-target-architecture.md) — целевая 7-слойная архитектура (статус стройки — шапка-таблица; §3 — карта находок H/L) · [10-prompt-architecture.md](architecture/10-prompt-architecture.md) — промпт-слой · [12-go-style-notes.md](architecture/12-go-style-notes.md) — норматив общности §0 · [13-tech-debt-anchors.md](architecture/13-tech-debt-anchors.md) — якоря техдолга + археология выселенных строк бэклога §Б-* (справочник к бэклогу, НЕ трекер) · [14-api-contract/](architecture/14-api-contract/) — **контракт API v0 фронт↔платформа (D39.99)**: нормативная спека OpenAPI 3.1 (типы фронта генерятся из неё) + компаньон-README с провенансом каждой строки (легенда — в нём самом; зонная копия `frontend/docs/api-contract/` ОТСТАЛА на `0.2.3` при каноне `0.15.0` (испр. оркестратором 17.09, прежде стояло `0.10.0` — разошлось на пять миноров; ⚠ версию канона брать ФАЙЛОМ — `grep '^ version:' architecture/14-api-contract/openapi.yaml`, число здесь стареет) и зеркалом сегодня НЕ является — зона заморожена, синк при разморозке; читать ТОЛЬКО канон).
|
||
- Топикальные входы (D39.126; НЕ источники истины, при конфликте побеждает D-лог): [15-money-path.md](architecture/15-money-path.md) — деньги от гранта до settle одним маршрутом · [16-events-emitter.md](architecture/16-events-emitter.md) — сборка-норматив эмиттера шва — обязательное пре-чтение перед кодом эмиттера · **[17-seam-inbound-law.md](architecture/17-seam-inbound-law.md) — закон ВХОДНОЙ двери шва движок↔платформа — РАТИФИЦИРОВАН D39.156: семь пунктов дисциплины, двери встают паками без нового решения владельца** · **[18-bank-ontology.md](architecture/18-bank-ontology.md) — онтология банка памяти (РАТИФИЦИРОВАНА D39.158): три роли носителей, единственные писатели, дисциплина проекции — обязательное пре-чтение перед кодом, трогающим банк или его артефакты** · [STACK.md](STACK.md) — карта «роль → модель → конфиг → квирки».
|
||
- Исторические, читать через ⚠-баннеры: [01-decisions.md](architecture/01-decisions.md) (Р1–Р10) · [02-mvp-plan.md](architecture/02-mvp-plan.md) · [03-implementation-notes.md](architecture/03-implementation-notes.md) · [04-unhappy-paths.md](architecture/04-unhappy-paths.md) · [06-memory-risk-registry.md](architecture/06-memory-risk-registry.md).
|
||
- `experiments/` — эмпирика полигона: [00-provider-quirks.md](experiments/00-provider-quirks.md) — **читать перед любым вызовом провайдера**; [08-cost-model-v2.md](experiments/08-cost-model-v2.md) — денежная модель; [09-pilot-protocol.md](experiments/09-pilot-protocol.md) — пилот Ф2.5; остальные — отчёты экспериментов. ⚠ **У каждого отчёта статус в его ревью-шапке: читай шапку прежде тела** — она первична и говорит, ратифицированы выводы или заморожены.
|
||
- `research/` — фактура ресёрчей; у принятых — ревью-шапки, часть тел под ⚠ superseded: **читай баннер прежде содержимого**. Ключевые для навигации: 15 голос · 16 ридер-IDE · 17 внешняя критика · 18 рычаги качества · 19 нарезка · 20 банк-майнинг · 21 обзор транспорта · 22 доменные харнессы · 23 шов движок↔платформа · 25 холодное ревью шва — **читать перед любым кодом стыка** · 24 арбитраж банка · 26 официальные практики Anthropic · 28 контракт-ревью API v0 — **носитель для исполняющих сессий, читать оригинал, не пересказ** · 27 детекция глав · 33 техдолг бэкенда — **основание курса перекроя; диспозиции ратифицированы D39.224, адреса §3 читать через эррату шапки** · **35 консилиум по банку памяти — решение, выработанное советом агентов: что банк есть, как проходят восемь проблем, цена каждого шага, порядок относительно перекроя глав и пять вопросов владельцу; принят актом `D39.253` с дофиксом и названным остатком** · **34 банк памяти и качество перевода — что механизм консистентности держит, чего не держит и что доработать; читать через ревью-шапку (14 находок из 15 отвергнуты верификацией по ВЕСУ, синтез написан после неё)**.
|
||
- [PROGRESS.md](PROGRESS.md) — журнал: CURRENT-STATE + состояние паков + живой хвост хроники и зонные секции «Бэкенд»/«Полигон». НЕ источник решений.
|
||
- [BACKLOG.md](BACKLOG.md) — **ЕДИНЫЙ БЭКЛОГ проекта** (единственный трекер; «строка N» — стабильный ID). Вынесен из `PROGRESS.md` 06.09 (D39.218; исключение из дословности названо в шапке того файла); зонные бэклоги — свои и с другими ID (`П-N`, `Ф-N`, `PD-N`).
|
||
- **Тулчейн на чистой машине.** Версии не здесь — их носители: `backend/Makefile` и `platform/Makefile` (`GO_MIN_VERSION`, `GOLANGCI_VERSION`), `frontend/package.json` (`engines`), `platform/docs/STACK_DECISIONS.md` §«Postgres на стенде без root», `eval/requirements.txt` + `eval/.python-version`. Здесь только то, чего нет нигде: ставим в `~/.local/opt/<инструмент>` с симлинком в `~/.local/bin` (он уже в `PATH`), берём **последний патч пинованного минора, а не следующий минор** — линтер пинован точным равенством и разъедется. Root требуют ровно два пакета: `build-essential` (без C-компилятора нет `-race`, а снять `-race` значит выдать отсутствие тулчейна за зелёный прогон — см. комментарий над целью `test` в `backend/Makefile`) и `python3-venv` (в системном питоне нет `ensurepip`, и установка полигона по `eval/README.md` обрывается на первом шаге).
|
||
- [orchestrator-norms-scratchpad.md](orchestrator-norms-scratchpad.md) — **рабочий чек-лист смены №23**: стоячие правила владельца на луп, механическая сверка перед выдачей промта и перед лендингом, живая раскладка слотов зон и журнал выдач. ⚠ Копий норм не несёт — они в `ORCHESTRATOR_SESSION_PROMPT.md`; умирает вместе с очередью.
|
||
- [NEAR_TERM_PLAN.md](NEAR_TERM_PLAN.md) — **горизонт на 3–5 ближайших промтов**: порядок, зоны и чем каждый заперт. Рабочая записка оркестратора, живёт до исполнения. ⚠ Не трекер и не реестр: долг — в `BACKLOG.md`, решения — нотами.
|
||
- `scripts/counts.py` — **производные числа доков считаются им, а не руками** (голова по трём носителям · счёт очереди и зон · вес открытых строк регистра платформы · полнота реестра нот); `--check` даёт ненулевой код на расхождении; `--lint` — линтер file:line-якорей живых доков (D39.126). Его же зовёт зонный хук `scripts/githooks/pre-commit`: **`--lint` якорей — при ЛЮБОМ коммите с непустым индексом, включая коммиты чистого КОДА (гейт по составу снят 21.08: цели якорей живут в коде, и двигает их кодовый коммит; шумовое следствие — строка бэклога 244); `--check` чисел и головы — только при коммите с D-логом или PROGRESS** (оба `--from-index`, предупреждает, не блокирует). ⚠ **Гейт бутстрапится ЧУЖОЙ зоной — это ДЕФЕКТ, а не порядок работы (строка бэклога 220):** судит он `CLAUDE.md` и доки трёх зон, а в `.git/hooks/` его кладёт единственный установщик `frontend/scripts/githooks/install.mjs`, то есть побочный эффект `npm install` в зоне, которая ЗАМОРОЖЕНА. На свежем клоне `.git/hooks/` пуст и гейт молчит, не проверив ничего. Пока строка открыта, бутстрап делается руками (`node frontend/scripts/githooks/install.mjs`) — и это ВРЕМЕННАЯ мера, которую строка 220 закрывает, а не способ жить дальше. ⚠ Шапка систематически отстаёт от хвоста у ЛЮБОГО автора — потому проверка механическая, а не «посмотрю внимательно».
|
||
- **Активные хендофф-промты — какой файл ТВОЙ** (состав обновляется при каждом лендинге, D39.80; хроника, причины и статусы РАБОТ — CURRENT-STATE и D-лог):
|
||
| Роль | Активный промт | Статус |
|
||
|---|---|---|
|
||
| **Бэкенд · БАНК ЗА $0** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.257`**; промт в [archive/prompts/](archive/prompts/BACKEND_BANK_ZERO_LAYER_SESSION_PROMPT.md) с баннером-исходом. 29 путей, $0. ⭐ Посылка `D39.256` перестала быть посылкой: 25 из 26 смен при идентичном входе. ⛔ Мажоры — сдвинутые якоря (ряд 467) и арм по чужому знаменателю (ряд 462). ⚠ Остаток: полный прогон каталога мутаций (267) на момент акта не закончен. **Слот бэкенда СВОБОДЕН** |
|
||
| **Бэкенд · КУПЛЕНО — ЗНАЧИТ ДОСТАВЛЕНО** | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С НАЗВАННЫМ ОСТАТКОМ** — акт **`D39.255`**; промт в [archive/prompts/](archive/prompts/BACKEND_BOUGHT_MEANS_DELIVERED_SESSION_PROMPT.md) с баннером-исходом. Лендинг `af88680`, 29 путей, $0. Закрыты строки **291** и **379** (вторая — ЗАМЕРОМ: мутант 8/8 против 7/8 в ряду). ⛔ Пак пережил ПОТЕРЮ сессии: `textmachine-b1` построила почти всё и исчезла при переезде окружения, доводила `textmachine-main-b1` разделом ПЕРЕДАЧИ ред. 5. ⚠ Остаток — строки **375** · **232** · **453**–**456**; три опубликованных ключа качества сменили смысл (п.5 акта). **Слот бэкенда СВОБОДЕН** |
|
||
| Сквозной · ХОЛОДНЫЙ ПРОГОН B | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09** — акт **D39.252**; промт в [archive/prompts/](archive/prompts/COLD_RUN_B_SESSION_PROMPT.md) с баннером-исходом. Книга второй раз от двери до ФАЙЛА, факт **$0.396657**. ⭐ Две меры денежной дыры разошлись в РАЗНЫЕ стороны на одних данных; **85.7 % оплаченного выхода — размышление, а не текст**. ⛔ Прибор приоритета №1 солгал вердиктом по подписанному имени героя. Качество впервые судилось по ОРИГИНАЛУ рядом с переводом: 26 находок, 1 крит |
|
||
| Оркестратор | [ORCHESTRATOR_SESSION_PROMPT.md](ORCHESTRATOR_SESSION_PROMPT.md) | роль и нормы; счётчик роли — CURRENT-STATE |
|
||
| Консилиум · БАНК ПАМЯТИ ДЛИННОЙ КНИГИ | [archive/prompts/BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md](archive/prompts/BANK_MEMORY_CONSILIUM_SESSION_PROMPT.md) | пак ОТРАБОТАН и **ПРИНЯТ 16.09 С ДОФИКСОМ И ОСТАТКОМ** — акт **`D39.253`**; итог — [research/35-bank-memory-consilium.md](research/35-bank-memory-consilium.md), ход работы и таблица проверки — `research/35-bank-memory-consilium/00-protocol.md`. Сдан по правилу остановки (три круга: 2·21·34 → 0·16·17 → 1·7·13); приёмка — пять осей вне консилиума, 50 находок, дофикс и узкий закрывающий круг. Пять вопросов владельцу — §6 итога. Не пак кодовой зоны: совет агентов (Fable 5 — 1–2), $0 по моделям проекта, пишет только `research/35-bank-memory-consilium.md` и одноимённый каталог. Входы — [archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/](archive/reports/BANK_CONSILIUM_INPUTS_2026-09-15/README.md): отозванный проект оркестратора и сверка того, что репозиторий уже решил и построил по банку |
|
||
| Бэкенд · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** |
|
||
| Платформа · ДВЕ ОСТАНОВКИ | активного НЕТ | пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 10.09 до лендинга — акт **D39.240**; промт в `archive/prompts/` с баннером. Причина — размах правки, не качество. ⚠ Предмет ЗАМЕНЁН и сузился: остановка остаётся жёсткой, **деньги терять допустимо**, но она обязана быть КОРРЕКТНОЙ (без гонок, без половинчатых состояний, верное возобновление). ⭐ Пак успел купить `D39.236`–`D39.238` и строку **385** |
|
||
| Бэкенд · ВЫЗОВ, КОТОРЫЙ ОБОРВАЛИ МЫ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 10.09** — акт **D39.232** (`3f05fab`, 28 путей, $0); промт в `archive/prompts/` с баннером-исходом. Движок перестал платить дважды за одну генерацию; закрыты строки 360 · 369 · 78. Восемь кругов ревью; приёмка двумя рубежами нашла пять выживших мутаций на носителях ВИДИМОСТИ денег. Живое из остатков — **375** · **376** · **377** (⚠ форма испр. 10.09: здесь стоял ДИАПАЗОН «374–377», а 374 закрыта — диапазон о закрытии ряда внутри себя не узнаёт, поэтому в этой таблице только перечисления) |
|
||
| Бэкенд · ДВИЖОК УЖЕ ЗНАЕТ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДВУМЯ ДОФИКСАМИ 08.09** — акт **D39.228** (`2b6f1f4`, 21 путь); промт в `archive/prompts/` с баннером-исходом. Закрыты строки 355 · 357 · 358; у **253** и **312** закрыта ДВИЖКОВАЯ половина, платформенная жива (испр. 08.09 по кросс-модельному ревью: акт объявил обе закрытыми целиком). Живое из не взятого — **362** (ремонт против ремонта, 77 % денег чанка) и **363** (текстовый сайдкар молчит о неполноте); **360** ждёт слова владельца по денежной половине |
|
||
| Бэкенд · КОНСИСТЕНТНОСТЬ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.222**; промт в `archive/prompts/` с баннером исхода. Строки 267 и 318 закрыты, у 320 исполнена половина (а). Живой остаток зоны ЗАКРЫТ актом **D39.226** (строки 333–338); живое — **353** · **354** · **356** · **359** (⚠ форма испр. 10.09: стоял диапазон «353–359», а 355 · 357 · 358 закрыты) |
|
||
| Бэкенд · ПРАВДА ОПЕРАТОРУ И ДЕНЬГИ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 08.09** — акт **D39.226**, живой платный прогон; промт в `archive/prompts/` с баннером-исходом |
|
||
| Бэкенд · ГЕЙТ ВМЕСТО ПРОЗЫ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.225**; промт в `archive/prompts/` с баннером-исходом |
|
||
| Бэкенд · КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 11.09** — акт **D39.249** (`0997e41`, 26 путей, $0); промт в [archive/prompts/](archive/prompts/BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md) с баннером-исходом. ⭐ **Приоритет №1 впервые ИЗМЕРИМ по отгруженному тексту.** ⛔ Первый круг приёмки — шесть выживших посадок из шести; порядок колонок ратифицирован и отменён в тот же день (правило и два триггера — ряд **406**). Каталог **169/169 RED, выживших 0**. Живое: **407** и **419** наполовину · **408** с опровергнутым мотивом · **409** не тронут · новые **425–427** · **428** · **431** · **432**
|
||
| Бэкенд · СТРУКТУРА ГЛАВ (ДИЗАЙН) | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 11.09 БЕЗ СХОДИМОСТИ, правилом остановки** — акт **D39.245** (`1d2fab6`, 3 пути, $0); результат — `backend/docs/CHAPTER_STRUCTURE_DESIGN.md` (2062 строки), статус ПРЕДЛОЖЕНИЕ до пака стройки. Глава становится ИДЕНТИЧНОСТЬЮ; предметная часть устояла в четырёх кругах опровержения, механика исполнения — нет, и пак стройки обязан начать с прогона миграционной механики ОПЫТОМ. Промт был — [CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md](archive/prompts/CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md), выдан 11.09 (актуализирован пятью врезками + 19 правок по опровергателю: мёртвые адреса, две таксономии осей, три «уже построено», собственная зона записи `backend/docs/` с дизайном-оф-рекорд `D15.2` и прибором shiftmap). ⚠ **ПРОЕКТИРОВАНИЕ, НЕ СТРОЙКА** (`D39.136` п.3): дизайн окна большой пере-нарезки — чем адресуется глава и развязка чанкера (161) · карта осей сдвига · банк-окна на chapter-ID · контент-адресуемый resume `D15.2` · IR/адаптеры/индуктор · правило заголовка и не-CJK путь (303) · гранулярность EPUB (302) и выдача (283). Снимает временный отказ интейка книге из одной главы (`D39.221`). Пак 1 «форматы и честный словарь» ОТРАБОТАН и ПРИНЯТ 06.09 — акт **D39.210**, промт в `archive/prompts/`. ⚠ **ПАК 2 (лексиконы не-CJK, корпус, замер оракулом) — НЕ НАПИСАН и ждёт файлов владельца** |
|
||
| Бэкенд · ЗА ОДНУ ЕДИНИЦУ ПЛАТИМ ДВАЖДЫ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 11.09** — акт **D39.251** (22 пути, +947/−66, 8 новых тестовых, $0); промт в [archive/prompts/](archive/prompts/BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md) с баннером-исходом. ⭐ Наблюдаемость двойной оплаты построена, **лекарство лендится ВЫКЛЮЧЕННЫМ** и достаёт один случай из четырёх — условие включения в ряду **433**. ⛔ Посылка промта была ПЕРЕВЁРНУТА и снята зоной ДО первой правки (`empty` ×3 = 89 % потери, не `length`); `reasoning_tokens` ронял НАШ адаптер, а не вендор. |
|
||
| Бэкенд · отозванный | активного НЕТ | пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 05.09 (`archive/prompts/…_WITHDRAWN.md`): предмет дешевле пака — точность чекера уже измерена, пере-снять её стоит одной команды. Следующий пак — СТРУКТУРА ГЛАВ (решение владельца 05.09 «любая книга любого формата»), пишется |
|
||
| Бэкенд · прежний | активного НЕТ | пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.206** (`81a89e9` + `616a8e4`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **291** (флаг вместо клина, `D39.204`) · **294** (форма «сколько добавить», `D39.203`) · **296** (точечная перегенерация по промаху глоссария, после 295) |
|
||
| Платформа · ОТВЕТ, НЕ ЗАВИСЯЩИЙ ОТ ВЕЗЕНИЯ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДВУМЯ ДОФИКСАМИ 11.09** — акт **D39.250** (`711569d`, 27 путей, 24 новых теста, $0), контрактный минор **0.15.0**; промт в [archive/prompts/](archive/prompts/PLATFORM_ANSWER_THAT_DOES_NOT_DEPEND_ON_LUCK_SESSION_PROMPT.md) с баннером-исходом. ⭐ Предмет ПЕРЕ-ОПРЕДЕЛЁН замером зоны ДО первой правки: не гонка, а ординарный путь. ⛔ Оба денежных предохранителя проверены не тем прибором; лечением стал СНОС $0-рецепта, а не починка. Закрыты `PD-448` · `PD-466` · `PD-162` · `PD-139` · `П-22` · `П-23`. Живое — эскроу `П-18` и одно названное слепое пятно (адрес вызова не пинится изнутри набора, который на хосте не бежит)
|
||
| Платформа · ПРАВДА У ДВЕРИ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 11.09** — акт **D39.246** (`49f74d9`, 15 путей, $0). `PD-455` закрыт, `PD-162` наполовину у обеих денежных дверей, `PD-448` разобран и НЕ построен (четвёртый путь принят направлением, строит следующий пак вместе с минором **0.15.0**). ⛔ Приёмка нашла два дефекта ВНЕ карты автора: выживший мутант на единственной проводке `BooksDir` и тихо-зелёное в самом новом гейте. Живое — `PD-162` (эскроу), `PD-466`, `PD-139`. Промт был — [PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md](archive/prompts/PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md), выдан 11.09: `PD-455` (форма обещает то, в чём дверь откажет — точка роста `Blocked.code`, не закрытый enum вердикта) · `PD-448` (двойной клик по «продолжить» — **исследуй и предложи, НЕ строй**: все три законных пути требуют контрактного минора или миграции) · `PD-162` (прогон книги с исчезнувшим каталогом висит с холдом — валидация каталога ПРИ ДОПУСКЕ). ⛔ Свип сирот и потолок аплоадов СНЯТЫ подписанным пропуском: их гейт — открытая регистрация, которой в закрытой бете нет (`PD-175` + `D39.176` п.1) |
|
||
| Платформа · РАЗРЕЗ ПРИЁМА И ПРАВДА О СЕБЕ | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ 08.09** — акт **D39.229** (`ddcbf0c`, 26 путей, $0); промт в `archive/prompts/` с баннером-исходом. Синхронный вход разреза под потолком, граница хвоста выведена из кода, зонный журнал и регистр приведены к правде (открытых 112 → 109, major 3 → 1). Живое из не взятого — строка **364** (потолок разрезов не есть потолок процессов движка) |
|
||
| Платформа · ДЕНЬГИ И ПРАВДА | активного НЕТ | пак ОТРАБОТАН и **ПРИНЯТ С ДОФИКСОМ 07.09** — акт **D39.221**, контрактный минор **0.13.0**; промт в `archive/prompts/` с баннером исхода. ⚠ **Синхронный разрез приёма остановлен правилом остановки и заландён построенным, но НЕ готовым** — десять пунктов несёт строка бэклога **332**, и она же заказ следующему паку зоны; ложный инвариант бюджета заландён осознанно (окно 8 с при дефолте в 16 минутах) |
|
||
| Платформа · ФОРМА ЗАКАЗА | активного НЕТ | пак ОТРАБОТАН, ПРИНЯТ С ДОФИКСОМ и ЗАЛЕНДЕН 06.09 — акт **D39.208**, код + канон **0.11.0**; промт уведён в `archive/prompts/ORDER_FORM_SESSION_PROMPT_2026-09-05.md` с баннером исхода. ⚠ **НЕ построено, хотя заказывалось:** денежный ползунок на проводе объявлен, а отправить его нечем, и оценки под ВЫБРАННЫЙ заказ нет; «упрощение резюма» не сделано — обе позиции живут строками бэклога, брать их как новый пак СЛЕДУЮЩЕЙ сессии, не читать промт как задание |
|
||
| Платформа · прежний | активного НЕТ | пак «пустить внутрь можно» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт **D39.201** (`7e2226a` + `3e84716`), промт в `archive/prompts/` с баннером исхода. Следующая работа зоны — строки **294** (зеркало словаря под минор потока) ⚠ (строка 293 — зона ОРКЕСТРАТОРА, не платформы: правило игнора общее для всех рабочих деревьев клона) |
|
||
| **Полигон** | активного НЕТ | ⛔ **ЗОНА ВЫВЕДЕНА ИЗ СКОУПА СЛОВОМ ВЛАДЕЛЬЦА 11.09: «полигон это вообще не наш скоуп».** Все четыре её промта уведены в `archive/prompts/` с баннерами: [РЕМОНТ ПРИБОРА](archive/prompts/POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md) (был готов и не выдан) · [ХОЛОДНЫЙ ПРОГОН A](archive/prompts/POLYGON_COLD_RUN_A_SESSION_PROMPT.md) (ОТРАБОТАН и ПРИНЯТ актом **D39.247** — строка 16 закрыта замером, книга доведена до файла за $0.419424) · [фаза Д](archive/prompts/POLYGON_EXP2223_REDO_SESSION_PROMPT.md) · [хендофф фазы Д](archive/prompts/POLYGON_PHASE_D_HANDOFF.md). ⚠ **Инструкции оттуда НЕ исполнять**; пере-открытие — только новым словом владельца. Ссылки на эти файлы из журнала решений и старых отчётов НЕ правлены сознательно: тела нот не переписываются. ⭐ Живое, что зона успела купить и что остаётся работой ДРУГИХ зон: ряды **413** (пин цены flash протух) · **414** · **415** (четверть денег купила пустоту) · **416** · **417** · **422** |
|
||
| Фронт | активного НЕТ | **ЗОНА ЗАМОРОЖЕНА** (D39.136 п.2 + D39.147: разморозка отдельным словом владельца, не привязана к P7); перечень первого касания — в зонном журнале |
|
||
| Контракт | активного НЕТ | канон — `architecture/14-api-contract/`; ⚠ версию брать ФАЙЛОМ (`grep '^ version:' openapi.yaml`), не отсюда: миноры ратифицируются D-нотами и их содержание грепается по реестру нот. |
|
||
|
||
- Чужие зоны — фронт и платформа (читать при касании стыка; каждая ведёт СВОЙ зонный бэклог — единый бэклог их строк не принимает, D39.84): [../frontend/](../frontend/) — веб-интерфейс: зонный журнал `docs/frontend-PROGRESS.md` (прогресс зоны только там, D39.100) + промт фронт-сессий + [STACK_DECISIONS.md](../frontend/docs/STACK_DECISIONS.md) (пины версий точными числами и ловушки) + [BACKLOG.md](../frontend/docs/BACKLOG.md) · [../platform/](../platform/) — SaaS control plane: README + [BACKLOG.md](../platform/BACKLOG.md) + `docs/` (зонный журнал `platform-PROGRESS.md` · регистр дефектов · `STACK_DECISIONS.md` с рецептом стенда и инвентарём каналов шва · **[ENGINEERING_STANDARDS.md](../platform/docs/ENGINEERING_STANDARDS.md) — ратифицирован; КАЖДЫЙ промт платформенной сессии обязан на него ссылаться, отступление = пинг** · **[PLATFORM_DIRECTION.md](../platform/docs/PLATFORM_DIRECTION.md) — ратифицированное направление зоны: аутентификация, деньги, стандарты, скорость** · архив промтов).
|
||
- `archive/` — история ([правила архива](archive/README.md)): закрытые промты (`prompts/`) · отчёты с ревью-шапками (`reports/` — на них ссылаются приёмки) · исполненные арх-доки (`architecture/`) · слайсы хроники `PROGRESS-*.md`. Инструкции оттуда не исполнять.
|
||
- Диаграммы: [../backend/docs/components.puml](../backend/docs/components.puml) · [../backend/docs/pipeline.puml](../backend/docs/pipeline.puml) — дом рядом с кодом (D39.80), правятся бэкендом одним коммитом с кодом; не рендерить (гардрейл CLAUDE.md).
|
||
|
||
## Ключи провайдеров
|
||
|
||
**Имена** переменных per-провайдер — поле `api_key_env` в `backend/configs/models.yaml` (носитель, который читает КОД, поэтому разойтись с реальностью резолва не может). У полигона свои дополнительные провайдеры — имена в его же скриптах, движковый носитель их не покрывает и не должен. **Наполненность** ключей — `.env` деплоя, его НЕ читать; при сомнении спрашивать владельца. ⚠ Ручной перечень здесь не держим: он уже лгал умолчанием — называл семь имён, когда в ходу было девять.
|