GitHub PR Guidelines
Branch protection rules, PR title format, automated merges, and code owner review for CrelioHealth GitHub repositories.
PR Review Guidelines — CrelioHealth
Branch Protection Rules
All repositories follow the standard-web ruleset preset. Direct pushes to protected branches are blocked — all changes go through pull requests.
develop
- 2 approvals required
- Stale reviews dismissed on new push
- All review threads must be resolved
- Code owner approval required (CODEOWNERS file)
- PR title must follow conventional commits (web & ai repos)
- No force push, no deletion
hotfix
- 2 approvals required
- Stale reviews dismissed on new push
- All review threads must be resolved
- Code owner approval required
- PR title must follow conventional commits (web & ai repos)
- No force push, no deletion
main
- 2 approvals required
- Stale reviews dismissed on new push
- All review threads must be resolved
- Code owner approval required
- PR title must follow conventional commits (web & ai repos)
- No force push, no deletion
production / prod-* / moh-production
- No direct push allowed — fully locked
- No deletion, no force push, no updates
- Changes reach production only through branch merges (hotfix → main → production)
develop-moh / develop-nrl (MOH/NRL staging)
- 1 approval required
- Stale reviews dismissed on new push
- All review threads must be resolved
- Code owner approval required
- No force push, no deletion
PR Title Format (Conventional Commits)
All PRs to web and ai repos must have titles following the conventional commits format. This is enforced by the Validate PR Title status check.
Format
<type>(<scope>): <description>Allowed types
feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert
Examples
feat(billing): add invoice PDF export
fix(auth): handle expired session redirect
chore: update dependencies
refactor(api): simplify error handling middleware
docs(readme): add deployment instructionsRules
- Type is required, scope is optional
- Description must be lowercase and not end with a period
- Breaking changes: add
!after type/scope —feat(api)!: change response format
Automated Merges
Two GitHub Actions workflows handle branch synchronization automatically using the CrelioHealth Bot GitHub App:
hotfix → develop
When a PR is merged to hotfix, the workflow auto-merges hotfix into develop. If there's a conflict, it aborts and sends a Slack notification.
main → hotfix & develop
When a PR is merged to main, the workflow auto-merges main into both hotfix and develop. Conflicts trigger Slack notifications per branch.
These workflows skip manual intervention for routine merges. If a conflict is reported on Slack, a developer must resolve it manually.
Code Owner Review
Every repo has a .github/CODEOWNERS file. When require_code_owner_review is enabled in rulesets, at least one code owner must approve the PR before merge.
Code owners are assigned by repo category:
| Category | Owners |
|---|---|
| web / pacs / interfacing / landing | engineering-leads |
| qa | qa-devs |
| infra | devops |
| android | android-leads |
| ios | ios-leads |
| ai | ai-leads |
| docs | docs-maintainers |
Some repos have additional reviewers (e.g. backend-reviewers for crelio-app, livehealthapp, fusion, fusion_worker; frontend-reviewers for livehealth-frontend).
Review Checklist
Before approving a PR, reviewers should verify:
- Code compiles and passes existing tests
- No unresolved review threads
- PR title follows conventional commit format
- No secrets, credentials, or PII in the diff
- Changes are scoped — one concern per PR
- Breaking changes are clearly documented in the PR description