docs(generator): handoff сессии — задача 13 закрыта, дальше расписание

- Зачем:
  - передать контекст новой сессии: конвейер задачи 13 завершён, следующие
    шаги — задача про расписание, HITL-проверка пути менти, уроки плейбука.
- Что:
  - добавлен handoff 20260712-2359 (итоги конвейера, состояние стенда,
    план и отклонения процесса).
  - убран отработанный handoff 20260712-2015 (одноразовый по ADR-0003).
- Проверка:
  - вычитка handoff'а; ссылки на задачу 13 и коммиты f5dee26/540989d.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 00:00:40 +03:00
co-authored by Claude Fable 5
parent f5dee26eda
commit 842c1be98c
2 changed files with 82 additions and 76 deletions
@@ -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.
@@ -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.