Environment
main @ 28677edf. Live right now in the open release PR #356.
Description
dcb3bacf — test(components): build path expectations with pathe, not node:path (#427) — does not appear in the 2.12.0 release notes. The unreleased range holds seven test: commits; the notes list six.
release-please's parser rejects the commit and swallows the failure:
❯ commit could not be parsed: dcb3bacf… test(components): build path expectations with pathe, not node:path (#427)
❯ error message: Error: unexpected token '(' at 14:16
Line 14, column 16 of the message body is the backticked `.toEqual([join(outside, 'components')])` — the parenthesis inside backticks inside a body line. @conventional-commits/parser is ANTLR-based and does not treat backticks as opaque, so the parenthesis is read as grammar.
build/src/commit.js catches the throw and continues with a bare logger.debug, so nothing surfaces where a human looks: CI is green, the release PR renders normally, and the commit is simply absent.
Why this matters more than one missing line
This is the same failure class as #434 — a commit vanishing from the changelog with no error anywhere — but it is already live, in the release about to ship, and it is not fixed by #435. #434 was about types resolving to nothing; this is about messages that never parse at all.
The trigger is ordinary: a body that quotes code containing parentheses. Any commit that explains itself with a backticked expression is a candidate, and this repository writes commit bodies that way as a matter of habit.
Reproduction
Parse the range with release-please's own code:
const { parseConventionalCommits } = require('release-please/build/src/commit')
// feed the output of `git log v2.11.0..main` in the shape parseConventionalCommits expects
// dcb3bacf is dropped; the other six test: commits survive
Worth checking alongside
Whether any other unreleased commit is being dropped the same way — the count mismatch was found by comparing totals, which only works when you already suspect it. A guard that compares the number of conventional commits in the range against the number of bullets rendered would catch this class generally, and would have caught it here.
Additional context
Found by an independent review pass over #435, while confirming that PR had no effect on the open release PR.
Environment
main@28677edf. Live right now in the open release PR #356.Description
dcb3bacf—test(components): build path expectations with pathe, not node:path (#427)— does not appear in the 2.12.0 release notes. The unreleased range holds seventest:commits; the notes list six.release-please's parser rejects the commit and swallows the failure:
Line 14, column 16 of the message body is the backticked
`.toEqual([join(outside, 'components')])`— the parenthesis inside backticks inside a body line.@conventional-commits/parseris ANTLR-based and does not treat backticks as opaque, so the parenthesis is read as grammar.build/src/commit.jscatches the throw and continues with a barelogger.debug, so nothing surfaces where a human looks: CI is green, the release PR renders normally, and the commit is simply absent.Why this matters more than one missing line
This is the same failure class as #434 — a commit vanishing from the changelog with no error anywhere — but it is already live, in the release about to ship, and it is not fixed by #435. #434 was about types resolving to nothing; this is about messages that never parse at all.
The trigger is ordinary: a body that quotes code containing parentheses. Any commit that explains itself with a backticked expression is a candidate, and this repository writes commit bodies that way as a matter of habit.
Reproduction
Parse the range with release-please's own code:
Worth checking alongside
Whether any other unreleased commit is being dropped the same way — the count mismatch was found by comparing totals, which only works when you already suspect it. A guard that compares the number of conventional commits in the range against the number of bullets rendered would catch this class generally, and would have caught it here.
Additional context
Found by an independent review pass over #435, while confirming that PR had no effect on the open release PR.