feat(generator): эталонный мир зафиксирован равным стартовому
- Зачем:
- у дней 8-13 описи не нашлось читателя: обещание эталона в 14 дней
снято решением владельца 2026-08-30 (#192, этап 7 — #9).
- Что:
- резолюция перенесена в обе спеки, докстринг описи и словарь CONTEXT.md;
- добавлен тест: проигранный через CLI день совпадает с хешем описи;
- сняты замеры: пересборка описи 20,5 с, снимок 460,7 МБ, make test
176,5 с — записаны в карту проверок и таблицу бюджетов.
- Проверка:
- cd generator && make lint && make typecheck && make test (437 passed);
- git diff по data/world-inventory.json пуст.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f93c924b33
commit
c1b61d81b9
8 files changed
+88
-38
No files matched your search
@@ -532,10 +532,11 @@ Kafka день переигрывается генератором заново:
|
||||
|
||||
## 8. Эталонный мир и опись
|
||||
|
||||
В git хранится только опись эталонного мира; сам снимок (14 модельных
|
||||
дней) генерируется на месте — при `make up` и при проверках (решение
|
||||
развилки «Производительность» карты #26, подробности —
|
||||
[спека генератора](2026-08-01-generator.md), раздел 5). Опись несёт
|
||||
В git хранится только опись эталонного мира; сам снимок генерируется на
|
||||
месте — при `make up` и при проверках (решение развилки «Производительность»
|
||||
карты #26, подробности — [спека генератора](2026-08-01-generator.md),
|
||||
раздел 5). Снимок — 8 дней, совпадает со стартовым миром: обещание в 14 дней
|
||||
снято на этапе 7. Опись несёт
|
||||
паспорт мира (каноническое зерно, версия генератора), контрольные счётчики
|
||||
и хеши по дням; проверки «пустой git diff» и «пересгенерируй день N —
|
||||
сравни хеш» живут на ней. Политика версионирования артефакта (бывший туман
|
||||
@@ -555,8 +556,8 @@ Kafka день переигрывается генератором заново:
|
||||
названного читателя в опись не кладётся
|
||||
([что хранит опись](../architecture/orders/inventory.md)).
|
||||
|
||||
Снимок вырастет против v1 (ecommerce-массивы, заказы) — размер проверить
|
||||
при пересборке.
|
||||
Размер снимка замерен на этапе 7 — запись в разделе «Что проверено»
|
||||
[карты проверок](../architecture/testing.md).
|
||||
|
||||
## 9. Оценка объёма исполнения
|
||||
|
||||
|
||||
@@ -65,7 +65,8 @@
|
||||
приём на стороне хранилища.
|
||||
- **Один сериализатор, глупые приёмники.** День-функция выдаёт канонические
|
||||
байты; приёмники — файл, Kafka пачкой, Kafka с темпом.
|
||||
- **Числа.** Средний день ~50 тыс. событий; эталонный снимок — 14 дней;
|
||||
- **Числа.** Средний день ~50 тыс. событий; эталонный снимок совпадает со
|
||||
стартовым миром — 8 дней;
|
||||
в git — только опись мира; автоматических порогов по времени нет.
|
||||
|
||||
## 1. Модель мира
|
||||
@@ -358,10 +359,17 @@
|
||||
- **Средний модельный день — ~50 тыс. событий**; суточные волны с пиками до
|
||||
~2× среднего, будни/выходные; ≈8–12 тыс. сессий, 6–8 тыс. посетителей —
|
||||
правдоподобный средний магазин.
|
||||
- **Эталонный снимок — 14 дней**: две полные календарные недели, D0 —
|
||||
понедельник. Самая короткая длина, при которой есть замороженная зона за
|
||||
окном K = 7, дышащая зона и две волны недельной сезонности. Удлинение до
|
||||
месяца — дешёвый ход (пересборка описи), если понадобится.
|
||||
- **Эталонный снимок совпадает со стартовым миром — 8 дней**: понедельник
|
||||
по понедельник, полная неделя и один закрытый день за окном K = 7.
|
||||
Обещание в 14 дней снято на этапе 7 (решение владельца 2026-08-30):
|
||||
у дней 8–13 не нашлось читателя — лабы проигрывают мир дальше без описи,
|
||||
транспорт байты с описью не сверяет, а проверке «пересгенерируй день N —
|
||||
сравни хеш» день 3 годится так же, как день 13. Замеры и тесты, меряющие
|
||||
мир на окне в две недели, не меняются: мир — функция без края, окну
|
||||
замера опись не нужна. Удлинение описи остается дешевым ходом
|
||||
(пересборка) и делается, когда читатель появится — например, если
|
||||
растяжке `classes_vs_inventory` понадобится сверять больше одного
|
||||
закрытого дня.
|
||||
- **В git — только опись, снимок не хранится.** Снимок генерируется при
|
||||
создании мира и в проверках генератора: артефакт — кэш чистой функции, кэш в
|
||||
git не хранят. Опись несёт паспорт мира, счётчики и хеши по дням; проверки
|
||||
@@ -389,7 +397,7 @@
|
||||
| Операция | Ориентир |
|
||||
|---|---|
|
||||
| Генерация одного дня | 1,7–2,8 с (замер 7 августа 2026 года) |
|
||||
| Пересборка эталонного мира (14 дней + опись, без транспорта) | до минуты |
|
||||
| Пересборка эталонного мира (8 дней + опись, без транспорта) | 20,5 с (замер 30 августа 2026 года) |
|
||||
| Заливка стартового мира при `make up` (8 дней, Kafka → матвью → ODS) | 22,5 с (замер 7 августа 2026 года) |
|
||||
| Лаг живого дня | секунды |
|
||||
|
||||
@@ -925,11 +933,13 @@
|
||||
|
||||
### Опись мира и словарь
|
||||
|
||||
- **Опись мира одна и растет до эталонной** (#42, 2026-08-07; решение владельца
|
||||
при нарезке, 2026-08-01). Стартовый мир этапа 2 — первые восемь дней,
|
||||
- **Опись мира одна** (#42, 2026-08-07; эталонная длина — 8 дней, этап 7,
|
||||
2026-08-30). Стартовый мир этапа 2 — первые восемь дней,
|
||||
понедельник по понедельник: полная неделя и первый замкнутый цикл K = 7.
|
||||
`data/world-inventory.json` — та самая опись, которую обещает раздел 5, пока
|
||||
короткая; этап 7 продлит ее до 14 дней, а не заведет вторую. В JSON лежат
|
||||
`data/world-inventory.json` — та самая опись, которую обещает раздел 5.
|
||||
Этап 7 оставил ее восьмидневной: у хвоста в шесть дней не нашлось читателя
|
||||
(резолюция — в разделе 5); вырастет она продолжением этого же файла, а не
|
||||
вторым. В JSON лежат
|
||||
паспорт мира — зерно, версия генератора и хеш каталога — и строки дней с
|
||||
датой, числом событий и хешем. Опись собирает `make inventory`, свежесть
|
||||
сторожит `test_inventory.py` тем же способом, что свежесть описания выгрузки.
|
||||
|
||||
Reference in new issue
Block a user