Commit Graph
191 Commits
Author SHA1 Message Date
ddadmin 0f435d70fd docs(issues): закрыта задача 09 по фактуре визита
- Зачем:
  - нужно зафиксировать состояние трекера после рабочего коммита issue 09.
- Что:
  - задача 09 переведена в done.
  - журнал coordinator-loop дополнен двумя кругами гейтового ревью и коммит-гейтом.
- Проверка:
  - git diff --cached --check.
2026-07-04 21:47:00 +03:00
ddadmin e2d06841de fix(generator): сохранена фактура визита при восстановлении
- Зачем:
  - визит после восстановления не должен менять браузер и источники перехода внутри одного click_id.
- Что:
  - добавлен base_click_id в state v3 для восстановления донора фактуры.
  - исправлено восстановление timestamp offset без потери микросекунд.
  - расширены тесты и стыковая проверка browser/source и device/os/geo.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - bash -n scripts/check_generated_analytics.sh.
  - git diff --cached --check.
2026-07-04 21:46:23 +03:00
ddadmin 0cbfe9b32e docs(issues): закрыта задача 14 по быстрому профилю
- Зачем:
  - нужно зафиксировать состояние трекера после рабочего коммита issue 14.
- Что:
  - задача 14 переведена в done.
  - журнал coordinator-loop дополнен ревью-гейтом и коммит-гейтом.
- Проверка:
  - git diff --cached --check.
2026-07-04 21:18:30 +03:00
ddadmin 9d1bcc43fa feat(generator): ускорен учебный профиль daily-wave
- Зачем:
  - суточная волна должна быть видна на занятии за минуты, а не за сутки работы стенда.
- Что:
  - профиль daily-wave переведён на speed 60 при тике 1 секунда.
  - приглушены подробные live-логи успешного тика без изменения сохранения state.
  - обновлены тесты, спека и инструкции запуска быстрого профиля.
- Проверка:
  - make generator-test.
  - git diff --cached --check.
2026-07-04 21:17:46 +03:00
ddadmin 200bb82890 docs(issues): закрыта задача 12 по пульту генератора
- Зачем:
  - нужно зафиксировать состояние трекера после рабочего коммита issue 12.
- Что:
  - задача 12 переведена в done.
  - журнал coordinator-loop дополнен ревью-гейтом и коммит-гейтом.
- Проверка:
  - git diff --cached --check.
2026-07-04 21:07:13 +03:00
ddadmin dd4af822d2 feat(airflow): добавлен пульт управления генератором
- Зачем:
  - нужен основной ручной интерфейс стенда для backfill/import/check без консольной матрицы переменных.
- Что:
  - добавлен DAG generator_control с параметрами Airflow, ветвлением операций и ожиданием ETL.
  - вынесена общая логика запуска и предпроверок генератора для Airflow.
  - обновлены compose-настройки, зависимости, тесты и документация по пульту.
- Проверка:
  - uv run --with pytest --with-requirements generator/requirements.txt pytest generator/tests -q.
  - docker compose config --quiet.
2026-07-04 21:06:30 +03:00
ddadminandClaude Fable 5 c672ed0329 docs(issues): дооформлены задачи 12 и 14, обновлён граф бэклога генератора
- Зачем:
  - подготовить цепочку 12 -> 14 -> 09 -> 10 -> 08 к передаче в coordinator-loop:
    задаче 12 не хватало решений после 07 и 11, задача 14 родилась из обсуждения
    учебного UX (суточная волна вживую).
- Что:
  - issue 12 (DAG-пульт): решения 2026-07-04 — без Docker-доступа из Airflow,
    операции как Python-код генератора в тасках, генератор без автостарта,
    границы пульта, предпроверки чистоты (топики + STG), ожидание ETL перед
    check; учтены находки адверсарного ревью и ревью Codex.
  - issue 14 (новая): профиль daily-wave переводится на speed=60 при тике 1 с —
    модельный час за настенную минуту без изменения фактуры мира.
  - issue 08: мягкие зависимости от 14 и 09 (артефакт курса рождается после
    них), режим ревью; PRD: задача 14 в списке и графе, 12 помечена дооформленной.
