6.4 KiB
AGENTS.md
Documentation Rule
В проекте есть два обязательных класса документов:
- Документы по программам в
doc/programs/:shine_users.mdshine_login_guard.mdshine_payments.md
- Документы по форматам в
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, правила переводов или экономика:
- Обновить соответствующий документ в
doc/programs/и/илиdoc/formats/в том же изменении. - Если документ сразу обновить нельзя, обязательно явно согласовать это с пользователем в чате и зафиксировать план обновления.
Отдельное обязательное правило:
- Документы по программам и документ формата PDA должны всегда совпадать с кодом программ.
- Перед любым изменением кода нужно явно проверять, затрагивает ли оно поведение, PDA, поля, проверки, экономику или формат.
- Если затрагивает, документ обновляется обязательно.
- Нельзя сознательно оставлять код и документы в рассинхроне без отдельной явной договоренности с пользователем.
Rule: Git Push
Для push в удаленный репозиторий использовать токен из переменной окружения:
GITEA_TOKEN
Push выполнять через http.extraHeader (Authorization) без вывода токена в логи.
Rule: Commit Messages
Текст commit message писать на русском языке. Это обязательное правило для всех новых коммитов в этом репозитории.
Rule: UI Deploy
Деплой UI Shine Payments выполнять через Gradle из папки shine:
gradle deployUigradle checkUiRemote
Где смотреть детали (пути деплоя, путь Caddy, рабочие URL):
- комментарии в
build.gradle(в корнеshine/).
Назначение этого UI:
- это временные тестовые сайты для
shine_payments; - использовать их для ручной проверки сценариев покупки билетов, менеджерских лимитов и пошаговых выплат.
Известное предупреждение сборки
При cargo build / anchor build для Solana-программ может регулярно появляться предупреждение вида:
A function call in method ... driftsort_main ... overwrites values in the frame
Для текущего проекта это известное предупреждение toolchain/stdlib. Если:
- сборка завершается успешно;
anchor deployпроходит успешно;- целевой сценарий реально работает в devnet/localnet,
то это предупреждение считать допустимым и не блокирующим само изменение.
Дополнительное правило для рабочих отчётов:
- предупреждение именно про
driftsort_main/overwrites values in the frameсчитать уже зафиксированным; - при обычных успешных сборках и проверках не выносить его отдельно пользователю как новую проблему;
- упоминать его только если пользователь сам спрашивает про него отдельно или если есть признаки, что изменился характер предупреждения.
Rule: Dictionary Growth Reporting
Если пользователь просит увеличить количество слов в словарях shine_login_guard:
- Увеличивать словарь в первую очередь в явно указанных пользователем категориях/файлах.
- Если в конкретной категории добавлять новые уместные слова уже затруднительно, прямо сообщать об этом и предлагать соседние категории для расширения.
- После каждого такого изменения выводить количество слов по каждому файлу словаря:
src/dictionaries/premium/*.txtsrc/dictionaries/trademarks/*.txt
- В отчете дополнительно кратко оценивать заполненность категорий (где есть смысл расширять, где уже близко к насыщению).
- В конце каждого увеличения словаря обязательно выводить итог:
- общее число слов для premium;
- общее число слов для trademarks.