docs(generator): добавлена мат-спека модели и исправлен профиль сида

- Зачем:
  - закрыть Open questions спеки формы доработки перед передачей на
    реализацию; адверсариальное ревью показало, что прежние ориентиры
    (популяция/паузы/интенсивность) взаимно несовместимы, а документы
    опираются на неверный факт о сиде («1..7 событий на визит»).
- Что:
  - добавлена docs/specs/2026-06-10-generator-math-model.md: марковская
    цепочка по страницам, формула связи «популяция-интенсивность-пауза»
    (λ по умолчанию 30/мин), кулдаун возврата, правило 30 минут на рестарт,
    критерии приёмки.
  - в CONTEXT.md добавлен профиль сид-датасета (полный замер: длины визитов
    1..27, медиана 10, конверсия 25%, петли и события после /confirmation)
    и исправлено ложное «разброс времени внутри click_id <= 1 мин».
  - исправлен факт «1..7 событий» в KNOWN_ISSUES.md и ADR-0004; критерии
    Validation спеки формы доработки приведены к фактам сида.
- Проверка:
  - перекрёстные ссылки между спеками/ADR/CONTEXT.md открываются; цифры
    профиля сида воспроизводятся скриптом подсчёта по полным data/*.jsonl.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Dmitry Dementiev
2026-06-10 17:32:47 +03:00
co-authored by Claude Fable 5
parent bce1ded9c4
commit 6efa031023
5 changed files with 292 additions and 14 deletions
@@ -49,9 +49,10 @@
общим device/geo), а не штампуется на каждое событие.
- **Время событий внутри сессии монотонно растёт** (правдоподобный путь по
страницам), а не равно `now()` для всего батча.
- **Правдоподобная воронка** по `page_url_path`: затухающая последовательность
страниц (`/home → … → /confirmation`), где до терминального шага доходит
правдоподобно малая доля — согласованно с дашбордом и сидом.
- **Правдоподобная воронка** по `page_url_path`: путь по страницам
(`/home → … → /confirmation`), где число визитов затухает от шага к шагу,
а до последнего шага воронки доходит меньшинство (в сиде ~25%) —
согласованно с дашбордом и сидом.
- Сохранена модель интенсивности (жизнеподобные колебания нагрузки).
- Встраивается в курс как **урок 7 «Система живёт»**, сосуществует с bootstrap-сидом
и уроками 06.
@@ -98,8 +99,9 @@
3. **События сессии.** Сессия порождает 1..M событий, разделяющих `click_id`,
**упорядоченных по монотонно растущему времени**, образующих правдоподобный
путь по воронке страниц (`page_url_path`: `/home → … → /confirmation`), где до
терминального шага доходит малая доля. (Вводить ли разнообразие `event_type`
сверх `pageview` — открытый вопрос, см. ниже.)
последнего шага воронки доходит меньшинство визитов (~25%, как в сиде).
(Вводить ли разнообразие `event_type` сверх `pageview` — открытый вопрос,
см. ниже.)
4. **Интенсивность.** Поверх иерархии работает сохранённая модель интенсивности —
сколько событий и когда (Poisson + дневной коэффициент + jitter).
@@ -136,11 +138,14 @@
- `uniqExact(user_domain_id) < uniqExact(click_id) < count(event_id)`
пирамида не вырождена (есть возвраты и мультисобытийные сессии).
- Внутри одного `click_id` несколько событий с **возрастающим** `event_ts`.
- У `click_id` с несколькими событиями `event_ts` строго **возрастает**;
мультисобытийные визиты составляют заметную долю потока (одностраничные
визиты-отказы допустимы и правдоподобны).
- Один `click_id` принадлежит ровно одному `user_domain_id`; у пользователя
бывает несколько `click_id`.
- Воронка по `page_url_path` затухает (доля доходящих до `/confirmation`
правдоподобно мала), терминальный шаг — `/confirmation`.
- Воронка по `page_url_path` затухает от шага к шагу; доля визитов, доходящих
до `/confirmation`, согласована с сидом (~25%). `/confirmation` — последний
шаг воронки, но визит может продолжаться и после него (как в сиде).
- Поток крутится на слабом железе при дефолтном rate без деградации стенда.
- `GEN_SEED` даёт воспроизводимый поток.
@@ -157,6 +162,12 @@
## Open questions (→ follow-up-спека по математике)
> **Закрыто 2026-06-10:** все вопросы ниже решены в
> [спеке математической модели](./2026-06-10-generator-math-model.md)
> (распределения, ротация популяции, инвариант пауз вместо session-timeout,
> активные сессии как состояние, персистентность, воспроизводимость;
> `event_type` остаётся 100% `pageview`). Список сохранён для истории.
- Конкретные распределения: события на сессию, сессии на пользователя за период,
межсессионные интервалы.
- **Вводить ли разнообразие `event_type`** (purchase/add_to_cart/click) сверх