Nick's directive: when the pipeline earns a new version, the release
body must carry a plain-English summary of what was worked on and
submitted — the counterpart of the issue-entry template, part of the
Gitea Actions pipeline (auto-version.yml), not a manual step.
- scripts/release_exit_note.py: renders the exit note from the push
range (git log v<last>..HEAD, chore(release) excluded) — conventional-
commit prefix → kind classification (added/fixed/improved), reader-
facing translation (contract refs, parity language, truth batteries),
aggregate headline + per-item bullets + verification summary
- auto-version.yml: wired into the release step (LAST_TAG →
release_exit_note.py → --exit-note flag on release_history_cli init)
- release_history_cli.py: consumes --exit-note, parses the markdown
into structured extras (headline + items) passed to
auto_initial_note(extra=...)
- release_notes.py: auto_initial_note accepts extra (merged into
improved/added/fixed after fact extraction, deduped)
- scripts/backfill_exit_notes.py: retroactive backfill for the 27
pre-template releases (executed — all patched)
The exit note is now a first-class pipeline citizen: every earned
version carries the human narrative alongside the governed evidence.