# Участие в проекте

Спасибо за интерес. Проект небольшой, поэтому правила короткие и проверяемые.

## Перед pull request

```bash
python tests/run_tests.py
python tools/ghagent.py doc --root .
python tools/ghagent.py audit .
```

Все три команды должны вернуть код `0`. Если правка меняет правило проверки — в том же
pull request добавляется фикстура, которая без этой правки падает, и приманка, на
которой правило не должно срабатывать.

## Правила

- Один pull request — одна логическая причина. Опишите мотивацию и сценарий проверки.
- Новая проверка без фикстуры не принимается: правило, которое нельзя подтвердить,
  удаляется, а не документируется.
- Ложный `FAIL` хуже отсутствия проверки, ложный `PASS` хуже ложного `FAIL`. Проверка,
  осмотревшая ноль объектов, обязана сообщить об этом.
- Никаких внешних зависимостей. Пакет работает на стандартной библиотеке Python: чужой
  агент должен поставить его одним `git clone`.
- Текстовые файлы — UTF-8 без BOM, переводы строк LF, отступ четыре пробела.
- Не коммитьте токены, пароли, личные адреса и абсолютные пути машины. В примерах —
  `<placeholder>`, `example.com`, `user@users.noreply.github.com`.
- Документация обновляется вместе с кодом: изменили поведение команды — поправьте
  [AGENTS.md](AGENTS.md) и [README.md](README.md).

## Сообщения коммитов

Conventional Commits: `feat:`, `fix:`, `docs:`, `perf:`, `refactor:`, `test:`, `chore:`.
Ломающее изменение помечается `!` или строкой `BREAKING CHANGE:` в теле. Журнал изменений
собирается из этих сообщений командой `ghagent changelog suggest`, но запись в
`CHANGELOG.md` пишется человеком.

## Сообщения об ошибках

Приложите: версию Python, операционную систему, команду целиком, вывод с `--json`, код
возврата. Если команда работает с репозиторием — фрагмент дерева без секретов.
