textmachine/docs
2026-09-06 17:33:04 +03:00
..
architecture Mark an item that went stale two minutes after it was written, give a retired prompt its outcome, and name the halves a row was deferring 2026-09-06 17:33:04 +03:00
archive Mark an item that went stale two minutes after it was written, give a retired prompt its outcome, and name the halves a row was deferring 2026-09-06 17:33:04 +03:00
experiments Re-point five anchors the two landings moved, and leave the three that live in other zones' docs to their owners 2026-09-06 01:42:08 +03:00
research Land the backend debt measured as the price of changing it, with twenty claims refuted and none calling for a rewrite 2026-09-06 16:59:40 +03:00
scripts Put the carrier check in the tree instead of a scratchpad, and let the pack name the instrument rather than a remembered number 2026-09-06 17:20:19 +03:00
BACKEND_CONSISTENCY_SESSION_PROMPT.md Give the stalled residual a row with the shutdown date it was hiding, and rewrite two prompts to the twelve blocks the role requires 2026-09-06 16:25:06 +03:00
DOC_CLEANUP_PLAN.md Bring the carriers map, the status board and five requirement rows to what the day landed 2026-09-05 18:20:48 +03:00
glossary.md Take the second revision: ten backlog rows close, three contradictions where neither side said what it was accused of go, and the code-language rule returns 2026-09-05 05:49:06 +03:00
ORCHESTRATOR_SESSION_PROMPT.md Point cold sessions at the platform pack, pause phase D until the instrument is repaired, and retire a prompt whose residual now has a row 2026-09-06 17:19:02 +03:00
PLATFORM_MONEY_TRUTH_SESSION_PROMPT.md Put the carrier check in the tree instead of a scratchpad, and let the pack name the instrument rather than a remembered number 2026-09-06 17:20:19 +03:00
POLYGON_EXP2223_REDO_SESSION_PROMPT.md Point cold sessions at the platform pack, pause phase D until the instrument is repaired, and retire a prompt whose residual now has a row 2026-09-06 17:19:02 +03:00
POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md Give the stalled residual a row with the shutdown date it was hiding, and rewrite two prompts to the twelve blocks the role requires 2026-09-06 16:25:06 +03:00
POLYGON_PHASE_D_HANDOFF.md Final documentation pass in the docs zone: keep what a session needs to work, drop the account of how we got there, and correct the stale claims about code 2026-09-02 19:39:03 +03:00
product-requirements.md Bring five status carriers to what the two landings built, and qualify a requirement that was true only for the whole-book order 2026-09-06 01:58:04 +03:00
PROGRESS.md Mark an item that went stale two minutes after it was written, give a retired prompt its outcome, and name the halves a row was deferring 2026-09-06 17:33:04 +03:00
README.md Point cold sessions at the platform pack, pause phase D until the instrument is repaired, and retire a prompt whose residual now has a row 2026-09-06 17:19:02 +03:00
STACK.md Take seven rows out of the backlog that two acts had already closed, and stop three entry docs describing gaps the day's landings filled 2026-09-05 16:56:42 +03:00

TextMachine — документация

Проект: издательский художественный перевод крупных текстов (книги, ранобэ, вебновеллы) мультиагентным пайплайном поверх LLM API; пара языков — данные, не код, сегодня боевая zh→ru. Go-бэкенд + веб-фронт ридер-IDE (Ф3) + платформа (SaaS control plane, platform/, D39.81). Цели и мерило — канон в ../CLAUDE.md; онбординг сессий — там же. Стартовый бриф владельца: ../START_PROMT.MDживой документ, его V-идеи разобраны в реестр требований (ниже).

