# AI_LOG

## Использование AI

AI использовался как помощник при планировании, реализации и проверке проекта. Работа велась итеративно по task-файлам из `Agent/Task/`.

## Какие промпты использовались

- Изучить `TASK-0001` и файл `Agent/Agent.md`, заранее прочитать остальные задачи и подготовить базу под них.
- Спланировать и реализовать TASK-0001 - TASK-0006 (с персональными правками под планирование).

## Где AI ошибся или требовал корректировки

- После реализации lifecycle возник runtime bug `MissingReferenceException`: при уничтожении `LifetimeScope` cancellation вызывал `Release()` уже уничтоженного `MenuUIView`. Это потребовало отдельной диагностики и фикса в базовом `UIView`.
- AI приходилось явно удерживать ограничения проекта. Например не использовать `FindObjectOfType`, не использовать `Singleton.Instance`, не использовать static-state, делать serialized поля через auto property с `[field: SerializeField]` и другие моменты.
- Пытался игнорировать SOLID.

## Что было переписано или уточнено руками

- Правки по stack trace для `MissingReferenceException` на основе этого был исправлен lifecycle в `UIView`.
- Документы написаны с учетом фактической реализации, а не только первоначального плана.
- Исправлены моменты TASK-ок которые нарушали задуманную архитекутру.
- Scene references были настроены вручную.
- Сборка UI с настройкой якорей для адаптивной работы на разных экранах.
- Пронумировал enum, чтобы не ломалась сериализация при добавление стейтов.

## Что проверялось

- Кодстайл проекта, соблюдение namespace.
- Поиск запрещенных паттернов `FindObjectOfType`, `Singleton.Instance`, `static`, `async void`, `Task.Delay`, `Update`, `RemoveAllListeners`.
- Проверка listener `AddListener(OnRestartClicked)` и `RemoveListener(OnRestartClicked)`.
- Проверка, что states не вызывают `EnterStateAsync` сами.
- Проверка, что ViewModel не наследуются от `MonoBehaviour`.

## Что важно проверить вручную

- Открыть `Assets/Scenes/SampleScene.unity`.
- Запустить Play Mode.
- Проверить `Splash -> Loading -> Menu`.
- Проверить, что `Text (Data_Status)` показывает актуальный этап.
- Проверить, что `Slider` идет от `0` до `1`.
- Нажать `Restart` и проверить повторный `Loading -> Menu`.
- Остановить Play Mode на `Menu` и убедиться, что нету Warning-ов и Error-ов.
