Skip to content

docs(release): pin by release tag with the recorded manifest commit - #10

Merged
first-assist merged 1 commit into
mainfrom
docs/tag-pin-release-notes-20260916
Sep 16, 2026
Merged

first-assist merged 1 commit into
mainfrom
docs/tag-pin-release-notes-20260916

Conversation

@first-assist

Copy link
Copy Markdown
Collaborator

Summary

The published release body was a single inline string in release.yml
("Source release at …"), and the process document did not state which Git
selector a consumer should use. Consumers adopting this library want one stable
reference plus a reviewed record of the exact commit behind it.

  • scripts/release.py gains a notes subcommand that renders the release body
    from the same checked release identity the manifest uses (clean committed
    tree, tracked lockfile, validated Cargo.toml/changelog state). The body says
    consumers pin the annotated tag (tag = "vX.Y.Z") and record the commit from
    the attached manifest in their own reviewed pin record, and that a published
    tag is annotated and never moved.
  • release.yml publishes that rendered body with --notes-file. It is written
    outside release-dist/, so the attested asset set and SHA256SUMS are
    unchanged.
  • docs/release-process.md states the same pinning rule under "Release
    identities" and documents previewing the body.
  • scripts/test_release.py covers the rendered wording.

No library source, version or lockfile change; release policy allows this as
release-machinery and documentation maintenance.

Verification

  • python3 -m unittest discover -s scripts -p 'test_*.py' — 9 tests, OK
  • scripts/check-release-state.sh — release-state: 0.19.1 passed
  • scripts/check-package-release-policy.sh — release-policy: v0.19.1 -> 0.19.1 passed
  • python3 scripts/release.py notes --output … on the committed tree — rendered
    the expected body
  • git diff --check — clean

Crate lanes (clippy/test/doc) were not run because no Rust source changed.

🤖 Generated with Claude Code

The published release body was a one-line string in the workflow and said
only where the source was; the process document left consumers to infer the
selector. Consumers need one stable Git reference plus a reviewed record of
the exact commit behind it.

Release notes are now rendered by `scripts/release.py notes` from the same
checked release identity as the manifest, and say that consumers pin the
annotated `v<version>` tag and record the commit from the attached manifest
in their own reviewed pin record, and that a published tag is never moved.
The workflow attaches the rendered body with `--notes-file`, keeping it out
of the attested asset set. The process document states the same rule and how
to preview the body. A unit test covers the rendered wording.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@first-assist
first-assist merged commit 3d4bf07 into main Sep 16, 2026
2 checks passed
@first-assist
first-assist deleted the docs/tag-pin-release-notes-20260916 branch September 16, 2026 03:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant