Reconcile release docs and fix a release-provenance retry bug - #26
Conversation
Found by checking rather than re-reading: RELEASING.md step 7 still said `git push origin main`, which now fails outright under the branch protection KAN-192 added; its closing section also claimed GitHub Release artifact-attachment was still undecided when step 9 already does it (shipped 0.10.0). CHANGELOG.md dated 0.11.1 a day ahead of the release commit's local date, which also left the generated man page's header stale (`make docs` regenerated it). CLAUDE.md's claim that the GitHub repo description matches pyproject.toml was false; rewritten to document that the divergence is now intentional. Jira (KAN-114/KAN-144 children) matched TODO.md/CLAUDE.md throughout, so no ticket status changes were needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
gh release download had no filter, so a workflow_dispatch retry against a release that already carries .intoto.jsonl bundles from an earlier pass would pull those down too. attest-build-provenance then signed the bundles themselves, and the upload loop wrote them back out as wheel.intoto.jsonl.intoto.jsonl, growing the release assets and producing provenance for provenance on every retry instead of cleanly re-attesting the wheel, sdist and man page. Fixed by selecting the three intended artifact types with -p rather than downloading everything. Found by external review of 90a4229/389f381. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Greptile SummaryThe PR reconciles release documentation and generated man-page metadata with current repository state, and narrows provenance downloads to wheel, sdist, and man-page assets.
|
| Filename | Overview |
|---|---|
| .github/workflows/release-provenance.yml | Restricts release downloads to the three intended artifact types, preventing recursive attestation of existing bundles. |
| RELEASING.md | Updates the protected-branch release flow, but the post-squash pull can fail on divergent histories or tag a local merge commit rather than origin/main. |
| CHANGELOG.md | Corrects the 0.11.1 release date to match the release commit’s local date. |
| unifi-map.1 | Regenerates the man-page header consistently with the corrected changelog date. |
| CLAUDE.md | Documents the intentional divergence between the GitHub repository description and package-facing descriptions. |
Reviews (1): Last reviewed commit: "Stop a release-provenance retry from re-..." | Re-trigger Greptile
| git checkout main && git pull origin main | ||
| git tag -a vX.Y.Z -m "…" # annotated, summarising the headline changes |
There was a problem hiding this comment.
Tag targets a divergent local commit
After the release PR is squash-merged, the local release commit and the new squash commit on origin/main have diverged. git pull origin main therefore either stops for a reconciliation strategy or creates a local merge commit, causing the tag to miss the actual commit on origin/main.
| git checkout main && git pull origin main | |
| git tag -a vX.Y.Z -m "…" # annotated, summarising the headline changes | |
| git fetch origin main | |
| git tag -a vX.Y.Z origin/main -m "…" # annotated, summarising the headline changes |
Context Used: CLAUDE.md (source)



Summary
RELEASING.md,CHANGELOG.mdandCLAUDE.mdagainst actual repo/Jira/GitHub state:RELEASING.mdstep 7 still saidgit push origin main, which now fails outright under the branch protection KAN-192 added; rewrote it to push a branch, open a PR, wait for required checks, then tag.RELEASING.md's closing section claimed GitHub Release artifact-attachment was still undecided, contradicting its own step 9 (which already does it, shipped at 0.10.0).CHANGELOG.mddated 0.11.1 a day ahead of the release commit's local date; regenerated the man page (make docs) since its header date derives from that entry.CLAUDE.mdclaimed the GitHub repo description matchespyproject.toml; it doesn't (deliberately, per discussion) — rewrote the paragraph to say so.TODO.md/CLAUDE.mdthroughout, so no ticket-status changes were needed.release-provenance.ymlfound by external review: aworkflow_dispatchretry against a release that already carries.intoto.jsonlattestation bundles would download those too, attest them, and re-upload them aswheel.intoto.jsonl.intoto.jsonl, growing the release assets on every retry. Fixed by selecting only the three intended artifact types (*.whl,*.tar.gz,unifi-map.1) instead of downloading everything.Test plan
make check(ruff format/lint + 681 tests) passes cleanmake docsproduces no further changes (man page/flag reference regenerated and committed)make buildproduces a working wheel/sdist, both containing the man pagevalidatebefore this PR🤖 Generated with Claude Code