Status: ready-for-agent # Граница миров после кросс-ревью ## Parent `.scratch/generator-model-time-startup-history/PRD.md` ## What to build Закрыть семейство находок кросс-линейного ревью про «смешение миров»: после обновления кода, сброса стенда или консольного запуска старое состояние и старый live-генератор не должны тихо писать события в новый мир данных. Источник: `.scratch/handoffs/20260705-0002-cross-review-generator-chain.md`, разделы `Issue 12/14` и `Issue 09`. Связанные старые issue: `09-seam-browser-fixture-not-preserved.md`, `12-generator-control-dag.md`, частично `14-fast-teaching-profile.md`. ## Acceptance criteria - [ ] Известная старая версия state при `GEN_STATE_RESET=false` даёт громкий отказ с понятным сообщением, а не тихий чистый старт поверх существующей истории. - [ ] Сброс и остановка стенда убирают ручной live-генератор из compose-профиля; он не переживает `down`/`clean` и не воскресает после перезагрузки хоста. - [ ] Консольные пути backfill/import/continue используют ту же идею предпроверки чистого стенда, что Airflow-пульт, но реализованы способом, пригодным для запуска с хоста. - [ ] Документация объясняет миграционный случай: почему старый state может теперь дать громкий отказ и что делать оператору или менти. - [ ] Есть проверка, которая доказывает каждый из трёх путей смешения миров: старая версия state, compose-профиль live-генератора, консольный запуск на грязном стенде. ## Blocked by Нет — можно начинать сразу. ## Notes - Рекомендуемый режим `coordinator-loop`: гейт. Worker `high`, ревью задачи `high`, ревью кода `high`. - Не чинить здесь ложнозелёные проверки и курс целиком: это отдельные задачи 17 и 18. Здесь только граница миров и доказательства именно этой границы.