To keep commits traceable, follow the rules below based on patterns already used in the project.
- Suggested structure:
<scope>[, <type>]: <concise description>. - Scope: module or subproject name (for example
LATX,lat,KZT,linux-user), consistent with the path or subsystem. - Type: common values are
feat(feature),fix(bug fix),opt(optimization); for special cases usetemporary fix(short-term workaround) orBuild(deps)(dependency or CI maintenance). - Subject: one short imperative/declarative English phrase summarizing the change; do not end with a period.
| Type | Meaning / scope | Example title snippet |
|---|---|---|
LATX, infra |
Infrastructure, build system, CI/CD changes not affecting product behavior | LATX, infra: Add tracing for ... |
LATX, feat |
Product-facing feature additions | LATX, feat: introduce smc ... |
LATX, fix |
Bug fixes | LATX, fix: Handle null ... |
LATX, opt |
Performance or implementation optimizations | LATX, opt: Refine glue ... |
LATX, refactor |
Function/feature refactors | LATX, refactor: Split ... |
LATX, style |
Formatting or comment tweaks that do not change behavior | LATX, style: Reflow comments |
LATX-X64, * |
Changes specific to 64-bit; * matches the types above (e.g., fix) |
LATX-X64, fix: ... |
linux-user |
linux-user related (e.g., syscall changes) | linux-user, fix: ... |
LATX, docs |
Documentation | LATX, docs: Update convention |
| Other historical types | Special cases like temporary fix or Build(deps) are also allowed |
Build(deps): Bump ... |
Separate scope and type with a comma, and separate type and description with a colon. If no type is used, keep only the colon, for example
cpus: Make {start,end}_exclusive() recursive.
If the change gives the translator a new visible capability or behavior, it is feat.
Typical cases:
- New APIs, instruction translation, or instruction support
- New command-line options or feature flags
- New business logic or user-visible behavior
Decision rule:
“Would users care if this appears in the release notes?” Yes → feat
Changes to engineering environment, build system, CI/CD, toolchains, or development scripts that do not alter product behavior.
Typical cases:
- Modifications to Makefile / CMake / Meson / Bazel
- Developer-only tracing or analysis tools
Decision rule:
“Can users perceive any behavior change?” No → infra
LATX, feat: Support CONFIG_LATX_GLUE_MASK in indirect jmp glueLATX, opt: Reduce thread contention in fast pathBuild(deps): Update meson to 1.3.0
- Prefer keeping a body: avoid empty bodies except for
style,docs, or trivial commits where the first line fully explains the change. fixmust name the target: state which application/test set or git issue is fixed to aid traceability.- Body content suggestions:
- Provide background, motivation, solution, and validation; no need to expand details in the title.
- Keep a single commit focused on one topic; avoid grouping unrelated changes.
- For temporary workarounds or risky changes, describe impact scope, alternatives, and cleanup plan to ease follow-up.
- Keep the title short and without a trailing period.
- Does it include a scope consistent with the subsystem?
- Does the type match the scenario? Should you mark it as
temporary fixorBuild(deps)? - Is the description clear about the change/reason, avoiding vague phrases like “update code” or “fix bug”?
- Is the commit body filled in as required (especially for
fix)? - If it is a temporary solution or needs follow-up, is TODO / follow-up noted in the body?