Files
clickstream-ch-kafka-supers…/.scratch/generator-model-time-startup-history/issues/04-state-v2-model-resume.md
T
ddadmin 79c2c2657c docs(generator): уточнены задачи по модельному времени
- Зачем:
  - ревью выявило слабые места в критериях приёмки модельного времени.
- Что:
  - уточнены правила повторяемости, чистого прогона и review gate.
  - добавлены критерии для однородности визита через восстановление и T_end.
  - обновлён handoff с важными рисками для следующего агента.
- Проверка:
  - git diff --check.
2026-06-14 16:12:46 +03:00

3.3 KiB

Status: ready-for-agent

Восстановление state v2 от модельной точки

Parent

.scratch/generator-model-time-startup-history/PRD.md

What to build

Привести восстановление state v2 к модельному времени. Один и тот же слепок должен уметь восстанавливаться в двух разных случаях: после сбоя, где время действительно прошло, и при старте из стартовой истории, где продолжение идёт от T_end без искусственного разрыва.

Срез должен доказать поведение не только локальными тестами состояния, но и данными в ClickHouse: активные визиты продолжаются или закрываются по правилам модельного времени.

Acceptance criteria

  • State сохраняет достаточно данных, чтобы после сбоя вычислить модельную точку возобновления при ×K.
  • Восстановление после короткого модельного сбоя продолжает активные визиты и досылает созревшие события с исходными модельными метками.
  • Восстановление после долгого модельного сбоя закрывает сильно просроченные активные визиты без досылки остатка.
  • Восстановление из стартовой истории использует T_end как точку возобновления и не обрывает активные визиты из-за настенного простоя.
  • Визит, переживший восстановление, остаётся однородным: события до и после восстановления не меняют контекст визита и не создают второй путь генерации внутри одного click_id.
  • Повреждённый или несовместимый state не валит сервис: генератор стартует с чистого листа и пишет предупреждение.
  • ClickHouse-проверка подтверждает, что на стыке восстановления нет дублей событий и нет разрыва click_id внутри продолжающегося визита.
  • После реализации выполнено саморевью worker-а и отдельное reviewer-ревью, потому что задача меняет state/serialization и сервисное восстановление.
  • Если исправление после ревью меняет формат state или способ восстановления, выполнен повторный reviewer-круг.

Blocked by

  • .scratch/generator-model-time-startup-history/issues/03-model-speed-and-day-factor.md
  • Review gate из PRD.md: сквозной инвариант времени после задачи 3