# TASK-0001: Composition Root и зависимости

## Статус

Ready

## Цель

Настроить корневую точку композиции проекта через VContainer так, чтобы orchestration-логика жила в plain C# классах, а MonoBehaviour использовались только как View-компоненты сцены.

## Что сделать

- Создать `GameLifetimeScope`.
- Зарегистрировать сервисы и контроллеры через VContainer как managed dependencies.
- Зарегистрировать `BootstrapEntryPoint` как entry point приложения.
- Зарегистрировать `BootStatesController` как `IStatesController<BootStateCode>` и при необходимости как self.
- Зарегистрировать `SplashState`, `LoadState`, `MenuState`.
- Зарегистрировать scene View через `RegisterComponent(...)`.
- Зарегистрировать settings asset через `[SerializeField]` и `RegisterInstance(...)`.

## Технические требования

- Использовать VContainer.
- Сервисы регистрировать через `builder.Register<Impl>(Lifetime.Singleton).As<IInterface>()`.
- Не использовать `RegisterInstance(...)` для сервисов и controller-объектов.
- `RegisterInstance(...)` использовать только для settings/config assets.
- Не использовать `FindObjectOfType`, `Singleton.Instance` и `static`-хранилища состояния.
- MonoBehaviour не должны содержать orchestration-логику boot flow.

## Критерии готовности

- В сцене есть один `GameLifetimeScope`.
- Все boot flow зависимости собираются через VContainer.
- View-компоненты подключаются через ссылки из сцены, а не через поиск объектов.
- Entry point запускается контейнером.
- Сервисы и state machine не создаются вручную через `new` внутри MonoBehaviour.

## Заметки

Scene View допустимо регистрировать как компоненты, потому что они физически живут в сцене. Settings asset допустимо регистрировать через `RegisterInstance(...)`, потому что это данные, а не сервис с жизненным циклом.
