From fa93aef150d4c13df2ba51eed3dde20ffbc48728 Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Sun, 14 Jun 2026 15:31:11 +0300 Subject: [PATCH] =?UTF-8?q?docs(context):=20=D0=B3=D0=BB=D0=BE=D1=81=D1=81?= =?UTF-8?q?=D0=B0=D1=80=D0=B8=D0=B9=20=D0=B8=20=D1=81=D0=BF=D0=B5=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=B2=20=D1=81=D0=BE=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B5=20=D1=81=20ADR-0006?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - ADR-0006 сделал генерацию единственным источником аналитики, а статический сид — архивным; глоссарий и спеки это ещё не отражали. - Что: - CONTEXT.md: «статический сид» переименован в «архивный статический сид» (короткое имя сохранено), описан как временная кладовка значений с целью полного вывода; «стартовая история» получила синонимы «стартовый сид» и «новый сид»; раздел «Слои данных» отмечает переход аналитики на генерацию. - мат-спека: разделы «Персистентность через рестарты» и «Воспроизводимость» помечены как переописанные в спеке модельного времени (ссылкой, без повтора). - спека модельного времени: синоним «стартовый сид» добавлен в определение и в заметку о влиянии на документацию. - Проверка: - git diff: термины и перекрёстные ссылки читаются непротиворечиво; ADR не правились (статус «архивный» не переносится в документы до ADR-0006). Co-Authored-By: Claude Opus 4.8 (1M context) --- CONTEXT.md | 31 +++++++++++++------ docs/specs/2026-06-10-generator-math-model.md | 14 +++++++++ ...enerator-model-time-and-startup-history.md | 8 ++--- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/CONTEXT.md b/CONTEXT.md index 408f595..7eefec1 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -73,15 +73,23 @@ user_domain_id (пользователь, постоянный) - **`GEN_SEED`** — зерно ГПСЧ генератора (детерминизм случайных решений). Не данные, а число. -- **статический сид** (`data/*.jsonl`) — учебный демо-датасет режима `bootstrap` - (уроки 0–6) и **калибровочный эталон** генератора (профиль ниже — опорные - цифры). По мере появления «стартовой истории стенда» его учебная роль смещается - на **dev-фикстуру и эталон** (быстрый повторяемый вход для пайплайна STG→DM, не - зависящий от генератора); смещение зафиксировано как будущее направление в - ADR-0005, на время разработки сид и поток сосуществуют. -- **стартовая история стенда** — сгенерированное прошлое (заливка `K → ∞` + - заморозка состояния), с которого живой стенд стартует непрерывно. Ещё не - строим; см. ADR-0005. +- **архивный статический сид** (короткое имя — «статический сид», файлы + `data/*.jsonl`) — учебный демо-датасет режима `bootstrap` (уроки 0–6). По + [ADR-0006](./docs/adr/0006-generation-as-sole-analytics-source.md) + он **выведен из аналитики и стал архивным**: витрины и дашборды переводятся на + генерацию. У сида осталась одна временная роль — **кладовка готовых значений** + (браузеры, страны, устройства, метки кампаний), откуда генератор берёт «фактуру» + для событий. Цель — **совсем убрать файл**, когда генератор научится придумывать + фактуру сам (отдельная спека). Профиль ниже — теперь опорные цифры и список + известных расхождений, а не эталон для подгонки (подгонять генерацию под сид + число-в-число в ADR-0006 отклонено). +- **стартовая история стенда** (синонимы — **«стартовый сид»** и **«новый сид»**; + это не новые значения слова, а та же сущность) — сгенерированное прошлое (заливка `K → ∞` + + заморозка состояния), с которого живой стенд стартует непрерывно. По ADR-0006 + она **несущая**: именно с неё свежий стенд получает историю с первой минуты. + Механизм проектируется — спека + [модельного времени](./docs/specs/2026-06-14-generator-model-time-and-startup-history.md); + решение про часы — [ADR-0005](./docs/adr/0005-generator-model-clock.md). ### Модельное время и масштаб (×K) @@ -132,4 +140,7 @@ user_domain_id (пользователь, постоянный) ## Слои данных `STG → ODS → DDS → DM` — см. [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md). -Витрины (`dm.*`) и дашборд Superset строятся на статическом сиде, не на потоке. +Сейчас витрины (`dm.*`) и дашборд Superset строятся на статическом сиде. По +[ADR-0006](./docs/adr/0006-generation-as-sole-analytics-source.md) целевой источник +аналитики — генерация (стартовая история и живой поток); перевод загрузки, витрин +и дашбордов на неё входит в текущую работу, детальный план — отдельной спекой. diff --git a/docs/specs/2026-06-10-generator-math-model.md b/docs/specs/2026-06-10-generator-math-model.md index c4d5468..1dec1b8 100644 --- a/docs/specs/2026-06-10-generator-math-model.md +++ b/docs/specs/2026-06-10-generator-math-model.md @@ -181,6 +181,13 @@ ## Персистентность через рестарты +> **Приведено в соответствие с модельным временем.** Раздел написан от настенных +> часов. Правила сохранения и восстановления состояния переописаны в спеке +> [модельного времени](./2026-06-14-generator-model-time-and-startup-history.md) +> (§«Сохранение и восстановление состояния»): те же 30 минут отсчитываются по +> часам генератора. Ниже — исходная формулировка, оставлена как след решения; при +> расхождении главенствует новая спека. + - Расширить состояние в compact-топике `generator_state` (новая `version`): к тику и состоянию ГПСЧ добавляются **популяция** (компактно: идентификаторы, профили, время последней активности) и **активные визиты**. @@ -198,6 +205,13 @@ ## Воспроизводимость (`GEN_SEED`) +> **Приведено в соответствие с модельным временем.** Оговорка ниже — «запуск в +> другой час дня даёт другой поток» — снята: с модельными часами дневной +> коэффициент считается от точки отсчёта `T0`, а не от настенных часов. +> Переописано в спеке +> [модельного времени](./2026-06-14-generator-model-time-and-startup-history.md) +> (§«Повторяемость»). Ниже — исходная формулировка, оставлена как след решения. + При одном `GEN_SEED` **и одинаковых условиях запуска** детерминирована последовательность решений: какие пользователи родились, какие визиты открылись, какие пути выпали. Оговорка про условия существенна: часовой коэффициент и diff --git a/docs/specs/2026-06-14-generator-model-time-and-startup-history.md b/docs/specs/2026-06-14-generator-model-time-and-startup-history.md index 852b8c7..d3179bf 100644 --- a/docs/specs/2026-06-14-generator-model-time-and-startup-history.md +++ b/docs/specs/2026-06-14-generator-model-time-and-startup-history.md @@ -98,8 +98,8 @@ ADR-0005 решил отвязать время генератора от реа сгенерировать события этого отрезка. На выходе — события за `[T0, T_end]` и **слепок состояния** генератора на момент `T_end`. -События плюс слепок и есть **стартовая история** («новый сид» — синоним, новое -значение слова «сид» не заводим). При создании стенда это прошлое заливается, и +События плюс слепок и есть **стартовая история** («стартовый сид» или «новый сид» — +синонимы, новое значение слова «сид» не заводим). При создании стенда это прошлое заливается, и генератор готов продолжить ровно с `T_end`. Стенд сразу живёт с готовой историей — с настоящей пирамидой «пользователей меньше, чем визитов, визитов меньше, чем событий», без вырождения статического сида, где пользователей ровно столько же, @@ -192,8 +192,8 @@ runbook «проверка генератора на стенде». пометить как переописанные в модельном времени этой спекой (ссылкой, без повтора). - **ADR-0005:** направление «стартовая история» — отмечено как запущенное. -- **CONTEXT.md:** «новый сид» = «стартовая история стенда» (синоним, не новое - значение); роль статического сида — по ADR-0006. +- **CONTEXT.md:** «стартовый сид» / «новый сид» = «стартовая история стенда» + (синонимы, не новое значение); роль статического сида — по ADR-0006. - **Будущий runbook** «проверка генератора на стенде» — шаги шага 2. - **`generator/README.md`, `docs/OPERATIONS.md`** — при реализации: скорость хода часов, ×K, стартовая история, проверки шага 1.