Skip to content

Em-dash carve-out misses changelog headings and bold-lead parentheticals #67

Description

@conorbronsdon

Surfaced by scripts/self-scan.js (see PROOF.md), not by a user report.

SKILL.md carves out the list-item separator dash as typography rather than prose punctuation:

an em dash acting as the separator in a bulleted or numbered list item that opens with a bolded lead term or a markdown link (- **Term** — description, - [label](url) — description) is typography, not a prose splice — don't count it toward the rate.

detector/patterns.js implements that with SEPARATOR_DASH_RE. Two near-identical shapes fall outside it.

1. Keep-a-Changelog version headings.

## [3.21.0] — 2026-07-30

Same job as the list-item separator: it joins a label to a value. CHANGELOG.md has 32 of these and every one counts toward the em-dash rate.

2. A bold lead term with a parenthetical before the dash.

- **Lingering-attention claims** (`lingering-attention`) — the share-post frame that claims...

SEPARATOR_DASH_RE requires the dash to follow the closing ** with only whitespace between, so the parenthetical breaks the match.

Measured on CHANGELOG.md at v3.22.0: 137 em dashes total, 53 carved out, 84 counted. 33 of the 84 are the two shapes above. That is most of the file's residual score.

Suggested fix: extend the carve-out to (a) a heading line whose dash separates a bracketed or bolded label from a trailing value, and (b) an optional parenthetical or inline-code span between the bold lead term and the dash. Both should also be reflected in the SKILL.md rule text, since the carve-out is documented there first.

Watch for: the same regex feeds the smart-punct co-occurrence signature, so widening it lowers that signal too. Whatever lands needs a fixture proving a genuine mid-sentence prose splice in a list item still fires.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions