diff --git a/docs/DESIGN_SYNTHESIS_SESSION_PROMPT.md b/docs/DESIGN_SYNTHESIS_SESSION_PROMPT.md new file mode 100644 index 0000000..de3467a --- /dev/null +++ b/docs/DESIGN_SYNTHESIS_SESSION_PROMPT.md @@ -0,0 +1,260 @@ +# Промт: сессия ДИЗАЙН-СИНТЕЗ — план реализации пере-прогонного стека (слои 1+4+5 + данные слоя 2), 2026-07-19 + +> **Место в очереди (D39.11, директива владельца):** исследовательская программа арх-ресета ЗАВЕРШЕНА +> (D39–D39.10, все залендены). В бэкенд «просто так не бросаться»: между эмпирикой и стройкой стоит ЭТА +> проект-ресёрч сессия. Ты синтезируешь ВСЕ находки (research/19–20, exp15/16, аудит 08, дефект-классы +> D39.8) в план реализации «что и как меняем» — с чёткими алгоритмами и **процедурой верификации каждого +> ДО стройки** ($0-симуляции на существующих данных, где возможно). План ратифицирует оркестратор +> (адверсариальное ревью несущих алгоритмов), затем по плану выдаётся бэкенд-пак. Стройка ТОЛЬКО по +> ратифицированному плану — финальное закрытие концерна «тактическое латание». + +## Кто ты и что сдаёшь + +Сессия-проектировщик (аналог ресёрч-сессий research/19–20, но материал — НАШ репозиторий и НАША эмпирика, +не веб). Выход: + +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`: карта актуальности в шапке + **D39–D39.11 целиком** (контракт эры). +3. Несущие отчёты (это твой исходный материал, читать ВНИМАТЕЛЬНО): + - `research/19-chunking-cohesion.md` **§B** (чанкер-спека B1–B4, когезия B3, волны B3-бис), **§C** (контракт t/e), §E; + - `research/20-bank-mining.md` **§B1** (детекторы V-A/B/C), **§B2** (алиас-ярусы), **§B3** (banknote-v1, 12 точек), + **§B4** (зоны Z1–Z5), **§B5** (плагины P1–P6), **§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` (инварианты 1–8), `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.05–0.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.01–0.1/ранобэ) + Палладий (имена) + консолидация §C2 + алиас-ярус-1 (R1–R4) + карта подписи. + dst из ко-оккуренции ОПРОВЕРГНУТ (canon-recovery 0.20–0.68 < 70%); Z1-адъюдикация — облако; локальная 9B не нужна. +- **Декаплинг единиц: draft = мелкий чанк, edit = крупная единица** (цель слоя 1, D39 п.4; exp14 претензия-1; + exp15 Q2b: entity-omission ≈0 на всех размерах — с оговоркой «потолок инструмента», Q2a span-омиссия НЕ гонялась). +- **Свап редактора glm→mistral/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); жанр-паки (решение владельца +17–18.07); локальный 9B-споттер. **Парковки (НЕ тестировано — не строим по консервативному дефолту, НЕ хоронить +как «доказано»):** lookahead (Q3b не гонялся); diff-редактор §C2 (Q4b); reflow-отдельным-пассом (Q4c); +широкое-окно/узкая-эмиссия Q2c; W2.5-швейный пасс (Q5). Все парковки — с явной пометкой «не тестировано». + +**Столпы (ломать нельзя, инварианты 1–8 `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 (любая книга/пара/структура; пара = ось данных). + +## Скоуп плана — воркстримы WS1–WS6 + глобальные секции + +### WS1 — Волновой раннер (слой 1/оркестровка) +Спроектировать: W0 (чанкер+контекст-пакеты, $0) → W1 черновики параллельно → W1.5 (стоп-граница: банк-синк, +подпись владельца, resnapshot) → W2 редактуры параллельно. Обязательные решения: +- **Деньги под параллелизмом:** reserve→settle+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: «01–04/06–10 UTC» vs документированный off-peak 16:30–00: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 draft→approved. + ⚠ Снапшот-семантика банка 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.1–B1.2 БЕЗ DP/logical-границ — greedy остаётся, `strategy`-ось можно заложить как сеам, но наполнение + `logical` НЕ строится). Инвариант: min-бюджет держит чанки над `Gates.Coverage.MinChunkChars` (`chunker.go:42-46`). +- **Edit-единица:** определить сборку (глава как естественная граница; глава > потолка → деление по абзацным + границам с бюджетом), потолок эмиссии vs зона деградации 2k–8k 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-граммы 1–6 × контраст × 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 (R1–R3 при негативных 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, вердикт = владелец; зоны Z1–Z5 флагами). +- **Плагин-сеамы P1–P6 (§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 строк srcdsttype, «только новое»). +План обязан пройти ВСЕ 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 + новое из WS1–WS5: chunker-конфиг, банкнота, пакет-данные, + gender-инъекция…) — план обязан показать, что переоплата ОДНА. +- **Диспозиции хвостов:** ledger-очередь D39.4/D39.5 (LOW/NOTE), слоты §E research/19 (E.5–E.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:** свип против скоуп-листа этого промта, дорожек **L1–L8** аудита 08 (приоритет + L1/L2/L3/L5; L4/L8 — confirm-only, закрыты D39 п.7/п.8 + пак-1/1.5; L6 — резидуалы в WS6/промпт-тему; + L7 — каждая NEVER_CLOSED идея без диспозиции → строка в «Диспозициях хвостов») и §E-слотов research/19–20 — + «что не получило диспозицию?»; остаток — явным списком, не молчанием. +- **Не пере-решать ратифицированное:** D-лог — контракт; «что НЕ строим» — не пересматривать (это не мешает + честно фиксировать новые противоречия — эскалацией, не тихой правкой). +- Эмпирика exp15/16 — предварительна до вне-претрейн новеллы: несущие пороги в плане помечай + «tunable, ревизия по пере-прогону», не высекай в камне. + +## Эскалации + +Настоящие развилки (скоуп-сдвиг, конфликт с ратифицированным, деньги, продукт-решения) — быстрый пинг +оркестратору через владельца КОРОТКОЙ запиской (развилка + варианты + твоя рекомендация). Это норма и +поощряется (образцы эры №6: B-hybrid Q4a, оракул-поправка). Тихие девиации запрещены. + +## Приёмка (что сделает оркестратор — знай заранее) + +Адверсариальная верификация по сырью: пере-исполнение твоих симуляций, спот-чек file:line, refute-воркфлоу +по несущим алгоритмам, сверка полноты против скоуп-листа. Лендинг с ревью-шапкой → ратификация D-блоком → +только затем бэкенд-промт. Мин-планка ратификации: все WS с исполненной верификацией (г) — WS, чья (г) +заблокирована эскалированной платной верификацией, ратифицируем только как ГЕЙТНУТЫЙ (стройка этого WS не +стартует до исполнения верификации); манифест resnapshot полон; реестр владельцу консолидирован. diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 49b3133..d8be92c 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -4,11 +4,15 @@ > - **Фазы:** 0 ✅ · Ф1-инфра ✅ (D20–D28; golden = инвариант №8) · арка «качество-первым» D26→D38.5 ЗАКРЫТА (хроника — `archive/PROGRESS-2026-07-10-13.md`; итог: потолок в организации, не в моделях). **АРХ-РЕСЕТ D39 (13.07):** синк-аудит «сломанного телефона» (65 находок / 0 refuted — `architecture/08-sync-audit-ledger.md`) → целевая 7-слойная архитектура + фазовый план (`architecture/09-target-architecture.md`); инвариант общности §0.1 (любая книга/пара/структура); промпт-тема консолидирована в `architecture/10-prompt-architecture.md`. > - **Трек A (build-now) ЗАКРЫТ:** пак-1 (D39.2, `d3f6b34`: trust-gated suppressor [терм-дрейф закрыт в КОДЕ] · export-contract нормализация · pair-сеам `prompts:{zh-ru}` fail-loud · реестр role→инъекция · target-гейты · quality-report) + пак-1.5+F1–F9 (D39.5, `dc30c7d`: `tmctl export` [manifest-join+drift-гард; полигон-экстракция впредь ТОЛЬКО через него] · fold-first санитайзер [HIGH-обход закрыт] · bounded глосс-whitelist · пример zh→ru). Адверсариал-долг 529 погашен (D39.4: 8 осей, 0 CRIT/1 HIGH/6 MED — всё в фикс-листах/ledger). > - **Трек B (ресёрч) ЗАЛЕНДЕН:** research/19 нарезка+когезия+контракт t/e+волны W0–W3 (D39.1; конфликт exp14↔research/18 разрешён: эмиссия≠окно≠связность) · research/20 банк-майнинг W1.5 (D39.6; детектор-лестница V-A/B/C, алиас-ярусы, banknote-v1, плагины P1–P6, §D-пре-рег; конфаунд инъекции ⇒ cold-start срез). -> - **exp15 ЗАВЕРШЁН И ЗАЛЕНДЕН (D39.7, `fe34a16`):** «граница вредит» отозван (артефакт окна судьи, свинг +0.689 после фикса), все когезия-эффекты под шум-полом 0.126, «sequential нигде не лучше» (LOO-stable, НЕ ратифицированный зелёный свет волне), фертильность 1.20·cjk+0.39·other; $12.79/$15. **Слепое чтение ИСПОЛНЕНО (D39.8):** планка не пройдена никем, дефекты распределены по армам (читатель подтвердил floor-null; V2-брак = риг без гейтов, не carryover-рычаг) → битва качества пере-прогона = дефект-классы (时辰-юниты · числа b1 · gender-enforce · стих/аллюзии · регистр-лексикон), не нарезка. **Q4a ИСПОЛНЕН И ЗАЛЕНДЕН (D39.9, $1.32/$2):** верность НЕ покупается на translate-стадии (flash уже верен 25/0/27; pro ×3.67 не ратифицирован); смысл ломает glm-РЕДАКТОР (свап glm→mistral/deepseek-pro = приоритетный арм пере-прогона); exp14b-правила дефектны → $0-ре-аудит в exp16. **exp16 ИСПОЛНЕН И ЗАЛЕНДЕН (D39.10, $0.02/$10):** WHICH подтверждена (код-детектор V-C recall 0.97 held-out, $0) / WHAT опровергнута для ко-оккуренции → dst-канал = банкнота (идея владельца оправдана) + облако+Палладий; 9B-споттер не нужен (0.895 ≤ код); Z1 → облако; ре-аудит exp14b: ядро D38 держится, errata не нужна. Тачпойнты владельцу: карта подписи (пол) · мини-голд алиасов · precision@30 (books/gu-zhenren/exp16/). **Исследовательская программа ЗАВЕРШЕНА.** **Директива владельца (D39.11): стройка ТОЛЬКО после ДИЗАЙН-СИНТЕЗ сессии** (синтез всех находок → план реализации с верифицированными алгоритмами → ратификация → бэкенд-промт). **Очередь:** дизайн-синтез (промт пишет оркестратор №7 первым делом) → ревью/ратификация плана → бэкенд-пак слоёв 1+4 → → полигон-стадия банк-майнинга (§D research/20, отдельный промт ПОСЛЕ exp15) → единый resnapshot (D30.9, одна переоплата; вкл. RegressionGuard-тумблер D38.4) → пере-прогон 3–10 глав → чтение владельца (интерим-планка 2 претензии, D35).残: POLYGON_PACKAGE4 residual-трекер (пилот/18+/echo — отложен, D36.1). +> - **exp15 ЗАВЕРШЁН И ЗАЛЕНДЕН (D39.7, `fe34a16`):** «граница вредит» отозван (артефакт окна судьи, свинг +0.689 после фикса), все когезия-эффекты под шум-полом 0.126, «sequential нигде не лучше» (LOO-stable, НЕ ратифицированный зелёный свет волне), фертильность 1.20·cjk+0.39·other; $12.79/$15. **Слепое чтение ИСПОЛНЕНО (D39.8):** планка не пройдена никем, дефекты распределены по армам (читатель подтвердил floor-null; V2-брак = риг без гейтов, не carryover-рычаг) → битва качества пере-прогона = дефект-классы (时辰-юниты · числа b1 · gender-enforce · стих/аллюзии · регистр-лексикон), не нарезка. **Q4a ИСПОЛНЕН И ЗАЛЕНДЕН (D39.9, $1.32/$2):** верность НЕ покупается на translate-стадии (flash уже верен 25/0/27; pro ×3.67 не ратифицирован); смысл ломает glm-РЕДАКТОР (свап glm→mistral/deepseek-pro = приоритетный арм пере-прогона); exp14b-правила дефектны → $0-ре-аудит в exp16. **exp16 ИСПОЛНЕН И ЗАЛЕНДЕН (D39.10, $0.02/$10):** WHICH подтверждена (код-детектор V-C recall 0.97 held-out, $0) / WHAT опровергнута для ко-оккуренции → dst-канал = банкнота (идея владельца оправдана) + облако+Палладий; 9B-споттер не нужен (0.895 ≤ код); Z1 → облако; ре-аудит exp14b: ядро D38 держится, errata не нужна. Тачпойнты владельцу: карта подписи (пол) · мини-голд алиасов · precision@30 (books/gu-zhenren/exp16/). **Исследовательская программа ЗАВЕРШЕНА.** **Директива владельца (D39.11): стройка ТОЛЬКО после ДИЗАЙН-СИНТЕЗ сессии** (синтез всех находок → план реализации с верифицированными алгоритмами → ратификация → бэкенд-промт). **Очередь:** дизайн-синтез (промт ВЫДАН 19.07 — `DESIGN_SYNTHESIS_SESSION_PROMPT.md`, ждёт старта владельцем) → ревью/ратификация плана → бэкенд-пак слоёв 1+4 → → полигон-стадия банк-майнинга (§D research/20, отдельный промт ПОСЛЕ exp15) → единый resnapshot (D30.9, одна переоплата; вкл. RegressionGuard-тумблер D38.4) → пере-прогон 3–10 глав → чтение владельца (интерим-планка 2 претензии, D35).残: POLYGON_PACKAGE4 residual-трекер (пилот/18+/echo — отложен, D36.1). > - **Стек (не менялся с D38.5):** draft deepseek-v4-flash (thinking ON) → editor glm-5 БИЛИНГВ v3-discourse (P1a+чэнъюй+few_shot-тумблер; свап-кандидаты mistral/deepseek-pro = армы пере-прогона) → судья gemini-3.1-pro-preview; канал B Mistral+grok; 7 ключей; ~$0.85/ранобэ (D30.4). > - **Ждём от владельца:** запуск exp15 (бюджет ≤$15 подтверждён) · research/20 §E: мини-голд алиасов (~20–30 мин) / бюджет ≤$5 полигон-стадии / политика канона / жанр-паки / реплика ja→ru · чтение пере-прогона (после очереди) · старые висящие: планка запуска (лучше-фана/гибрид/издательский) · билингв-якорь пилота (D25.9-Q1) · контаминация пилот-корпуса (D27.4) · publishable/waiver (D25.1) · FN-bound L3 (D25.4) · юр-пакет · провенанс 12-*-доков. > - Архивы хроники: `archive/PROGRESS-2026-07-04-10.md` (D31) · `archive/PROGRESS-2026-07-10-13.md` (D39.6-гигиена). Записи ниже — живая эра D39. +## Оркестратор №7 — промт ДИЗАЙН-СИНТЕЗ сессии выдан (deliverable №1 по D39.11), 2026-07-19 + +Онбординг по хендоффу №5 (D-лог D39–D39.11 + несущие отчёты: research/19 §B/§C/§E, research/20 §B/§C/§E, exp15 §3/§7/§7.9/§7-Q4a, exp16 целиком). **Выдан `docs/DESIGN_SYNTHESIS_SESSION_PROMPT.md`** — проект-ресёрч сессия синтеза всех находок в ратифицируемый план `architecture/11-implementation-plan.md`. Скоуп: WS1 волновой раннер (деньги/SQLite/гонка `Runner.clients`/sticky-A5-цепочка + scheduler-волны + три вендор-чека: deepseek пик-окна D39.10-6, кэш ZAI/GLM §E.8-бис, слаги 24.07) · WS2 фертильность-бюджет + крупная edit-единица (+ omission-бэкстоп; src→dst D30.1 решается здесь, парковка запрещена) · WS3 Go-майнер W1.5 (V-C + алиасы + консолидация + сид-дельта §C2-7 + карта подписи) · WS4 банкнота×12 гейт-точек (вкл. re-point final_hash) · WS5 дефект-класс чекеры D39.8 + данные пакета пары · WS6 свап-арм редактора + готовность пере-прогона (риг-стандарт D39.7 вшит); глобальные секции: порядок пакетов, манифест ЕДИНОГО resnapshot (D30.9, вкл. gate-условную семантику банка), диспозиции хвостов (ledger-очередь, §E-слоты, L7-NEVER_CLOSED: H7/H8/H10/H16), реестр вопросов владельцу. Каждый WS — верификация ДО стройки ($0-симуляции, скрипты `eval/design11/`, числа в план); мандат самопроверки + адверсариальный селф-ревью + completeness-critic L1–L8; $0 жёстко (платная несущая верификация = эскалация-развилка, не тихий деферал «на после стройки»). **Промт прошёл адверсариальное ревью-воркфлоу до выдачи (5 линз × refute-by-default, 25 агентов): 20 CONFIRMED-находок (4 MAJOR), все внесены** — несущие: gate-условная снапшот-семантика auto/draft (`memory.go:259-266`); пропущенные D12-риски параллелизма (гонка clients, sticky-цепочка → request_hash); lookahead/Q2c переведены из «доказано не строим» в парковку «не тестировано»; verify-before-build маршрут платных верификаций; мега-предложение — НЕ «уже в коде» (oversize-passthrough без флага). file:line-якоря спот-верифицированы по HEAD исполнением. ⚠ Док-синк заметка (не чинил — вне минимального скоупа): ярлык «инвариант №8» перегружен — backend/README №8 = экспорт-контракт (с 17.07), CLAUDE.md/шапка D-лога зовут №8 golden (эпоха D23); развести при следующей актуализации статус-доков. Следующее: владелец стартует дизайн-сессию → адверсариальное ревью+ратификация плана (D-блок) → бэкенд-промт строго по плану. + ## Оркестратор №6 — СЕССИЯ ЗАКРЫТА: эра D39–D39.11 исполнена целиком, хендофф №5 выдан (19.07) Арка сессии: синк-аудит «сломанного телефона» (65 находок/0 refuted) → целевая 7-слойная архитектура + инвариант общности → трек A построен (trust-gate памяти · export-contract+fold-first санитайзер · pair-сеам · tmctl export/report · store v8; адверсариал-долг 529 погашен) → трек B исследован (research/19+20) → exp15 (floor-дисциплина; CRITICAL-артефакт окна судьи пойман рубежом-2, «границы вредят» отозван; чтение владельца: дефекты распределены) → Q4a (слабое звено=редактор) → exp16 (WHICH 0.97 кодом / dst→банкнота; ре-аудит exp14b чист). Деньги экспериментов: exp15 $12.79/$15 · Q4a $1.32/$2 · exp16 $0.02/$10 — все капы удержаны. Итог для продукта: стройка слоёв 1+4 полностью evidence-backed; «что НЕ строить» сэкономило сцен-детекцию и carryover-машинерию. Хендофф №5 — `ORCHESTRATOR_SESSION_PROMPT.md` (переписан начисто; №4 в архиве); первый deliverable №7-сессии — промт дизайн-синтеза (D39.11). diff --git a/docs/README.md b/docs/README.md index b356ce0..e5a501b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@ - `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13), `10-explicit-benchmark` (18+ violence-рука канала B), `11-erotica-benchmark` (erotica по трём парам/регистрам — закрытие D14.4, D22). - `research/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память, `15` голос и состояние (принят, D21), **`16` ридер-IDE (принят с ревью-шапкой, D29)**, **`17` внешняя критика GPT-5.6 (принят с ревью-шапкой, D25)** — у 16/17 читать шапку прежде тела. **`18` рычаги качества (два отчёта, D36)** · **`19` нарезка+когезия+контракт t/e (D39.1)** · **`20` банк-майнинг W1.5 (D39.6)** — у всех ревью-шапки. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. - `PROGRESS.md` — **журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений). -- **Активные хендофф-промты (пост-D39.11, 19.07):** [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (**хендофф №5 — СТАРТОВЫЙ для новой оркестратор-сессии**; первый deliverable — промт дизайн-синтеза) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). Закрытые — в `archive/prompts/` (свежие: exp16→D39.10, Q4a→D39.9, exp15→D39.7, банк-майнинг-ресёрч→D39.6). +- **Активные хендофф-промты (пост-D39.11, 19.07):** [`DESIGN_SYNTHESIS_SESSION_PROMPT.md`](DESIGN_SYNTHESIS_SESSION_PROMPT.md) (**СТАРТОВЫЙ для дизайн-синтез сессии — очередь D39.11**; выход — `architecture/11-implementation-plan.md`) · [`ORCHESTRATOR_SESSION_PROMPT.md`](ORCHESTRATOR_SESSION_PROMPT.md) (хендофф №5 оркестратора) · [`POLYGON_PACKAGE4_SESSION_PROMPT.md`](POLYGON_PACKAGE4_SESSION_PROMPT.md) (residual пилот/18+/echo). Закрытые — в `archive/prompts/` (свежие: exp16→D39.10, Q4a→D39.9, exp15→D39.7, банк-майнинг-ресёрч→D39.6). - `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять). ## Статус (2026-07-12, пост-D38.1 · консолидация D38.2)