Skip to content

release: test(components): … pathe … (#427) is silently missing from the 2.12.0 release notes #436

Description

@IgorShevchik

Environment

main @ 28677edf. Live right now in the open release PR #356.

Description

dcb3bacftest(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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions