Summary
Two useful, non-blocking release-maintenance items remain from the broader release-workflow review. Higher-risk work was split into dedicated v0.16 issues so it cannot hide inside a P2 cleanup bundle:
1. Publish the matching CHANGELOG section
The workflow currently publishes a placeholder release note even though CHANGELOG.md contains detailed entries.
Acceptance
2. Lock release-time development dependencies
pip install -e ".[dev]" resolves fresh at release time, so the release result can differ from the CI run that approved the commit.
Acceptance
Preserve these existing controls
- Actions stay pinned to full commit SHAs.
- The protected
pypi environment continues to scope qualification inputs.
dist/ and qualified-dist/ pre-existence and symlink checks remain.
- Downloads continue to enforce HTTPS-only protocols.
- Qualified wheel filenames remain strict and traversal-safe.
- The tag ↔ package-version check remains, with its rationale.
Split from the original #345 scope during PM review on 2026-08-09.
Summary
Two useful, non-blocking release-maintenance items remain from the broader release-workflow review. Higher-risk work was split into dedicated v0.16 issues so it cannot hide inside a P2 cleanup bundle:
1. Publish the matching CHANGELOG section
The workflow currently publishes a placeholder release note even though
CHANGELOG.mdcontains detailed entries.Acceptance
--notes-file.2. Lock release-time development dependencies
pip install -e ".[dev]"resolves fresh at release time, so the release result can differ from the CI run that approved the commit.Acceptance
Preserve these existing controls
pypienvironment continues to scope qualification inputs.dist/andqualified-dist/pre-existence and symlink checks remain.Split from the original #345 scope during PM review on 2026-08-09.