Problem
publish.yml contains inline shell logic for changelog generation. This logic is untested — if it breaks, publish workflow still succeeds but with empty/malformed release notes.
Acceptance Criteria
Priority
Low — nice-to-have for release quality.