Default version-bump policy for github-ops mode update.
| Change type | Bump | Example |
|---|---|---|
| New feature, capability, command, integration | minor (default) | 0.1.0 → 0.2.0 → 0.3.0 |
| Bug fix, small QoL tweak, doc-only fix, dep bump | patch | 0.2.0 → 0.2.1 → 0.2.2 |
| Breaking change / 1.0.0 promotion | major — REQUIRES EXPLICIT APPROVAL | never auto-suggest |
1. Inspect commits since last tag:
git log $(git describe --tags --abbrev=0)..HEAD --oneline
2. Categorise by Conventional Commits prefix:
feat: → feature signal
fix: → fix signal
chore: docs: style: perf: test: refactor: → housekeeping signal
BREAKING CHANGE: in body, or !: in subject → breaking signal
3. Decide bump:
IF any breaking signal:
STOP. Surface to user with the breaking commits listed.
Ask explicitly: "These changes look breaking. Bump to v<next-major>.0.0,
or treat as v<current-major>.<next-minor>.0 with breaking-change notes?"
NEVER auto-major.
ELSE IF any feature signal:
bump = minor
New version = bump <current>.<minor + 1>.0
ELSE (only housekeeping/fix signals):
bump = patch
New version = <current>.<minor>.<patch + 1>
| Bump | README "Recent Updates" | README body sections |
|---|---|---|
| patch | always update (single-bullet block) | skip unless explicitly asked |
| minor | always update (multi-bullet block) | scan diff for new commands/config/install steps; touch only if found |
| major | always update (lead with breaking change) | always update (and major needs approval anyway) |
The "Recent Updates" section is the one README touch that always happens. Body changes for minor/major are conditional — checked against the diff, not assumed.
User-stated preferences for 0xDarkMatter repos (codified 2026-04-26):
BREAKING CHANGE: markers as a signal to ask, not as authorization to bump majorAligns with the conventional-commits semver mapping with one explicit override: major bump is gated behind user approval even when breaking-change markers are present in commits. Everything else matches the standard mapping.