SHiNE-server/shine-solana/shine/AGENTS.md

92 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AGENTS.md
## Documentation Rule
В проекте есть два обязательных класса документов:
1. Документы по программам в `doc/programs/`:
- `shine_users.md`
- `shine_login_guard.md`
- `shine_payments.md`
2. Документы по форматам в `doc/formats/`:
- `shine-user-pda-format-v.1.0.md`
Эти документы должны быть достаточными для повторной реализации программ и форматов с нуля.
Если меняется формат записи, сериализация, правила подписи, `prev_hash`, экономика лимитов, правила очередей, правила CPI, seed PDA или связанные ограничения create/update, соответствующую документацию в `doc/` нужно обновлять в том же изменении.
## Language Rule
Во всем проекте использовать русский язык:
- комментарии в коде;
- тексты в файлах настроек и справочных файлах;
- сообщения и описания в коммитах;
- сопроводительные технические заметки.
## Rule: Logic and Docs
Если меняется бизнес-логика смарт-контрактов, сериализация PDA, правила переводов или экономика:
1. Обновить соответствующий документ в `doc/programs/` и/или `doc/formats/` в том же изменении.
2. Если документ сразу обновить нельзя, обязательно явно согласовать это с пользователем в чате и зафиксировать план обновления.
Отдельное обязательное правило:
1. Документы по программам и документ формата PDA должны всегда совпадать с кодом программ.
2. Перед любым изменением кода нужно явно проверять, затрагивает ли оно поведение, PDA, поля, проверки, экономику или формат.
3. Если затрагивает, документ обновляется обязательно.
4. Нельзя сознательно оставлять код и документы в рассинхроне без отдельной явной договоренности с пользователем.
## 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.