723657f2f7
- Add Status section requirement in Agent.md guidelines - Define valid status values (Planned, Ready, In Progress, Done, Blocked) - Update TASK-0001 with Ready status - Add Status section to TASK_TEMPLATE.md with Planned default Обновлена документация агента и отслеживание статусов задач: - Добавлено требование раздела Статус в руководствах Agent.md - Определены допустимые значения статусов (Planned, Ready, In Progress, Done, Blocked) - Обновлён TASK-0001 со статусом Ready - Добавлен раздел Статус в TASK_TEMPLATE.md с значением Planned по умолчанию
41 lines
2.5 KiB
Markdown
41 lines
2.5 KiB
Markdown
# 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(...)`, потому что это данные, а не сервис с жизненным циклом.
|