feat: add agent tasks and update documentation
- Create 7 new task files (TASK-0001 through TASK-0007) - Add task template file for future use - Update Agent.md with project information - Update TASK.md with task tracking
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# TASK-0002: Базовая архитектура Boot Flow
|
||||
|
||||
## Цель
|
||||
|
||||
Создать минимальную архитектурную основу для boot flow: сервисный lifecycle, state-контракты и generic state controller.
|
||||
|
||||
## Что сделать
|
||||
|
||||
- Создать `IService` с методами `InitializeAsync(CancellationToken ct)` и `ReleaseAsync(CancellationToken ct)`.
|
||||
- Создать базовый `Service : IService`, если это упростит общую структуру.
|
||||
- Создать `IState` с методами `EnterAsync(CancellationToken ct)` и `ExitAsync(CancellationToken ct)`.
|
||||
- Создать `IStatesController<TEnum>` с методом `EnterStateAsync(TEnum code, CancellationToken ct)`.
|
||||
- Реализовать `StatesController<TEnum>`.
|
||||
- Создать `BootStateCode` для состояний `Splash`, `Load`, `Menu`.
|
||||
- Создать `BootStatesController`, который собирает конкретные boot states и передает их в базовый controller.
|
||||
|
||||
## Технические требования
|
||||
|
||||
- Использовать UniTask для всех async-методов.
|
||||
- Во все async-операции передавать `CancellationToken`.
|
||||
- Контракт перехода должен быть строгим: сначала `ExitAsync` текущего state, затем `EnterAsync` нового state.
|
||||
- `StatesController<TEnum>` не должен знать бизнес-логику boot flow.
|
||||
- State не должен сам решать, какой state будет следующим.
|
||||
|
||||
## Критерии готовности
|
||||
|
||||
- `EnterStateAsync` вызывает `ExitAsync` текущего state перед `EnterAsync` нового state.
|
||||
- Первый вход в state работает без попытки выйти из отсутствующего текущего state.
|
||||
- Повторный вход в другой state не оставляет предыдущий state активным.
|
||||
- `CancellationToken` проброшен через `EnterStateAsync`, `ExitAsync` и `EnterAsync`.
|
||||
|
||||
## Заметки
|
||||
|
||||
Generic state machine должна уметь только переключать состояния. Сценарий `Splash -> Load -> Menu -> Load` должен жить отдельно, чтобы не смешивать control flow и инфраструктуру state machine.
|
||||
Reference in New Issue
Block a user