Repository navigation
conventional-commits reports a valid non-bumping commit as non-conforming #97
Copy link
Copy link
Closed
Labels
enhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Description
Activity
- addedenhancementNew feature or requestNew feature or requestneeds-triageMaintainer needs to evaluate this issueMaintainer needs to evaluate this issue
on Oct 4, 2026 This was generated by AI during triage.
Triage Notes
Grilled with the maintainer; being implemented now.
Established:
- Both strategies are affected.
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. - Only status tokens are frozen;
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). - New tokens for the misleading cases. A token never changes meaning, but new ones may be added;
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.- Reasons are fixed strings, never quoting the commit type or branch prefix (see the field audit pinned in test: pin RunResult's fields so a new one forces a redaction audit #92).
Strategy When Status Reason conventional-commits subject doesn't match the grammar no_conforming_commitCommit subject is not a Conventional Commit. conventional-commits valid commit, type not in minor_types/patch_typesno_bumping_type(new)Commit type is not configured to bump. branch-prefix not a merge commit, patch_on_non_merge_commitoffno_merge_commitLatest commit on default branch is not a merge commit. branch-prefix merge commit, no configured prefix in its subject unmapped_branch_prefix(new)Merge commit's source branch has no configured prefix. Release as 0.10.0 with a
## Upgradingnote listing the new tokens.- Both strategies are affected.
- addedready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agentand removedneeds-triageMaintainer needs to evaluate this issueMaintainer needs to evaluate this issue
on Oct 4, 2026
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestready-for-agentFully specified, ready for an AFK agentFully specified, ready for an AFK agent
Under the
conventional-commitsstrategy, 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 asci: ...,docs: ...,chore: ...ortest: ...: the commit conforms, its type just isn't inminor_typesorpatch_types. A user reading the reason would think their commit message is malformed.This repo hits it on most pushes now that
semvertag.ymldogfoods withconventional-commits(#96), since most squash titles aredocs:,ci:ortest:.Cause:
ConventionalCommitsStrategy.decidereturnsBump.NONEfor both cases, and the use case buildsNoBumpfrom the strategy's fixedno_bump_statusandno_bump_reasonclass attributes, so the two cases can't be told apart downstream.Constraints:
schema_version"1.0";action.ymlmaps every non-createdstatus tono-bump). Whether a new token likeno_bumping_typeis acceptable, or the status staysno_conforming_commitand only the reason changes, is the main decision.reasonmust 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-prefixmay 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.