Состояние проекта НЕ здесь — кроме таблицы активных промтов ниже, и это осознанное исключение: она отвечает на вопрос «какой файл мой», без которого холодная сессия выбирает роль сама (проверено слепым замером входа). Всё остальное состояние — Очередь, курс, бэклог — CURRENT-STATE в шапке PROGRESS.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.
  • 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 — носитель для исполняющих сессий, читать оригинал, не пересказ.

  • PROGRESS.md — журнал: CURRENT-STATE + ЕДИНЫЙ БЭКЛОГ (единственный трекер) + живой хвост хроники. НЕ источник решений.

  • Тулчейн на чистой машине. Версии не здесь — их носители: 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 обрывается на первом шаге).

  • 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
    Бэкенд · КОНСИСТЕНТНОСТЬ BACKEND_CONSISTENCY_SESSION_PROMPT.md приоритет владельца №1: канон в прогон (295) · гард перекрытия окон (267) · честный комментарий постчека (318) · не уничтожать принятую редактуру (322 а/б) · два ложных комментария. ⚠ Несёт заказ владельца на список ЛОГИЧЕСКИХ расхождений «задумано против сделано»
    Бэкенд · СТРУКТУРА ГЛАВ активного НЕТ пак 1 «форматы и честный словарь» ОТРАБОТАН, ПРИНЯТ С ДОФИКСОМ и ЗАЛЕНДЕН 06.09 — акт D39.210, 2f65d1d; промт в archive/prompts/CHAPTER_STRUCTURE_SESSION_PROMPT_2026-09-05.md с баннером исхода. ⚠ ПАК 2 (лексиконы не-CJK, корпус, замер оракулом, валидаторы) — НЕ НАПИСАН и ждёт файлов владельца (страта скрейпов); промта под него нет, брать нечего. Открытые следствия пака 1 — строки бэклога 302 (резка по якорям) и 303 (безъюнитная грамматика)
    Бэкенд · отозванный активного НЕТ пак КАЧЕСТВО написан и ОТОЗВАН до выдачи 05.09 (archive/prompts/…_WITHDRAWN.md): предмет дешевле пака — точность чекера уже измерена, пере-снять её стоит одной команды. Следующий пак — СТРУКТУРА ГЛАВ (решение владельца 05.09 «любая книга любого формата»), пишется
    Бэкенд · прежний активного НЕТ пак «денежный стоп» ОТРАБОТАН и ПРИНЯТ С ДОФИКСОМ 05.09 — акт D39.206 (81a89e9 + 616a8e4), промт в archive/prompts/ с баннером исхода. Следующая работа зоны — строки 291 (флаг вместо клина, D39.204) · 294 (форма «сколько добавить», D39.203) · 296 (точечная перегенерация по промаху глоссария, после 295)
    Платформа · ДЕНЬГИ И ПРАВДА PLATFORM_MONEY_TRUTH_SESSION_PROMPT.md первая половина критерия впуска ДЕЛОМ: три мажора регистра (леджер — нижняя граница · заклинивший прогон невидим · чужие события на оплаченной попытке) + ложь экрана о единице (282) + вход шире выдачи (325); пункт 0 — ТРИАЖ зонного журнала перед выносом
    Платформа · ФОРМА ЗАКАЗА активного НЕТ пак ОТРАБОТАН, ПРИНЯТ С ДОФИКСОМ и ЗАЛЕНДЕН 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 — зона ОРКЕСТРАТОРА, не платформы: правило игнора общее для всех рабочих деревьев клона)
    Полигон · РЕМОНТ ПРИБОРА POLYGON_INSTRUMENT_REPAIR_SESSION_PROMPT.md ИДЁТ ПЕРЕД любым следующим платным замером, включая продолжение фазы Д: три эрраты носителей БАННЕРАМИ · гигиена стенда (300, 265) · линза против ИСХОДНИКА + порог различимости (319, 143). Санкции на платный замер НЕ несёт
    Полигон · фаза Д POLYGON_EXP2223_REDO_SESSION_PROMPT.md ПРИОСТАНОВЛЕНА до лендинга «РЕМОНТА ПРИБОРА»: линза замера меряет верность ЧЕРНОВИКУ, а руке велено отходить от него по исходнику (D39.215 п.3) ⇒ продолжать замер до починки значит покупать числа, которые ничего не значат. ⚠ Прежний указатель на PACKAGE4 снят: остаток вынесен строкой 327, промт ретирован
    Фронт активного НЕТ ЗОНА ЗАМОРОЖЕНА (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 деплоя, его НЕ читать; при сомнении спрашивать владельца. ⚠ Ручной перечень здесь не держим: он уже лгал умолчанием — называл семь имён, когда в ходу было девять.