From 515d5ef73bd3acfbb74d11f33251f5fbab182197 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Tue, 7 Jul 2026 22:36:35 +0300 Subject: [PATCH] =?UTF-8?q?docs(generator):=20=D1=80=D0=B5=D1=88=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B7=D0=B2=D0=B8=D0=BB=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8=2013,=20handoff=20?= =?UTF-8?q?=D1=81=D0=B5=D1=81=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - диагноз задачи 20 снял страх швов (генератор на стыке не ломает), и пользователь выбрал вариант реализации next-day; - сессия завершается - нужен handoff для продолжения. - Что: - задача 13: выбран вариант 2 (генерация следующего дня от слепка), вариант нарезки артефакта отклонён с обоснованием; статус ready-for-agent, blocked by задача 20; - handoff сессии в .scratch/handoffs/ - итоги проверки пути менти, состояние трекера, план (фикс 20 -> задача 13 -> HITL). - Проверка: - чтение задачи 13 и handoff; git status чистый после коммита. Co-Authored-By: Claude Fable 5 --- .../13-backfill-top-up-from-snapshot.md | 30 ++++---- ...707-2234-mentee-path-check-and-next-day.md | 70 +++++++++++++++++++ 2 files changed, 85 insertions(+), 15 deletions(-) create mode 100644 .scratch/handoffs/20260707-2234-mentee-path-check-and-next-day.md diff --git a/.scratch/generator-model-time-startup-history/issues/13-backfill-top-up-from-snapshot.md b/.scratch/generator-model-time-startup-history/issues/13-backfill-top-up-from-snapshot.md index 6f38af9..3269b52 100644 --- a/.scratch/generator-model-time-startup-history/issues/13-backfill-top-up-from-snapshot.md +++ b/.scratch/generator-model-time-startup-history/issues/13-backfill-top-up-from-snapshot.md @@ -1,4 +1,4 @@ -Status: ready-for-human +Status: ready-for-agent # Глагол next-day: собрать следующий модельный день @@ -28,22 +28,21 @@ Status: ready-for-human где ручки генератора; pause-check `etl_pipeline` и guard чистого стенда переиспользуются. Ручной триггер — для урока, расписание — для «жизни». -## Развилка реализации (решить до реализации) +## Развилка реализации — решена (пользователь, 2026-07-07) -Интерфейс `next-day` одинаков для двух начинок, начинку можно менять, не -трогая то, чему учим: +**Выбран вариант 2: генерация следующего дня от слепка `T_end`.** -1. **Резать готовый артефакт на дневные порции.** История сгенерирована одним - прогоном (задача 07), швов нет вообще — границы дней внутри одного мира - естественные. Дёшево, если механизм импорта умеет подавать историю частями - (см. «Открытые вопросы»). Ограничение: горизонт равен длине артефакта. -2. **Доливка от слепка `T_end`.** Настоящая генерация продолжения. Нужна, - когда жизнь стенда должна быть неограниченной. Каждый батч добавляет шов; - restore-механизм общий с рестартом и закалён задачей 09, но открыт хвост - про запасную ветку рождения визита (см. критерии). +Обоснование. Диагноз задачи 20 показал, что генератор на стыке ничего не +ломает — красный гейт был гонкой в самой проверке. Страх «швов» был страхом +перед артефактом верификатора. При этом оба варианта одинаково требуют +цепочку манифестов и расширение проверок, а вариант 1 сверх того требует +новый режим среза в импорте («всё или ничего» сейчас). То есть вариант 2 не +дороже, честнее (жизнь стенда не ограничена длиной артефакта) и переиспользует +уже закалённый restore-механизм (задача 09: донор в state, громкие ошибки, +детерминированная запасная ветка). -Разумный путь: вариант 1 как MVP, вариант 2 — когда упрёмся в конец артефакта -(возможно, отдельной задачей). +Отклонено: вариант 1 (резать готовый артефакт на дневные порции) — не даёт +неограниченной жизни и требует своей новой механики импорта. ## Открытые вопросы (блокируют ready-for-agent) @@ -82,7 +81,8 @@ Status: ready-for-human ## Blocked by -- Открытые вопросы выше (статус needs-info до их закрытия). +- `20-flaky-runtime-seam-check.md` — доверенный стабильный гейт стыка нужен + до навешивания на него цепочки границ; фикс 20 идёт первым. - Исторические блокеры закрыты: `15-world-boundary-after-cross-review.md` (граница миров) и `17-trusted-checks-startup-history-superset.md` (доверенные проверки) — done. diff --git a/.scratch/handoffs/20260707-2234-mentee-path-check-and-next-day.md b/.scratch/handoffs/20260707-2234-mentee-path-check-and-next-day.md new file mode 100644 index 0000000..d29eae4 --- /dev/null +++ b/.scratch/handoffs/20260707-2234-mentee-path-check-and-next-day.md @@ -0,0 +1,70 @@ +# Handoff: проверка пути менти, диагноз флаки-гейта, задача next-day + +Дата: 2026-07-07 22:34. +Жанр: handoff по ADR-0003 после сессии «проверка пути менти + триаж 13/20». + +## Что закрыто + +- Проверка пути менти двумя субагентами (читатель документации на Opus, + прогонщик стенда на Sonnet): + - Документация: workable-with-friction, четыре мелких находки — все + исправлены. Коммит `900e949`. + - Стенд с нуля: clean -> generated-history-analytics -> up -> проверки -> + Superset (чарты с данными) -> Kafka (4 data-топика + служебные) -> + ClickHouse (ODS/DM непустые) — всё прошло, дубликатов ноль. + - Единственное падение: `make generated-history-runtime-check` красный + через раз — заведена задача 20. +- Диагноз задачи 20 (Codex, ключевой факт перепроверен по коду): генератор + фактуру на стыке НЕ ломает; корень — гонка остановки live-генератора в + самой проверке + seam-SQL, маскирующий непарные строки под «смену фактуры». + Детали и направление фикса — в задаче. Коммит `98be722`. +- Задача 13 переписана под глагол `next-day` в `generator_control`; + оба открытых вопроса закрыты; развилка реализации решена пользователем: + **вариант 2 — генерация следующего дня от слепка** (обоснование в задаче). + Коммиты `a3ac4b4`, `98be722`; решение развилки — в коммите с этим handoff. +- Созданы репо-локальные субагенты `.claude/agents/deep-reasoner.md` (Opus) + и `fast-worker.md` (Sonnet); `.gitignore` скрывает локальное в `.claude/`. + Коммит `984d6fc`. + +## Состояние трекера + +- `20-flaky-runtime-seam-check.md` — **ready-for-agent**: диагноз есть, + направление фикса выбрано (управляемая остановка live после полного flush + всех топиков + precheck непарных строк в seam-check). Идти первым. +- `13-backfill-top-up-from-snapshot.md` — **ready-for-agent**, blocked by 20. + Вариант реализации решён, критерии в задаче. + +## Что дальше + +1. Фикс задачи 20 по конвейеру `/claude-subagent-playbook`: постановка в + задаче самодостаточна, свежий адверсарный взгляд на неё до реализации, + реализация Кодексом (прямой `codex exec`, не плагин — см. handoff в + скилле), два слепых ревью. +2. После зелёного стабильного гейта (3+ прогона) — задача 13. +3. Ручная HITL-проверка пути менти пользователем всё ещё не сделана + (Airflow UI, Superset глазами, Kafka UI) — стенд остался в рабочем + состоянии после зелёного runtime-check. + +## Проверки этой сессии + +- `make generated-history-runtime-check`: красный (8/19), затем зелёный — + эмпирика флаки в задаче 20; полные логи в session-scratchpad (одноразовые, + сводка перенесена в задачу). +- Утверждение диагноза про запасную ветку перепроверено по + `generation.py:194-209`. +- Дерево чистое после каждого коммита; `.claude/settings.local.json` + в git не попал. + +## Отклонения процесса + +- Прогонщик стенда дважды засыпал без отслеживаемого фонового процесса и + в финале умер, не собрав отчёт, — вердикт собран координатором из логов. +- Диагност через плагин codex-rescue: форвардер отчитался «finished» при + живом фоновом вызове; результат забран напрямую из output-файла задания. + Уроки процесса — в handoff рядом со скиллом claude-subagent-playbook. + +## Suggested skills + +- `claude-subagent-playbook` — для фикса задачи 20 (одна нетривиальная + задача: постановка готова, нужен конвейер). +- `conventional-commits` — коммиты.