Участие в разработке¶
Agate — это рабочее пространство Rust, следующее Domain-Driven Design и Clean
Architecture. Полный контракт для участников — человека или агента — находится в
AGENTS.md в корне репозитория. Эта страница резюмирует основное и ссылается на
Руководство по документации.
Соглашения¶
- Conventional Commits для сообщений коммитов и заголовков PR:
feat:,fix:,refactor:,test:,docs:,chore:,ci:. - Код и идентификаторы — на английском. Содержимое документации — двуязычное (английский — основной, русский — вторичный) — см. Руководство по документации.
- Слой домена остаётся чистым (без async, без I/O, без фреймворков); публичные типы конструируются через свои фабрики; правило зависимостей соблюдается.
Локальный гейт качества¶
CI и git-хуки вызывают одни и те же рецепты just (единый источник истины):
just # список рецептов
just fmt # форматирование (rustfmt)
just lint # строгий clippy (-D warnings)
just test-all # тесты со всеми фичами
just deny # аудит cargo-deny
just doc # сборка rustdoc (падает на битых док-ссылках)
just ci # полный локальный гейт: хуки (fmt, clippy, deny, typos, гигиена, секреты) + тесты
Включите хуки один раз:
Definition of Done¶
Изменение завершено, когда just ci зелёный; новое поведение имеет тесты
(юнит + proptest для инвариантов, сценарные тесты для межслойных потоков);
слой домена остаётся чистым; публичные типы конструируются через свои фабрики;
правило зависимостей соблюдается; и изменение задокументировано (см.
Руководство по документации).
Правила тестирования (основное)¶
- Юнит-тесты живут в файле в
#[cfg(test)] mod tests. - Интеграционные / сценарные тесты живут в
<crate>/tests/и используют только публичный API. - Покрывайте доменные инварианты proptest.
- Держите тесты детерминированными и изолированными от сети/IO — внедряйте временные метки и фиксированные сиды ключей; никогда не вызывайте настенные часы или ГСЧ напрямую.
См. AGENTS.md за полными правилами.