Skip to content

Commit a1d9e5f

Browse files
committed
Prepare v0.1.0 release
1 parent 257ce92 commit a1d9e5f

2 files changed

Lines changed: 68 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
## Unreleased
6-
- Initial public release preparation.
5+
## v0.1.0 - 2026-05-20
6+
- Initial public release.

docs/release.md

Lines changed: 66 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
# Release Checklist
22

3+
## Trust Model
4+
Release tags are published through GitHub Releases, not by a personal
5+
maintainer signing key. This project treats the canonical GitHub repository as
6+
the release authority: GitHub creates the release tag, release immutability
7+
locks the tag and assets after publication, and GitHub generates the release
8+
attestation for consumers who want platform-backed provenance.
9+
10+
This is intentionally different from an OpenPGP-signed Git tag. Do not promise
11+
Arch-style `?signed#tag=` verification unless the project later adopts a
12+
separate tag-signing key.
13+
314
## Prep
415
- Update `CHANGELOG.md` with release notes and date.
516
- Bump versions in `Cargo.toml` (workspace and crates) as needed.
617
- Ensure `Cargo.lock` is updated and committed.
718
- Confirm vendor/picoquic is at the intended commit and submodules are initialized.
19+
- Ensure release immutability is enabled for the repository before publishing
20+
the release:
21+
https://docs.github.com/en/code-security/how-tos/secure-your-supply-chain/establish-provenance-and-integrity/preventing-changes-to-your-releases
22+
- Confirm the release tag does not already exist on `origin`:
23+
`git ls-remote --exit-code --tags origin refs/tags/vX.Y.Z`
824

925
## Validation
1026
- `cargo fmt`
@@ -18,5 +34,53 @@
1834
`./scripts/gen_vectors.sh`, `docs/protocol.md`, `docs/dns-codec.md`.
1935

2036
## Release
21-
- Tag the release and push tags.
22-
- Publish artifacts if applicable.
37+
- For a source-only release, create the GitHub Release and let GitHub create
38+
the tag:
39+
40+
```sh
41+
gh release create vX.Y.Z \
42+
--repo Mygod/slipstream-rust \
43+
--target COMMIT_SHA \
44+
--title vX.Y.Z \
45+
--notes-file RELEASE_NOTES.md
46+
```
47+
48+
Use the exact commit SHA that passed validation. Do not create or push a
49+
local Git tag first for this workflow.
50+
- For a release with attached assets, create a draft first, upload all assets,
51+
then publish it:
52+
53+
```sh
54+
gh release create vX.Y.Z \
55+
--repo Mygod/slipstream-rust \
56+
--target COMMIT_SHA \
57+
--title vX.Y.Z \
58+
--notes-file RELEASE_NOTES.md \
59+
--draft
60+
gh release upload vX.Y.Z dist/* --repo Mygod/slipstream-rust
61+
gh release edit vX.Y.Z --repo Mygod/slipstream-rust --draft=false
62+
```
63+
64+
Release immutability only locks the tag and assets after the release is
65+
published.
66+
- Verify the published release:
67+
68+
```sh
69+
gh release verify vX.Y.Z --repo Mygod/slipstream-rust
70+
git ls-remote --tags origin refs/tags/vX.Y.Z
71+
```
72+
73+
- Fetch the tag locally after publication if needed:
74+
75+
```sh
76+
git fetch --tags origin
77+
```
78+
79+
## Packager Notes
80+
- Source packages can track `vX.Y.Z` tags from the canonical GitHub repository.
81+
- GitHub release verification uses GitHub's release attestation and immutable
82+
release state:
83+
https://docs.github.com/en/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/verifying-the-integrity-of-a-release
84+
- GitHub-generated source archives are created on download, so verify the
85+
release/tag identity rather than treating those archives as pre-attached
86+
release assets.

0 commit comments

Comments
 (0)