The changelog step runs under 'bash -e'. section() returned non-zero when a commit category was empty (grep no-match / empty [ -n ] test), aborting the script before the closing heredoc delimiter — so any release whose range lacked a whole category (e.g. 1.5.2: only feat, no fix) failed to attach binaries. Add '|| true' + 'return 0' so section() always succeeds.