Files
clickstream-ch-kafka-supers…/.scratch/handoffs/2026-07-04-generator-chain-review.md
T
ddadmin ec815cea82 docs(handoff): добавлен handoff цепочки генератора
- Зачем:
  - нужен обязательный handoff перед выходом из coordinator-loop.
- Что:
  - зафиксированы коммиты, происхождение ревью и отклонения процесса.
  - перечислены открытые риски, ручная приёмка и следующий шаг по issue 13.
- Проверка:
  - git diff --cached --check.
2026-07-04 23:13:17 +03:00

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).

Коммиты

  • dd4af82feat(airflow): добавлен пульт управления генератором.
  • 200bb82docs(issues): закрыта задача 12 по пульту генератора.
  • 9d1bcc4feat(generator): ускорен учебный профиль daily-wave.
  • 0cbfe9bdocs(issues): закрыта задача 14 по быстрому профилю.
  • e2d0684fix(generator): сохранена фактура визита при восстановлении.
  • 0f435d7docs(issues): закрыта задача 09 по фактуре визита.
  • 0c80e24fix(superset): заменена нечитаемая гео-карта.
  • de938eddocs(issues): закрыта задача 10 по гео-графику.
  • d76c036docs(course): переведены уроки на стартовую историю.
  • 3d4e13cdocs(issues): закрыта задача 08 по миграции курса.
  • f8b419ddocs(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 / Makefilemake up не автостартует live-генератор; live запускается явно через make generator-continue.
  • generator/src/clickstream_generator/launch.pydaily-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: done issue фичи без пустых [ ].
  • 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_control backfill/import/check на чистом стенде.
    • Superset: кадр Top Countries by Events целиком и кадр с tooltip.
    • Курс 00-06: проход через новый startup-history-путь.
  • Задача 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.