# TASK-0003: BootFlowService и запуск сценария ## Статус Ready ## Цель Реализовать внешний flow coordinator, который запускает и управляет сценарием загрузки приложения. ## Что сделать - Создать `BootFlowService : Service` или сервис с аналогичным lifecycle. - Реализовать сценарий `Splash -> Load -> Menu -> Load -> Menu ...`. - Сделать так, чтобы `SplashState` выполнялся один раз при старте. - После `MenuState` возвращаться в `LoadState` по restart-сигналу. - Создать `BootstrapEntryPoint`, который запускается через VContainer entry point. - Запустить `BootFlowService` из entry point через UniTask. - Корректно обработать штатную отмену, не логируя ее как ошибку. ## Технические требования - Использовать `IAsyncStartable` или подходящий VContainer entry point для запуска. - Не запускать boot flow из `MonoBehaviour.Start()` вручную. - Не делать самопереключающиеся states, которые вызывают `EnterStateAsync(...)` изнутри своего `EnterAsync(...)`. - `OperationCanceledException` считать нормальным завершением при уничтожении scope или остановке flow. - Все ожидания должны использовать токен, полученный сверху. ## Критерии готовности - При старте выполняется последовательность `Splash -> Load -> Menu`. - Нажатие `Restart` запускает новый цикл `Load -> Menu`. - При отмене токена boot flow завершается без зависших UniTask. - Orchestration-код находится в plain C# классе, не во View. ## Заметки Рекомендуемый сценарий: внешний сервис вызывает `_states.EnterStateAsync(...)` последовательно. Это проще защищать на ревью и не создает проблем с reentrancy внутри states.