textmachine/CLAUDE.md

12 KiB
Raw Blame History

TextMachine — контекст для Claude-сессий

Go-бэкенд издательского художественного перевода крупных текстов (ранобэ/вебновеллы, zh/ja/en→ru) через мультиагентный LLM-пайплайн: черновик deepseek-v4-flash → БИЛИНГВАЛЬНЫЙ редактор deepseek-v4-pro ИНТЕРИМ (D30.1/D39.22; glm-5 резерв) → судья Gemini (Ф2). Цели: победить translationese; низкий COGS (~$0.85/ранобэ после флипа D1 — D30.4); детерминированный банк памяти книги; 18+ с учётом цензуры; телеметрия денег с первого дня.

Роли сессий и зоны (НЕ править чужую зону)

Роль Зона записи Всё остальное
Бэкенд backend/ читать можно; расхождения — пингом оркестратору в docs/PROGRESS.md
Полигон (eval) eval/ + docs/experiments/ то же
Оркестратор docs/ (architecture/research/PROGRESS), ревью чужого кода read-only ратифицирует решения, пишет хендофф-промты

Координация — журнал docs/PROGRESS.md (секции «Бэкенд»/«Полигон»/«Память»/«Голос и состояние»/«Ридер-IDE»; сверху CURRENT-STATE). Записывай туда краткие итоги своей сессии. Закрытые хроники вынесены в docs/archive/PROGRESS-*.md (три слайса: 0410 · 1013 · 1325.07) — НЕ читать при онбординге, только по конкретной ссылке.

