diff --git a/docs/BACKEND_PLAN11_SESSION_PROMPT.md b/docs/BACKEND_PLAN11_SESSION_PROMPT.md index 31c8bdc..a4313d3 100644 --- a/docs/BACKEND_PLAN11_SESSION_PROMPT.md +++ b/docs/BACKEND_PLAN11_SESSION_PROMPT.md @@ -1,4 +1,7 @@ -> **⚠ СТАТУС: ЧАСТИЧНО ОТРАБОТАН — Block A + ядра ПРИНЯТЫ И ЗАЛЕНДЕНЫ (19.07, D39.13).** Сдано: WS2 ✅ (чанкер output-бюджет + edit-единицы + src→dst + golden) · WS1a/b/c-инфра ✅ (eager-clients, rate-guard, base/enriched split) · WS4-core ✅ (банкнота-парсер) · WS6-частично (конфиг-тай). **Резидуал R1–R5** (волновой ИСПОЛНИТЕЛЬ · WS3-майнер · WS4-12-точек · WS5-чекеры · арм-конфиги) — точные дизайны в `backend/PACK11_REPORT.md` §Резидуал. **Промт ОСТАЁТСЯ АКТИВНЫМ:** сессия-продолжение стартует по нему + отчёту (читать ОБА; сданное не пере-строить — оно под тестами). +> **⚠ АКТУАЛИЗИРОВАН ПОД ПРОДОЛЖЕНИЕ (19.07, пост-D39.13; исходная версия — в git-истории).** Сессия №1 сдала +> Block A + ядра — ПРИНЯТО И ЗАЛЕНДЕНО (`85f5b9e`): WS2 ✅ · WS1a/b/c-инфра ✅ · WS4-core ✅ · WS6-конфиг-тай ✅. +> **Эта версия — стартовая для СЕССИИ-ПРОДОЛЖЕНИЯ (резидуал R1–R5).** Сданное — под тестами, НЕ пере-строить; +> дизайны резидуала — `backend/PACK11_REPORT.md` §Резидуал (авторитет наравне с планом; исполнять, не пере-изобретать). # Промт: сессия БЭКЕНД — единый пак по плану 11 (волновой раннер · чанкер/единицы · банк W1.5 · банкнота · чекеры · армы), 2026-07-19 @@ -12,9 +15,13 @@ Бэкенд-сессия TextMachine. **Зона записи: `backend/`** (вкл. `configs/`, `prompts/`); всё остальное читать можно, править нельзя (расхождения — пингом через отчёт/владельца). **НЕ коммитить** — лендит оркестратор после приёмки (git-гардрейл CLAUDE.md: никаких reset --hard/rebase/checkout поверх грязного дерева). Сдаёшь: -1. Код WS1–WS6 по плану + тесты из (д)-секций (пины/golden/race/kill-9). -2. **`backend/PACK11_REPORT.md`** — per-буллет чек-лист (✓/девиация+причина), тест-логи, golden-диффы, - раздел «багфиксы вне плана», раздел «структурные переносы» (если рефакторил), residual. +1. Код резидуала R1–R5 + тесты из (д)-секций плана (пины/golden/race/kill-9). +2. **`backend/PACK11_CONT_REPORT.md`** — отчёт продолжения: per-буллет чек-лист (✓/девиация+причина), + тест-логи, golden-диффы, «багфиксы вне плана», «структурные переносы», residual. Сданный + `PACK11_REPORT.md` НЕ редактировать (история приёмки D39.13). + +Онбординг-добавка продолжения: **`backend/PACK11_REPORT.md` читать ЦЕЛИКОМ** сразу после плана — что уже +сдано (Block A, под тестами) и §Резидуал R1–R5 с пошаговыми дизайнами. ## Онбординг (порядок чтения, ~45 мин) @@ -37,17 +44,32 @@ ## Порядок работы (по §7 плана; единый пак, 4 блока, гейты между) -- **Блок A** = WS1 (волновой раннер) + WS2 (чанкер-бюджет + edit-единицы) — несущий каркас, разблокирует всё. -- **Блок B** = WS3 (Go-майнер W1.5) + WS4 (банкнота, 12 точек). -- **Блок C** = WS5 (DC-чекеры + omission-бэкстоп + данные пакета zh-ru + `tmctl export --pairs`). -- **Блок D** = WS6 (армы конфигом + связка с rate-guard + атрибуция) — конфиг-пак. +- **R1 = волновой ИСПОЛНИТЕЛЬ** (отчёт §R1, 7 шагов): `snapshotIDForWave` (W1 = draft-стадии + + `BaseVersion()`, W2 = edit + `Version()` — механика версий уже сдана), партиция стадий по роли, W0 + sticky-precompute (golden: инъекц-байты ≡ последовательному раннеру), W1/W2-dispatch (W2: `prev` = + конкатенация draft-чекпоинтов единицы по `final_hash`, СВЕЖИЙ `Select` по тексту единицы над + enriched-банком; **W2 НИКОГДА не пере-рендерит draft** — несущий инвариант), W1.5-стоп + mined-write-путь + (пустая дельта → авто-продолжение), kill-9 с N живыми резервами, **golden-рерайт под волновую модель + + обновление ~10 последовательно-модельных тестов** (список — отчёт §0). +- **R2 = WS3 Go-майнер** (отчёт §R2: порт по frozen exp16, дефолт-лемматизатор B с пере-пином 古月→22, + инвариантные фикстуры EXACT, mined-write, `tmctl seed-lint`). +- **R3 = WS4 12 интеграционных точек** (отчёт §R3: срез ДО classify, derived-checkpoint с NULL-байтами, + re-point ПОСЛЕ резолва эскалации, `banknoteSnap`, инструкция в файл промпта, телеметрия). +- **R4 = WS5** чекеры + omission-бэкстоп + данные пакета zh-ru + `tmctl export --pairs` (отчёт §R4). +- **R5 = WS6** арм-пайплайн-конфиги + `echo_mine_test` под варианты + атрибуция арма (отчёт §R5). -После КАЖДОГО из блоков A/B/C — чекпойнт-ревью (см. §Верификация). Единый `--resnapshot` по §8 в сессии +После R1, после R2+R3 и после R4 — чекпойнт-ревью (см. §Верификация). Единый `--resnapshot` по §8 в сессии **НЕ исполнять** (плановое событие после приёмки, одна переоплата); но **golden re-capture** под ратифицированную смену поведения — исполнять по мере: маскированный структурный дифф обязан быть объясним (только хеши/версии/новые поля) и прикладывается в отчёт каждый раз. -## Чек-лист исполнения (буллеты; ТОЧНАЯ спека — в плане; при расхождении буллета с планом побеждает ПЛАН) +## Чек-лист исполнения (буллеты; ТОЧНАЯ спека — план + отчёт §Резидуал; при расхождении побеждает ПЛАН) + +> **Статус после Block A (D39.13):** WS2 — ✅ сдан целиком (кроме «инъекция W2-единицы» — часть исполнителя +> R1); WS1 — ✅ сданы WS1a/b/c-инфра (eager-clients, rate-guard, base/enriched split), остался волновой +> ИСПОЛНИТЕЛЬ (R1); WS4 — ✅ сдано ядро `banknote.go`, остались 12 точек (R3); WS6 — ✅ rate_limit-конфиг, +> остались арм-конфиги (R5); WS3/WS5 — резидуал целиком (R2/R4). Сданные буллеты ниже читай как КОНТЕКСТ +> и контракт (не пере-строить — под тестами); строишь только резидуальные. **WS1 (план §1):** - Eager-build ВСЕХ клиентов в W0 (`Stages[].Model ∪ EscalateTo`); `client()` в волнах read-only + громкий