feat(generator): глагол next-day — следующий модельный день от слепка
- Зачем:
- режим кормления стенда порциями: менти триггерит «следующий день»,
видит полный цикл DWH за один шаг (задача 13, вариант 2 — генерация
от слепка T_end).
- Что:
- новый ограниченный режим next-day: восстановление мира из state,
генерация ровно [T_end, T_end+24h), публикация данные -> state ->
манифест (манифест — точка фиксации, автоотката нет).
- операция next-day в DAG generator_control: своя предпроверка границы
вместо clean-guard, идемпотентность через параметр expected_t_end.
- цепочка границ — накопительное поле boundaries в манифесте, старый
формат читается как [T0, T_end]; импорт не изменён.
- новая проверка цепочки (make generated-history-chain-check): непарные
счётчики и однородность по каждой границе, явный статус нулевого
стыка, хвост за границей по всем четырём топикам, литералы в UTC
с микросекундами.
- документация OPERATIONS.md: глагол, предпроверка, восстановление
после сбоя, ограничение retention; в задаче 13 — решения двух слепых
ревью постановки и кода с аргументами отклонений.
- Проверка:
- make test: 204 теста генератора + 31 контракт корня, зелёные.
- make generated-history-chain-check: зелёный, 2 внутренние границы,
непарные счётчики нулевые; учебный цикл: DM 322 -> 10026 -> 19196
за два next-day подряд.
- make generated-history-runtime-check (регрессия задачи 20): зелёный.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -43,7 +43,11 @@ def test_continue_and_reset_verbs_map_to_existing_low_level_flags():
|
||||
from clickstream_generator.launch import build_launch_env
|
||||
|
||||
continue_env = build_launch_env("continue", profile_name="ci")
|
||||
reset_env = build_launch_env("reset", profile_name="ci")
|
||||
reset_env = build_launch_env(
|
||||
"reset",
|
||||
profile_name="ci",
|
||||
overrides={"GEN_MODEL_T_END": "2026-01-09T00:00:00+00:00"},
|
||||
)
|
||||
|
||||
assert continue_env["GEN_RUN_MODE"] == "live"
|
||||
assert continue_env["GEN_STATE_RESET"] == "false"
|
||||
@@ -53,6 +57,24 @@ def test_continue_and_reset_verbs_map_to_existing_low_level_flags():
|
||||
assert "GEN_MODEL_T_END" not in reset_env
|
||||
|
||||
|
||||
def test_next_day_verb_restores_snapshot_without_reset():
|
||||
"""Глагол next-day включает отдельный ограниченный режим от текущей границы."""
|
||||
from clickstream_generator.launch import build_launch_env
|
||||
|
||||
env = build_launch_env(
|
||||
"next-day",
|
||||
profile_name="ci",
|
||||
overrides={
|
||||
"GEN_MODEL_T0": "2026-01-01T00:00:00+00:00",
|
||||
"GEN_MODEL_T_END": "2026-01-03T00:00:00+00:00",
|
||||
},
|
||||
)
|
||||
|
||||
assert env["GEN_RUN_MODE"] == "next-day"
|
||||
assert env["GEN_STATE_RESET"] == "false"
|
||||
assert env["GEN_MODEL_T_END"] == "2026-01-03T00:00:00+00:00"
|
||||
|
||||
|
||||
def test_ci_profile_keeps_previous_default_backfill_window():
|
||||
"""CI-профиль сохраняет прежний 6-часовой проверочный запуск."""
|
||||
from clickstream_generator.launch import build_launch_env
|
||||
|
||||
Reference in New Issue
Block a user