- Зачем:
- спека разрослась до 1058 строк, а журнал решений в разделе 9 читался
только целиком; агентам и людям нужен дешевый адресный заход к
основаниям решений генератора.
- Что:
- заведены ADR 0015 (пояс счетчика), 0016 (паспорт куки) и 0017 (номер
заказа); четыре адресные ссылки на «раздел 9» перешиты на них.
- раздел 9 пересобран в 11 тематических подразделов с датами и тикетами
у каждого решения и закрыт пометкой о заморозке; устаревшие
промежуточные замеры свернуты до указателей на актуальные.
- строка статуса в шапке отмечает закрытие спеки как документа этапа 2.
- Проверка:
- wc -l docs/specs/2026-08-01-generator.md (951, было 1058);
rg -n 'раздел[а-яё]* 9|разделы 8 и 9' docs -g '*.md' — 18 попаданий,
все классифицированы; разделы 1-8 нетронуты (сверка хешем).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3.5 KiB
Генератор кликстрима
Путеводитель показывает, как пройти генератор от корневого зерна до двух выходов дня, не пересказывая код и спеки.
Целевая картина одним взглядом
- Подпоток определяется местом в дереве, а мир внутри подпотока — порядком бросков — дерево зерен и порядок бросков.
- Мир поднимает только когорты окна, нужные запрошенному дню — ленивость мира.
- Устройство и город принадлежат куке на всю жизнь и потому решаются планом состава — паспорт куки.
- Выбор по весам сведен к целым броскам и арифметике интервалов — целочисленная случайность.
- Торговля получает готовые строки страниц и возвращает поток событий вместе с покупками для бэкенда — шов торговых событий.
- Сутки принадлежат поясу счетчика, а
UTCEventTimeостается абсолютной меткой — время модельного дня.
flowchart LR
seed["Корневое зерно"] --> streams["Подпотоки"]
streams --> cohorts["Когорты"]
cohorts --> audience["Аудитория дня"]
audience --> visits["Визиты"]
visits --> output["Выход day.stream"]
output --> events["Поток событий"]
output --> backend["Заказы дня<br/>orders.of_day"]
За правой ветвью начинается отдельный набор документов — устройство заказов.
Живой проход
Из каталога generator/ одна команда собирает канонический D0 и показывает
все стадии на одном экране:
make demo
Когорту и аудиторию пример получает через открытый интерфейс плана, а визиты
считает группировкой выходных строк по VisitID. Код прохода —
demo.main.
Родословная
Устройство генератора и основания решений записаны в спеке этапа 2, а границы двух источников и склейки — в мастер-спеке стенда. Основания трех решений записаны в ADR 0015, ADR 0016 и ADR 0017, а спека этапа 2 закрыта. Путеводитель появился по тикету #48: он отвечает на другой вопрос — как пройти принятое устройство по коду.