Провести проектную сессию с владельцем и превратить её результат в спеку
второго источника, по которой потом режутся тикеты этапа 3. Тикет процессный:
результат — принятая спека и созданные тикеты, а не код. Образец — #14, тем же
порядком собрана спека генератора.
Заведён сразу после закрытия этапа 2, а не при входе в этап: пока мандата нет,
второй источник живёт только разделами мастер-спеки и выглядит забытым. В коде
от него сегодня есть один каталог товаров: топик orders не создаётся, таблиц
заказа нет, генератор слепков не написан.
Развилки
Маршрут проложен картой #69; каждая развилка живёт своим тикетом, здесь только
их список — содержание не дублируется.
#70 — приём заказов: нужен ли слепку слой сырья. Мастер-спека называет эту развилку нерешённой прямо (раздел 7).
#71 — генератор слепков: где живёт и чем связан с событиями.
#72 — расхождения A–D и опоздания: механика, доли и что обещано.
Часовые пояса в список не входят: у них свой тикет #63, и его решение — вход
для этой спеки. Слепок несёт created_at, updated_at и snapshot_date,
а dds.order партиционируется по toDate(created_at).
Порядок работы
/brainstorm-with-docs по развилкам (сначала веер, потом конвергенция) → /to-spec: спека файлом в docs/specs/ → приёмка владельцем → /to-tickets
режет тикеты этапа 3 и складывает их чек-листом в #5.
Критерии приёмки
Все пять развилок закрыты решениями с доводами; отклонённые варианты записаны, чтобы к ним не возвращаться заново.
Спека второго источника лежит файлом в docs/specs/, принята владельцем и попала в main.
Решение по приёму заказов записано так, чтобы читалось рядом с ADR 0005 — новым ADR или дополнением к нему.
Тикеты этапа 3 созданы и перечислены чек-листом в #5.
Расхождения решений с мастер-спекой внесены в неё тем же коммитом.
Границы
Код здесь не пишется — он в тикетах, которые появятся после приёмки спеки.
Заново не обсуждается решённое мастер-спекой: поля слепка, окно K = 7 как
константа мира, три статуса, два слоя дедупа (ods.order_snapshot без дедупа
плюс argMax при сборке dds.order), приоритет классов расхождений, правило
«поведение и атрибуцию считаем по трекеру, деньги — по бэкенду».
Витрины и сама сверка — этап 4 (#6): здесь только источник и его слои.
docs/specs/2026-07-30-stand-v2-realism.md: разделы 2 (заказы бэкенда),
3 (каталог), 4 (сверка purchase против заказов), 5 (мост к склейке),
7 (карта слоёв — там же абзац про нерешённую развилку приёма) и 9
(страховочные срезы: что уже применено, что в резерве);
docs/adr/0005-event-ingestion.md — чем обоснован выбор приёма для событий;
docs/architecture/storage.md — служебные колонки, конвенция суффиксов,
сроки хранения, что уже проверено на стенде;
docs/specs/2026-08-01-generator.md — детерминизм, иерархия зёрен, правило
порядка бросков;
## Родитель
#5 — Этап 3: заказы и каталог.
## Что сделать
Провести проектную сессию с владельцем и превратить её результат в спеку
второго источника, по которой потом режутся тикеты этапа 3. Тикет процессный:
результат — принятая спека и созданные тикеты, а не код. Образец — #14, тем же
порядком собрана спека генератора.
Заведён сразу после закрытия этапа 2, а не при входе в этап: пока мандата нет,
второй источник живёт только разделами мастер-спеки и выглядит забытым. В коде
от него сегодня есть один каталог товаров: топик `orders` не создаётся, таблиц
заказа нет, генератор слепков не написан.
## Развилки
Маршрут проложен картой #69; каждая развилка живёт своим тикетом, здесь только
их список — содержание не дублируется.
- #70 — приём заказов: нужен ли слепку слой сырья. Мастер-спека называет эту развилку нерешённой прямо (раздел 7).
- #71 — генератор слепков: где живёт и чем связан с событиями.
- #72 — расхождения A–D и опоздания: механика, доли и что обещано.
- #73 — мост к склейке: `user_id` и двухкуковые пары.
- #74 — место заказов в стартовом мире.
Часовые пояса в список не входят: у них свой тикет #63, и его решение — вход
для этой спеки. Слепок несёт `created_at`, `updated_at` и `snapshot_date`,
а `dds.order` партиционируется по `toDate(created_at)`.
## Порядок работы
`/brainstorm-with-docs` по развилкам (сначала веер, потом конвергенция) →
`/to-spec`: спека файлом в `docs/specs/` → приёмка владельцем → `/to-tickets`
режет тикеты этапа 3 и складывает их чек-листом в #5.
## Критерии приёмки
- [ ] Все пять развилок закрыты решениями с доводами; отклонённые варианты записаны, чтобы к ним не возвращаться заново.
- [ ] Спека второго источника лежит файлом в `docs/specs/`, принята владельцем и попала в main.
- [ ] Решение по приёму заказов записано так, чтобы читалось рядом с ADR 0005 — новым ADR или дополнением к нему.
- [ ] Тикеты этапа 3 созданы и перечислены чек-листом в #5.
- [ ] Расхождения решений с мастер-спекой внесены в неё тем же коммитом.
## Границы
- Код здесь не пишется — он в тикетах, которые появятся после приёмки спеки.
- Заново не обсуждается решённое мастер-спекой: поля слепка, окно K = 7 как
константа мира, три статуса, два слоя дедупа (`ods.order_snapshot` без дедупа
плюс `argMax` при сборке `dds.order`), приоритет классов расхождений, правило
«поведение и атрибуцию считаем по трекеру, деньги — по бэкенду».
- Витрины и сама сверка — этап 4 (#6): здесь только источник и его слои.
- Пересборка эталонного мира целиком — этап 7 (#9).
## Сначала прочитать
- `docs/specs/2026-07-30-stand-v2-realism.md`: разделы 2 (заказы бэкенда),
3 (каталог), 4 (сверка `purchase` против заказов), 5 (мост к склейке),
7 (карта слоёв — там же абзац про нерешённую развилку приёма) и 9
(страховочные срезы: что уже применено, что в резерве);
- `docs/adr/0005-event-ingestion.md` — чем обоснован выбор приёма для событий;
- `docs/architecture/storage.md` — служебные колонки, конвенция суффиксов,
сроки хранения, что уже проверено на стенде;
- `docs/specs/2026-08-01-generator.md` — детерминизм, иерархия зёрен, правило
порядка бросков;
- #63 — часовые пояса, вход для этой спеки.
Тикет писался по образцу #14 — мандата, который на этапе 2 существовал сам по
себе почти двое суток и только потом обзавёлся картой #26. Здесь мандат и карта
появились в один вечер, и карта #69 забрала всё: пункт назначения — это «что
сделать», заметки — «сначала прочитать» и правила работы, «за границей карты» —
границы. Оставшись рядом, мандат сообщал бы читателю, что у этапа два входа,
хотя вход один.
Что переехало перед закрытием:
список «решённое мастер-спекой заново не обсуждается» (поля слепка, K = 7,
три статуса, два слоя дедупа, приоритет классов, «поведение по трекеру,
деньги по бэкенду») — в #69, раздел «За границей карты»;
Срезан как лишний, через час после заведения.
Тикет писался по образцу #14 — мандата, который на этапе 2 существовал сам по
себе почти двое суток и только потом обзавёлся картой #26. Здесь мандат и карта
появились в один вечер, и карта #69 забрала всё: пункт назначения — это «что
сделать», заметки — «сначала прочитать» и правила работы, «за границей карты» —
границы. Оставшись рядом, мандат сообщал бы читателю, что у этапа два входа,
хотя вход один.
Что переехало перед закрытием:
- список «решённое мастер-спекой заново не обсуждается» (поля слепка, K = 7,
три статуса, два слоя дедупа, приоритет классов, «поведение по трекеру,
деньги по бэкенду») — в #69, раздел «За границей карты»;
- «сначала прочитать» целиком — в заметки #69;
- порядок работы brainstorm → спека → приёмка → нарезка — в пункт назначения #69;
- требование записать решение по приёму рядом с ADR 0005 — в #70, где ему и
место: это часть самой развилки, а не мерка над ней.
Критерии приёмки не переезжали: четыре из пяти повторяли пункт назначения
карты и её закрытых детей.
Карточка этапа #5 теперь ссылается на #69.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Родитель
#5 — Этап 3: заказы и каталог.
Что сделать
Провести проектную сессию с владельцем и превратить её результат в спеку
второго источника, по которой потом режутся тикеты этапа 3. Тикет процессный:
результат — принятая спека и созданные тикеты, а не код. Образец — #14, тем же
порядком собрана спека генератора.
Заведён сразу после закрытия этапа 2, а не при входе в этап: пока мандата нет,
второй источник живёт только разделами мастер-спеки и выглядит забытым. В коде
от него сегодня есть один каталог товаров: топик
ordersне создаётся, таблицзаказа нет, генератор слепков не написан.
Развилки
Маршрут проложен картой #69; каждая развилка живёт своим тикетом, здесь только
их список — содержание не дублируется.
user_idи двухкуковые пары.Часовые пояса в список не входят: у них свой тикет #63, и его решение — вход
для этой спеки. Слепок несёт
created_at,updated_atиsnapshot_date,а
dds.orderпартиционируется поtoDate(created_at).Порядок работы
/brainstorm-with-docsпо развилкам (сначала веер, потом конвергенция) →/to-spec: спека файлом вdocs/specs/→ приёмка владельцем →/to-ticketsрежет тикеты этапа 3 и складывает их чек-листом в #5.
Критерии приёмки
docs/specs/, принята владельцем и попала в main.Границы
константа мира, три статуса, два слоя дедупа (
ods.order_snapshotбез дедупаплюс
argMaxпри сборкеdds.order), приоритет классов расхождений, правило«поведение и атрибуцию считаем по трекеру, деньги — по бэкенду».
Сначала прочитать
docs/specs/2026-07-30-stand-v2-realism.md: разделы 2 (заказы бэкенда),3 (каталог), 4 (сверка
purchaseпротив заказов), 5 (мост к склейке),7 (карта слоёв — там же абзац про нерешённую развилку приёма) и 9
(страховочные срезы: что уже применено, что в резерве);
docs/adr/0005-event-ingestion.md— чем обоснован выбор приёма для событий;docs/architecture/storage.md— служебные колонки, конвенция суффиксов,сроки хранения, что уже проверено на стенде;
docs/specs/2026-08-01-generator.md— детерминизм, иерархия зёрен, правилопорядка бросков;
ddmitry referenced this issue2026-08-07 20:34:04 +03:00
ddmitry referenced this issue2026-08-07 20:43:43 +03:00
Срезан как лишний, через час после заведения.
Тикет писался по образцу #14 — мандата, который на этапе 2 существовал сам по
себе почти двое суток и только потом обзавёлся картой #26. Здесь мандат и карта
появились в один вечер, и карта #69 забрала всё: пункт назначения — это «что
сделать», заметки — «сначала прочитать» и правила работы, «за границей карты» —
границы. Оставшись рядом, мандат сообщал бы читателю, что у этапа два входа,
хотя вход один.
Что переехало перед закрытием:
три статуса, два слоя дедупа, приоритет классов, «поведение по трекеру,
деньги по бэкенду») — в #69, раздел «За границей карты»;
место: это часть самой развилки, а не мерка над ней.
Критерии приёмки не переезжали: четыре из пяти повторяли пункт назначения
карты и её закрытых детей.
Карточка этапа #5 теперь ссылается на #69.