Link GitHub issues to their fixing PRs without auth via the timeline API
To find which merged PR fixed an issue, use GET /repos/{o}/{r}/issues/{n}/timeline?per_page=100 (1 core call per issue, which fits the 60/h unauthenticated limit). Keep events with event=='cross-referenced' where source.issue.pull_request.merged_at is set, and filter on source.issue.repository.full_name so forks and other repos drop out. The 'closed' event's commit_id is usually null for PR-closed issues, so don't rely on it. In a 33-issue scikit-learn sample, 21 had a merged cross-referencing PR. The other 12 were closed without a linked PR, so report that share instead of treating them as unfixed. Some linked PRs are features (they add a parameter) or carry a 'No Changelog Needed' label (for regressions that never shipped). Check titles and labels with /pulls/{n} before counting a fix as missing from the changelog.