diff --git a/.scratch/handoffs/20260712-2015-task-20-done-next-13.md b/.scratch/handoffs/20260712-2015-task-20-done-next-13.md deleted file mode 100644 index a1e0f2d..0000000 --- a/.scratch/handoffs/20260712-2015-task-20-done-next-13.md +++ /dev/null @@ -1,76 +0,0 @@ -# Handoff: задача 20 закрыта конвейером, дальше — задача 13 - -Дата: 2026-07-12 20:15. -Жанр: handoff по ADR-0003 после сессии «фикс флаки-гейта (задача 20) по -/claude-subagent-playbook». - -## Что закрыто - -- **Задача 20 — done.** Полный конвейер плейбука: ревью постановки (Opus, - CHANGES_REQUIRED, 6 находок — все внесены решениями, коммит `55a3feb`) -> - реализация Codex (`gpt-5.6-sol`, high, тред - `019f56f3-ab1e-7563-8e29-27d4e570a1ef`) -> два слепых ревью - (Codex: CHANGES_REQUIRED 2 MAJOR; Claude: APPROVED_WITH_MINORS) -> триаж - исполнителем -> узкие перепроверки -> стендовая приёмка. Коммит `dab120a`. -- Суть фикса, находки приёмки (гейт жил на SIGTERM-переработке; таймзона в - STG-запросах), принятый риск grace-периода и эмпирика прогонов — в самой - задаче `.scratch/generator-model-time-startup-history/issues/20-*.md`, - здесь не дублируются. -- Приёмка: 3 подряд зелёных `make generated-history-runtime-check` - (19:25/19:28/19:30), красный сценарий ловится прежним сообщением при - нулевых непарных счётчиках. - -## Состояние - -- Ветка `feature/data-generator`, дерево чистое после `dab120a`. -- Стенд поднят и рабочий после зелёного прогона (ClickHouse+Kafka живы, - генератор остановлен штатно). -- `13-backfill-top-up-from-snapshot.md` — **ready-for-agent, блокеров нет** - (снят в этом же коммите). Вариант реализации решён пользователем ранее: - вариант 2 — генерация следующего дня от слепка; критерии в задаче. -- Память сессии: модель Codex — `gpt-5.6-sol` (medium/high, xhigh почти не - окупается); перед каждым фоновым запуском сообщать пользователю, что - запускается и какой этап (см. memory-файлы `codex-model-choice`, - `announce-launches-and-stage`). - -## Что дальше - -1. **Задача 13** тем же конвейером `/claude-subagent-playbook`: постановка - уже переписана под глагол `next-day`, но перед реализацией — свежее - адверсарное ревью постановки (этап 2), как показал прогон задачи 20, - оно окупается. -2. Ручная HITL-проверка пути менти пользователем всё ещё не сделана - (Airflow UI, Superset глазами, Kafka UI) — переносится третий handoff - подряд. -3. Рефлексия по расходу контекста мастера в плейбуке проведена в сессии - 2026-07-12 (см. итоговое сообщение сессии); выводы согласовать с - пользователем и внести в - `~/.claude/skills/claude-subagent-playbook/references/lessons.md` — - ключевые кандидаты: делегировать диагноз падений приёмки, boilerplate - промптов собирать cat'ом из одного файла на прогон, обменные файлы в - `$SCRATCH` вести на английском (в проект не попадают — правило AGENTS.md - не нарушается), находки в задачу вносить одной правкой. - -## Проверки этой сессии - -- Тесты: 192 passed (generator), 21 passed (контракты корня) — прогнаны - и мной, и исполнителем, и ревьюерами независимо. -- Стенд: 3 зелёных прогона + красный сценарий (лог приёмки одноразовый в - session-scratchpad, сводка — в задаче 20). -- Песочница Codex на этой машине (WSL2) здорова: bwrap работает, - workspace-write пишет, AppArmor-ограничения нет. - -## Отклонения процесса - -- Один запуск `codex exec resume` ушёл с лишним `&` (двойной фон): - уведомление пришло от обёртки при живом процессе; починено - процессом-ожидателем `kill -0` под run_in_background. -- Красный сценарий приёмки сначала не находил жертву: таймзонная ошибка - была и в приёмочном скрипте координатора (наивная конвенция DDS против - `+00:00`) — приведено к образцу `clickhouse_datetime_literal`. - -## Suggested skills - -- `claude-subagent-playbook` — задача 13 тем же конвейером. -- `conventional-commits` — коммиты. -- `tdd` — словарь для test-first-постановки в задаче 13. diff --git a/.scratch/handoffs/20260712-2359-task-13-done-next-schedule.md b/.scratch/handoffs/20260712-2359-task-13-done-next-schedule.md new file mode 100644 index 0000000..77329c8 --- /dev/null +++ b/.scratch/handoffs/20260712-2359-task-13-done-next-schedule.md @@ -0,0 +1,82 @@ +# Handoff: задача 13 закрыта конвейером, дальше — задача про расписание и HITL + +Дата: 2026-07-12 23:59. +Жанр: handoff по ADR-0003 после сессии «задача 13 (глагол next-day) по +/claude-subagent-playbook». + +## Что закрыто + +- **Задача 13 — done.** Полный конвейер плейбука: двойное слепое ревью + постановки (оба CHANGES_REQUIRED, 9 решений внесены, коммит `540989d`) + -> реализация Codex (`gpt-5.6-sol`, high, тред + `019f57d2-ff7b-70d3-8143-3740324309d9`) -> два слепых ревью кода + (Codex: CHANGES_REQUIRED 3 MAJOR; Claude: APPROVED_WITH_MINORS) -> + триаж в 2 круга + узкий диагноз нулевого стыка -> перепроверки + ALL_CLOSED у обоих -> моя приёмка. Коммит `f5dee26`. +- Суть решений, диагноз нулевого стыка (естественный ночной провал, не + дефект restore) и аргументы отклонений — в самой задаче + `.scratch/generator-model-time-startup-history/issues/13-*.md`, здесь + не дублируются. +- Приёмка своими глазами: `make test` 204+31; `generated-history-chain-check` + зелёный (граница 1: crossing=1, граница 2: crossing=0 с явным статусом, + непарные — нули); регрессия `generated-history-runtime-check` задачи 20 + зелёная (19 переходящих визитов). Учебный цикл: DM 322 -> 10 026 -> + 19 196 за два next-day. + +## Состояние + +- Ветка `feature/data-generator`, дерево чистое после `f5dee26` + (+ handoff-коммит следом), запушено в origin. +- Стенд поднят, в мире 3 модельных дня (артефакт + два next-day от + прогонов исполнителя); live-генератор остановлен. +- Модель Codex — `gpt-5.6-sol` (high для реализации/ревью; xhigh не + окупается). Перед каждым фоновым запуском — сообщать пользователю, что + запускается и какой этап. + +## Что дальше + +1. **Завести задачу про расписание** («имитация жизни»): включение + `next-day` по расписанию. Обязана решить: как расписание задаёт + `operation=next-day` (дефолт DAG — `backfill`, планового запуска с + дефолтом быть не должно) и retention/формат накопительного состояния + манифеста (см. отклонение «полная перечитка Kafka» в задаче 13 — + оно блокирует её по записи в тикете). +2. **Ручная HITL-проверка пути менти** (Airflow UI, Superset глазами, + Kafka UI) — переносится пятый handoff подряд; исполнитель задачи 13 + отметил, что Airflow UI руками не гонял (проводка next-day проверена + контрактными тестами и реальными запусками через `run_batch.sh`). +3. **Внести уроки в плейбук**: рефлексия по расходу контекста мастера + проведена в конце сессии 2026-07-12/13 (см. итоговое сообщение) — + согласовать с пользователем и записать в + `~/.claude/skills/claude-subagent-playbook/references/lessons.md`. + Ключевые кандидаты: ограничить раздел confirmations у ревьюеров + (одна строка на пункт); самый большой неконтролируемый расход — + эхо всего файла задачи в контекст мастера, когда исполнитель правит + файл, который мастер недавно писал сам. + +## Проверки этой сессии + +- `make test`: 204 (генератор) + 31 (контракты корня) — прогнаны мной, + исполнителем и ревьюерами независимо. +- Стенд: chain-check и runtime-check зелёные (лог приёмки одноразовый в + session-scratchpad, сводка — в задаче 13). +- Дерево сверялось с baseline после каждого ревью/перепроверки — + ревьюеры исходники не трогали. + +## Отклонения процесса + +- Перепроверка Codex принесла новую находку (MAJOR про микросекунды) — + это не нарушение узости, штатный случай из prompt-templates.md; + закрыта вторым кругом триажа тем же тредом исполнителя. +- Требование «громкий отказ на нулевом стыке» из обоих ревью покраснело + на честном стенде; решён диагнозом по данным (ветка «естественный + провал») и сменой семантики на явный статус — класс «артефакт + верификатора», как в задаче 20. + +## Suggested skills + +- `claude-subagent-playbook` — задача про расписание тем же конвейером + (постановку писать с нуля — этапы 1–2). +- `conventional-commits` — коммиты. +- `research` — если для задачи про расписание понадобится фактура по + Airflow (params при scheduled runs) — через Context7.