docs(generator): зафиксирована модель времени генератора (ADR-0005)

- Зачем:
  - инвариант «время генератора ≡ реальное ×1» неудобен для учебного плана:
    медленные явления (возвраты, воронка) не успеть показать на уроке, а
    историческую глубину живой генератор не создаёт.
- Что:
  - добавлен ADR-0005: модельные часы отвязаны от настенного времени, режимы
    (живой ×1 / ускоренный ×K / заливка) — драйверы одного шва, правило 30 минут
    переопределено в модельном времени; сид-продолжение помечено как будущее.
  - в CONTEXT.md разведены три значения «сида» и добавлен термин модельного
    времени и масштаба ×K.
  - добавлен handoff с отложенным ревью петли и реконсиляцией мат-спеки.
- Проверка:
  - прочитать docs/adr/0005-generator-model-clock.md и раздел «Три значения
    слова сид» в CONTEXT.md; git log -1.
This commit is contained in:
Dmitry Dementiev
2026-06-11 18:37:27 +03:00
parent 2eaeda3308
commit 341637c810
3 changed files with 218 additions and 0 deletions
@@ -0,0 +1,86 @@
# Handoff: ADR про модельное время генератора + отложенное ревью петли
Дата: 2026-06-11
Ветка: `feature/data-generator`
Жанр: одноразовый handoff по [ADR-0003](../../docs/adr/0003-handoffs-in-scratch.md).
## Зачем этот handoff
Сессия с Fable шла в стиле brainstorm-with-docs про **модельное время
генератора**. Параллельно идёт эксперимент: автономная петля субагентов Кодекс
(координатор + worker + reviewer) доделывает срез генератора (задачи 06→07).
Эти две линии **намеренно разделены** — пересмотр времени не правит то, что петля
строит на реал-тайм-модели. Handoff фиксирует, что уже сделано и что осталось,
чтобы не потерять контекст в новой сессии.
## Что сделано в этой сессии (durable, не дублирую — см. файлы)
- Создан **[ADR-0005](../../docs/adr/0005-generator-model-clock.md)** «Модельные
часы генератора, отвязанные от настенного времени». Все решения там; кратко:
модельное время расцеплено с `now()`; режимы (живой ×1 / ускоренный ×K /
заливка `K → ∞`) — драйверы поверх одного шва; живой стенд масштабируется ×K
(дефолт ×1); правило 30 минут переопределяется в **модельном** времени с
параметрическим origin возобновления; «стартовая история стенда»
(сгенерированное прошлое + заморозка state v2) — **будущее направление, ещё не
строим**.
- Правки **[`CONTEXT.md`](../../CONTEXT.md)** (глоссарий): разведены три значения
слова «сид» (`GEN_SEED` / статический сид / стартовая история стенда) и добавлен
термин «модельное время и масштаб ×K».
**Эти изменения (ADR-0005 + CONTEXT.md) ещё НЕ закоммичены.** Их коммит — выход
брейншторма пользователя, его нельзя мешать с коммитами кода от петли (06/07).
Отдельный docs-коммит.
## Открытые線 для следующей сессии
### 1. Отложенное ревью результата автономной петли (приоритет)
Делать **после** того, как петля закоммитит задачу 07. Это read-only ревью.
Измерительный лист — в памяти проекта
`memory/ralph-loop-experiment-generator.md`. Главное:
- **A (главный индикатор эксперимента):** ссылочная целостность при
`restore_state`. `_validate_v2_payload` проверяет только форму, не ссылки.
Структурно-валидный state v2 с висячей ссылкой визит→пользователь
(`generator/src/clickstream_generator/runtime.py:283`) или пользователь→словарь
(`runtime.py:253/255`) проходит `from_dict_safe` и роняет `restore_state` без
обёртки try→fresh. Прогноз: петля это **пропустит** (слепые зоны внутри одной
линии Кодекс скоррелированы). Проверить гипотезу локально структурой с висячей
ссылкой (как пользователь проверял оценку снимка 4.7 MB и падение на битой
вложенности).
- **B/D (проверено OK ранее):** кулдауны по меткам, не тикам (`runtime.py:104`);
детерминизм компактного снимка (`_stable_event_id`, restore не жжёт ГПСЧ).
Подтвердить, что 06→07 их не сломали.
- **C (риск, вне скоупа 06):** всплеск досылки созревших событий с прошлыми
метками на первом тике после рестарта — всплыл ли хоть как риск в саморевью.
- Верхнеуровневое для 07: границы задачи, честность отметок acceptance, не
смешаны ли 06/07, `git status`.
Цель ревью двойная: (1) корректность 06/07; (2) мета-вывод — **какой класс
дефектов автономная петля систематически не видит без внешнего взгляда другой
модели**.
### 2. Реконсиляция мат-спеки с ADR-0005
После ревью петли. Разделы «Персистентность» и «Воспроизводимость» в
`docs/specs/2026-06-10-generator-math-model.md` написаны от настенных часов;
привести в соответствие с ADR-0005 (модельное время, правило 30 минут в
модельном времени). Не делать сейчас — файл смежен с тем, что петля трогала.
## Фон (память проекта, не дублирую)
- `memory/ralph-loop-experiment-generator.md` — схема Ральф-цикла + измерительный
лист.
- `memory/generator-full-rework.md`, `memory/fable-design-codex-implementation.md`
— направление переработки генератора и разделение ролей Fable(дизайн)/Codex(код).
- `.scratch/handoffs/2026-06-11-subagent-coordinator-experiment.md` — детальная
схема эксперимента с координатором и наблюдения по циклам 05/06.
## Suggested skills
- `conventional-commits` — для отдельного docs-коммита ADR-0005 + `CONTEXT.md`
(не мешать с кодом петли).
- `brainstorm-with-docs` — когда вернёмся к реконсиляции спеки или к проектированию
«стартовой истории стенда» (будущее направление из ADR-0005).
- `handoff` — после ревью петли зафиксировать рефлексию эксперимента (что петля
поймала/пропустила, особенно по находке A).