- Проверка:
  - вычитка: статусы задач ready-for-agent, порядок в PRD и Blocked by
    согласованы; mermaid-граф рендерится.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 20:42:46 +03:00
ddadmin 0a240e3077 docs(agents): закрыта цепочка генератора
- Зачем:
  - нужно зафиксировать итог coordinator-loop и обновить порядок оставшихся задач.
- Что:
  - PRD обновлен после завершения issue 07 и 11.
  - журнал дополнен финальным review и диагностикой nested reviewer tools.
- Проверка:
  - git diff --cached --check.
2026-07-04 19:01:14 +03:00
ddadmin 5081319651 docs(agents): обновлен журнал coordinator-loop
- Зачем:
  - нужен след ревью и коммит-гейта по issue 11.
- Что:
  - добавлены записи о worker-е, code review и коммите issue 11.
- Проверка:
  - git diff --cached --check.
2026-07-04 18:51:41 +03:00
ddadmin 4f8f992363 feat(generator): добавлены профили запуска
- Зачем:
  - запуск генератора должен быть понятным перед будущим DAG-пультом.
- Что:
  - добавлены глаголы запуска backfill, continue и reset.
  - добавлены профили ci и daily-wave с расчётом длительности истории.
  - обновлены runbook и документы запуска под профильный интерфейс.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - bash -n scripts/run_generator.sh scripts/export_startup_history_artifact.sh scripts/import_startup_history_artifact.sh scripts/run_generated_history_analytics.sh.
  - PROFILE=daily-wave COMPOSE_BIN=true bash scripts/run_generator.sh backfill.
2026-07-04 18:51:10 +03:00
ddadmin d2899e9ee3 docs(agents): добавлен журнал coordinator-loop
- Зачем:
  - нужен воспроизводимый след review gate и коммит-гейта по цепочке 07 -> 11.
- Что:
  - добавлен журнал coordinator-loop для generator-model-time-startup-history.
- Проверка:
  - git diff --cached --check.
2026-07-04 18:24:27 +03:00
ddadmin 3c38465d89 feat(generator): добавлен артефакт стартовой истории
- Зачем:
  - чистый стенд должен восстанавливать стартовую историю без повторной генерации.
- Что:
  - добавлены export/import артефакта через Kafka и compact-топики.
  - добавлена manifest-aware сверка ClickHouse и защита от смешения state.
  - добавлен runbook использования стартовой истории.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - bash -n scripts/check_startup_history_manifest.sh scripts/export_startup_history_artifact.sh scripts/import_startup_history_artifact.sh.
  - git diff --check.
2026-07-04 18:23:54 +03:00
ddadminandClaude Fable 5 ee4c9f5857 docs(generator): порядок бэклога «пульт вперёд» и граф задач в PRD
- Зачем:
  - узкое место — время человека на ручную приёмку: без DAG-пульта проверять
    миграцию курса пришлось бы через консоль.
- Что:
  - PRD, раздел «Задачи»: номер файла объявлен идентификатором (не порядком),
    порядок задан ветками и mermaid-графом; основная цепочка 07 -> 11 -> 12,
    миграция курса 08 — последней.
  - issue 08: добавлена мягкая зависимость от 12 (приёмка уроков через пульт).
  - handoff триажа: раздел «Следующий шаг» обновлён под новый порядок.
- Проверка:
  - mermaid-диаграмма проверена валидатором Mermaid; статусы задач не менялись.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 17:12:13 +03:00
ddadminandClaude Fable 5 f59b6d128f docs(generator): issue 09 и 10 дооформлены до ready-for-agent
- Зачем:
  - закрыть последний шаг триажа: без Acceptance criteria и способа приёмки
    задачи нельзя передавать Codex на исполнение.
- Что:
  - issue 09: причина уточнена по коду (расходится источник фактуры — донор
    против seed_click_id, а не индекс), зафиксировано решение хранить донора
    в state, критерии расширены полями location (referer, utm) по итогам ревью.
  - issue 10: приёмка по скриншотам playwright-cli с определением «читаемо»,
    поправлена длительность пересборки (6 часов по умолчанию, не 2 суток),
    отмечено, что legacy world_map, похоже, не умеет легенду и tooltip.
  - handoff триажа дополнен сдвигами в понимании и итогом тройного ревью.
