Thanks for helping improve Collette.
Use the standard Rust toolchain configured by rust-toolchain.toml.
Before opening a pull request, run:
make checkThe CI also runs Markdown, YAML, and security audit checks.
Pull requests should be small enough to review comfortably and should describe the behavior change, the motivation, and any compatibility impact.
Use a changelog-ready pull request title. The title is included in generated release notes, so prefer a short human sentence over an implementation detail.
Good examples:
✨ Add prefix range scans🐛 Fix cursor bounds on reverse scans📝 Document collection contracts
Avoid vague titles:
Fix stuffUpdate codeWIP
Pull request titles may start with an emoji from this taxonomy. Emojis are not mandatory, and this list is intentionally not rigid or exhaustive.
Emojis are kept in the generated changelog and act as lightweight visual categories.
| Emoji | Category | Use for |
|---|---|---|
✨ |
API | API additions or improvements |
🐛 |
Fix | Bug fixes |
🛠️ |
Internal Logic | Internal behavior changes, whether they ship as a fix or a feature |
💾 |
Storage Backend | MultiStore backend work |
⚡ |
Performance | Performance improvements |
🧪 |
Tests | Test-only changes |
📝 |
Docs | Documentation-only changes |
♻️ |
Refactor | Internal changes with no behavior change |
🏗️ |
CI/Build | CI, build, packaging, and release automation |
⬆️ |
Dependencies | Dependency updates |
🔒 |
Security | Security fixes or hardening |
If multiple categories apply, choose the one that best describes the user-facing
impact. For example, a bug fix with tests should use 🐛, not 🧪.
Release versioning is computed from Conventional Commits. Labels do not request or override version bumps.
When preparing a pull request, check that the commits match the intended release impact:
fix:andperf:trigger patch releases.feat:triggers minor releases.!markers andBREAKING CHANGE:footers mark breaking releases. They also apply thebreaking-changelabel.docs:,test:,refactor:,ci:, andchore:do not trigger releases by themselves.
Pull requests that intentionally break the public API must include a
Conventional Commit breaking marker in at least one commit. Use ! in the
commit header or add a BREAKING CHANGE: footer. Without that marker, the
breaking-change detection workflow fails when it detects a breaking public API
change. When that happens, the workflow comments on the pull request with the
detected public API changes.
Pull request labels are computed by CI from commits and changed files. Before merging, check that the labels match the intent of the pull request.
Labels help the changelog land in the right section. They do not request or override a version bump; fix the commits instead.
Examples of labels include:
enhancementfor feature workbugfor fixessecurityfor security hardening or fixesdocumentationfor documentation-only changesdependenciesfor dependency updatescifor CI, build, and release automationbreaking-changefor breaking API changes
This list is not exhaustive. Prefer the label set that best reflects the PR.
Commit messages must follow Conventional Commits:
Examples:
feat: add prefix range scans
fix: handle empty cursor bounds
feat!: rename collection builder API
For breaking changes, include a footer explaining the migration:
BREAKING CHANGE: collection builders now require an explicit backend type.
Releases are cut manually from main. See RELEASE.md for the release process.