release: v0.1.2 — recategorize three v0.1.1 CHANGELOG entries (#28)#42
Conversation
Documentation-only patch release. v0.1.1 shipped with three CHANGELOG entries miscategorized under `### Fixed` instead of `### Added`: - `deploy/README.md` Tailscale Funnel section (originally added in PR #22) - README `## Acknowledgments` and `## License` sections (PR #15) - README `## Install` pointer to pypinfo's GCP setup (PR #15) The orphaning was introduced when PR #25 added new `### Added` and `### Changed` blocks at the top of the then-active `## [Unreleased]` section without repositioning the entries from earlier PRs. PR #27 later inserted a `### Fixed` block between `### Changed` and the orphans, which is the layout that shipped in v0.1.1. Three mechanical edits: - `pyproject.toml`: version 0.1.1 → 0.1.2 - `CHANGELOG.md`: insert `## [0.1.2] - 2026-04-27` with one `### Fixed` bullet describing the recategorization; move three orphan bullets from `## [0.1.1]` `### Fixed` to `## [0.1.1]` `### Added`; update link refs (Unreleased compares from v0.1.2, new [0.1.2] compares v0.1.1...v0.1.2) - `uv.lock`: refreshed by `uv lock` so locked version (0.1.2) matches pyproject.toml No code, dependency, or runtime behavior changes. Closes #28. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
cmeans
left a comment
There was a problem hiding this comment.
QA round 1 — PASS
Documentation-only patch release. Verified end-to-end at head e43c365.
Release-mechanic verification
| Item | Result |
|---|---|
pyproject.toml version bump |
0.1.1 → 0.1.2 |
uv.lock minimal pair |
only pypi-winnow-downloads version line changed; no incidental dep churn |
## [Unreleased] empty post-insertion of ## [0.1.2] - 2026-04-27 |
confirmed |
## [0.1.2] ### Fixed recategorization bullet |
references PR #25 / #27 history; closes #28 |
Three orphans relocated to ## [0.1.1] ### Added |
Tailscale Funnel, Acknowledgments + License, Install pointer — confirmed at file body |
Four legitimate ## [0.1.1] ### Fixed bullets retained |
Coverage 100% (#37), stale_threshold_days (#33), _write_health (#32), shields.io (#16) — confirmed |
| Link refs | [Unreleased] compares from v0.1.2; new [0.1.2] compares v0.1.1...v0.1.2; existing entries unchanged |
| Date matches today | 2026-04-27 |
| Single commit since v0.1.1 tag | no missing CHANGELOG entries; ## [Unreleased] correctly empty |
| Issue #28 scope | fully delivered (issue suggested moving orphans under ### Added; PR does so under v0.1.1's ### Added since v0.1.1 already shipped, with the recat itself filed as a v0.1.2 ### Fixed entry) |
Functional verification (worktree at head sha)
uv run pytest --cov→ 71 passed, 100.00% total coverage (fail_under = 100gate satisfied)uv run ruff check src/ tests/→ cleanuv run ruff format --check src/ tests/→ cleanuv run mypy src/pypi_winnow_downloads/→ cleanpython -c "import pypi_winnow_downloads; print(pypi_winnow_downloads.__version__)"→0.1.2(resolves viaimportlib.metadatapost-install)- CI all green at
e43c365: lint, typecheck, test 3.11 / 3.12 / 3.13, deploy-smoke
SemVer fit
Patch release appropriate — the change is documentation-only inside CHANGELOG.md plus the version bump in pyproject.toml and uv.lock. No public-API delta, no dependency change, no runtime behavior change. The PR's "What this does NOT do" section honestly captures that the v0.1.1 git tag, GitHub release page, and tagged-CHANGELOG remain immutably miscategorized; this release fixes the in-tree forward record only. The follow-up offer to manually edit the v0.1.1 GitHub release page notes after merge is the right approach.
Findings
None.
Informational (not blocking)
.github/ISSUE_TEMPLATE/bug_report.yml:14placeholder still reads"0.1.0 or abc1234"— same lag I noted on PR #39 round 1, operator's call to refresh whenever convenient. Not in this PR's scope.
Verdict
Ready for maintainer QA Approved.
|
Switching label: |
Summary
Documentation-only patch release. Closes #28.
v0.1.1 shipped with three CHANGELOG entries miscategorized under
### Fixedwhen they belong under### Addedby Keep-a-Changelog category:deploy/README.mdTailscale Funnel section (originally Added in PR docs(deploy): document Tailscale Funnel as an alternative HTTPS exposure #22)## Acknowledgmentsand## Licensesections (PR docs(readme): Acknowledgments + License sections, BigQuery dataset link, GCP credential setup pointer #15)## Installpointer to pypinfo's GCP setup (PR docs(readme): Acknowledgments + License sections, BigQuery dataset link, GCP credential setup pointer #15)The orphaning was introduced at PR #25, which added new
### Addedand### Changedblocks at the top of the then-active## [Unreleased]without repositioning entries from earlier PRs (#15, #22). PR #27 then inserted a### Fixedblock between### Changedand the orphans, leaving them visually attributed to the wrong subsection. v0.1.1 shipped with that layout.Three mechanical edits
pyproject.toml:version = "0.1.1"→version = "0.1.2"CHANGELOG.md:## [0.1.2] - 2026-04-27between## [Unreleased]and## [0.1.1] - 2026-04-26with one### Fixedbullet describing the recategorization (refs CHANGELOG: three orphaned entries in [Unreleased] now appear under the wrong subsection #28).## [0.1.1]### Fixed(lines 32-62 on main) to the bottom of## [0.1.1]### Added(after line 17 on main). The four legitimate### Fixedbullets in v0.1.1 (Coverage 100% closes Push coverage from 99% → 100% on src/ #37, stale_threshold_days closes config: stale_threshold_days is loaded but never read — staleness warning never fires #33, _write_health closes collector: _write_health OSError escapes per-package isolation and bypasses structured exit #32, shields.io URL closes docs(readme): canonicalize shields.io endpoint-badge URL form (line 11) #16) are unchanged.[Unreleased]now compares fromv0.1.2, new[0.1.2]comparesv0.1.1...v0.1.2.uv.lock: refreshed byuv lockso the lockedpypi-winnow-downloadsversion (0.1.2) matchespyproject.toml.What this does NOT do
The v0.1.1 git tag, the v0.1.1 GitHub release page, and the v0.1.1 CHANGELOG.md as it exists at the v0.1.1 tag are immutable historical artifacts and remain miscategorized. This PR corrects the in-tree CHANGELOG.md going forward; the corrected categorization ships with v0.1.2.
If you want the v0.1.1 GitHub release page notes also fixed, that's a separate manual edit on the release page after this lands — happy to do it as a follow-up.
What this is NOT
The auto-CHANGELOG workflow's underlying ordering bug for
### Changedinsertion is a different issue (#26) handled in PR #41, currently Ready for QA. The orphaning fixed by this PR was a one-time manual mistake at PR #25 time, not an automation bug, so no workflow change is required.Verification
uv run pytest --cov— 71/71 passed, 100% coverage gate greenuv run ruff check src/ tests/— cleanuv run ruff format --check src/ tests/— cleanuv run mypy src/pypi_winnow_downloads/— cleanuv.lockmatchespyproject.toml—pypi-winnow-downloads v0.1.1 → v0.1.2git diff --stat: 3 files, +23/-17, all inCHANGELOG.md+pyproject.toml+uv.lock)After this merges
Then verify the release at https://pypi.org/project/pypi-winnow-downloads/0.1.2/ — the trusted-publisher OIDC path is the same as v0.1.0 / v0.1.1.
🤖 Generated with Claude Code