- Проверка:
  - утверждения по коду сверены с generation.py, runtime.py, state.py и
    sql/ddl/dds/30_dds.sql двумя независимыми ревью-агентами.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 17:04:18 +03:00
ddadminandClaude Fable 5 95f9b5cbc8 docs(handoff): зафиксирован триаж бэклога и следующий шаг по 09 и 10
- Зачем:
  - продолжение работы планируется в новой сессии; нужен одноразовый
    handoff по ADR-0003 с решениями дня и точкой входа.
- Что:
  - записан handoff: рабочая форма Claude/Codex, решения по целеполаганию
    и бэклогу, очередь задач, следующий шаг — дооформить 09 и 10 до
    ready-for-agent, затем передача Codex.
- Проверка:
  - просмотр .scratch/handoffs/2026-07-04-generator-backlog-triage.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 16:39:40 +03:00
ddadminandClaude Fable 5 88d2c77624 docs(agents): статус done для завершённых задач локального трекера
- Зачем:
  - в конвенции набора скиллов нет состояния «сделано» (в GitHub это
    закрытие issue), из-за чего закрытые задачи помечались случайными
    ролями триажа (ready-for-human на сделанных 01-06).
- Что:
  - в issue-tracker.md добавлено: завершённая задача — Status: done,
    состояние жизненного цикла трекера, а не роль триажа;
    triage-labels.md с пятью ролями не тронут.
- Проверка:
  - просмотр docs/agents/issue-tracker.md, раздел «Соглашения».

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 16:39:40 +03:00
ddadminandClaude Fable 5 85f076e205 docs(generator): проведён триаж бэклога фичи, задачи 01-06 закрыты
- Зачем:
  - follow-up задачи после ревью 2026-06-14 лежали без триажа; решения по
    артефакту, громкому отказу и интерфейсу приняты 2026-07-04 и должны
    попасть в задачи до передачи исполнителю.
- Что:
  - задачи 07 (миграция курса) и 08 (артефакт) поменяны местами — номера
    отражают порядок; ссылки обновлены.
  - 07 (артефакт + runbook) дооформлен: импорт строго через Kafka (напрямую
    в ClickHouse не пишет), громкий отказ при несовместимом state с правкой
    спеки, граница runbook «использование, не устройство»; ready-for-agent.
  - 08 дооформлен: устройство генератора вне пути менти, реальный объём
    (make data во всех уроках 00-05), демо вне скоупа; ready-for-agent.
  - новые задачи: 11 глаголы/длительность/профили (после 07, до 12),
    12 Airflow-DAG как пульт (приоритет поднят), 13 доливка (после 09).
  - задачи 01-06 переведены в done (стояли ошибочные ready-for-human);
    PRD фичи дополнен списком задач 7-13 с порядком и зависимостями.
