docs(generator): закрыта задача 17 в трекере

- Зачем:
  - coordinator-loop отделяет рабочий срез от статусов и журнала.
- Что:
  - задача 17 переведена в done с закрытыми критериями.
  - журнал дополнен ревью, bounded runtime gate и коммитом.
- Проверка:
  - staged-состав содержит только issue 17 и журнал.
This commit is contained in:
2026-07-05 21:33:35 +03:00
parent 00c97eb063
commit 67313494d9
2 changed files with 72 additions and 8 deletions
@@ -450,3 +450,67 @@
с применённым DDL.
- 20:46 Issue 16 рабочий коммит: `27947ce`
(`fix(airflow): исправлен запуск пульта на свежем стенде`).
- 20:47 Перед issue 17: дерево clean; issue 15 и 16 закрыты. Issue 17
запущен worker-у. Режим ревью: обычный; worker reasoning_effort=`medium`;
code review после реализации `high`.
- 20:54 Issue 17: worker вернул `DONE_WITH_CONCERNS`. Индекс:
`check_generated_analytics.sh` берёт `model_t0/model_t_end/profile` из
фактического Kafka manifest, ждёт live-строки перед seam-check и требует
ненулевые ODS device/geo; `generated-history-check` пробрасывает PROFILE;
добавлен CLI `kafka-manifest-summary`; Superset tests сравнивают полный
существенный `params`; top countries сортируется по `Events, pcs`; sync
удаляет дубли только в целевом датасете; деструктивность sync задокументирована.
Checks: generated analytics contract PASS; Superset config PASS; startup
history artifact PASS; `py_compile` PASS; `bash -n` PASS; `git diff --check`
PASS. Concern: полный `PROFILE=daily-wave CHECK_LIVE_SEAM=1 make
generated-history-check` не выполнен.
- 20:55 Issue 17 code review запущен координатором: свежий observer-субагент
`Bacon`, reasoning_effort=`high`, без правок репозитория и среды.
- 20:58 Issue 17 code review `Bacon`: `CHANGES_REQUESTED`. Findings:
Superset sync всё ещё может перезаписать/удалить одноимённый чарт вне
целевого dashboard при том же датасете; `CHECK_LIVE_SEAM=auto` может зелёно
пропустить попытку live без строк после стыка. Индекс возвращён worker-у
дословно.
- 21:02 Issue 17: worker вернул `DONE_WITH_CONCERNS` после code review.
Исправлено: Superset sync/delete ограничены чартами целевого dashboard;
обычный `generated-history-check` требует live-строки, а backfill-only путь
явно отключает seam-check. Checks: generated analytics + Superset tests PASS;
startup history artifact PASS; `bash -n` PASS; `py_compile` PASS;
`git diff --check` PASS. Отклонений и споров нет; полный runtime-прогон
ещё не выполнен.
- 21:02 Issue 17 code narrow rerun отправлен `Bacon`: проверить закрытие
находок по Superset sync ownership и live seam default.
- 21:03 Issue 17 code narrow rerun `Bacon`: `APPROVED`. Findings: нет.
Chain-level решение: открыть коммит-гейт 17.
- 21:19 Issue 17 commit gate partial: локальный `uv` не дошёл до pytest из-за
`snap-confine`/`cap_dac_override`; Docker target tests PASS (12);
`make generator-test` PASS (186); `py_compile` PASS; `bash -n` PASS;
`git diff --check` PASS. Runtime prep `PROFILE=daily-wave make
generated-history-analytics` был остановлен после долгого выполнения:
generator-run и ClickHouse были активны, но gate не завершался за разумное
время; после SIGINT running services только `clickhouse`, `kafka`. Finding
возвращён worker-у: нужен точный bounded runtime-путь или изменение проверки.
- 21:27 Issue 17: worker вернул `DONE` после runtime gate finding.
Добавлен bounded `make generated-history-runtime-check`: короткий daily-wave
backfill 1h, live через Compose env, ожидание STG growth до 25s, второй batch
и `CHECK_LIVE_SEAM=1 REQUIRE_SUPERSET=0`. Контрактный тест и OPERATIONS
обновлены. Checks worker-а: Docker target tests PASS (13); `bash -n` PASS;
`py_compile` PASS; `git diff --check` PASS; `make
generated-history-runtime-check` PASS. Ключевые факты runtime:
profile=`daily-wave`, `model_t_end=2026-01-01T01:00:00+00:00`,
STG 10256 -> 10975, crossing visits 19, ODS device/geo 19/19. Concern:
runtime gate чистит volumes и оставляет `clickhouse`, `kafka` running.
- 21:28 Issue 17 code narrow rerun отправлен `Bacon`: проверить bounded
runtime gate и отсутствие нового рядом с уже одобренными исправлениями.
- 21:29 Issue 17 code narrow rerun `Bacon`: `APPROVED`. Findings: нет.
Chain-level решение: повторить коммит-гейт 17 с bounded runtime gate.
- 21:32 Issue 17 final commit gate: Docker target tests PASS (13);
`make generator-test` PASS (186); `py_compile` PASS; `bash -n` PASS;
`git diff --check` PASS; `make generated-history-runtime-check` PASS.
Runtime facts: STG 10256 -> 10862, `manifest_launch_profile=daily-wave`,
`manifest_model_t_end=2026-01-01T01:00:00+00:00`, crossing visits 19,
ODS device/geo 19/19. Diff в границах issue 17; журнал не staged. Runtime
gate оставил `clickhouse`, `kafka` running.
- 21:32 Issue 17 рабочий коммит: `00c97eb`
(`test(generator): усилены проверки startup-history и Superset`).
@@ -1,4 +1,4 @@
Status: ready-for-agent
Status: done
# Проверки startup-history и Superset без ложного зелёного
@@ -20,20 +20,20 @@ Status: ready-for-agent
## Acceptance criteria
- [ ] Проверка startup-history берёт границу стыка из манифеста фактического
- [x] Проверка startup-history берёт границу стыка из манифеста фактического
прогона, а не из значения окружения по умолчанию.
- [ ] ODS-часть проверки не проходит на пустом ODS: отсутствие строк считается
- [x] ODS-часть проверки не проходит на пустом ODS: отсутствие строк считается
ошибкой проверки, а не успешным результатом.
- [ ] Профиль запуска доходит до проверки: сценарий с `daily-wave` проверяет
- [x] Профиль запуска доходит до проверки: сценарий с `daily-wave` проверяет
именно мир `daily-wave`, а не диапазон `ci`.
- [ ] Ожидание live-строк доказывает, что живое продолжение реально успело
- [x] Ожидание live-строк доказывает, что живое продолжение реально успело
записать данные; короткое ожидание не должно превращать проверку стыка в
пропущенную проверку.
- [ ] Тест Superset сравнивает полный существенный контракт `params` между
- [x] Тест Superset сравнивает полный существенный контракт `params` между
конфигурацией и export, а не только небольшой набор полей.
- [ ] Сортировка top countries задана явно по числу событий, чтобы порядок не
- [x] Сортировка top countries задана явно по числу событий, чтобы порядок не
зависел от случайной формы ответа после pivot.
- [ ] Повторная синхронизация Superset не удаляет одноимённые чарты вне целевого
- [x] Повторная синхронизация Superset не удаляет одноимённые чарты вне целевого
источника данных или dashboard; деструктивность sync задокументирована.
## Blocked by