fix(generator): правки по двум линиям ревью плана состава

- Зачем:
  - ревью нашло два места, где код и документы говорили неправду, и
    несколько мест, где имена или комментарии вводили в заблуждение.
- Что:
  - обещание докстроки `seeds.py` подкреплено тестом: адрес в дереве
    даёт тот же подпоток, что цепочка `spawn`.
  - в тесте гарантии пар убран сторож-тавтология, вместо него проверка,
    что заказы назначены с двух разных кук.
  - `Cohort.visitors_on` — «кто пришёл в день D» спрашивается у когорты,
    а не собирается снаружи из четырёх её массивов.
  - имена: `CLIENT_ID_LIMIT`, `_RETURN_*_CUMULATIVE`, `first_of_day`,
    `WEEKLY_PROFILE_PERCENT` — профиль недели один на весь мир, по нему
    же пойдёт трафик дня-функции (#39).
  - спека: в дерево зёрен внесена ветвь предыстории; окно активности —
    от первого визита человека, общее на обе куки (иначе загляд назад
    ленивой формы удваивается); оценка накопленной аудитории больше не
    спорит с измерением.
  - CONTEXT.md: «подпоток» и «конфигурация мира».
- Проверка:
  - make test (296), make lint, make typecheck; мутации перепроверены
    после переноса среза дня в `Cohort`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-02 12:33:27 +03:00
co-authored by Claude Opus 5
parent abac6afe18
commit 2502f906a8
8 changed files with 98 additions and 52 deletions
+7 -5
View File
@@ -7,7 +7,8 @@
Числа решены спекой и связаны между собой; связки сторожат тесты
`test_world.py`, чтобы правка одного числа не рассыпала вывод соседнего.
Здесь только чистые данные — как в контракте схемы, никакой логики.
Здесь только числа — как в контракте схемы, никакого поведения; длинные
таблицы записаны коротко, но остаются таблицами.
"""
from datetime import date
@@ -23,10 +24,11 @@ ORIGIN = date(2026, 6, 1)
# добавляют к нему меньше процента.
DAILY_INFLUX = 3_800
# Недельная волна притока, проценты от среднего: понедельник … воскресенье.
# Модулируется тем же профилем, что трафик, — иначе доля новичков скакала бы
# по дням недели. В сумме ровно 700: за неделю средний день остаётся средним.
WEEKLY_INFLUX_PERCENT = (105, 108, 107, 105, 95, 88, 92)
# Недельная волна мира, проценты от среднего: понедельник … воскресенье.
# Профиль один на весь мир: по нему идёт приток, по нему же пойдёт трафик
# дня-функции — иначе доля новичков скакала бы по дням недели. В сумме ровно
# 700: за неделю средний день остаётся средним.
WEEKLY_PROFILE_PERCENT = (105, 108, 107, 105, 95, 88, 92)
# Разброс притока изо дня в день, проценты: ровный приток выдал бы себя в
# первом же графике по дням.