You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
conventional-commits reports a valid non-bumping commit as non-conforming #97
Under the conventional-commits strategy, every head commit that yields no bump reports the same status and reason:
{"status": "no_conforming_commit", "reason": "No conforming Conventional Commits type found in commit message."}
That's accurate for a message like Fix typo in README. It's wrong for a valid Conventional Commit whose type doesn't bump, such as ci: ..., docs: ..., chore: ... or test: ...: the commit conforms, its type just isn't in minor_types or patch_types. A user reading the reason would think their commit message is malformed.
This repo hits it on most pushes now that semvertag.yml dogfoods with conventional-commits (#96), since most squash titles are docs:, ci: or test:.
Cause: ConventionalCommitsStrategy.decide returns Bump.NONE for both cases, and the use case builds NoBump from the strategy's fixed no_bump_status and no_bump_reason class attributes, so the two cases can't be told apart downstream.
Constraints:
Status tokens are a frozen wire contract (schema_version"1.0"; action.yml maps every non-created status to no-bump). Whether a new token like no_bumping_type is acceptable, or the status stays no_conforming_commit and only the reason changes, is the main decision.
The reason must stay semvertag-controlled text. Naming the parsed type (ci) in it is repo-supplied text, so it should be limited to a validated type token (the strategy already checks types against ^[a-z]+$) or left out. See the field audit pinned in test: pin RunResult's fields so a new one forces a redaction audit #92.
branch-prefix may have the same shape. A merge commit whose source branch prefix isn't mapped to a bump probably also reports a generic no-bump reason. Worth checking whether the fix should be strategy-agnostic.
Revisit trigger: none; actionable once the status-token question is decided.
Grilled with the maintainer; being implemented now.
Established:
Both strategies are affected.branch-prefix reports a merge commit whose source branch has no configured prefix (e.g. Merge branch 'docs/typo' into main) as no_merge_commit, "Latest commit on default branch is not a merge commit.", which is false. Same cause: decide returns only a Bump, so the why is lost and each strategy has one fixed status and reason.
New tokens for the misleading cases. A token never changes meaning, but new ones may be added; action.yml maps every non-created status to no-bump, so Action users see no change.
decide returns Bump | Decline(status, reason). The no_bump_status / no_bump_reason class attributes go away; the use case turns a Decline into the NoBump outcome.
Activity
lesnik512 commentedon Oct 4, 2026
Triage Notes
Grilled with the maintainer; being implemented now.
Established:
branch-prefixreports a merge commit whose source branch has no configured prefix (e.g.Merge branch 'docs/typo' into main) asno_merge_commit, "Latest commit on default branch is not a merge commit.", which is false. Same cause:decidereturns only aBump, so the why is lost and each strategy has one fixed status and reason.reasonis human-facing and may be reworded. ADR-0002's "fixed status tokens and reasons" is corrected to matchCONTEXT.md(and the reason changes already shipped in feat: read v-prefixed tags and keep their prefix on the next tag #93 and feat: say how many tags were skipped when no_tags fires on a tagged repo #95).action.ymlmaps every non-createdstatus tono-bump, so Action users see no change.decidereturnsBump | Decline(status, reason). Theno_bump_status/no_bump_reasonclass attributes go away; the use case turns aDeclineinto theNoBumpoutcome.no_conforming_commitminor_types/patch_typesno_bumping_type(new)patch_on_non_merge_commitoffno_merge_commitunmapped_branch_prefix(new)Release as 0.10.0 with a
## Upgradingnote listing the new tokens.