From 9804d0beae5710137275ac1ec0a79151f9f3c95a Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sun, 5 Jul 2026 20:47:41 +0300 Subject: [PATCH] =?UTF-8?q?docs(generator):=20=D0=B7=D0=B0=D0=BA=D1=80?= =?UTF-8?q?=D1=8B=D1=82=D0=B0=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=2016?= =?UTF-8?q?=20=D0=B2=20=D1=82=D1=80=D0=B5=D0=BA=D0=B5=D1=80=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - coordinator-loop отделяет рабочие изменения от статусов и журнала. - Что: - задача 16 переведена в done с закрытыми критериями. - журнал дополнен ревью, стендовым gate и коммитами. - Проверка: - staged-состав содержит только issue 16 и журнал. --- .../coordinator-journal.md | 59 +++++++++++++++++++ .../16-fresh-stand-generator-control.md | 14 ++--- 2 files changed, 66 insertions(+), 7 deletions(-) diff --git a/.scratch/generator-model-time-startup-history/coordinator-journal.md b/.scratch/generator-model-time-startup-history/coordinator-journal.md index 8843207..56a7a6b 100644 --- a/.scratch/generator-model-time-startup-history/coordinator-journal.md +++ b/.scratch/generator-model-time-startup-history/coordinator-journal.md @@ -391,3 +391,62 @@ `git diff --check` PASS. Diff в границах issue 15; журнал не staged. - 20:20 Issue 15 рабочий коммит: `080d5ae` (`fix(generator): исключено смешение миров при запуске`). + +- 20:22 Перед issue 16: дерево clean; dependency issue 15 закрыта. Issue 16 + запущен worker-у. Режим ревью: обычный; worker reasoning_effort=`medium`; + code review после реализации `high`. Условие эскалации: широкая переделка + DAG-зависимостей вместо предпроверки паузы переводит issue в гейт. +- 20:28 Issue 16: worker вернул `DONE_WITH_CONCERNS`. Индекс: README/course + называют `uv` и пререквизиты; quick start добавляет `make ddl`; + `make up` пересобирает Airflow; `generator_control` проверяет pause + `etl_pipeline` перед `TriggerDagRunOperator`; решение Airflow 2.10.5 + проверено через Context7 и зафиксировано рядом с выбором API; runbook + предупреждает про дыру `daily-wave` x60. Checks: red phase PASS; generator + tests PASS (186); DAG contract PASS (16); compose config PASS. Concern: + полный clean-stand проход не выполнен. +- 20:28 Issue 16 code review запущен координатором: свежий observer-субагент + `Laplace`, reasoning_effort=`high`, без правок репозитория и среды. +- 20:30 Issue 16 code review `Laplace`: `CHANGES_REQUESTED`. Finding: + pause-check `etl_pipeline` стоит после `run_backfill`, поэтому отказ + происходит уже после записи истории и повторный backfill упирается в + clean-stand guard. Индекс возвращён worker-у дословно. +- 20:33 Обновлённый `coordinator-loop` перечитан по просьбе пользователя. + Процессный вывод по тестам уточнён: шумные команды коммит-гейта дальше + идут через файл-лог, в контекст координатора попадает только сводка. +- 20:33 Issue 16: worker вернул `DONE_WITH_CONCERNS` после code review. + Исправлено: paused-check вынесен перед `precheck`/`run` для backfill/import; + контрактный тест закрепляет порядок branch -> paused-check -> precheck -> + run -> trigger ETL. Checks: DAG contract PASS; generator tests PASS (186); + compose config PASS. Concern: полный Airflow UI clean-stand сценарий не + выполнен. +- 20:33 Issue 16 code narrow rerun отправлен `Laplace`: проверить закрытие + high-находки по порядку pause-check и отсутствие нового рядом. +- 20:34 Issue 16 code narrow rerun `Laplace`: `APPROVED`. Findings: нет. + Chain-level решение: открыть коммит-гейт 16. +- 20:38 Issue 16 commit gate: `uv run ... pytest` не дошёл до pytest из-за + `snap-confine`/`cap_dac_override` в окружении координатора; log analyst + подтвердил ошибку запуска, не тестов. `make generator-test` через Docker: + PASS (186 tests) после запуска вне sandbox. `docker compose config --quiet` + PASS; `py_compile` PASS; `git diff --check` PASS. Clean-stand probe: + `make clean` PASS, `make up` FAIL на `superset-init`; log analyst finding: + `superset-init` падает с `NoSuchTableError: dm.v_events_enriched` до шага + `make ddl`. Finding возвращён worker-у как failed commit gate. +- 20:42 Issue 16: worker вернул `DONE_WITH_CONCERNS` после failed commit + gate. Исправлено: `make up` поднимает базовый набор без `superset`/ + `superset-init`, quick start доходит до `make ddl`; README/OPERATIONS + фиксируют, что Superset-дэшборд собирается позже, когда DM готов; контрактный + тест ловит порядок. Checks worker-а: DAG contract PASS; compose config PASS; + `py_compile` PASS; `git diff --check` PASS; `make generator-test` PASS + (186); `make up` PASS; `make ddl` PASS. Concern: базовые контейнеры + остались запущены после проверки. +- 20:42 Issue 16 code narrow rerun отправлен `Laplace`: проверить новый + контракт `make up` без раннего `superset-init` и соседний quick start drift. +- 20:44 Issue 16 code narrow rerun `Laplace`: `APPROVED`. Findings: нет. + Chain-level решение: повторить коммит-гейт 16 после commit-gate фикса. +- 20:46 Issue 16 final commit gate: `make generator-test` PASS (186 tests); + `docker compose config --quiet` PASS; `py_compile` PASS; `git diff --check` + PASS; `make clean` PASS; `make up` PASS; `make ddl` PASS. Diff в границах + issue 16; журнал не staged. Стенд после проверки поднят в базовом состоянии + с применённым DDL. +- 20:46 Issue 16 рабочий коммит: `27947ce` + (`fix(airflow): исправлен запуск пульта на свежем стенде`). diff --git a/.scratch/generator-model-time-startup-history/issues/16-fresh-stand-generator-control.md b/.scratch/generator-model-time-startup-history/issues/16-fresh-stand-generator-control.md index 57d8356..2896a90 100644 --- a/.scratch/generator-model-time-startup-history/issues/16-fresh-stand-generator-control.md +++ b/.scratch/generator-model-time-startup-history/issues/16-fresh-stand-generator-control.md @@ -1,4 +1,4 @@ -Status: ready-for-agent +Status: done # Свежий стенд и Airflow-пульт без догадок @@ -19,18 +19,18 @@ Status: ready-for-agent ## Acceptance criteria -- [ ] Quick start и курс явно называют `uv` и остальные обязательные +- [x] Quick start и курс явно называют `uv` и остальные обязательные пререквизиты до первой команды, которая их требует. -- [ ] Быстрый старт на чистом стенде подготавливает DDL до проверок генератора; +- [x] Быстрый старт на чистом стенде подготавливает DDL до проверок генератора; отсутствие таблиц не падает сырым `UNKNOWN_TABLE`. -- [ ] После обновления репозитория Airflow получает новые зависимости и DAG-и +- [x] После обновления репозитория Airflow получает новые зависимости и DAG-и без ручных догадок: через пересборку, явную команду или ясно описанный шаг. -- [ ] `generator_control` не висит навсегда, если зависимый `etl_pipeline` +- [x] `generator_control` не висит навсегда, если зависимый `etl_pipeline` стоит на паузе: оператор получает понятный отказ или инструкцию до запуска долгого ожидания. -- [ ] Решение по Airflow API, проверенное через Context7 для текущей версии, +- [x] Решение по Airflow API, проверенное через Context7 для текущей версии, зафиксировано в коде или документации кратко и рядом с местом выбора. -- [ ] Runbook предупреждает, что долгий простой `daily-wave` на скорости 60 +- [x] Runbook предупреждает, что долгий простой `daily-wave` на скорости 60 создаёт большую дыру в модельном времени, и советует reset или повторный импорт стартовой истории.