# Pull Requests

## PR title format

This repository uses **squash merging**, so the **PR title becomes the commit
message** on `main`.  Because release-plz reads commit messages to determine
the next version bump, every PR title **must** follow the Conventional Commits
format:

```
<type>[optional scope]: <short description>
```

Examples of correct PR titles:

| PR title | Resulting bump |
|----------|:--------------:|
| `fix: handle empty version in POM` | patch |
| `feat: parallel dependency download` | minor |
| `feat!: rename compile goal to build` | major |
| `chore: update CI workflow` | _no bump_ |
| `docs: add benchmark table to README` | _no bump_ |

> **Important:** A PR title like `Update CI workflow` (missing `<type>:` prefix)
> will **not** be recognized by release-plz and will not trigger the correct
> version bump.

## Pull request checklist

Before marking a PR ready for review ensure:

- [ ] **PR title** follows the **Conventional Commits** format (`<type>[scope]: <description>`)
  because squash-merging uses the PR title as the commit message on `main`
- [ ] `cargo fmt --all -- --check` passes
- [ ] `cargo clippy --all-targets --all-features -- -D warnings` passes (zero warnings)
- [ ] `cargo test` passes (all tests green)
- [ ] New public functions have doc comments with `# Errors` where applicable
- [ ] `AGENTS.md` and `README.md` are updated if behaviour or commands changed
- [ ] Commit messages follow the **Conventional Commits** format
  (see [commits-and-versioning](../commits-and-versioning/SKILL.md))
  so that release-plz can compute the correct version bump automatically
