awk runs END on the way out of an exit from a main rule, so the length row printed mid-file was followed by the citation row it outranks — the internal protocol line landing inside the human-facing excerpt. Found by claude-bot and kimi-bot in #262's first round, independently and with the same reproduction. The guard is the reported flag the empty-heading walk in this same predicate already uses. The fixtures are the axis 57.md could not reach: its over-bound entry is last, so only END's flush can print. 58.md puts one before another bullet, 59.md before a heading and after a misplaced cite. With lib/changelog.sh alone reverted they red, which is what the green suite was hiding. Refs #262.
20 lines
921 B
Markdown
20 lines
921 B
Markdown
### Added
|
|
|
|
- The fragment guard now requires each entry to end with its issue
|
|
citation: one `(#N)` group — local, `repo#N` or `owner/repo#N`
|
|
references separated by `, ` — then the final `.` and nothing after it
|
|
(#262).
|
|
- The refusal distinguishes an entry carrying no reference at all from one
|
|
whose reference is present but not terminal, and names the shape to
|
|
write in both (#262).
|
|
- The 300-character bound still outranks the citation across the whole
|
|
fragment, and the outranked problem stays out of the message it lost
|
|
to: one fragment, one diagnosis, wherever in the file it sits (#262).
|
|
|
|
### Changed
|
|
|
|
- `BUILDER.md` and `CHANGELOG.md` state the citation as guard-enforced
|
|
rather than as house style, beside the 300-character bound it now sits
|
|
next to (#262).
|
|
- Four fragments in flight gained a terminal citation; published sections
|
|
are untouched, so no shipped prose is re-opened (#262).
|