31 lines
8.3 KiB
Markdown
31 lines
8.3 KiB
Markdown
# Промт бэкенд-сессии: ОБЩНОСТЬ, фаза 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.60–62 в D-логе · `12-go-style-notes.md` §0 · правило условного фолда (отчёт §6.2: фолдить ⟺ выход в оплаченном запросе/вердикте/`final_hash`; новый фолд — условный по присутствию) · прецедент «ридер+дефолт сейчас, файл данных позже» (`readOptional`, langpack.go:567-576) · бэклог-строки 25/26/28/32/74–78.
|
||
|
||
## Скоуп (порядок = порядок исполнения)
|
||
|
||
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` НЕ запускает. **СТОП после отчёта — приёмка оркестратора.**
|