Commit Conventions¶
Format¶
<type>(<scope>): <subject>
<body — optional, wrap at 72 chars>
<footer — optional: BREAKING CHANGE, refs>
Types¶
| Type | When to use |
|---|---|
feat | New feature or capability |
fix | Bug fix |
refactor | Code restructuring with no behaviour change |
test | Adding or fixing tests |
docs | Documentation changes (including this docs site) |
chore | Build scripts, CI, tooling, deps |
perf | Performance improvement |
revert | Reverts a previous commit |
Scopes¶
| Scope | Area |
|---|---|
scanner | ScannerService, scanner hardware |
bin | BinService, bin state machine |
bot | BotService, robot control |
session | SessionService |
infeed | InfeedService |
meesho | Meesho layer (workers, HTTP client) |
migrations | EF Core migrations |
docker | Dockerfile, docker-compose |
ci | GitHub Actions workflows |
docs | Documentation site |
makefile | Makefile targets |
Examples¶
feat(scanner): add recovery lifecycle for scanner reconnect
fix(meesho): prevent token expiry race in DataSyncWorker
refactor(bin): extract BinStateMachine from BinService
test(session): add concurrent session creation test
docs(branching): add sprint release train timeline
chore(ci): add docs build and deploy workflow
feat(manifest): add tenant manifest loader and validator
BREAKING CHANGE: manifest must be present at startup or app refuses to start
Subject line rules¶
- Imperative mood: "add", "fix", "remove" — not "added", "fixes", "removed"
- No capital letter at start
- No period at end
- Under 72 characters
Breaking changes¶
If the change breaks the tenant manifest schema or a client-facing API:
feat(manifest): rename features.awb_sync to features.data_sync
BREAKING CHANGE: tenant manifests using features.awb_sync must be regenerated.
All clients must receive updated signed manifests before upgrading.
Breaking changes bump the MAJOR version (see Branching Model → Versioning).
What not to include in commit messages¶
- Reference to the current task ("for issue #123") — use PR description instead
- Who wrote it — that's what
git log --authoris for - Explanation of what the code does — the code does that; explain why