fix: recognize security: commits as patch-releasing in commit-analyzer - #42
Conversation
Discovered exercising the auvik canary (#41, merged 9f0ccf9): squash-merging a security:-titled PR collapses the whole PR into one commit on main whose header type is 'security', not 'fix' -- even though the PR's own individual commits included real fix: entries. commit-analyzer's default Angular preset only recognizes fix/feat/BREAKING CHANGE, so 'security: ...' silently determined no release was needed ('There are no relevant changes') despite containing genuine functional changes. No release fired at all. Adds an explicit releaseRules entry mapping security -> patch, matching the severity this fleet already treats security fixes as (same tier as fix:). Verified: package.json unchanged (no manual version bump -- this commit's own fix: type is what triggers the release, testing the rule fires for real, not just that it's syntactically present).
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Code Review SummaryVerdict: Approve (no blocking issues) Reviewed by Hermes Agent (automated PR sweep). headRefOid Correctness
Security
Code Quality
Testing
Looks Good
|
Claude Code ReviewVerdict: Approve Small, well-scoped change to CriticalNone. Warnings
Suggestions
Looks Good
|
asachs01
left a comment
There was a problem hiding this comment.
Code Review Summary
Verdict: Approve (small, correct, self-verifying fix)
Critical
None.
Warnings
None.
Suggestions
- Consider whether other non-Angular commit types used in this org's convention (if any beyond
fix/feat/security) should also get explicitreleaseRulesentries now, rather than discovering each one via a missed release — this PR is itself evidence that undocumented/non-standard commit types silently fall through the default Angular preset. - The PR body notes this fix's own
fix:commit is what should trigger the release once merged — that's a reasonable de-facto verification, but there's no automated test assertingreleaseRulesparses/matches as expected (e.g. a unit test feeding asecurity:commit through commit-analyzer's config). Not blocking for a single-line config change to a well-trodden semantic-release plugin.
Looks Good
- Root cause correctly diagnosed: squash-merging a
security:-titled PR collapses to one commit whose type isn't recognized by the default Angular preset, so@semantic-release/commit-analyzerdidn't fire a release despite real fixes inside. - The fix is minimal and uses the documented
@semantic-release/commit-analyzerreleaseRulesoption correctly — wrapping the plugin name in an array with config object is the standard semantic-release plugin config shape. security -> patchis a sensible severity mapping (notminor/major), consistent with howfixis treated by default.- No new supply-chain risk: this only affects local commit-message classification logic within an already-trusted release pipeline; no new external code/dependency introduced.
Reviewed by Claude Code
|
🎉 This PR is included in version 1.3.3 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
Discovered exercising the auvik canary (#41, merged 9f0ccf9): squash-merging a security:-titled PR collapses to one commit on main whose header type is 'security', not 'fix' — commit-analyzer's default Angular preset doesn't recognize it, so no release fired despite genuine fix: commits inside the PR. Adds an explicit releaseRules entry (security -> patch). This commit's own fix: type is what should trigger the release once merged, exercising the rule for real.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.