forked from heavy-duty/ceremony
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.
921 B
921 B
Added
- The fragment guard now requires each entry to end with its issue
citation: one
(#N)group — local,repo#Norowner/repo#Nreferences 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.mdandCHANGELOG.mdstate 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).