- Зачем: - нужен обязательный handoff перед выходом из coordinator-loop. - Что: - зафиксированы коммиты, происхождение ревью и отклонения процесса. - перечислены открытые риски, ручная приёмка и следующий шаг по issue 13. - Проверка: - git diff --cached --check.
8.7 KiB
Handoff: цепочка генератора 12 -> 14 -> 09 -> 10 -> 08
Дата: 2026-07-04.
Жанр: одноразовый handoff по ADR-0003.
Источник: .scratch/generator-model-time-startup-history/coordinator-journal.md.
Статус
Цепочка 12 -> 14 -> 09 -> 10 -> 08 завершена через coordinator-loop.
Финальный chain review закрыт APPROVED; правки финального review
закоммичены в f8b419d.
Все issue текущей очереди имеют Status: done; в PRD фичи осталась только
дальнейшая задача 13 (needs-triage).
Коммиты
dd4af82—feat(airflow): добавлен пульт управления генератором.200bb82—docs(issues): закрыта задача 12 по пульту генератора.9d1bcc4—feat(generator): ускорен учебный профиль daily-wave.0cbfe9b—docs(issues): закрыта задача 14 по быстрому профилю.e2d0684—fix(generator): сохранена фактура визита при восстановлении.0f435d7—docs(issues): закрыта задача 09 по фактуре визита.0c80e24—fix(superset): заменена нечитаемая гео-карта.de938ed—docs(issues): закрыта задача 10 по гео-графику.d76c036—docs(course): переведены уроки на стартовую историю.3d4e13c—docs(issues): закрыта задача 08 по миграции курса.f8b419d—docs(generator): закрыты находки финального ревью цепочки.
Что построено
airflow/dags/generator_control_dag.py— ручной Airflow-пультbackfill/import/check, без Docker socket, с ожиданиемetl_pipeline.generator/src/clickstream_generator/airflow_control.py— общая логика env, предпроверок чистого стенда и сверки manifest для DAG-пульта.docker-compose.yml/Makefile—make upне автостартует live-генератор; live запускается явно черезmake generator-continue.generator/src/clickstream_generator/launch.py—daily-waveпереведён наspeed=60,tick=1;ciсохранён.generator/src/clickstream_generator/runtime.pyиstate.py— state v3 хранитbase_click_id, восстановление визита берёт ту же per-event фактуру.scripts/check_generated_analytics.sh— стыковочная проверка browser/source и ODS device/os/geo включается в режимеautoпосле live-строк.superset/create_dashboard.py— гео-блок заменён наTop Countries by Events(echarts_timeseries_bar) с tooltip, легендой и единицами.docs/course/иdocs/TEST_PLAN.md— учебный путь переведён с архивного сида наstartup-history/backfill -> Kafka -> STG -> ODS -> DDS -> DM -> Superset.
Ревью по issue
- Issue 12: обычный режим. Worker
mediumбыл запущен до уточнения уровней, проверка кода сначалаmedium, повторный прогонhigh. Первая проверка нашла отсутствие подсказкиmake cleanна грязных Kafka-топиках; повторный прогонAPPROVED. - Issue 14: обычный режим. Worker
medium, проверка кодаhigh;APPROVED. - Issue 09: гейт. Worker
high; проверка задачиhighи проверка кодаhigh. Первый круг нашёл ODS-проверку device/os/geo, потерю 1 мкс в timestamp offset и ложнозелёныйgenerated-history-check; второй кругAPPROVED. - Issue 10: обычный режим. Worker
medium, проверка кодаhigh. Проверка нашла рассинхрон Superset export/layout, ложнозелёный тест и риск дубля при rename; узкие повторные прогоны закрыты, итогAPPROVED. - Issue 08: обычный режим. Worker
medium, проверка кодаhigh. Проверка нашла старый путь отката в стандарте уроков и несогласованность урока 06 вокругsuperset-dashboard; повторный прогонAPPROVED.
Финальное ревью
Финальное ревью цепочки шло на усиленном уровне xhigh.
До обновления скилла повторные прогоны запускались свежими сессиями ревьюеров:
Bernoulli, Noether, Banach, Curie, Sartre, Bacon.
Это отклонение от обновлённого процесса зафиксировано как дорогой вариант.
После обновления скилла проектные doc-находки чинил отдельный worker для правок
Raman (medium), а повторный прогон выполнял тот же ревьюер James через
send_input.
Закрытые классы находок:
- PRD фичи больше не
Draftи не держит закрытые 12/09/10/14/08 в остатке. - Все
Status: doneissue фичи без пустых[ ]. - Superset docs/course/artifacts/code не содержат старые
World Map/world_mapмаркеры рядом с новымTop Countries. docs/OPERATIONS.md,docs/course/PRD.md,docs/ARCHITECTURE.md,docs/REPO_MAP.mdиCONTEXT.mdсогласованы со startup-history-путём иgenerator_control.
Отклонения процесса
- Ранние повторные прогоны ревью запускались свежими субагентами, а не продолжением
того же ревьюера. После обновления
coordinator-loopточечные повторные прогоны нужно делать черезsend_inputтому же ревьюеру. - До обновления скилла координатор сам правил часть project docs по финальному
ревью. После обновления project docs правил worker для правок; процессные файлы
.scratch/...остались зоной координатора. - Визуальная приёмка Superset и живой проход Airflow UI не выполнялись в этой цепочке. Это не скрыто: все такие пункты вынесены в HITL/риски.
Открытые риски
- Нужен кросс-линейный ревью-проход другой родословной по фактическим изменениям
c672ed0..HEAD. Особый фокус: issue 12 Airflow-пульт, issue 09 state v3 и стыковочная проверка, issue 10 Superset export/layout, issue 08 учебный путь. - Нужна ручная HITL-приёмка:
- Airflow UI:
generator_controlbackfill/import/check на чистом стенде. - Superset: кадр
Top Countries by Eventsцеликом и кадр с tooltip. - Курс 00-06: проход через новый startup-history-путь.
- Airflow UI:
- Задача 13 (
backfill-top-up-from-snapshot) остаётсяneeds-triage; после фикса issue 09 её можно дооформлять отдельно.
Быстрые проверки, которые уже проходили
uv run --with-requirements generator/requirements.txt pytest generator/tests -q— PASS на issue 12 и 09.make generator-test— PASS на issue 14.uv run --with pytest pytest tests/test_superset_dashboard_config.py— PASS на issue 10.- Поисковые проверки курса на старые
make data/kafka_load/фиксированные сид-ожидания — PASS на issue 08. - Финальные
rg-проверки по PRD, чекбоксам, Superset-маркерам и startup-history-дрифту — PASS передf8b419d.
Следующий шаг
Запустить независимый кросс-линейный ревью-проход по диапазону c672ed0..HEAD и
handoff-коммиту, затем отдельно решить, дооформлять ли issue 13.