textmachine/docs/archive/prompts/BACKEND_INFRA_PACK_SESSION_PROMPT.md

10 KiB
Raw Permalink Blame History

Промт: бэкенд-сессия — инфра-пак читаемости (санитайзер-классы + экспорт-фикс + гарды + reseed-координация) (2026-07-12, D38, приоритет №1)

⟶ ЗАКРЫТ / ЗААРХИВИРОВАН (D38.3, 12.07). Инструкции ниже НЕ исполнять — история. Отработан: бэкенд исполнил 4 задачи (экспорт-фикс D35.4a + класс cjk_leak + число/omission-гард + reseed-enforce-верификация) с 19-агентным само-ревью (4+1 фикса); оркестратор верифицировал ИСПОЛНЕНИЕМ (build/vet/test зелёные, 3 span-дефекта запинены) и залендил (d5beefc). Follow-on к единому resnapshot: BACKEND_DISCOURSE_PROMPT (рычаг №1 P1a) + POLYGON_RESEED. Разбор — D-лог D38.3.


Кто ты и зачем

Ты — бэкенд-сессия TextMachine. Эмпирика D35→D38 сошлась: потолок читаемости — в НАШЕЙ ИНФРЕ (глоссарий-согласованность + output-санитайзер), НЕ в модели (D38: дешёвый glm-дискурс ≈ фронтир gpt-5.4; обе внешние слепые сессии + exp14b голосуют за инфру, не за эскалацию на фронтир). Это ПЕРВЫЙ «строить» шаг под ДОКАЗАННЫЙ ROI (не «мерить»). Задача — залатать конкретные читательские дефекты, найденные h2h/exp14/exp14b, дешёвыми детерминированными гейтами.

