From 34267e8494df49f03610a480bd7c0c828026a0f0 Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Sun, 16 Aug 2026 12:09:11 +0300 Subject: [PATCH] =?UTF-8?q?docs(spec):=20=D1=80=D0=B0=D0=BC=D0=BA=D0=B0=20?= =?UTF-8?q?=E2=80=94=20=D1=87=D0=B5=D0=BC=20=D0=BC=D0=B5=D1=80=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F=20=D0=B3=D0=B5=D0=BD=D0=B5=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зачем: взгляд владельца на генератор жил только в разговорах, и каждый следующий агент восстанавливал его заново или не восстанавливал вовсе. Без него решения по генератору принимаются не по тому критерию: внутренняя стройность вместо правдоподобия данных на выходе. Что: новый раздел «Чем меряется генератор» сразу после «Зачем» — пять утверждений рамки. Генератор меряется выходом, а не устройством; менти внутрь не смотрит, поэтому конструкция оправдана только наблюдаемым эффектом; повторимы эффекты, а не числа, и хеши описи обещают видимость сдвига, а не постоянство чисел; цена ошибки мала, поэтому оборона дороже ошибки не заводится; сложность изолирована службой ради дешевизны правки. Рамка шире этапа 2, поэтому спеки следующих этапов ссылаются на неё, а не копируют. Проверка: правка только текстовая, кода не касается. Co-Authored-By: Claude Opus 5 (1M context) --- docs/specs/2026-08-01-generator.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/specs/2026-08-01-generator.md b/docs/specs/2026-08-01-generator.md index b874ab4..913817d 100644 --- a/docs/specs/2026-08-01-generator.md +++ b/docs/specs/2026-08-01-generator.md @@ -25,6 +25,32 @@ касается этапа 7 — расширение подтверждено владельцем в резолюции «Производительности». +## Чем меряется генератор + +Рамка владельца, по которой принимались решения ниже. Она шире этапа 2 и +живёт дальше него: спеки следующих этапов ссылаются сюда, а не переписывают. + +- **Генератор меряется тем, что приезжает на выход, а не устройством + внутри.** Он играет два источника с разными темпами: поток Метрики и + ночную выгрузку бэкенда магазина. Любое внутреннее решение отвечает перед + одним вопросом — правдоподобны ли данные на выходе. +- **Менти внутрь не смотрит.** Он видит внешние эффекты и по ним составляет + представление, как работает магазин и обо что там спотыкаются. Значит, + конструкция внутри оправдана только наблюдаемым эффектом: без него это + сложность, за которую никто не заплатил. +- **Повторимы должны быть эффекты, а не конкретные числа.** Правка свойств + мира сдвигает почти все числа разом — генератор случайных чисел выдаёт + другую последовательность. Опираться на конкретные числа поэтому нечем. + Хеши описи обещают не постоянство чисел, а то, что их сдвиг не пройдёт + молча: пересобрал опись — увидел diff. +- **Цена ошибки здесь мала.** В худшем случае испорчен урок, и чинится он + правкой генератора после взгляда на получившиеся распределения. Оборона, + которая дороже ошибки, не заводится. +- **Сложность изолирована нарочно.** Генератор вынесен отдельной службой, + чтобы его сложность не расползалась по стенду. Плата за изоляцию — + дешевизна правки: выбирается устройство, которое дёшево менять, а не то, + которое всё предусмотрело. + ## Целевая картина одним взглядом - **Мир — функция, не состояние.** Состав мира — чистая функция зерна;