# Правила для агента ## Главный источник задачи Перед началом любой работы по проекту агент обязан прочитать файл: ```text Agent/TASK.md ``` Именно этот файл считается основным описанием задачи, требований и ограничений. ## Папка с задачами Детальный план работ хранится в папке: ```text Agent/Task/ ``` Задачи должны называться строго по формату: ```text TASK-0001.md TASK-0002.md TASK-0003.md ``` Новые задачи создаются только со следующим свободным номером. Нельзя пропускать номера без причины и нельзя переиспользовать номер удаленной или завершенной задачи. Правила шаблона задач описаны в файле: ```text Agent/Task/TASK_TEMPLATE.md ``` Каждая новая задача обязана соблюдать этот шаблон. ## Порядок работы 1. Сначала прочитать `Agent/TASK.md` полностью. 2. Прочитать `Agent/Task/TASK_TEMPLATE.md`. 3. Прочитать актуальные задачи `Agent/Task/TASK-*.md`. 4. После чтения сверять все решения с требованиями из задачи и конкретных task-файлов. 5. Не реализовывать вариант B или любую функциональность, которой нет в `Agent/TASK.md` или `Agent/Task/TASK-*.md`. 6. Не добавлять лишние архитектурные слои, если они не нужны для выполнения задачи. 7. Приоритет: минимальная корректная реализация, чистый жизненный цикл, понятный код. ## Правила заведения задач - Новые задачи создавать только в `Agent/Task/`. - Имя файла должно быть `TASK-XXXX.md`, где `XXXX` — номер из четырех цифр. - Заголовок задачи должен начинаться с того же номера, что и имя файла. - Структура задачи должна соответствовать `Agent/Task/TASK_TEMPLATE.md`. - В задаче должны быть разделы `Статус`, `Цель`, `Что сделать`, `Технические требования`, `Критерии готовности`, `Заметки`. - Статус задачи должен быть одним из значений: `Planned`, `Ready`, `In Progress`, `Done`, `Blocked`. - Задача должна быть достаточно крупной, чтобы не дробить работу на слишком много файлов. - Задача должна быть достаточно конкретной, чтобы по критериям готовности можно было проверить результат. - Нельзя заводить задачи по варианту B. ## Ограничения - Использовать VContainer для DI. - Использовать UniTask для async-операций. - Использовать UniRx для реактивных значений и подписок. - Не использовать `FindObjectOfType`. - Не использовать `Singleton.Instance`. - Не хранить состояние в `static`. - Не использовать `async void`, кроме Unity-колбэков. - Все async-операции выполнять через UniTask и `CancellationToken`. - Все подписки должны корректно освобождаться. ## Цель Сделать только задачу `Boot Flow` из `Agent/TASK.md` и подготовить проект так, чтобы его можно было проверить по описанным требованиям.