# AGENTS.md ## Documentation Rule В проекте есть спецификация пользовательской PDA-записи: - актуальные документы в `doc/`. Если меняется формат записи, сериализация, правила подписи, `prev_hash`, экономика лимитов или связанные ограничения create/update, соответствующую документацию в `doc/` нужно обновлять в том же изменении. ## Language Rule Во всем проекте использовать русский язык: - комментарии в коде; - тексты в файлах настроек и справочных файлах; - сообщения и описания в коммитах; - сопроводительные технические заметки. ## Rule: Logic and Docs Если меняется бизнес-логика смарт-контрактов, сериализация PDA, правила переводов или экономика: 1. Обновить соответствующий документ в `doc/` в том же изменении. 2. Если документ сразу обновить нельзя, обязательно явно согласовать это с пользователем в чате и зафиксировать план обновления. ## Rule: Git Push Для push в удаленный репозиторий использовать токен из переменной окружения: - `GITEA_TOKEN` Push выполнять через `http.extraHeader` (Authorization) без вывода токена в логи. ## Rule: Commit Messages Текст commit message писать на русском языке. Это обязательное правило для всех новых коммитов в этом репозитории. ## Rule: UI Deploy Деплой UI Shine Payments выполнять через Gradle из папки `shine`: 1. `gradle deployUi` 2. `gradle checkUiRemote` Где смотреть детали (пути деплоя, путь Caddy, рабочие URL): - комментарии в `build.gradle` (в корне `shine/`). ## Известное предупреждение сборки При `cargo build` / `anchor build` для Solana-программ может регулярно появляться предупреждение вида: - `A function call in method ... driftsort_main ... overwrites values in the frame` Для текущего проекта это известное предупреждение toolchain/stdlib. Если: 1. сборка завершается успешно; 2. `anchor deploy` проходит успешно; 3. целевой сценарий реально работает в devnet/localnet, то это предупреждение считать допустимым и не блокирующим само изменение. ## Rule: Dictionary Growth Reporting Если пользователь просит увеличить количество слов в словарях `shine_login_guard`: 1. Увеличивать словарь в первую очередь в явно указанных пользователем категориях/файлах. 2. Если в конкретной категории добавлять новые уместные слова уже затруднительно, прямо сообщать об этом и предлагать соседние категории для расширения. 3. После каждого такого изменения выводить количество слов по каждому файлу словаря: - `src/dictionaries/premium/*.txt` - `src/dictionaries/trademarks/*.txt` 4. В отчете дополнительно кратко оценивать заполненность категорий (где есть смысл расширять, где уже близко к насыщению). 5. В конце каждого увеличения словаря обязательно выводить итог: - общее число слов для premium; - общее число слов для trademarks.