9.6 KiB
Промт: бэкенд-сессия — инфра-пак читаемости (санитайзер-классы + экспорт-фикс + гарды + reseed-координация) (2026-07-12, D38, приоритет №1)
Кто ты и зачем
Ты — бэкенд-сессия TextMachine. Эмпирика D35→D38 сошлась: потолок читаемости — в НАШЕЙ ИНФРЕ (глоссарий-согласованность + output-санитайзер), НЕ в модели (D38: дешёвый glm-дискурс ≈ фронтир gpt-5.4; обе внешние слепые сессии + exp14b голосуют за инфру, не за эскалацию на фронтир). Это ПЕРВЫЙ «строить» шаг под ДОКАЗАННЫЙ ROI (не «мерить»). Задача — залатать конкретные читательские дефекты, найденные h2h/exp14/exp14b, дешёвыми детерминированными гейтами.
Конкретные дефекты (span-верифицированы оркестратором в сыром выходе):
- Сырой китайский протекает в русский выход:
«…охотники,却有 на это лишние деньги!»(arms/C/17.0) — санитайзер СЕЙЧАС НЕ ловит CJK-в-выходе (5 классов: преамбула/хвост-заметки/markdown-###/латиница/битые-словоформы; Han-класса НЕТ). - Флагнутый чанк экспортится ПУСТЫМ (D35.4a): ch5.0/ch20.0 зачины глав выпали целиком из-за ведущего
### Глава N; текст правки цел. Дроп целого чанка ради косметического ### — переоверкилл. - Дрейф грейдов
丙→«разряда Б»(должно В) — корень = статус-draft сида (D38, верифицированоmemory.go:489CONFIRMED-only +suppressContainedсъедает верный approved族长). Фикс — RESEED (промоут статусов), координируется с тобой (ниже), НЕ твой код. - Число-дрейф / omission при reflow (
四成四=44%→«четыре десятых» у glm;大哭了一场→«проплакала несколько часов»).
Зона: только backend/. Golden — инвариант №8 (осознанный re-capture, мутационно пинить). Ничего не коммитить (лендит оркестратор). По мандату самопроверки (CLAUDE.md, решение владельца 12.07): ПОСЛЕ кода прогони явный бэкенд-ревью-проход своего кода + результатов (не «0 ошибок» на веру); адверсариальное ревью диффа (author≠reviewer, find→refute).
Онбординг
CLAUDE.md(гардрейлы, вкл. мандат самопроверки) → CURRENT-STATE → D35.4 + D37 + D38 целиком (мандат) →docs/experiments/14b-meaning-battery.mdревью-шапка (h2h-дефекты).backend/internal/pipeline/sanitizer.go(5 классов, precision>recall, opt-in гейт, фолдится в снапшот при enabled — D30.3/D33) +render.go(экспорт-сборка) +mempostcheck.go/memory.go(глоссарий-инъекция, editor-констрейнт = CONFIRMED-only).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+4E00–9FFF + расширения) или полноширинный знак = утечка. Детерминированно, высокий 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 → пере-прогон 3–10 глав дешёвым конфигом (дискурс-промпт glm=P1a; кандидат-редактор mistral/deepseek-pro как арм — exp14b за них по смыслу) → чтение владельца. Планка = 2 претензии ИНТЕРИМ (D35); пилот Ф2.5 — решающая точка, не разбавляется.