Зачем: - дать описи контрольные числа для закрытых дней заказного окна; - зафиксировать словарь наблюдаемых классов без изменения самого мира. Что: - посчитаны match, cancelled и amount_delta с приоритетом отмены; - счётчики добавлены только к дням с закрытым окном; - опись, тесты и документация приведены к новому формату. Проверка: - make lint; - make typecheck; - make test — 429 passed; - uv run pytest tests/test_inventory.py -q — 3 passed после ревью.
31 lines
2.9 KiB
Markdown
31 lines
2.9 KiB
Markdown
# Что хранит опись
|
|
|
|
Резолюции развилок [«Расхождения A–D и опоздания: механика, доли и что
|
|
обещано»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/72)
|
|
и [«Места заказов в стартовом
|
|
мире»](https://git.dementev.space/ddmitry/clickstream-data-platform/issues/74).
|
|
Словарь описи — растяжка-хеш против опоры-счётчика — задан «Чем меряется
|
|
генератор» в [спеке генератора](../../specs/2026-08-01-generator.md) и
|
|
термином «Опись мира» в [CONTEXT.md](../../../CONTEXT.md).
|
|
|
|
> Опись хранит только то, чего движение мира не меняет.
|
|
> Хеш кладём всегда, счётчик — только когда назван его читатель.
|
|
|
|
- **У каждого отправленного слепка — своя строка с хешем байтов.** Байты
|
|
слепка не покрыты хешами дней ни при каком раскладе подпотоков — это второй
|
|
артефакт мира. Побайтовое обещание («слепок переснимается и даёт те же
|
|
байты») опись начинает сторожить.
|
|
- **Счётчики классов расхождений — наблюдаемых, после приоритета**, по
|
|
итоговой судьбе заказов дня. В строке закрытого дня поле `orders` хранит
|
|
число заказов каждого класса; пока окно открыто, поля нет. При N сыгранных
|
|
днях закрыты N − 7 (день d закрывается слепком d + 6, а последний
|
|
отправленный слепок несёт день N − 2). Для этих счётчиков запланирована
|
|
проверка `classes_vs_inventory` из DQ-звена этапа 4.
|
|
- **Контрольные числа идентичности не заводятся вовсе**: uniq известных
|
|
пользователей и число двухкуковых пар растут, пока мир едет, — опоры из них
|
|
не выходит; генератор сторожит хеш, транспорт — счёт событий.
|
|
- **Опись описывает мир, а не доставку.** Работа генератора кончается на
|
|
Kafka: дошли ли байты до `ods.order` — вопрос стенда и его
|
|
проверок. Поэтому счёта строк у слепка в описи нет; понадобится проверка
|
|
приёма заказов — число заведётся вместе с ней.
|