8.3 KiB
Промт бэкенд-сессии: ОБЩНОСТЬ, фаза 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.
Скоуп (порядок = порядок исполнения)
- П0 «байты есть версия»:
lang.EmbeddedVersion()= sha256 эмбед-FS в фиксированном порядке, фолд в снапшот рядом сLangpackVersion. Приёмка: правка байтаdata/target-ru.txt⇒ громкий resnapshot-стоп, не тихая смена вердиктов (мутационный тест). - П1 цель-шов (слой 7):
isRuTarget(6 call-site) → инертность-ПО-ДАННЫМ ·TokenizeCyrillic→ токенизатор с алфавитом цели из данных (закрывает и U+0301 #11, и самозадокументированный долгchecks/repair.go:182-189— шов ОДИН, оба потребителя на нём) · реестр целей из эмбед-данных вместо Go-мапы ·ruSanitizer→ полеCheckers· гейт наExportNormalize($0 по его же шапке) · ё-фолд → цель-данные. З2 соблюдать: строковые предикаты, НИКАКОГОlanguage.Tag. - П2 скрипт-шов источника:
cjkShare→ доля рун ОБЪЯВЛЕННОГО письма источника (объявлять, не нюхать) · консолидация выражений «класс CJK» с явным решением по Hangul (закрывает живой баг ko — строка 75) ·isCJKLang→ атрибут данных. - П3 нарезка/оценка: таксономия классов
EstimateTokensиз данных (не два поля Go-типа; вторую копию арифметики вmemory.go:494-506— на тот же шов) · фолбэкsegmentation= ГРОМКАЯ ошибка вместо zh-литералов (pipeline.go:843-852; правило «терпимость к своим данным = воркэраунд») · generic-детект глав (маркер + цифры + опц. юнит, с пробелом — закрывает «Chapter 12» и第N話) · аллоулист кодировок из данных ·sourceAbbrevsпо языку книги. - П4 пак как механизм: манифест по КАНАЛАМ вместо 11 обязательных файлов (майнер получает nil-канал и молчит с WARN) · табличный список опциональных файлов вместо 4 копий read→hash→parse→assign · новые файлы книгой не оверлеятся (явно).
- Дешёвая шестёрка растворённого пака-21 (якоря — §8 отчёта, НЕ D39.39): #11 U+0301 (закрывается токенизатором П1) · #2 атрибуция K4b до спана · #4
inner_markerсимметрично вето · гомоглиф отдельным детектором смешанного письма · строгая формаOffLanguage(строка 28; ⚠ оговорка 36а: «甲等 → класс Цзя» она не ловит — не заявлять) · строка 26translitInterjections→ данные. - Малая пачка: строка 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 НЕ запускает. СТОП после отчёта — приёмка оркестратора.