6 KiB
Промт: бэкенд-мини-сессия — 2 обязательных фикса output-санитайзера (D33.1) + golden re-capture (2026-07-12)
Гейтит пере-прогон 25 глав. Санитайзер (D30.3,
sanitizer.go) залендён (D33,00f8e36) и включён вpipeline-c1.yaml, но ревью нашло 2 major-дефекта, которые backend-ревью пропустило. Оба правят вердикт-ось → golden re-capture обязателен (инвариант №8, D23.1). Правки вольются в единый resnapshot пере-прогона (нулевая доп. цена).
Кто ты
Бэкенд-мини-сессия. Зона: backend/ + секция «Бэкенд» в PROGRESS.md. Ничего не коммитить — лендинг оркестратора. Пакет крошечный и целевой: 2 регекс-фикса санитайзера + пины + golden. Не расползаться (этап Б/В D15.2 — отдельный промт после пере-прогона).
Онбординг
CLAUDE.md→ CURRENT-STATE → D33 целиком (мандат; особенно D33.1–33.2) → D30.3 (санитайзер) → D23.1 (процедура golden).docs/experiments/12-quality-diagnosis.md:229(точная строка хвостовой утечки gemini A5/5_1 «Основные правки для справки» — цель фикса 1) + шапка D30.
Задачи
1. [major] Хвостовой класс ловит «Основные правки для справки» (D33.1а)
Санитайзер ловит ВЕДУЩУЮ gemini-преамбулу, но НЕ хвостовую форму «Основные правки для справки:» + список — ту самую утечку A5/5_1 (exp12:229), ради которой гейт включён. Сейчас sanitizer.go:164/171 матчат только примечание/заметки/сноска и внесённ+правк/что изменено/список правок — «для справки»/«основные правки» проваливаются.
- Фикс: high-precision альтернатива на «основные правки»/«для справки» (эти фразы в НАРРАТИВЕ не встречаются — низкий FP-риск).
- Пин: fire-тест точной строкой 5_1 (хвостовой блок должен флагаться).
2. [major] Класс «битые словоформы» ложно флагает нормальную прозу (D33.1б)
junctionDuplicated (sanitizer.go:356) фаерит «около колонны», «около колодца», «стало талой» ТАК ЖЕ, как реальный «Первок предок» — гард полиптотона (:362) исключает только префикс-вложенность, а эти пары лишь случайно делят 4+-рунную морфемную границу, не содержа друг друга. «около» — частый предлог → флаг-шторм на 25 главах легитимного текста. Гейт включён в c1.
- Фикс на выбор: (а) требовать, чтобы перекрытие покрывало бо́льшую часть ОБОИХ токенов (не просто 4+ руны общей границы); ИЛИ (б) снять класс целиком — он и так признаёт (
TestSanitizerBrokenWordRecallGap), что канонический «Первок предок» не ловит (recall-gap до Ф2-морфологии), т.е. класс ловит мало реального и много ложного. Реши по precision: если после сужения (а) класс всё ещё даёт FP на прозе — снять. - Пины: clean-кейсы «около колонны»/«около колодца»/«стало талой» (НЕ флагать) + сохранить recall-gap-тест как есть.
3. Мелочи (документировать границей ИЛИ быстро сузить — не блокеры, D33.2)
Латиница-heavy на 5+ брендах («iPhone, iPad, MacBook…») — исключить капитализированные одиночные латинские токены из heavy-count; хвостовой «Примечание:»/«Комментарий:» в последних строках; «# # #»/«## ***» разделители (требовать букву/цифру после хешей). Разговорный префикс «Конечно!/Готово!» перед преамбулой — recall, precision-over-recall дизайн, ОК (не трогать). Recall-gap «Первок предок» — принятая граница до Ф2-морфологии (не чинить).
4. Golden re-capture
Правки 1–2 меняют вердикт-ось → TM_UPDATE_GOLDEN=1; дифф-класс задокументируй — изменения ДОЛЖНЫ исчерпываться sanitizer-version-бампом + (если фикстура ch6 упражняет затронутые классы) вердиктами санитайзера. Любой другой класс = стоп и пинг оркестратору.
Дисциплина
Только санитайзер + пины + golden; никаких других wire-правок. Каждый фикс/пин mutation-verified; go build/vet/test -race чисто. git status перед стартом (в дереве могут быть чужие правки). .env не читать. Отчёт: секция PROGRESS «Бэкенд» — дифф-класс golden, числа пинов, что решил по классу «битые словоформы» (сузил/снял). Не коммитить.