Конкретные дефекты (span-верифицированы оркестратором в сыром выходе):

  1. Сырой китайский протекает в русский выход: «…охотники,却有 на это лишние деньги!» (arms/C/17.0) — санитайзер СЕЙЧАС НЕ ловит CJK-в-выходе (5 классов: преамбула/хвост-заметки/markdown-###/латиница/битые-словоформы; Han-класса НЕТ).
  2. Флагнутый чанк экспортится ПУСТЫМ (D35.4a): ch5.0/ch20.0 зачины глав выпали целиком из-за ведущего ### Глава N; текст правки цел. Дроп целого чанка ради косметического ### — переоверкилл.
  3. Дрейф грейдов 丙→«разряда Б» (должно В) — корень = статус-draft сида (D38, верифицировано memory.go:489 CONFIRMED-only + suppressContained съедает верный approved 族长). Фикс — RESEED (промоут статусов), координируется с тобой (ниже), НЕ твой код.
  4. Число-дрейф / omission при reflow (四成四=44%→«четыре десятых» у glm; 大哭了一场→«проплакала несколько часов»).

Зона: только backend/. Golden — инвариант №8 (осознанный re-capture, мутационно пинить). Ничего не коммитить (лендит оркестратор). По мандату самопроверки (CLAUDE.md, решение владельца 12.07): ПОСЛЕ кода прогони явный бэкенд-ревью-проход своего кода + результатов (не «0 ошибок» на веру); адверсариальное ревью диффа (author≠reviewer, find→refute).

Онбординг

  1. CLAUDE.md (гардрейлы, вкл. мандат самопроверки) → CURRENT-STATE → D35.4 + D37 + D38 целиком (мандат) → docs/experiments/14b-meaning-battery.md ревью-шапка (h2h-дефекты).
  2. backend/internal/pipeline/sanitizer.go (5 классов, precision>recall, opt-in гейт, фолдится в снапшот при enabled — D30.3/D33) + render.go (экспорт-сборка) + mempostcheck.go/memory.go (глоссарий-инъекция, editor-констрейнт = CONFIRMED-only).
  3. docs/experiments/00-provider-quirks.md (не трогать провайдеров — только читать).

Задачи (по приоритету; каждая — golden байт-в-байт + мутационный тест)

1. [major] Экспорт флагнутого чанка: strip-and-export для КОСМЕТИЧЕСКИХ классов, не drop-to-empty (D35.4a + D29.1а)

Сейчас флагнутый чанк → FinalText не экспортится (пусто). Ввести дисп-по-классу: высоко-precision КОСМЕТИЧЕСКИЕ утечки (ведущий #{1,6} markdown-заголовок; одиночный CJK-токен — см. задачу 2) → strip утечки + экспорт остатка + флаг для человека (не терять чанк); СУБСТАНТИВНАЯ контаминация (преамбула gemini, тяжёлая латиница, битые формы) → как сейчас (skip, не экспортить). Ведущий ### Глава N рождается в ЧЕРНОВИКЕ deepseek → strip на экспорте (нормализация), НЕ править editor-промпт. Тест: флагнутый-косметикой чанк экспортит текст БЕЗ ведущего ###; субстантивный — по-прежнему пуст.

2. [major] Новый санитайзер-класс: CJK-в-выходе (Han + полноширинные в ФИНАЛЕ)

Финал — русский; любой иероглиф \p{Han} (U+4E009FFF + расширения) или полноширинный знак = утечка. Детерминированно, высокий precision (в чистой ru-прозе Han=0). Класс cjk_leak в sanitizerResult. Дисп — КОСМЕТИЧЕСКАЯ (задача 1): strip CJK-токены + экспорт + флаг (одиночный 却有 не должен ронять весь чанк). Пины: fire на «…охотники,却有 деньги»; non-fire на чистой ru-прозе; полноширинная пунктуация/цифры — учесть (не ложить на легит-кейсы, если есть). Golden re-capture (правило = loud resnapshot, sanitizerVersion bump).

3. [minor-major] Число/omission-гард на reflow (guard пост-черновой регрессии, research/18 §C#5)

Детерминированный гейт (precision>recall, opt-in как санитайзер): (а) финал НЕ короче черновика на >X% (порог — предложи, напр. 40%; ловит коллапс/пропуск — draft 5000→final 600); (б) множество ЦИФР/чисел финала ⊆ близко к множеству черновика (грубо: не появились/не исчезли числовые токены — ловит 四成四→«десятых» дрейф и добавки). Флаг regression_guard, НЕ drop (человеку на ревью). Осторожно с легит-случаями (reflow укрупняет, но не режет смысл). Пины mutation-verified. Если (б) шумит — оформи как наблюдаемость-флаг, не hard-skip.

4. RESEED-КООРДИНАЦИЯ (глоссарий-промоут — НЕ твой код; координируется в ОДИН resnapshot)

Сид (/home/ubuntu/books/gu-zhenren/guzhenren-seed-v2.yaml, ВНЕ git) промоутит полигон/владелец: грейды 甲乙丙丁→dst «класс А/Б/В/Г» + status draft→approved; 四代族长→«Четвёртый глава рода» draft→approved (владелец подписал направление D37/D38). Твоё: убедиться, что editor-констрейнт-инъекция enforce-ит promoted-термы (механизм есть — renderEditorConstraintBlock CONFIRMED-only, memory.go:489; промоут→CONFIRMED→enforced; longest-match делает 四代族长 победителем над 族长). НЕ править seed сам (зона полигона/владельца). Финальный resnapshot (санитайзер-версия + промпт-экспорт + сид) — ЕДИНЫЙ (D30.9-паттерн), координирует оркестратор.

Deliverable / дисциплина

  • go build && go vet && go test -race зелёные; golden re-captured осознанно (маскированный дифф = ровно санкционированные классы); все новые классы/гарды mutation-verified (реверт→FAIL).
  • САМОПРОВЕРКА (обязательна): после кода — свой ревью-проход (что реально ловит/не ловит на РЕАЛЬНОЙ ru-прозе, ложные срабатывания), затем адверсариальное ревью диффа (find→refute, author≠reviewer). FP-классы на легит-прозе — НЕ приемлемы (роняют хороший чанк).
  • Зона backend/ only; чужой untracked (eval/exp14b_*.py полигон) НЕ трогать; .env не читать; коммиты — оркестратор.
  • Оговорки/вопросы — в конце отчёта (порог X% гарда; легит-кейсы CJK-класса; дисп-матрица strip-vs-skip).

После лендинга бэкенда + reseed → единый resnapshot → пере-прогон 310 глав дешёвым конфигом (дискурс-промпт glm=P1a; кандидат-редактор mistral/deepseek-pro как арм — exp14b за них по смыслу) → чтение владельца. Планка = 2 претензии ИНТЕРИМ (D35); пилот Ф2.5 — решающая точка, не разбавляется.