Источники истины (по убыванию)

  1. docs/architecture/05-decisions-log.md (D1D39.26) — ратифицированный контракт; при конфликте с любым другим доком побеждает он; сверху файла — карта актуальности (что чем superseded). Правило чтения (онбординг-диета 25.07): карта + живая голова (эра D39.x); корпус D1D38 = справочник — по ссылкам/grep по D-номеру, целиком НЕ читать.
  2. docs/experiments/00-provider-quirks.md — wire-квирки провайдеров (читать ПЕРЕД правкой адаптеров/вызовами провайдеров).
  3. docs/architecture/09-target-architecture.md (7 слоёв; статус стройки — шапка-таблица) · 12-go-style-notes.md (норматив общности §0) · 10-prompt-architecture.md (промпт-тема).
  4. docs/architecture/01-decisions.md (Р1Р10), 02-mvp-plan.md, 04-unhappy-paths.md, 06-memory-risk-registry.md — тела исторические, читать через ⚠-баннеры 25.07.
  5. docs/research/* — фактура; часть под ⚠ superseded/построено-баннерами — читай баннер прежде содержимого.
  6. docs/archive/ — история: закрытые промты (prompts/) · отчёты паков с ревью-шапками (reports/) · исполненные арх-доки (architecture/: 07 стратревью · 08 синк-ледджер · 11 план пака-11).

Гардрейлы (жёсткие)

  • НИКОГДА не читать .env (backend/.env, eval/.env) — там ключи. .env.example можно.
  • 18+ уровень 3 (несовершеннолетние в сексуальном контексте) — не обрабатывать/не анализировать; eval/data/refusal_corpus/* не открывать без прямой задачи владельца.
  • PUML не рендерить в svg/png — владелец смотрит PlantUML-расширением VS Code.
  • Коммиты: английский, одно предложение ≤30 слов, без Co-Authored-By. .claude/settings.local.json НЕ коммитить (ломает пермишены).
  • Провайдерские ловушки: DeepSeek — НИКОГДА не отключать thinking (эхо-мина; гейт echoMineViolation это принуждает); grok-4.3 reasoning off — только ЯВНЫЙ reasoning_effort:"none" (дефолт low; wire-квирк в силе, но из РЕДАКТОРСКИХ ролей reasoning-off снят — no-op, D30.1); слаги моделей не менять без live-фактчека /models. Пробы/запросы падают или ведут себя странно (флейки, 404 живой модели, новый finish_reason, игнор параметров) → идём в официальную доку вендора (deprecations/changelog/status) и гуглим, НЕ гадаем — интерпретацию аномалии без вендор-сверки в доки/промты не абсорбировать (решение владельца 10.07; правило двух направлений — 00-provider-quirks.md шапка).
  • Дисциплина: не верь заголовкам — грунтуй выводы file:line/цитатой; спорное верифицируй адверсариально (author≠reviewer); эмпирика на PD-классике из претрейна считается предварительной до вебновелл-среза.
  • Общность движка (владелец 24.07): Go-логика НЕ ветвится по паре/книге; пара-данные → internal/lang+configs/langpacks/, книго-каноны → сид/brief (данные); книжный термин в общем пар-слое = утечка. Тест-данные пары легитимны. Норматив (только больные места): docs/architecture/12-go-style-notes.md. Ревью-вопрос по умолчанию: «заработает ли на паре, которой в репо ещё НЕТ, без правки Go?»
  • Мандат самопроверки в промтах сессий (обязателен, решение владельца 12.07): промты полигон-сессий — и вообще любых пишущих код / запросы к моделям — ДОЛЖНЫ явно требовать ревью ИСПОЛНЕНИЕМ: своего кода + сформированных запросов к моделям + полученных результатов. Полигон регулярно ошибается/багует, и это искажает эксперименты (D37: заявленные «0 ошибок» = 36 ошибок+биллинг, «13 катастроф» = ~56 при оверфлаге судьи; exp13 +10% бюджета). Бэкенд-промты — явный бэкенд-ревью после кода (обычно отрабатывает по опыту, но требовать явно). Пост-хок адверсариальная верификация оркестратора при лендинге — второй рубеж, НЕ замена самопроверки.
  • Git-координация мультисессий: НИКАКИХ reset --hard, перезаписей истории (amend/rebase несвежих коммитов) и checkout поверх грязного дерева, пока возможны незакоммиченные правки параллельных сессий — сначала git status и опознание ЧУЖИХ изменений; чужое не трогать; history-rewrite — только по согласованию через оркестратора при чистом дереве (урок 09.07: rewrite оркестратора стёр незакоммиченные правки полигона).

Онбординг новой сессии (порядок чтения)

  1. Этот файл → docs/README.md (карта) → CURRENT-STATE в docs/PROGRESS.md.
  2. docs/architecture/05-decisions-log.md: карта актуальности (шапка) + живая голова (D39.x). Целиком НЕ читать — корпус D1D38 по ссылкам/grep по мере надобности.
  3. По роли: Бэкенд — backend/README.md + 03-implementation-notes.md (через баннер) + 12-go-style-notes.md; Полигон — eval/README.md + experiments/00 + 09-pilot-protocol.md; всем — шапка-таблица 09-target-architecture.md (статус слоёв).

Текущее состояние (2026-07-25, пост-пак-16 / дизайн пака-17 ратифицирован D39.26 — эра «механизация выпускного качества»)

  • Фазы: Ф0 · Ф1-инфра (D20D28; golden = инвариант детерминизма №8) · арка «качество-первым» D26→D38.5 закрыта · арх-ресет D39 исполнен ЦЕЛИКОМ: 7 слоёв построены паками 1116 (D39.13D39.24; статус слоёв — шапка-таблица 09-target-architecture.md; слой-3 diff-редактор — за enabled:false, включение = решение владельца по замеру остатка).
  • Пере-прогон rerun2 прочитан (D39.20): операционка живьём ($0-резюм ×3 арма, $6.63<$15, echo 0, майнинг-стоп→подпись); планка ≤2 НЕ пройдена; анти-корреляция гладкость↔верность ×3 → mistral-редактор вон. Эксп ЗАКРЫТ (D39.22), итерация №2 отложена; редактор = deepseek-v4-pro ИНТЕРИМ (glm-5 резерв). Стайл-каноны D39.21 (时辰=2ч · generic-«гу» ср. род · стихи смыслом · 资质=«талант»).
  • Курс — разработка бэкенда: пак-17 «канал B вживую»: фаза 1 (дизайн) ПРИНЯТА в редакции §14 — D39.26, фаза 2 (стройка) размечена и открыта (D39.25: в движке НЕТ понятия «18+» — generic content-labels × provider-capabilities, refusal причино-агностичен; лейблы вне хешей · резолв до валидации · один хоп chain[0] · гранулярность = книга; на владельце — вокабуляр лейблов и редактор под лейблом) → следующий платный прогон (разом: итерация №2 dspro-vs-glm · замер остатка ремонта · живой канал B) → сид-дельта (元 · 赤城 · 学堂家老 · 春秋蝉) → Ф2-механизмы (голос/состояние D21 · native-Gemini судья) · ja→ru §B5 → пилот Ф2.5.
  • Стек: draft deepseek-v4-flash thinking-ON → editor deepseek-v4-pro → судья gemini-preview + grok-фолбэк 18+ (~$0.85/ранобэ D30.4). Ключи: DEEPSEEK, ZAI, KIMI, OPENAI, GEMINI, XAI, MISTRAL (xAI: единый, data-sharing, off перед продом D27).
  • Висит на владельце + открытые петли: трекер в CURRENT-STATE docs/PROGRESS.md (единственное место).
  • Стенд: WSL2, GTX 1070 8GB (localhost из-под прокси = 403 — no-proxy транспорт для local). Книга /home/ubuntu/books/gu-zhenren/ (GB18030; текст и производные ВНЕ git).