Участие в разработке
Поток PR
- Создайте feature branch от
main:feat/<short-name>илиfix/<short-name>. - Внесите код + документацию в том же MR.
- Заведите PR, заполните чеклист ниже.
- Убедитесь, что CI проходит.
- Получите минимум 1 approve (2 для значимых архитектурных изменений).
- Мерж через squash.
Коммиты рекомендуется оформлять по Conventional Commits (feat:, fix:, docs:, refactor: и т.д.), чтобы release pipeline мог автоматически собирать changelog.
Критерии готовности (Definition of Done, DoD)
PR готов к мержу, если:
- Код проходит все CI-проверки.
- Для изменений локального ingress / docs runtime проходят
make verify-web-composeиmake verify-local-web. - Юнит-тесты написаны на новую логику и занимают основной объём покрытия.
- Интеграционные / service-тесты обновлены там, где затронуты адаптеры, транзакции, wiring или межмодульное взаимодействие.
- Для внешних провайдеров обновлены контрактные тесты на моковых API-ответах.
- Для новых портов используются
mockery-сгенерированные моки; hand-written mocks/stubs для нового кода не добавлялись. - Документация обновлена:
- Если изменилась доменная модель → обновлён
10-business/. - Если изменилась схема → обновлён
20-architecture/schemas/. - Если новый сервис → есть
30-services/<n>/README.md+AGENTS.md, обновлён родительскийAGENTS.md. - Если нетривиальное архитектурное решение → есть ADR в
20-architecture/adr/. - Если изменились deploy / CI/CD / release процессы → обновлён
40-operations/или50-processes/.
- Если изменилась доменная модель → обновлён
- Нет хардкоженных secrets.
- Обсервабилити: новый код логируется, метрики на критичных местах.
- Миграции проверены на staging.
- Для user-visible изменений или release-кандидата обновлены
CHANGELOG.mdиVERSION(если требуется новый релиз).
Правила ревью
Ревьюверам:
- Проверяйте архитектурные границы (чистая архитектура, отсутствие импортов core из connectors).
- Проверяйте документацию — не только код.
- Сомневайтесь в новых зависимостях.
- Требуйте тесты по пирамиде, а не только happy-path unit.
Стиль кода
- Go:
go fmt,goimports,go vet,golangci-lintс проектной конфигурацией. - SQL: миграции — snake_case, форматированы единообразно.
- Markdown: конфиг markdownlint в репо.
- Генерация моков:
mockeryдля внутренних портов. - Локальный рантайм: перед сдачей изменений в docs/deploy слое проверяйте
docker compose ... config, локальный HTTPS ingress и доступностьdocs.tracium.dev.