- Проверка:
  - head -1 .scratch/generator-model-time-startup-history/issues/*.md;
    grep по старым именам файлов ничего не находит вне handoff.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 16:39:40 +03:00
ddadminandClaude Fable 5 7d54e5fc1f docs(course): зафиксировано целеполагание стенда, демо-материалы удалены
- Зачем:
  - целеполагание было размазано по обсуждениям: место стенда в менторской
    программе и иерархия целей нигде не были записаны, а демо-употребление
    стенда устарело (выросло в отдельный проект).
- Что:
  - PRD курса §1: место стенда в треке ClickHouse (теория и лабы вне репо,
    здесь — интеграции), иерархия целей курс -> стенд -> генератор;
    схема потока обновлена на генератор как источник.
  - PRD §7: закрыта развилка про урок о генераторе (урока не будет,
    генератор — скрытая инфраструктура), добавлена открытая развилка про
    кластерную конфигурацию.
  - удалены DEMO_CHEATSHEET_5MIN.md и DEMO_SCRIPT_10_15MIN.md; ссылок на них
    в репозитории не осталось.
- Проверка:
  - grep -rn "DEMO_CHEATSHEET\|DEMO_SCRIPT" --include="*.md" . — только
    исторический handoff.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 16:39:16 +03:00
ddadminandClaude Opus 4.8 d7f02fd700 docs(generator): зафиксировано независимое ревью и задачи на потом
- Зачем:
  - после coordinator-loop нужно независимое ревью результатов модельного
    времени и стартовой истории; пропущенный внешний review gate после задачи 5
    закрыт другой родословной.
- Что:
  - добавлен verification-handoff: что проверено независимо, дефект стыка
    (issue 09) и открытые пробелы (×K, crash recovery, коридоры мат-спеки,
    воспроизводимость, review gate задачи 3).
  - заведены issues 08 (портативный артефакт + runbook + идеи интерфейса),
    09 (баг браузерной фактуры на стыке), 10 (читаемость гео-карты).
  - в docs/course/PRD.md §7 — открытый вопрос «генератор как скрытая
    инфраструктура vs отдельный урок».
- Проверка:
  - git show --stat HEAD
  - чтение .scratch/handoffs/2026-06-14-generator-model-time-verification-review.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 23:03:08 +03:00
ddadminandClaude Opus 4.8 86bba06f09 docs(handoff): handoff coordinator-loop перенесён в навык (указатель)
- Зачем:
  - авторитетная версия должна жить у навыка (dotfiles), рядом с handoff-побратимом; здесь — чтобы не плодить расходящиеся копии.
- Что:
  - полное содержимое заменено коротким указателем на dotfiles-версию.
- Проверка:
  - открыть .scratch/handoffs/2026-06-14-coordinator-loop-context-economy.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:39:46 +03:00
ddadminandClaude Opus 4.8 5660d9e614 docs(handoff): зафиксирован разбор экономии контекста coordinator-loop
- Зачем:
  - сохранить выводы сессии проектирования, пока свежие; без записи они теряются при компактизации и в новой сессии.
- Что:
  - добавлен handoff с диагностикой двух «пожаров» — контекста координатора и токенов — по логам прогона Codex.
  - зафиксированы prior art (obra:superpowers), два принятых правила, кандидаты-фиксы и открытые вопросы.
- Проверка:
  - открыть .scratch/handoffs/2026-06-14-coordinator-loop-context-economy.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 21:09:10 +03:00
ddadmin d35254ead6 feat(stand): переведён аналитический путь на стартовую историю
- Зачем:
  - чистый стенд должен строить аналитику из генерации, а не из архивного JSONL-сида.
- Что:
  - добавлены команды generated-history-analytics и generated-history-check.
  - обновлены README, operations и Superset-документы под путь generator backfill -> DM -> Superset.
  - создан follow-up на миграцию учебных материалов с архивного сида.
- Проверка:
  - make generated-history-analytics.
  - make generated-history-check.
  - reviewer gate issue 06 пройден без блокирующих находок.
2026-06-14 20:22:17 +03:00
ddadmin d5408f28e9 feat(generator): добавлена стартовая история через backfill
- Зачем:
  - стенду нужна повторяемая история с живым продолжением от модельной границы без дублей и разрыва визитов.
- Что:
  - добавлен backfill-режим с `GEN_MODEL_T_END`, manifest и state на `T_end`.
  - live-запуск восстанавливается из manifest без настенной дельты и проверяет совместимость state.
  - добавлены SQL-проверки формы данных, повторяемости и стыка backfill с live.
- Проверка:
  - make generator-test.
  - два чистых ClickHouse-прогона backfill дали одинаковые manifest checksums и digest.
  - reviewer gate issue 05 пройден после исправлений state/manifest.
2026-06-14 19:45:58 +03:00
ddadmin fcb06da16e feat(generator): добавлено восстановление state по модельному времени
- Зачем:
  - рестарт генератора должен продолжать поток от модельной точки без дублей и смешивания state разных настроек.
- Что:
  - state v2 хранит модельную и настенную метки, скорость, timezone, T0 и seed.
  - live-восстановление считает модельную точку по настенной дельте и проверяет совместимость config.
  - добавлен путь восстановления от T_end и тесты короткого и долгого простоя.
- Проверка:
  - make generator-test.
  - ClickHouse-сценарии короткого и долгого восстановления state.
  - reviewer gate issue 04 пройден после исправления совместимости state.
2026-06-14 18:47:34 +03:00
ddadmin 589e2321b3 feat(generator): добавлено ускорение модельного времени
- Зачем:
  - ускоренный стенд должен проходить больше модельного времени и давать соответствующий событийный бюджет.
- Что:
  - расчёт интенсивности переведён на модельную длительность тика.
  - добавлена устойчивая выборка бюджета при больших λ.
  - усилены тесты ×K, дневного коэффициента и независимости от настенного часа.
- Проверка:
  - make generator-test.
  - review gate после issue 03 пройден после исправления underflow Poisson.
2026-06-14 17:48:51 +03:00
ddadmin efb07b0283 feat(generator): добавлено модельное время live-потока
- Зачем:
  - генератор должен писать события от модельной точки T0 и проверяться повторяемо в ClickHouse.
- Что:
  - добавлены настройки модельного времени и передача модельной точки в live-тик.
  - дневной коэффициент считается по модельному времени и часовому поясу.
  - обновлены проверки, compose, документация и статус issue 02.
- Проверка:
  - make generator-test.
  - два чистых ClickHouse-прогона с GEN_STATE_RESET=true дали одинаковые контрольные числа.
2026-06-14 17:23:12 +03:00
ddadmin 31a71f93ea docs(generator): зафиксирован контракт модельного времени
- Зачем:
  - нужно закрепить принятое человеком HITL-решение до кодовых задач 02-06.
- Что:
  - добавлен рабочий контракт настроек, хода часов, state, манифеста и ClickHouse-проверки.
  - выбран один живой ход часов через фиксированный модельный шаг без отдельной матрицы драйверов.
  - уточнена граница стартовой истории как [T0, T_end) и закрыт чек-лист issue 01.
- Проверка:
  - git diff --cached --check.
2026-06-14 16:30:15 +03:00
ddadmin 79c2c2657c docs(generator): уточнены задачи по модельному времени
- Зачем:
  - ревью выявило слабые места в критериях приёмки модельного времени.
- Что:
  - уточнены правила повторяемости, чистого прогона и review gate.
  - добавлены критерии для однородности визита через восстановление и T_end.
  - обновлён handoff с важными рисками для следующего агента.
- Проверка:
  - git diff --check.
2026-06-14 16:12:46 +03:00
ddadmin 796c3f26a9 docs(generator): добавлены задачи по модельному времени
- Зачем:
  - нужен рабочий план для реализации модельного времени и стартовой истории.
- Что:
  - добавлен parent PRD с инвариантами, зависимостями и review gate.
  - добавлены шесть локальных issue для последовательной работы.
  - добавлен handoff для продолжения в новой сессии.
- Проверка:
  - git diff --check.
2026-06-14 15:59:12 +03:00
ddadminandClaude Opus 4.8 fa93aef150 docs(context): глоссарий и спеки приведены в соответствие с ADR-0006
- Зачем:
  - ADR-0006 сделал генерацию единственным источником аналитики, а статический
    сид — архивным; глоссарий и спеки это ещё не отражали.
- Что:
  - CONTEXT.md: «статический сид» переименован в «архивный статический сид»
    (короткое имя сохранено), описан как временная кладовка значений с целью
    полного вывода; «стартовая история» получила синонимы «стартовый сид» и
    «новый сид»; раздел «Слои данных» отмечает переход аналитики на генерацию.
  - мат-спека: разделы «Персистентность через рестарты» и «Воспроизводимость»
    помечены как переописанные в спеке модельного времени (ссылкой, без повтора).
  - спека модельного времени: синоним «стартовый сид» добавлен в определение и
    в заметку о влиянии на документацию.
- Проверка:
  - git diff: термины и перекрёстные ссылки читаются непротиворечиво; ADR не
    правились (статус «архивный» не переносится в документы до ADR-0006).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 15:31:11 +03:00
ddadminandClaude Opus 4.8 18ac8279cd docs(handoff): зафиксирован handoff по ADR-0006 и спеке модельного времени
- Зачем:
  - сохранить контекст сессии для продолжения работы в новой сессии.
- Что:
  - добавлен handoff: что сделано и закоммичено, контекст вне артефактов, очередь шагов, ограничения.
- Проверка:
  - чтение .scratch/handoffs/2026-06-14-adr0006-source-flip-and-model-time-spec.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 15:07:27 +03:00
ddadminandClaude Opus 4.8 7e28cf06b9 docs(agents): язык рассуждений — английский, ответы и артефакты — русский
- Зачем:
  - кириллица занимает примерно в 1,5–2 раза больше токенов; рассуждения можно вести экономнее.
- Что:
  - добавлено правило: внутренние рассуждения и промежуточные пометки — на английском.
  - русский остаётся для ответов пользователю, документов, комментариев в коде и сообщений коммитов.
- Проверка:
  - чтение AGENTS.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 15:07:27 +03:00
ddadminandClaude Opus 4.8 c4cc01e206 docs(agents): уточнены правила русского языка и понятности документов
- Зачем:
  - прежняя формулировка допускала транслитерации и не требовала краткости и понятности самих документов.
- Что:
  - «устоявшийся английский» сужен до имён технологий, инструментов и кода.
  - добавлено правило: документы и объяснения — короткими фразами, простыми словами, понятность важнее буквальной точности.
- Проверка:
  - чтение AGENTS.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:52:09 +03:00
ddadminandClaude Opus 4.8 49512b190a docs(generator): зафиксированы источник аналитики и стартовая история
- Зачем:
  - генератор даёт здоровую пирамиду, и стенду нужен единый источник аналитики вместо вырожденного статического сида.
- Что:
  - добавлен ADR-0006: генерация — единственный источник аналитики, статический сид становится архивным (кладовка значений до синтеза фактуры).
  - добавлена спека модельного времени: точка отсчёта, заливка прошлого, стартовая история, сохранение состояния, воспроизводимость и проверка в два шага.
  - в ADR-0004 и ADR-0005 добавлены указатели вперёд на ADR-0006 и спеку.
- Проверка:
  - чтение документов; перекрёстные ссылки между ADR-0004/0005/0006 и спекой согласованы.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 14:47:20 +03:00
ddadminandClaude Opus 4.8 899a3f07a1 docs(research): зафиксировано внешнее ревью петли субагентов
- Зачем:
  - закрыть отложенный заход эксперимента: внешнее ревью результата
    автономной петли моделью другой родословной (дизайн-линия, не Кодекс).
- Что:
  - добавлена секция об итогах ревью: прогноз по находке A не оправдался,
    петля её поймала (try→fresh + регрессионный тест в коммите 640050e).
  - зафиксировано, что внешний взгляд добавил сквозные находки (расхождение
    живого/восстановленного путей, форма распределения длины визита).
  - уточнена гипотеза о пользе reviewer-а другой родословной.
- Проверка:
  - git show --stat HEAD; чтение docs/research/2026-06-11-subagent-coordinator-experiment.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 13:17:06 +03:00
Dmitry Dementiev ce3552eaf2 docs(research): зафиксирован эксперимент с координатором субагентов
- Зачем:
  - выводы агентного эксперимента нужны как durable-основа для будущего скилла, а не как одноразовый handoff.
- Что:
  - добавлена research note с гипотезой, протоколом, наблюдениями и ограничениями эксперимента.
  - зафиксированы роли координатора, worker-а и reviewer-а, классификация находок и инварианты будущего скилла.
- Проверка:
  - ручная перечитка docs/research/2026-06-11-subagent-coordinator-experiment.md.
2026-06-11 18:44:07 +03:00
Dmitry Dementiev 341637c810 docs(generator): зафиксирована модель времени генератора (ADR-0005)
- Зачем:
  - инвариант «время генератора ≡ реальное ×1» неудобен для учебного плана:
    медленные явления (возвраты, воронка) не успеть показать на уроке, а
    историческую глубину живой генератор не создаёт.
- Что:
  - добавлен ADR-0005: модельные часы отвязаны от настенного времени, режимы
    (живой ×1 / ускоренный ×K / заливка) — драйверы одного шва, правило 30 минут
    переопределено в модельном времени; сид-продолжение помечено как будущее.
  - в CONTEXT.md разведены три значения «сида» и добавлен термин модельного
    времени и масштаба ×K.
  - добавлен handoff с отложенным ревью петли и реконсиляцией мат-спеки.
- Проверка:
  - прочитать docs/adr/0005-generator-model-clock.md и раздел «Три значения
    слова сид» в CONTEXT.md; git log -1.
2026-06-11 18:37:27 +03:00
Dmitry Dementiev 2eaeda3308 docs(generator): зафиксирован вывод финального reviewer-цикла
- Зачем:
  - наблюдения по задаче 07 нужны для итоговой рефлексии эксперимента с субагентами.
- Что:
  - добавлен вывод о роли reviewer-а в проверке силы интеграционного теста.
- Проверка:
  - git diff -- .scratch/handoffs/2026-06-11-subagent-coordinator-experiment.md.
2026-06-11 18:26:57 +03:00
Dmitry Dementiev 6c4e0f4d16 feat(generator): подключена новая модель к steady-stream сервису
- Зачем:
  - после калибровки потока и state v2 генератор нужно принять как рабочий steady-stream источник, а не как исторически сломанный прототип.
- Что:
  - добавлен сервисный тест multi-event визита с мок-публикацией во все четыре Kafka-топика.
  - compose позволяет переопределять демо-параметры генератора без правки файла, сохраняя внутренние контейнерные адреса.
  - README, OPERATIONS, KNOWN_ISSUES и карточка задачи синхронизированы с новой моделью и state v2.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - git diff --check.
  - GEN_STATE_RESET=true GEN_POPULATION_MAX=123 docker compose config.
2026-06-11 18:26:39 +03:00
Dmitry Dementiev 4a08465f7d docs(generator): дополнены наблюдения эксперимента с субагентами
- Зачем:
  - результаты первых циклов эксперимента нужно сохранить отдельно от рабочих изменений генератора.
- Что:
  - зафиксированы выводы по саморевью, reviewer-субагенту и второму кругу ревью.
  - описана классификация reviewer-находок перед отправкой worker-агенту.
- Проверка:
  - git diff --stat -- .scratch/handoffs/2026-06-11-subagent-coordinator-experiment.md.
2026-06-11 18:02:25 +03:00
Dmitry Dementiev 640050e409 feat(generator): добавлено состояние версии 2 для рестартов
- Зачем:
  - генератор должен переживать рестарт без потери популяции пользователей и коротко прерванных активных визитов.
- Что:
  - добавлен компактный state v2 для популяции, активных визитов и остатка бюджета рождений.
  - сервис генератора переведён на единый тиковый поток с сохранением и восстановлением состояния.
  - добавлена безопасная деградация для старого state v1 и битого state v2.
  - покрыты короткий и долгий простой, reset состояния и валидация вложенного state.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - git diff --check.
2026-06-11 18:01:57 +03:00
Dmitry Dementiev 8f1e997cc9 feat(generator): откалиброван поток steady-stream генератора
- Зачем:
  - поток генератора должен соответствовать модели интенсивности и профилю сида перед реализацией состояния версии 2.
- Что:
  - событийный бюджет тика переведён в рождения визитов через ожидаемую среднюю длину визита.
  - дефолты интенсивности и обычный docker-compose запуск синхронизированы с целевыми 30 событиями в минуту.
  - добавлены статистические проверки длины визита, воронки, новых пользователей, межсессионных пауз и долгого окна потока.
  - обновлены README, OPERATIONS и карточка задачи 05.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q.
  - git diff --check.
2026-06-11 17:17:34 +03:00
Dmitry Dementiev d7c5a56675 docs(generator): зафиксирован процесс эксперимента с субагентами
- Зачем:
  - перед запуском задачи 05 нужно отделить координационные договорённости от будущих изменений генератора.
- Что:
  - добавлен handoff с правилами эксперимента координатора и субагентов.
  - уточнён порядок возврата к задаче состояния версии 2 после калибровки потока.
- Проверка:
  - git diff -- .scratch/feature-data-generator/issues/06-state-v2-and-restart.md .scratch/handoffs/2026-06-11-subagent-coordinator-experiment.md.
2026-06-11 16:34:45 +03:00
Dmitry Dementiev fda5db8ad9 feat(generator): добавлена популяция пользователей
- Зачем:
  - steady-stream генератору нужны устойчивые пользователи и возвраты между визитами, чтобы поток был похож на живую модель поведения.
- Что:
  - добавлена ограниченная популяция с кулдауном возврата, ротацией новых пользователей и защитой от второго активного визита.
  - UUID переведены на единый ГПСЧ генератора, а завершение визита считается по запланированному последнему событию.
  - добавлены регрессионные тесты и обновлена документация генератора.
- Проверка:
  - uv run --with-requirements generator/requirements.txt pytest generator/tests -q
2026-06-11 16:08:37 +03:00
Dmitry Dementiev d8da27187e feat(generator): добавлен поток активных визитов по тикам
- Зачем:
  - генератор должен выпускать события визита по запланированным тикам, не приклеивая весь визит к одному запуску.
- Что:
  - добавлен тиковый слой `TickStreamGenerator` с активными визитами и выпуском созревших событий.
  - добавлена валидация потолка активных визитов относительно потолка популяции.
  - сохранён событийный смысл `event_budget` и добавлен регрессионный тест против разгона интенсивности.
- Проверка:
  - `uv run --with-requirements generator/requirements.txt pytest generator/tests -q` — 81 passed.
2026-06-11 15:32:53 +03:00
Dmitry Dementiev 642789d484 refactor(generator): разнесён сервис генератора по src-пакету
- Зачем:
  - перед активными визитами нужно отделить генеративную модель от Kafka, состояния и сервисного цикла.
- Что:
  - перенесены модули генератора в пакет `src/clickstream_generator`.
  - `generator.py` оставлен фасадом и точкой входа с совместимыми импортами.
  - обновлены Dockerfile, тесты, README, спека и issue 02.5.
- Проверка:
  - `docker build -t generator:test generator`.
  - `docker run --rm -v /home/dmitry/sources/clickstream-ch-kafka-superset-demo:/workspace -w /workspace/generator generator:test pytest tests/ -q`.
  - `python -m py_compile generator.py src/clickstream_generator/*.py` в Docker.
2026-06-11 15:00:50 +03:00
Dmitry Dementiev 48e3bf2900 docs(generator): добавлена задача уборки сервиса
- Зачем:
  - перед задачей активных визитов нужно отделить модель генератора от сервисной обвязки.
- Что:
  - добавлена спека уборки сервиса генератора перед задачей 03.
  - добавлена промежуточная issue 02.5 с критериями приёмки.
  - уточнены требования к Dockerfile и временному тиковому слою.
  - задача 03 заблокирована новой задачей уборки.
- Проверка:
  - просмотрен staged diff через `git diff --cached --stat`.
2026-06-11 13:48:24 +03:00
Dmitry Dementiev eaf4888ed9 docs(agents): обновлены правила работы агента
- Зачем:
  - локальные инструкции должны отражать актуальные правила работы с Python в репозитории.
- Что:
  - добавлено требование использовать uv для Python.
  - удалена устаревшая строка цели репозитория из AGENTS.md.
- Проверка:
  - git diff --cached -- AGENTS.md
2026-06-11 12:59:29 +03:00
Dmitry Dementiev 32f4fee41c feat(generator): добавлена модель связанного визита
- Зачем:
  - генератор должен создавать учебно полезный визит с общим click_id, правдоподобным путём и честным тиковым бюджетом событий.
- Что:
  - добавлена марковская цепочка страниц, запланированные метки времени и потолок GEN_MAX_SESSION_EVENTS.
  - добавлен набор тикового батча из нескольких визитов до рассчитанного бюджета событий.
  - обновлены тесты, README, KNOWN_ISSUES и статусы задач 01/02.
- Проверка:
  - uv run --with pytest --with-requirements generator/requirements.txt pytest generator/tests -q
2026-06-11 12:52:48 +03:00
Dmitry Dementiev d38124263a feat(generator): добавлен связанный визит в генератор
- Зачем:
  - нужен первый проверяемый срез новой модели, где один визит содержит несколько связанных событий.
- Что:
  - добавлен индекс browser-событий по click_id для выбора сид-визита как основы.
  - generate_batch теперь выпускает несколько browser-событий с одним новым click_id и общим device/geo-контекстом.
  - добавлен тест публичного контракта связанного визита.
- Проверка:
  - make generator-test.
2026-06-11 11:00:39 +03:00