textmachine/docs/BACKEND_GENERALITY_PHASE2_SESSION_PROMPT.md

31 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Промт бэкенд-сессии: ОБЩНОСТЬ, фаза 2 — rewrite-пакеты П0П4 + малая пачка ($0-код, БЕЗ платных вызовов)
**Выдан 01.08.2026, оркестратор №9; санкция владельца D39.62** (П1 включён — заморозка D39.24 §15.3 амендирована; пак-21 растворён). Карта и рабочая истина = `docs/archive/reports/GENERALITY_RESEARCH_2026-07-31.md` (принята D39.60): якоря — §3, трасса второй пары — §5, цены — §6, план — §9, чего НЕ делать — §10. **Первый деливерабл — эхо-блок ≤10 строк.**
**Платных вызовов моделей — НОЛЬ.** DeepSeek сменил веса под слагом (D39.61, строка 74 бэклога): боевая черновая форма покупает пустые ответы; развилка у владельца. Вся фаза — код+тесты. **`--resnapshot` НЕ запускать ни в каком виде** — подготовить один общий (см. «Выход»), запуск = отдельное слово владельца после развилки 74.
## ШАГ 0 — карта чтения (≤6 позиций)
GENERALITY_RESEARCH §3/§5/§6/§9/§10 · D39.6062 в D-логе · `12-go-style-notes.md` §0 · правило условного фолда (отчёт §6.2: фолдить ⟺ выход в оплаченном запросе/вердикте/`final_hash`; новый фолд — условный по присутствию) · прецедент «ридер+дефолт сейчас, файл данных позже» (`readOptional`, langpack.go:567-576) · бэклог-строки 25/26/28/32/7478.
## Скоуп (порядок = порядок исполнения)
1. **П0 «байты есть версия»:** `lang.EmbeddedVersion()` = sha256 эмбед-FS в фиксированном порядке, фолд в снапшот рядом с `LangpackVersion`. Приёмка: правка байта `data/target-ru.txt` ⇒ громкий resnapshot-стоп, не тихая смена вердиктов (мутационный тест).
2. **П1 цель-шов (слой 7):** `isRuTarget` (6 call-site) → инертность-ПО-ДАННЫМ · `TokenizeCyrillic` → токенизатор с алфавитом цели из данных (закрывает и U+0301 #11, и самозадокументированный долг `checks/repair.go:182-189` — шов ОДИН, оба потребителя на нём) · реестр целей из эмбед-данных вместо Go-мапы · `ruSanitizer` → поле `Checkers` · **гейт на `ExportNormalize`** ($0 по его же шапке) · ё-фолд → цель-данные. З2 соблюдать: строковые предикаты, НИКАКОГО `language.Tag`.
3. **П2 скрипт-шов источника:** `cjkShare` → доля рун ОБЪЯВЛЕННОГО письма источника (объявлять, не нюхать) · консолидация выражений «класс CJK» с явным решением по Hangul (закрывает живой баг ko — строка 75) · `isCJKLang` → атрибут данных.
4. **П3 нарезка/оценка:** таксономия классов `EstimateTokens` из данных (не два поля Go-типа; вторую копию арифметики в `memory.go:494-506` — на тот же шов) · фолбэк `segmentation` = ГРОМКАЯ ошибка вместо zh-литералов (`pipeline.go:843-852`; правило «терпимость к своим данным = воркэраунд») · generic-детект глав (маркер + цифры + опц. юнит, с пробелом — закрывает «Chapter 12» и `第N話`) · аллоулист кодировок из данных · `sourceAbbrevs` по языку книги.
5. **П4 пак как механизм:** манифест по КАНАЛАМ вместо 11 обязательных файлов (майнер получает nil-канал и молчит с WARN) · табличный список опциональных файлов вместо 4 копий read→hash→parse→assign · новые файлы книгой не оверлеятся (явно).
6. **Дешёвая шестёрка растворённого пака-21** (якоря — §8 отчёта, НЕ D39.39): #11 U+0301 (закрывается токенизатором П1) · #2 атрибуция K4b до спана · #4 `inner_marker` симметрично вето · гомоглиф отдельным детектором смешанного письма · строгая форма `OffLanguage` (строка 28; ⚠ оговорка 36а: «甲等 → класс Цзя» она не ловит — не заявлять) · строка 26 `translitInterjections` → данные.
7. **Малая пачка:** строка 77 — ре-ген N=1 ПЕРЕД эскалацией для `cjk_artifact` (посылка «retry just re-produces them» опровергнута D39.61; гейт не ослаблять ни на байт; конфиг-ручка с дефолтом = текущее поведение, условный фолд) · строка 78 — billed-попытка «2xx body decode failed (call IS billed)» обязана попадать в `request_log`.
## НЕ делать (заморозки в силе)
§10 отчёта целиком: `language.Tag` (З2) · UAX#29 · авто-детект письма по тексту · дробление `internal/lang` · кана-фолд `NormalizeSourceKey` · жанровые словари (З7) · «X-X»-обобщение (З6) · границы глосс (З5) · П5-майнер (гейт = реальная вторая книга) · П6-расщепление хеша пака (решение владельца: не делаем) · пар-кеинг DC-чекеров (З3) · дизайн автономности банка (отдельная арка).
## Дисциплина (мандат самопроверки — норма владельца 01.08, ОБЯЗАТЕЛЕН)
Цикл: **план → синк** (карта чтения; расхождение промта с кодом/доками = пинг через владельца, не тихая интерпретация) **→ исполнение → самоверификация ТОЙ ЖЕ сессией, ИСПОЛНЕНИЕМ**: build/vet/`go test -race` · golden байт-в-байт там, где вердикты не двигаются, и Ш-1 маскированный дифф там, где двигаются (П3!) — каждая сдвинутая строка объяснена осью · майнер-парити EXACT · **мутационные проверки несущих гейтов** (мин.: П0-байт, П1-инертность на `target_lang: en`, П2-Hangul) · **сухой прогон второй пары**: ja→ru и en→ru конфиги доходят до промпт-отказа БЕЗ тихих засыпаний (проверить трассу §5 отчёта) · «вывод на агрегате до вскрытия единиц запрещён». Приёмочный критерий каждого пакета: **«пара, которой нет в репо, проходит этот слой без правки Go»** + счёт снапшот-осей, которые пакет сдвинул.
## Выход
`docs/archive/reports/GENERALITY_PHASE2_<дата>.md`: эхо-блок · что построено по пакетам с file:line · самоверификация исполнением (команды/числа) · **сводка «что сдвинуло снапшот» = заготовка одного общего resnapshot** (оси + проекция цены по корпусу) · критик полноты. Запись в PROGRESS (секция «Бэкенд»). Сессия НЕ коммитит; `--resnapshot` НЕ запускает. **СТОП после отчёта — приёмка оркестратора.**