| .. | ||
| architecture | ||
| archive | ||
| experiments | ||
| research | ||
| scripts | ||
| BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md | ||
| BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md | ||
| BACKLOG.md | ||
| CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md | ||
| DOC_CLEANUP_PLAN.md | ||
| glossary.md | ||
| NEAR_TERM_PLAN.md | ||
| orchestrator-norms-scratchpad.md | ||
| ORCHESTRATOR_SESSION_PROMPT.md | ||
| PLATFORM_TRUTH_AT_THE_DOOR_SESSION_PROMPT.md | ||
| product-requirements.md | ||
| PROGRESS.md | ||
| README.md | ||
| STACK.md | ||
TextMachine — документация
Проект: издательский художественный перевод крупных текстов (книги, ранобэ, вебновеллы) мультиагентным пайплайном поверх LLM API; пара языков — данные, не код, сегодня боевая zh→ru. Go-бэкенд + веб-фронт ридер-IDE (Ф3) + платформа (SaaS control plane, platform/, D39.81). Цели и мерило — канон в ../CLAUDE.md; онбординг сессий — там же. Стартовый бриф владельца: ../START_PROMT.MD — живой документ, его V-идеи разобраны в реестр требований (ниже).
Состояние проекта НЕ здесь — кроме таблицы активных промтов ниже, и это осознанное исключение: она отвечает на вопрос «какой файл мой», без которого холодная сессия выбирает роль сама (проверено слепым замером входа). Всё остальное состояние — Очередь и курс — CURRENT-STATE в шапке PROGRESS.md, а долг — единый бэклог BACKLOG.md; решения — architecture/05-decisions-log.md (при конфликте с любым доком побеждает он). Эта страница — только карта «что где лежит».
Карта
-
glossary.md — жаргон и сокращения (D-номер, паки, банк, голден, K/DC/H/L…) одним экраном.
-
product-requirements.md — реестр «что продукт обязан уметь»: производное живого брифа владельца и его находок, статусы сверены кодом.
-
architecture/— синтез и контракты:- 05-decisions-log.md — источник истины по решениям: ратифицированный контракт, при конфликте побеждает он. Дисциплина чтения (грепать номер, не читать целиком, баннер прежде тела) — в каноне
../CLAUDE.md, здесь не дублируется. Статус и тело ЛЮБОГО номера одним хопом — реестр 05-decisions-index.md (все ноты, колонка тем для грепа «какой закон по X»). - 09-target-architecture.md — целевая 7-слойная архитектура (статус стройки — шапка-таблица; §3 — карта находок H/L) · 10-prompt-architecture.md — промпт-слой · 12-go-style-notes.md — норматив общности §0 · 13-tech-debt-anchors.md — якоря техдолга + археология выселенных строк бэклога §Б-* (справочник к бэклогу, НЕ трекер) · 14-api-contract/ — контракт API v0 фронт↔платформа (D39.99): нормативная спека OpenAPI 3.1 (типы фронта генерятся из неё) + компаньон-README с провенансом каждой строки (легенда — в нём самом; зонная копия
frontend/docs/api-contract/ОТСТАЛА на0.2.3при каноне0.10.0(испр. 05.09; ⚠ версию канона брать ФАЙЛОМ —grep '^ version:' architecture/14-api-contract/openapi.yaml, число здесь стареет) и зеркалом сегодня НЕ является — зона заморожена, синк при разморозке; читать ТОЛЬКО канон). - Топикальные входы (D39.126; НЕ источники истины, при конфликте побеждает D-лог): 15-money-path.md — деньги от гранта до settle одним маршрутом · 16-events-emitter.md — сборка-норматив эмиттера шва — обязательное пре-чтение перед кодом эмиттера · 17-seam-inbound-law.md — закон ВХОДНОЙ двери шва движок↔платформа — РАТИФИЦИРОВАН D39.156: семь пунктов дисциплины, двери встают паками без нового решения владельца · 18-bank-ontology.md — онтология банка памяти (РАТИФИЦИРОВАНА D39.158): три роли носителей, единственные писатели, дисциплина проекции — обязательное пре-чтение перед кодом, трогающим банк или его артефакты · STACK.md — карта «роль → модель → конфиг → квирки».
- Исторические, читать через ⚠-баннеры: 01-decisions.md (Р1–Р10) · 02-mvp-plan.md · 03-implementation-notes.md · 04-unhappy-paths.md · 06-memory-risk-registry.md.
- 05-decisions-log.md — источник истины по решениям: ратифицированный контракт, при конфликте побеждает он. Дисциплина чтения (грепать номер, не читать целиком, баннер прежде тела) — в каноне
-
experiments/— эмпирика полигона: 00-provider-quirks.md — читать перед любым вызовом провайдера; 08-cost-model-v2.md — денежная модель; 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 читать через эррату шапки · 34 банк памяти и качество перевода — что механизм консистентности держит, чего не держит и что доработать; читать через ревью-шапку (14 находок из 15 отвергнуты верификацией по ВЕСУ, синтез написан после неё). -
PROGRESS.md — журнал: CURRENT-STATE + состояние паков + живой хвост хроники и зонные секции «Бэкенд»/«Полигон». НЕ источник решений.
-
BACKLOG.md — ЕДИНЫЙ БЭКЛОГ проекта (единственный трекер; «строка N» — стабильный ID). Вынесен из
PROGRESS.md06.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 — рабочий чек-лист смены №23: стоячие правила владельца на луп, механическая сверка перед выдачей промта и перед лендингом, живая раскладка слотов зон и журнал выдач. ⚠ Копий норм не несёт — они в
ORCHESTRATOR_SESSION_PROMPT.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-лог):
Роль Активный промт Статус Оркестратор ORCHESTRATOR_SESSION_PROMPT.md роль и нормы; счётчик роли — CURRENT-STATE Бэкенд · ДВЕ ОСТАНОВКИ активного НЕТ пак ОТМЕНЁН ВЛАДЕЛЬЦЕМ 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/с баннером-исходомБэкенд · КОНСИСТЕНТНОСТЬ, КОТОРУЮ МОЖНО ПРЕДЪЯВИТЬ BACKEND_CONSISTENCY_YOU_CAN_SHOW_SESSION_PROMPT.md ✅ ВЫДАН 11.09: приоритет №1 владельца — прибор по ОТГРУЖЕННОМУ тексту (два инварианта: одна форма на термин по книге · где у банка есть форма, отгружена она) · запись выбора редакторской волны · дешёвая половина вопроса пост-проверки · совещательные правила линта сида. ⛔ Заказ стоит на замере: расхождения найдены и перечислены (⚠ ИСПР. 11.09: их СЕМЬ, а не 18 — 11 из восемнадцати оказались ложной тревогой стеммера, ряд 419), счётчик «промахи» даёт 0 при знаменателе 2, а пара 84/66 УЖЕ печатается — недостают ИМЕНА (держит одна строка render.go:491) и счёт по книге целиком. Вне пака: гейт · ряд 409 · актуатор · решение «закон ли для неподписанного» (вопрос владельца)Бэкенд · СТРУКТУРА ГЛАВ (ДИЗАЙН) активного НЕТ пак ОТРАБОТАН и ПРИНЯТ 11.09 БЕЗ СХОДИМОСТИ, правилом остановки — акт D39.245 ( 1d2fab6, 3 пути, $0); результат —backend/docs/CHAPTER_STRUCTURE_DESIGN.md(2062 строки), статус ПРЕДЛОЖЕНИЕ до пака стройки. Глава становится ИДЕНТИЧНОСТЬЮ; предметная часть устояла в четырёх кругах опровержения, механика исполнения — нет, и пак стройки обязан начать с прогона миграционной механики ОПЫТОМ. Промт был — CHAPTER_STRUCTURE_DESIGN_SESSION_PROMPT.md, выдан 11.09 (актуализирован пятью врезками + 19 правок по опровергателю: мёртвые адреса, две таксономии осей, три «уже построено», собственная зона записиbackend/docs/с дизайном-оф-рекордD15.2и прибором shiftmap). ⚠ ПРОЕКТИРОВАНИЕ, НЕ СТРОЙКА (D39.136п.3): дизайн окна большой пере-нарезки — чем адресуется глава и развязка чанкера (161) · карта осей сдвига · банк-окна на chapter-ID · контент-адресуемый resumeD15.2· IR/адаптеры/индуктор · правило заголовка и не-CJK путь (303) · гранулярность EPUB (302) и выдача (283). Снимает временный отказ интейка книге из одной главы (D39.221). Пак 1 «форматы и честный словарь» ОТРАБОТАН и ПРИНЯТ 06.09 — акт D39.210, промт вarchive/prompts/. ⚠ ПАК 2 (лексиконы не-CJK, корпус, замер оракулом) — НЕ НАПИСАН и ждёт файлов владельцаБэкенд · ЗА ОДНУ ЕДИНИЦУ ПЛАТИМ ДВАЖДЫ BACKEND_FAILURE_YOU_CAN_SEE_SESSION_PROMPT.md ⏳ НАПИСАН 11.09, редакция 2; выдаётся СВЕЖЕЙ сессии по закрытии пака консистентности актом. Предмет — двойная оплата единицы: на платном прогоне $0.106472 = 25.4 % цены книги ушло в выброшенные первые попытки. ⛔ Редакция 1 стояла на ПЕРЕВЁРНУТОЙ посылке («движок лечит болезнь возбудителем») и заказала бы отключить восстановление, которое работает 4 раза из 4; опровергатель это снял — сессия, исполнившая её буквально, отключила бы восстановление трёх чанков из четырёх, отменила D2п.2 и сломалаTestRetryableSubset. ⭐ Настоящая находка редакции 2: причин ДВЕ, лекарство одно. Черновик — потолок мал (контроль: 6 успешных вызовов, все ≤8496 прошли сразу, все >8496 упали и прошли на удвоенном; исключений 0), редактор — размышление съело достаточный потолок (2-я попытка 11717 против упавших 16000, $0.071009 = две трети потери в одном вызове). Плюсreasoning_tokensне несла числа ни разу за историю проекта (0 строк при 405 базах и 58 886 строках) и молчащая подстановка цены. Ряды 414 · 415 · 422, пин flash 413 из пака ВЫНУТБэкенд · отозванный активного НЕТ пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 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.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, выдан 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 — зона ОРКЕСТРАТОРА, не платформы: правило игнора общее для всех рабочих деревьев клона)Полигон · ХОЛОДНЫЙ ПРОГОН A активного НЕТ пак ОТРАБОТАН и ПРИНЯТ БЕЗ СХОДИМОСТИ 11.09 — акт D39.247; отчёт experiments/24-door-to-file.md. Строка 16 закрыта замером: книга доведена от интейка до файла за $0.419424. ⛔ Четверть денег купила пустоту · пин цены flash протух на 13 % · консистентность впервые замерена по тексту читателя (16 из 69 в вопросе). Ряды 413–418. Промт был — POLYGON_COLD_RUN_A_SESSION_PROMPT.md, выдан 11.09: настоящая книга (3 главы zh→ru) от двери платформы до ФАЙЛА, платный провайдер — строка бэклога 16 («цена доведённой до конца книги не измерена»). Ожидание $0.35–0.50, кап ≈$2.5. ⚠ Редакция 2: опровергатель дал 20 находок, четыре денежных — в том числе «грант обязан покрывать холд» ОПРОВЕРГНУТО (холд сам ужимается на бонд, прогон стартует сbondFunded=falseи тихо теряет фазу майнинга) и сторож потолка смотрел наcredit_exhausted, которого для потолка прогона больше не производятПолигон активного НЕТ ⛔ ЗОНА ВЫВЕДЕНА ИЗ СКОУПА СЛОВОМ ВЛАДЕЛЬЦА 11.09: «полигон это вообще не наш скоуп». Все четыре её промта уведены в archive/prompts/с баннерами: РЕМОНТ ПРИБОРА (был готов и не выдан) · ХОЛОДНЫЙ ПРОГОН A (ОТРАБОТАН и ПРИНЯТ актом D39.247 — строка 16 закрыта замером, книга доведена до файла за $0.419424) · фаза Д · хендофф фазы Д. ⚠ Инструкции оттуда НЕ исполнять; пере-открытие — только новым словом владельца. Ссылки на эти файлы из журнала решений и старых отчётов НЕ правлены сознательно: тела нот не переписываются. ⭐ Живое, что зона успела купить и что остаётся работой ДРУГИХ зон: ряды 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/ — веб-интерфейс: зонный журнал
docs/frontend-PROGRESS.md(прогресс зоны только там, D39.100) + промт фронт-сессий + STACK_DECISIONS.md (пины версий точными числами и ловушки) + BACKLOG.md · ../platform/ — SaaS control plane: README + BACKLOG.md +docs/(зонный журналplatform-PROGRESS.md· регистр дефектов ·STACK_DECISIONS.mdс рецептом стенда и инвентарём каналов шва · ENGINEERING_STANDARDS.md — ратифицирован; КАЖДЫЙ промт платформенной сессии обязан на него ссылаться, отступление = пинг · PLATFORM_DIRECTION.md — ратифицированное направление зоны: аутентификация, деньги, стандарты, скорость · архив промтов). -
archive/— история (правила архива): закрытые промты (prompts/) · отчёты с ревью-шапками (reports/— на них ссылаются приёмки) · исполненные арх-доки (architecture/) · слайсы хроникиPROGRESS-*.md. Инструкции оттуда не исполнять. -
Диаграммы: ../backend/docs/components.puml · ../backend/docs/pipeline.puml — дом рядом с кодом (D39.80), правятся бэкендом одним коммитом с кодом; не рендерить (гардрейл CLAUDE.md).
Ключи провайдеров
Имена переменных per-провайдер — поле api_key_env в backend/configs/models.yaml (носитель, который читает КОД, поэтому разойтись с реальностью резолва не может). У полигона свои дополнительные провайдеры — имена в его же скриптах, движковый носитель их не покрывает и не должен. Наполненность ключей — .env деплоя, его НЕ читать; при сомнении спрашивать владельца. ⚠ Ручной перечень здесь не держим: он уже лгал умолчанием — называл семь имён, когда в ходу было девять.