Second review pass on PR #103 found a third bug in the same file: the preamble fix from the prior commit represented "content before the first ## heading" as a section with heading=="" — which collides with a literal degenerate `## ` (marker, no title text; strings.TrimPrefix also yields ""). Two entries sharing one key in Merge's idx map means one loses lookup visibility. Reproduced: a has only a preamble, b introduces a genuinely new degenerate `## ` section — Merge's idx wrongly reports it as "already exists" (it's really a's unrelated preamble) and never adds it, so b's section vanishes from the output entirely. Fixed by giving parseSections a dedicated preamble return value instead of folding it into the sections slice. It can no longer collide with anything, degenerate or otherwise, because it's no longer keyed by heading at all. Merge and rebuildContent updated to thread it through directly. No other caller of parseSections/rebuildContent in this repo. Also fixed a doc-comment left misplaced by the prior commit (appendNew's comment had drifted onto canonicalLine, inserted between them). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>