feat(generator): эталонный мир в git и import по умолчанию

- Зачем:
  - менти собирал мир генерацией (минуты и десятки минут CPU); теперь
    готовый трёхдневный мир загружается импортом за ~2 минуты, и числа
    у всех менти совпадают число-в-число (issue #3).
- Что:
  - артефакт data/startup_history/reference-world.json.xz в git:
    3 модельных дня daily-wave, ~850 МБ JSON → 32 МБ xz;
  - чтение и запись артефакта понимают .xz потоково (lzma); пустое поле
    artifact_path в пульте и make startup-history-import читают эталон;
  - длительность профиля daily-wave стала 3d — в тон эталонному миру;
  - предпроверка чистого стенда ставит зависимости генератора через uv;
    экспорт и импорт разведены отдельными переменными Makefile;
  - доки и runbook обновлены; новые контрактные тесты: xz round-trip
    и дефолтные пути артефакта.
- Проверка:
  - make test (210 + 31) и make lint зелёные; импорт на чистом стенде
    за 2м03с, manifest совпал (280437 событий), Superset-проверка
    зелёная; независимое ревью — APPROVED.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 18:49:02 +03:00
co-authored by Claude Fable 5
parent b87dde79b7
commit 10ee1a1cb6
21 changed files with 165 additions and 35 deletions
@@ -60,8 +60,8 @@
1. **Эталонный мир**: 3 модельных дня на профиле `daily-wave` (суточная
волна видна, есть «средний» день и сравнение день-к-дню). Собирает
мейнтейнер один раз через `backfill`; хранится в git по фиксированному
пути `data/startup_history/` сжатым `xz` (~13 МБ; замер 2026-07-19:
`xz -9e` жмёт артефакт в 48 раз). Формат не меняется: `import` требует
пути `data/startup_history/` сжатым `xz` (факт 2026-07-22: ~850 МБ
сырой JSON, ~32 МБ после `xz -9e`). Формат не меняется: `import` требует
`raw_topics`, сжатие снимает вопрос размера. Паттерн-образец —
`airflow-greenplum-solution` (сид `demo.sql.xz` в git, стрим-распаковка
при загрузке).