diff --git a/.scratch/handoffs/20260705-2212-generator-cross-review-fixes.md b/.scratch/handoffs/20260705-2212-generator-cross-review-fixes.md index b77946d..fbbe33f 100644 --- a/.scratch/handoffs/20260705-2212-generator-cross-review-fixes.md +++ b/.scratch/handoffs/20260705-2212-generator-cross-review-fixes.md @@ -18,6 +18,10 @@ - Финальный review fix: документация больше не советует обычный `make generated-history-check` после backfill-only пути. Коммит: `8e1c733`. +- Issue 19 закрыта после внешнего Claude review: единые `make test` и + `make lint`, подключение корневых контрактных тестов и усиление проверок + startup-history. + Коммит: `9b0b063`. ## Ключевые стыки реализации @@ -27,9 +31,19 @@ - `airflow/dags/generator_control_dag.py` — pause-check `etl_pipeline` до мутирующих веток. - `scripts/check_generated_analytics.sh` — manifest boundary, fail-closed - live seam, непустой ODS. + live seam, непустой ODS и fail-closed проверка DM-витрин. - `scripts/run_generated_history_runtime_check.sh` — bounded runtime gate для daily-wave + live seam. +- `scripts/run_generator.sh` — `reset` теперь проходит clean-stand guard до + запуска live-генератора. +- `Makefile` — `make test`, `make lint`, `contract-test`; обычный pytest-вывод + тихий, подробность можно включить через `PYTEST_ARGS`. +- `generator/src/clickstream_generator/state.py` — любая версия state не `3.0` + даёт громкий `UnsupportedStateVersionError`; `from_dict_safe` больше не + глотает ошибку старой/неизвестной версии. +- `generator/src/clickstream_generator/airflow_control.py` — + `target_dag_trigger_error()` покрывает три ветки pause-check без импорта + Airflow. - `superset/create_dashboard.py` — sync ограничен чартами целевого dashboard. - `docs/course/lessons/00_kafka_intro.md`, `docs/course/lessons/01_kafka_to_clickhouse.md`, @@ -46,6 +60,9 @@ `bash -n`, `make generated-history-runtime-check`. - Issue 18: doc `rg`, `git diff --check`, `make generated-history-analytics`, `make up`. +- Issue 19 / commit `9b0b063`: `make contract-test` — 16 passed; + `make generator-test` — 190 passed; `make lint` — passed; `make test` — + 190 generator tests, 16 contract tests, `docker compose config --quiet`. - Финальный chain review `Gibbs`: initial `CHANGES_REQUESTED`, narrow rerun `APPROVED`. @@ -61,6 +78,10 @@ rerun `APPROVED`. - Финал: chain reviewer `Gibbs` xhigh; found docs drift around `generated-history-check`; rerun `APPROVED`. +- После `9b0b063`: внешний Claude review подтвердил закрытие всех девяти + находок и дал `APPROVED`. Reviewer не перезапускал Docker-проверки сам, но + сверил код, тесты и документы; фактические прогоны были выполнены + координатором. ## Отклонения процесса @@ -73,11 +94,29 @@ - Несколько стендовых проверок чистили Docker volumes. Это ожидаемо для issue 16-18 и зафиксировано в журнале. +## Что вручную проверить дальше + +- Чистый ручной путь через Airflow UI: `make up`, `make ddl` или `ddl_init`, + `airflow dags unpause etl_pipeline`, затем `generator_control` backfill. +- Backfill-only путь: `make generated-history-analytics`, затем + `CHECK_LIVE_SEAM=0 make generated-history-check`. +- Стык backfill/live: `make generated-history-runtime-check`. +- Superset: после готового DM открыть dashboard и сверить, что чарты созданы и + `Top Countries by Events` читается. +- Kafka UI: в уроке 00 должны быть понятны четыре data-топика и служебные + `generator_state`, `generator_startup_history_manifest`, + `generator_batch_history`. + +## Suggested skills + +- `triage` — если продолжать issue 13: он всё ещё `needs-triage`. +- `brainstorm-with-docs` — если перед issue 13 нужно заново согласовать + модель доливки истории от слепка. +- `coordinator-loop` — только после перевода issue 13 в `ready-for-agent`. +- `code-review` — для внешнего прохода по коммитам после ручной проверки. + ## Открытые риски -- Кросс-линейное ревью другой родословной не выполнено в этом coordinator-loop. - Нужен отдельный проход по коммитам 15-18 и финальному fix. +- Ручная HITL-проверка после `9b0b063` ещё не выполнена пользователем. - Issue 13 остаётся `needs-triage`: доливка истории от слепка должна опираться на закрытые инварианты 15 и 17. -- Issue 19 `ready-for-agent`: нужны единые `make test` и `make lint`, чтобы - будущий коммит-гейт не собирался вручную.