8.2 KiB
8.2 KiB
Промт: бэкенд-сессия, пакет D15.2 — реализация content-addressed resume + качественные фиксы D30 + экспорт-контракт D29 (2026-07-12)
Кто ты и что делаешь
Ты — бэкенд-сессия TextMachine, реализационный пакет D15.2 (самый крупный после Ф1-машинерии). Зона: backend/ + секция «Бэкенд» в docs/PROGRESS.md. Ничего не коммитить — лендинг оркестратором по этапам (см. этапность). Пакет собирает четыре ратифицированных потока: качественные фиксы D30 (гейтят пере-прогон 25 глав), реализацию D15.2 v3.1, экспорт-контракт D29, накопленные fix-листы.
Онбординг (~60 мин)
CLAUDE.md→ CURRENT-STATE →docs/architecture/05-decisions-log.md: D30 (мандат качественной части), D29 (экспорт/override), D28.2–28.3, D22.2 (v3.1-амендменты), D20.1–20.2, D15 — целиком.- Спека D15.2 (
backend/docs/D15.2-content-addressed-resume-spec.md) + ревью-требования к ней: D20.1 (v2-правки), D22.2 (v3.1: SourceLang/TargetLang → verdictSnapshotID; cache_ttl → advisory; правило «судьбу получает ЛЮБОЕ brief-поле вне рендера»). docs/research/16-reader-ide-alignment.md— ревью-шапка + §3–4 (контракт экспорта; поправки шапки ОБЯЗАТЕЛЬНЫ: ключ override = хеш СЫРОГО src, RED = дополнение, паспорт-rollup = амендмент).docs/experiments/12-quality-diagnosis.md— шапка + §2.5/2.6 (root-cause вёрстки, классы санитайзера).
Этап А — качественные фиксы D30 (гейтит пере-прогон; лендится ОТДЕЛЬНО и раньше)
- Билингв-редактор (флип D1, D30.1):
editor.mdполучает исходник (форма D13.1: простой general-промпт — блок{{source}}+ инструкция сверять смысл; БЕЗ сложного инжиниринга); bumpprompt_version. Моно-вариант сохранить отдельным промпт-файлом (пилот-арм D13.1 остаётся подтверждающим). - Reflow (D30.2): убрать «Сохраняй разбивку на абзацы» из
translator.md:9иeditor.md:8; редактору — разрешение нормативной репараграфизации (реплики диалога с тире с абзаца; без максимума длины абзаца); bump обеих prompt_version. - Output-санитайзер (D30.3) — новый детерминированный гейт-класс (vердикт-ось, дисциплина D2 flag+skip): ведущие сервис-преамбулы («Вот отредактированный…» и класс) И хвостовые блоки «заметок/правок»; markdown-заголовки
###; латиница-врезки в ru-выходе (порог, не единичные имена); битые словоформы — класс «слово, отсутствующее в выходе draft'а, с внутренним разрывом/дубликацией» детектировать дёшево (минимум: повтор подстроки типа «Первок предок», невалидные кириллические биграммы — предложи детерминированную эвристику, precision > recall, это ФЛАГГЕР). Версионируй как санитайзер-version в вердикт-снапшот. - Golden: этап А меняет промпты и вердикты → осознанный re-capture (инвариант №8) + расширение фикстуры по D28.2: (i) стадия на флорнутой модели, (ii) oblique-only decl entry (golden начинает пиновать floor и union), (iii) кейс санитайзера. Дифф-класс задокументировать.
Этап Б — D15.2 v3.1 + реализация
- Сначала v3.1-амендменты спеки (D22.2 два обязательных + D20.1: role/stage в guard_hash, editor-каскадное правило dry-run, полевой маппинг §4). Затем реализация: пер-стадийный wireSnapshotID (D20.1-Q1), расщепление wire/verdict, fast-path гард на ВЕСЬ wire-план, pre-flight dry-run «N чанков, ~$X» +
--accept-rebill[=usd](порог min($0.50, 5%×Projected)), миграция store с сиквенсингом (старые чекпоинты этапа A/пере-прогона не теряются). - Axis-sensitivity тест RequestHash (флип role/stage меняет хеш — D22.9); негативный кейс additive_total; hop-checkpoint-replay тест (D28.3а — пин fbHash-зеркала).
Этап В — экспорт-контракт D29.1
tmctl export: канонический ассемблер перевода (нормализация выхода: стрип markdown-###, унификация разделителей) +annotations.jsonannot-v1 (схема research/16 §4.1 С ПОПРАВКАМИ шапки: src_range — офсеты в чанкере (net-new), dst_range nullable/эфемерный, source_file_hash — новое поле, спаны style-флагов пересчитываются линтерами на экспорте, paragraph_anchors — ТОЛЬКО позиционная пара при равном числе абзацев); editor-facing: красные = маркированный плейсхолдер; reader-facing: fail-closed + release-state лестница D25.1 (run_complete/structurally_complete/quality_reviewed/publishable).- Цвет-мап + GREY (RED = flagged && reason≠glossary_miss — дополнение, не перечень) + паспорт-rollup 3-тир (это амендмент вердикт-правила D12/exp07 — сохранить консистентность с exit-кодом translate; поведение при gate-on задокументировать).
- human_override слой 1 (LOCK): per-chunk provenance-состояние; ключ = хеш сырого src-текста чанка (новое поле; НЕ chunk_status.content_hash); redrive/resume НЕ трогают override (mutation-тест); слой 2 (carry-over + «needs re-review») — только дизайн-нота, реализация после.
Попутно (fix-листы, мелочь)
D22.9: CLI-тест redrive --resnapshot; комменты models.yaml «native Gemini судья 18+ — Ф2» (устарели против exp11). D23.4-остаток: опц. компонент-тест snapshotID. D28.3: provider_local×floor note; коммент mempostcheck.go:84 «D24.3/D24.4»→«D24.4»; стейл-комменты models.yaml «чистый ключ/data-sharing» → привести к D27.
Дисциплина
- Этапность лендинга: А отдельно и первым (гейтит пере-прогон; Б/В не гейтят). По завершении А — пинг в PROGRESS, не жди Б/В.
- Никаких wire-изменений сверх мандата; каждый фикс mutation-verified;
go build/vet/test -raceчисто; санитайзер и промпты — с тестами на классы из exp12 (преамбула gemini, «Первок предок», ###). git statusперед стартом (чужие правки — стоп);.envне читать; книга/diag вне git.- Отчёт: секция PROGRESS «Бэкенд» по этапам, дифф-классы golden, вопросы оркестратору.