Skip to content

Issue, Pull Request & Commit Guidelines

๐ŸŽซ Issues

Every code change should start with an issue. Issues help track work, discuss implementation details, and maintain a clear project history.

๐Ÿ”„ One PR Per Issue Policy

We generally follow a one-PR-per-issue policy, with some pragmatic exceptions:

โœจ Why One PR Per Issue?

  • ๐Ÿ” Clear traceability between changes and their motivations
  • ๐Ÿ“ฆ Forces proper task breakdown and manageable PR sizes
  • ๐Ÿ‘€ Makes code reviews more focused and effective
  • โช Enables clean feature rollbacks if needed
  • ๐Ÿ“ˆ Provides clear project progress tracking

๐ŸŽญ Allowed Exceptions

  • ๐Ÿ”จ Trivial changes (like typo fixes) may not need an issue
  • ๐Ÿ”— Multiple small, tightly related issues might be addressed in one PR (with clear documentation)
  • ๐Ÿ”„ If implementation reveals an issue should split into multiple PRs, or multiple issues should combine, pause and restructure

When deviating from one-PR-per-issue, document your reasoning in the PR description.

๐Ÿ“ Issue Template

# Problem
<!-- What needs to be done? -->

# Proposed Solution
<!-- How do you plan to solve it? -->

# Additional Context
<!-- Any extra information that might help? -->

# Acceptance Criteria
<!-- What needs to be true for this to be complete? -->

๐Ÿ’Œ Conventional Commits

We use conventional commits to maintain clear and standardized commit messages. Each commit message should follow this format:

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

๐Ÿท๏ธ Types

  • feat: โœจ New feature
  • fix: ๐Ÿ› Bug fix
  • docs: ๐Ÿ“š Documentation changes
  • style: ๐Ÿ’… Code style changes (formatting, missing semi-colons, etc)
  • refactor: โ™ป๏ธ Code refactoring
  • perf: โšก๏ธ Performance improvements
  • test: ๐Ÿงช Adding missing tests
  • chore: ๐Ÿ”ง Build process or auxiliary tool changes

๐Ÿ“‹ Examples

feat(api): add endpoint for model metrics
fix(worker): resolve memory leak in batch processing
docs(readme): update installation instructions
perf(client): optimize large dataset handling

๐Ÿš€ Pull Request Template

When opening a pull request, please use the following template:

# Description
<!-- What does this PR do? -->

# Related Issue
<!-- Link to the issue this PR addresses -->
Closes #[issue-number]

# Type of Change
<!-- delete options that are not relevant -->
- ๐Ÿš€ New feature
- ๐Ÿ”ง Bug fix
- ๐Ÿ“š Documentation
- ๐Ÿ”จ Breaking change
- โšก๏ธ Performance improvement
- ๐Ÿงช Test updates

# Testing
<!-- How were these changes tested? -->

# Breaking Changes
<!-- Does this PR introduce breaking changes? If yes, describe the impact and migration steps -->

# Checklist
- [ ] My code follows conventional commit guidelines
- [ ] I have added tests that prove my fix/feature works
- [ ] New and existing tests pass locally
- [ ] I have updated relevant documentation
- [ ] I have added metrics/monitoring for new features (if applicable)

๐ŸŒŸ Additional PR Guidelines

  • ๐ŸŽฏ Keep PRs focused and reasonably sized
  • ๐Ÿ”— Link to related issues or discussions
  • ๐Ÿ’ฌ Respond to review comments promptly
  • ๐Ÿ”„ Update your PR with main when there are conflicts
  • ๐Ÿ“ธ Add screenshots or code examples for UI or API changes