textmachine/docs/DESIGN_SYNTHESIS_SESSION_PROMPT.md

260 lines
34 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.

# Промт: сессия ДИЗАЙН-СИНТЕЗ — план реализации пере-прогонного стека (слои 1+4+5 + данные слоя 2), 2026-07-19
> **Место в очереди (D39.11, директива владельца):** исследовательская программа арх-ресета ЗАВЕРШЕНА
> (D39D39.10, все залендены). В бэкенд «просто так не бросаться»: между эмпирикой и стройкой стоит ЭТА
> проект-ресёрч сессия. Ты синтезируешь ВСЕ находки (research/1920, exp15/16, аудит 08, дефект-классы
> D39.8) в план реализации «что и как меняем» — с чёткими алгоритмами и **процедурой верификации каждого
> ДО стройки** ($0-симуляции на существующих данных, где возможно). План ратифицирует оркестратор
> (адверсариальное ревью несущих алгоритмов), затем по плану выдаётся бэкенд-пак. Стройка ТОЛЬКО по
> ратифицированному плану — финальное закрытие концерна «тактическое латание».
## Кто ты и что сдаёшь
Сессия-проектировщик (аналог ресёрч-сессий research/1920, но материал — НАШ репозиторий и НАША эмпирика,
не веб). Выход:
1. **`docs/architecture/11-implementation-plan.md`** — ратифицируемый план реализации (формат §«Формат плана»).
2. **`eval/design11/`** — скрипты $0-верификаций (симуляции/пере-выводы) + их результаты; артефакты,
производные от книги, — ВНЕ git (`/home/ubuntu/books/gu-zhenren/design11/`).
**Не коммитить** (лендит оркестратор; git-гардрейл CLAUDE.md в силе). **Бэкенд-код НЕ писать и `backend/`
НЕ править** — только план + верификационные скрипты. **$0 к провайдерам жёстко:** платных вызовов нет.
Если верификация требует платного вызова — две дороги, НЕ одна: (а) верификация несущая для (г)-слота WS →
это деньги-развилка, эскалируй оркестратору через владельца с точной спекой (кандидат — платная pre-build
полигон-мини-сессия); (б) проверка структурно требует ПОСТРОЕННОГО кода → слот (д) «после стройки», пробел
явно фиксируется в (е) этого WS. Самому тихо маршрутизировать несущую верификацию «на после стройки»
запрещено (verify-before-build — суть D39.11). Гардрейлы CLAUDE.md действуют целиком (`.env` не читать;
18+ уровень 3; PUML не рендерить; книга и производные вне git).
## Онбординг (порядок чтения, целевой — не всё подряд)
1. `CLAUDE.md``docs/architecture/09-target-architecture.md` (7 слоёв, §0.1 инвариант общности — НЕСУЩИЙ).
2. Д-лог `docs/architecture/05-decisions-log.md`: карта актуальности в шапке + **D39D39.11 целиком** (контракт эры).
3. Несущие отчёты (это твой исходный материал, читать ВНИМАТЕЛЬНО):
- `research/19-chunking-cohesion.md` **§B** (чанкер-спека B1B4, когезия B3, волны B3-бис), **§C** (контракт t/e), §E;
- `research/20-bank-mining.md` **§B1** (детекторы V-A/B/C), **§B2** (алиас-ярусы), **§B3** (banknote-v1, 12 точек),
**§B4** (зоны Z1Z5), **§B5** (плагины P1P6), **§C** (консолидация), §E;
- `experiments/15-segmentation-empirics.md` §3 (Q2b — потолок инструмента), **§7 РЕВ.2** (floor 0.126, Q1/Q3a/Q0),
§7.9 (слепое чтение, дефект-классы), §7-Q4a (слабое звено = редактор);
- `experiments/16-bank-mining.md` (WHICH/WHAT-расщепление, §3.3 канон, §3.5 банкнота, §4 слепые зоны V-C).
4. `architecture/10-prompt-architecture.md` (промпт-инвентарь) + `architecture/08-sync-audit-ledger.md`
(дорожки L1/L2/L3/L5 — по надобности, для полноты диспозиций).
5. **Код (грунтовка обязательна, план цитирует file:line):** `backend/chunker.go`, `chunkrun.go`, `stagerun.go`,
`snapshot.go`, `memory.go`, `memseed.go`, `mempostcheck.go`, `coverage.go`, `sanitizer.go`, `export.go`,
`config/pipeline.go`, `models.go`, `store/*`; `backend/README.md` (инварианты 18), `03-implementation-notes.md`.
6. `experiments/00-provider-quirks.md` (перед любым суждением о провайдерах); `eval/exp15/`, `eval/exp16/`
(риги/порты — реюз для симуляций), артефакты `/home/ubuntu/books/gu-zhenren/{exp15,exp16}/`.
7. Авто-память — point-in-time; при конфликте верить докам/коду.
## Доказанная база (НЕ пере-открывать; план строится НА этом)
**Строим (ратифицировано, детали в D-логе):**
- **Волновой раннер W0→W1(∥)→W1.5→W2(∥)** — преимущества последовательного финал-соседа нет нигде (exp15 Q3a,
LOO-stable; мощность |cost|≲0.050.10 — «не опровергнуто», не «доказано ноль»); scheduler-aware окна цен.
- **Бюджет чанкера в ВЫХОДНЫХ токенах**: фертильность `est_out = 1.20·cjk + 0.39·other` (R²=0.96, glm-4.6-токены,
`exp15/fertility_calib.json`) — фикс `L2-budget-wrong-unit`.
- **Банк W1.5 (слой 4):** детектор V-C (WHICH: recall 0.97 f≥3 held-out, $0, детерминирован) + **банкнота = dst-канал**
(parse_fail 0%, ~$0.010.1/ранобэ) + Палладий (имена) + консолидация §C2 + алиас-ярус-1 (R1R4) + карта подписи.
dst из ко-оккуренции ОПРОВЕРГНУТ (canon-recovery 0.200.68 < 70%); Z1-адъюдикация облако; локальная 9B не нужна.
- **Декаплинг единиц: draft = мелкий чанк, edit = крупная единица** (цель слоя 1, D39 п.4; exp14 претензия-1;
exp15 Q2b: entity-omission 0 на всех размерах с оговоркой «потолок инструмента», Q2a span-омиссия НЕ гонялась).
- **Свап редактора glmmistral/deepseek-pro** приоритетный арм пере-прогона (exp14b + h2h + Q4a: слабое звено =
РЕДАКТОР; flash-черновик уже верен 25/0/27; pro ×3.67 НЕ ратифицирован).
- **Дефект-класс чекеры + данные пакета пары (D39.8):** 时辰-юниты (детерм. конверсия) · масштабы чисел (b1-класс
千万/数十万) · gender-enforce по полю сида (класс hidden D19.3: безродовые конструкции до reveal; поле есть,
исполнителя НЕТ) · стих/аллюзии (пак-политика + сноски) · регистр-негатив-лист терем»-класс).
**НЕ строим (доказано/ратифицировано — в план НЕ вносить):** сцен-детекция и carryover-машинерия для книг этого
класса (D39.7/D39.8 метрики под полом 0.126 И читатель подтвердил); DP/logical-граница чанкера (Q1: «граница
не рычаг»; Q1a: детекция 0/7); ко-оккуренция для dst; LLM-сегментация/ML-сцены/эмбеддинг-границы/
LLM-running-summary/RAG-оверлап (анти-скоуп research/19 §B4); фронтир в дефолт (D38); жанр-паки (решение владельца
1718.07); локальный 9B-споттер. **Парковки (НЕ тестировано не строим по консервативному дефолту, НЕ хоронить
как «доказано»):** lookahead (Q3b не гонялся); diff-редактор §C2 (Q4b); reflow-отдельным-пассом (Q4c);
широкое-окно/узкая-эмиссия Q2c; W2.5-швейный пасс (Q5). Все парковки с явной пометкой «не тестировано».
**Столпы (ломать нельзя, инварианты 18 `backend/README.md`):** деньги/durability (committed==SUM, kill -9) ·
снапшот-дисциплина (правка wire-байтов/вердиктов = громкий resnapshot; **все изменения этого плана обязаны
схлопнуться в ЕДИНЫЙ resnapshot** D30.9, одна переоплата) · детерминированный банк (не вектора) · эхо-мина
DeepSeek (thinking НИКОГДА не off) · 18+ · конфиг-первое ядро · экспорт-контракт = инвариант 8 README (внешняя
экстракция ТОЛЬКО `tmctl export`) · golden-гард детерминизма (backend/README, отдельная секция; исторический ярлык
«инвариант 8» эпохи D23 в CLAUDE.md/D-логе номер теперь занят экспорт-контрактом, не путать) · инвариант
общности §0.1 (любая книга/пара/структура; пара = ось данных).
## Скоуп плана — воркстримы WS1WS6 + глобальные секции
### WS1 — Волновой раннер (слой 1/оркестровка)
Спроектировать: W0 (чанкер+контекст-пакеты, $0) W1 черновики параллельно W1.5 (стоп-граница: банк-синк,
подпись владельца, resnapshot) W2 редактуры параллельно. Обязательные решения:
- **Деньги под параллелизмом:** reservesettle+checkpoint одной транзакцией из N воркеров; потолки
(committed+reserved) без гонок; SQLite-конкуренция (single-writer/WAL/очередь выбрать и обосновать);
ретрай-изоляция (ретрай чанка не меняет вход других уже свойство волн, закрепить тестом). Уроки D12.
- **Контекст W1/W2:** src-контекст в W1 статичен (глоссарий-сид + чанк; carryover НЕ строим D39.7/8;
lookahead не тестирован Q3b в дефолт не входит, парковка); W2-редактор получает КРУПНУЮ единицу (см. WS2)
+ банк-констрейнты. Соседи-черновики как контекст W2 НЕ ратифицированы (Q3a null + гипотеза CJK-протечки
V2-брака §7.9): если план хочет их обоснуй и дай дешёвый гейт; дефолт без них.
- **Общее состояние раннера под N воркеров:** назвать и закрыть гонку lazy-init `Runner.clients`
(`runner.go:171-181`, D12-урок) и прочие разделяемые хендлы (store/logger/шаблоны); выбрать sync-стратегию,
закрепить race-тест-спекой в (д).
- **Sticky/сцен-инерция (A5):** сегодня `memory.Select` тянет stickyPrev по цепочке чанков главы
(`chunkrun.go:88-111`) и результат входит в инъекционные байты request_hash; при параллельной W1 цепочка
ломается. План обязан ЯВНО решить: drop / precompute-в-W0 (sticky src-производен детерминированно и $0) /
переопределить per-волна; с последствиями для resume-детерминизма; изменение инъекционных байтов строкой
в манифест единого resnapshot, не молча.
- **Scheduler-aware диспетчер:** ценовые окна = конфиг провайдера (не хардкод); DeepSeek peak-valley ×2.
**Вендор-чеки в рамках сессии ($0, официальные доки, с цитатами/URL в плане):** (а) актуальные
пик/офф-пик окна DeepSeek флаг D39.10-6: «0104/0610 UTC» vs документированный off-peak 16:3000:30 UTC,
НЕ абсорбировать ни одну трактовку без сверки; (б) семантика/скидка префикс-кэша ZAI/GLM E.8-бис
research/19 вся warm-then-fan экономика W1/W2 условна на этом); (в) deprecation слагов DeepSeek 24.07
(research/19 §E.8) греп конфига и eval-скриптов, список затронутого.
- **Гейт W1.5 посреди прогона:** механика стопа между волнами + карта подписи + resnapshot draftapproved.
Снапшот-семантика банка GATE-УСЛОВНА: при `Gates.Glossary.PostcheckGate=false` (текущий дефолт) auto/draft
снапшот не двигают двигает подпись (`memory.go:258-285`); при gate ON в F1-хеш фолдятся ВСЕ строки вкл.
auto/draft и сам флаг гейта (`memory.go:251-266`, `snapshot.go:86-93`) вливание майнер-строк само двигает
снапшот. План обязан задать механику W1.5 для ОБОИХ состояний гейта (дефолт-флаггер сейчас; hard-gate флип
висит за пере-замером D24.4/D28.1), чтобы «переоплата ОДНА» была доказуема при любом конфиге. UX-решение
владельцу (вопрос §E-5 research/20 уже висит), план даёт механику и дефолт.
- **Верификация ($0):** детерминированный симулятор волн (mock-провайдер) конкуренция/kill-9/ретрай как
исполняемая тест-спека; расчёт wall-clock и COGS по реальной структуре 25-глав книги с окнами цен.
### WS2 — Чанкер-бюджет + крупная edit-единица (слой 1)
- Бюджет draft-чанка в ВЫХОДНЫХ токенах через фертильность (конфиг per-pair, снапшот-folded; схема research/19
§B1.1B1.2 БЕЗ DP/logical-границ greedy остаётся, `strategy`-ось можно заложить как сеам, но наполнение
`logical` НЕ строится). Инвариант: min-бюджет держит чанки над `Gates.Coverage.MinChunkChars` (`chunker.go:42-46`).
- **Edit-единица:** определить сборку (глава как естественная граница; глава > потолка → деление по абзацным
границам с бюджетом), потолок эмиссии vs зона деградации 2k8k out (research/19 §A.1.1; Q2a не гонялся —
риск омиссии при крупной эмиссии НЕ снят) → **обязательный компенсатор: reflow-инвариантный omission-бэкстоп
в слое 5** (лемма-матч, реюз `eval/exp15/reflow_omission.py`-подхода; RegressionGuard/coverage тут смещены —
research/19 §B0-4). Решить: что редактор получает на вход (вся единица src+draft) и что эмитит (полная
перегенерация единицы — diff-протокол парковка); как единица маппится на чанки-чекпоинты (деньги/resume
per-чанк или per-единица — обосновать против инварианта №1); **формат банк-констрейнтов редактора: голые
dst-формы vs src→dst-мэппинг — открытый вопрос D30.1 (`memory.go:505-511`), research/20 §E-бэкенд-6 требует
решить ДО W2-дизайна → решается В ЭТОМ плане с обоснованием, парковка запрещена** (с майненым банком
AMBIGUOUS-строк станет больше — учесть).
- Фоллбек-веер: из research/19 §B2 взять ТОЛЬКО корректность-кейсы, НЕ границную машинерию. Честно по коду:
мега-абзац уже покрыт (`packSentences`); мега-ПРЕДЛОЖЕНИЕ сегодня проходит oversize-чанком БЕЗ клауза-сплита
и БЕЗ флага — плану решить (passthrough+флаг `oversized_sentence` vs аварийный клауза-сплит ;:,、 из §B1.4),
согласовав с потолком эмиссии и принципом «деградация не молчит»; стихи/паратекст — решить с обоснованием
против §0.1.
- Мёртвые кнобы `STMDepth`/`OverlapTokens` (`config/pipeline.go:47-48`) — снести (carryover не строим).
- **Верификация ($0):** независимый пере-вывод коэффициентов фертильности из данных (не доверяя
`fertility_calib.json` — пере-вычислить и сверить); симуляция нарезки и сборки edit-единиц на 25-глав книге:
гистограммы est_out, доля единиц в зоне деградации, floor-инвариант, главы>потолка; сравнение с текущей
нарезкой (сколько чанков/единиц, прогноз COGS по фертильности).
### WS3 — Банк-машинерия W1.5 в Go (слой 4)
- Go-порт майнера: детектор V-C (n-граммы 16 × контраст × c-value g(L)=log₂(L+1) × паттерн-каналы:
фамильный якорь / титул-топо-суффиксы / rank-grade-композиция / авто-формант / Палладий-ru — авторитетный
состав каналов = exp16 §1.2 арм A3 / замороженный miner-v1, НЕ пересказ research/20 §B; пороги miner-v1
exp16 §1.3 — СТАРТОВЫЙ конфиг, версионируемый) + алиас-ярус-1 (R1R3 при негативных R4, вкл. iii «разный
approved dst» и iv «ко-презенция в предложении») + консолидация §C2 (канон по ВСЕМ вхождениям ×
Палладий-конформность × полнота леммы; **майнер по построению НЕ пишет approved**) + **эмиссия сид-дельты
§C2-7** (YAML в схеме `seedTerm` `memseed.go:30-57`, только auto/draft) + линт против фейл-лаудов
`loadGlossarySeed` (`memseed.go:91-99,161-181,201-237`) + генерация карты подписи (KWIC, пол-счётчики
他/她 = evidence, вердикт = владелец; зоны Z1Z5 флагами).
- **Плагин-сеамы P1P6 (§B5):** данные/конфиг per язык/пара, НЕ ветки кода; наполнение — только zh(-ru)
инстансы + существующий ruby-канал ja; degrade-with-flag, fail-loud только P1. Схема кандидата единая
ruby↔mined (research/20 §E-бэкенд-5); `Source:"mined"` в GlossaryEntry.
- Контраст-словарь (jieba SHA `7197c321…`) и инвентари паттернов — версионируемые артефакты детектора.
- ru-лемматизация: pymorphy3 есть только на полигоне — решить честно, что нужно Go-прод-пути W1.5
(лемматизатор цели = плагин P5; варианты: порт-минимум / вызов полигон-тулзы / snapshot-данные), с ценой.
- **Верификация ($0, несущая; честный сплит (г)/(д)):** (г) — прогнать Python miner-v1 на запинённых входах
exp16 (§1.10 SHA) и ЗАПИНИТЬ фикстуры кандидат-таблиц/кластеров/канон-предложений как golden БУДУЩЕГО
Go-порта + спека байт-паритет-харнеса (метод `mem_select.py` в обратную сторону: Python = референс);
юнит-фикстуры алиас-правил из exp16 §3.2 (族长≠四代族长 блок, кап-лемма-гейт «найти», компози-гард) —
прогнать против Python-реализации; **эмиссия сид-дельты по §C2-7 из персистированных exp16-таблиц**
(exp16 сид-дельту НЕ эмитил — только сайдкары; артефакт в `books/gu-zhenren/design11/`, вне git) + сухой
линт-прогон по ней против фейл-лаудов memseed. (д) — исполнение самого паритета Go↔Python закрепляет
бэкенд после стройки.
### WS4 — Банкнота: dst-канал (слой 4, wire-инвариант)
Спека banknote-v1 = research/20 §B3 (разделитель `⟦TM-BANK-v1⟧`, ≤N строк src<TAB>dst<TAB>type, «только новое»).
План обязан пройти ВСЕ 12 интеграционных точек §B3 с file:line и тест-спекой каждой; несущие: срез кодом ДО
classify/гейтов; derived-checkpoint `tm-banknote-v1` (прецедент `stagerun.go:225-242`); **re-point final_hash
OK-пути draft на derived** (иначе резюм отдаёт редактору сырой блок — расширение flagged-прецедента на ok-путь);
включение канала = снапшот-инвариант (промпт-SHA + константа канала); телеметрия `banknote_parse_fail/truncated`
лауд; `finish=stop`-only гейт генераций. **Верификация ($0):** пере-парс 95 строк банкноты exp16 спекой парсера
(parse_fail 0% воспроизвести; толерантный обрез недописанной строки — на синтетике); fresh↔resume
эквивалент-тест как спека; сверка каждой точки с текущим кодом (что изменилось с worktree-состояния research/20).
### WS5 — Дефект-класс чекеры + данные пакета пары (слои 5 + 2-данные)
Для каждого класса D39.8: где живёт правило (данные пакета zh-ru vs код гейта), алгоритм, действие при
срабатывании (флаг/констрейнт-инъекция — НЕ тихая правка текста; диспозиция D2 цела):
- **时辰-юниты:** детерминированная конверсия единиц времени (данные пакета) + чекер «числовое время в src ↔
рендер» (三个时辰 ≈ 6 часов, НЕ «три часа»);
- **масштабы чисел (b1):** чекер порядков 千万/数十万-класса против рендера (реюз локаторной механики
`q4a_traps.py` — но как ДЕТЕРМ. гейт-класс, не eval);
- **gender-enforce:** инъекция пола из поля сида в констрейнт-блок редактора (исполнителя нет — построить;
hidden → требование безродовых конструкций до reveal, D19.3) + детерм. чекер рода (морфология финала по
леммам персонажа vs подписанный пол; hidden-персонаж с гендерной формой = флаг);
- **стих/аллюзии:** политика пакета (детект verse-блока по профилю строк — НЕ границная машинерия; рендер-мандат +
слот сноски) — открытые продукт-решения выносить владельцу, не решать за него;
- **регистр-лексикон:** негатив-лист «терем»-класса как данные пакета + чекер вхождений.
**Верификация ($0, обязательная для КАЖДОГО чекера):** (а) позитивы из эмпирики — известные дефекты exp15 §7.9 /
exp14b / exp16 обязаны ловиться (时辰 «три часа», b1-примеры, Бай Нинбин hidden, «терем»); (б) false-positive
замер на ПОЛНОМ 25-глав финале через `tmctl export` (инвариант №8): чекер, флагающий заметную долю чистого
текста, не лендится — привести измеренные rate в плане.
### WS6 — Свап-арм редактора + готовность пере-прогона
- Армы = конфиг (pipeline yaml/models), не код: glm-5 (базлайн) / mistral / deepseek-pro как editor;
что нужно бэкенду (конфиг-варианты, снапшот per-арм, атрибуция в export/report) — перечислить.
- **Прогон-протокол (для будущего полигон/монитор-промта, здесь — предпосылки):** армы идут ЧЕРЕЗ прод-путь со
ВСЕМИ гейтами (урок V2-брака §7.9 — eval-риг без гейтов дискредитировал арм); инструмент-фиксы слепых пакетов
(D39.8 п.3: авто-QA до человека, общий финал, 2-way, тир-структура претензий); планка — 2 претензии (интерим);
любое судимое сравнение наследует ратифицированный риг-стандарт (D39.7): per-vote персист, полно-evidence окна
(HEAD_CHARS-класс запрещён), оба порядка, floor-гейт маргиналов (измеренные полы: когезия 0.126, смысл 0.261),
детерм. скорер > судьи где возможен (DET-primary валидирован D39.9); генерации — только `finish=stop`.
- **(г) для WS6** = COGS-расчёт скриптом в `eval/design11/` (фертильность WS2 × цены providers.json × реальная
структура книги, per-арм; реюз расчёта WS1, не дубль) — числом в плане; качественная сторона свап-арма —
по эскейп-хатчу (а)/(б) выше: точная спека «верификация полигоном после стройки» в прогон-протоколе.
### Глобальные секции плана (обязательные)
- **Порядок стройки и нарезка на пакеты** (что в бэкенд-пак-2, что следом; зависимости между WS).
- **Манифест единого resnapshot (D30.9):** перечислить ВСЁ, что двигает snapshotID (уже висящие memmatch-v4 +
sanitizer-v6 + reseed/editor-v3 D38.5 + новое из WS1WS5: chunker-конфиг, банкнота, пакет-данные,
gender-инъекция…) — план обязан показать, что переоплата ОДНА.
- **Диспозиции хвостов:** ledger-очередь D39.4/D39.5 (LOW/NOTE), слоты §E research/19 (E.5E.8-бис) и
research/20 (E-бэкенд-1…6; src→dst D30.1 — НЕ хвост, решается в WS2, здесь только кросс-реф), дефекты D39.9
(finish=length-гейты в eval-харнесах), **и NEVER_CLOSED владельческие идеи дорожки L7 аудита 08 без
записанной диспозиции (минимум: H7 input-limit, H8 abuse-prescreen, H10 user-stop, H16 self-improvement —
обещанный D39-док-долг, погашение в D-логе не записано)** — каждому: в пак / паркуется (причина) / владельцу.
- **Реестр вопросов владельцу** (консолидированный, с дефолтами плана).
## Формат плана (`architecture/11-implementation-plan.md`)
Per-воркстрим: **(а)** что меняем (модули, file:line); **(б)** алгоритм — до псевдокода/структур данных,
детерминизм явно (целые/сортировки/версии/tie-break); **(в)** конфиг+снапшот-механика (что фолдится, какие
версии бампаются); **(г)** верификация ДО стройки — скрипт в `eval/design11/` + РЕЗУЛЬТАТ в плане (числа,
не обещания); **(д)** тест-спека ПОСЛЕ стройки (пины, golden, race, kill-9 — что именно закрепит бэкенд);
**(е)** открытое/маршрутизация. Плюс глобальные секции выше. Пиши так, чтобы бэкенд-сессия могла строить
БЕЗ пере-открытия исследований: каждый порог/константа — либо число со ссылкой на источник, либо явный
конфиг-дефолт с обоснованием.
## Мандат самопроверки (обязателен, владелец 12.07) + дисциплина
- **Ревью ИСПОЛНЕНИЕМ:** каждый верификационный скрипт — прогнан, результат воспроизводим (детерминизм:
без time/rand); каждое file:line-утверждение плана — сверено с живым кодом (HEAD, не worktree-память
отчётов: research/20 писался до лендинга пак-1.5).
- **Адверсариальный селф-ревью плана (author≠reviewer, воркфлоу):** несущие алгоритмы (WS1-деньги,
WS2-единицы, WS3-паритет, WS4-точки, WS5-чекеры) — refute-by-default; расхождение = чинить до сдачи.
- **Completeness-critic:** свип против скоуп-листа этого промта, дорожек **L1L8** аудита 08 (приоритет
L1/L2/L3/L5; L4/L8 — confirm-only, закрыты D39 п.7/п.8 + пак-1/1.5; L6 — резидуалы в WS6/промпт-тему;
L7 — каждая NEVER_CLOSED идея без диспозиции → строка в «Диспозициях хвостов») и §E-слотов research/1920 —
«что не получило диспозицию?»; остаток — явным списком, не молчанием.
- **Не пере-решать ратифицированное:** D-лог — контракт; «что НЕ строим» — не пересматривать (это не мешает
честно фиксировать новые противоречия — эскалацией, не тихой правкой).
- Эмпирика exp15/16 — предварительна до вне-претрейн новеллы: несущие пороги в плане помечай
«tunable, ревизия по пере-прогону», не высекай в камне.
## Эскалации
Настоящие развилки (скоуп-сдвиг, конфликт с ратифицированным, деньги, продукт-решения) — быстрый пинг
оркестратору через владельца КОРОТКОЙ запиской (развилка + варианты + твоя рекомендация). Это норма и
поощряется (образцы эры №6: B-hybrid Q4a, оракул-поправка). Тихие девиации запрещены.
## Приёмка (что сделает оркестратор — знай заранее)
Адверсариальная верификация по сырью: пере-исполнение твоих симуляций, спот-чек file:line, refute-воркфлоу
по несущим алгоритмам, сверка полноты против скоуп-листа. Лендинг с ревью-шапкой → ратификация D-блоком →
только затем бэкенд-промт. Мин-планка ратификации: все WS с исполненной верификацией (г) — WS, чья (г)
заблокирована эскалированной платной верификацией, ратифицируем только как ГЕЙТНУТЫЙ (стройка этого WS не
стартует до исполнения верификации); манифест resnapshot полон; реестр владельцу консолидирован.