Windows 11 Release Guard

Tagged Release Lane

Use this when publishing a GitHub Release with a validated clean source archive.

Windows 11 Release Guard secure release pipeline from source repository to PyPI Trusted Publishing


Release Contract

ItemRule
Workflow.github/workflows/release.yml
TagvX.Y.Z, matching package/runtime version
Artifactdist/win11_release_guard-source.zip
LicenseLICENSE.txt carries the repository GPL-3.0 text and is included in the clean source archive.
Default stateDraft release
Release bodyLinks changelog, detailed release notes, Pages dashboard, Pages Wiki, Pages changelog, public feed, and the separate PyPI lane
TokenBuilt-in GitHub token only
Pages / WikiTag pushes trigger the separate GitHub internal Wiki sync lane only. release.yml does not deploy Pages or mutate the Wiki. Pages refresh stays in publish-policy.yml from main, schedule, or manual dispatch.
PyPISeparate .github/workflows/pypi-publish.yml lane; no normal push or pull request publishing

Checklist

StepAction
1Confirm version parity with tools/check_version_consistency.py.
2Run tests and source checks.
3Create or select the exact vX.Y.Z tag.
4Run release workflow; tag pushes also trigger the separate Wiki sync lane. Verify the main Pages publish run or manually dispatch publish-policy.yml from main when Pages needs a release refresh. Tag pushes do not deploy Pages.
5Review draft release and attached archive.
6Publish to PyPI separately only when explicitly intended.

PyPI Trusted Publishing

FieldValue
Project namewin11_release_guard from pyproject.toml
PyPI projecthttps://pypi.org/project/win11-release-guard/
OwnerAvnsx
Repositorywin11_release_guard
Workflowpypi-publish.yml
Environmentpypi

pypi-publish.yml builds wheel/sdist in generated dist/ and runs Twine checks on every manual run. Manual dispatch without a tag is build-only; manual dispatch with an existing vX.Y.Z tag, or a published GitHub Release, checks out the tag and can publish through GitHub Actions OIDC with id-token: write. The PyPI workflow is separate from release.yml and owns its own gates, artifact handoff, and pypi environment approval. Do not add PyPI API tokens, Twine credentials, or credentialed repository URLs. If the project does not exist, configure a Pending Trusted Publisher first; it does not reserve the name. A successful PyPI release enables python -m pip install win11_release_guard.

Commands

python tools/check_version_consistency.py
python tools/export_clean_archive.py --output dist/win11_release_guard-source.zip
python tools/export_clean_archive.py --validate dist/win11_release_guard-source.zip
python -m build
python -m twine check dist/*

Do / Do Not

DoDo not
Attach only validated clean archives.Attach raw worktree ZIPs.
Keep policy feed publishing in the Pages workflow.Use release workflow for scheduled feed publication.
Keep GitHub internal Wiki sync in sync-wiki.yml.Push Wiki changes directly from release.yml.
Keep PyPI publishing OIDC-only.Commit dist/ or add PyPI credentials.
Keep release notes factual.Hide failed gates or skipped live checks.

Home | Build, Test and Release | Safe Exports and Clean Archives