docs: verify releases against the tag being verified, and document the PyPI attestations - #31
Merged
Merged
Conversation
…e PyPI attestations The README's cosign command pinned the signer identity to @refs/tags/v0.2.1, so copying it from the page against any later release failed outright: 'none of the expected identities matched what was in the certificate'. The certificate for a release names that release's tag and nothing else, so the documented command now takes the tag as $TAG rather than freezing the first one it was written for. Also drops 'from PyPI once published' (it has been published since v0.4.3) and documents the PEP 740 build attestations the wheel and sdist now carry, with the command that checks them and what a refusal looks like. That path needs no signing key and no cosign install, which makes it the cheaper check for someone who has just run pip install. Signed-off-by: Empire Labs Pty Ltd <narko4u@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documentation fixes for the claims this week's releases made untrue.
The verification command was broken, and it is measured, not inferred. The
"Verifying releases" command pinned the signer identity to
@refs/tags/v0.2.1. The certificate for a release names that release's tag,so copying the command against v0.4.3 or later fails:
A reader doing the right thing — reading the README and verifying the artifact —
got a red failure from a page whose subject is verifiability. The command now
takes the tag being verified (
TAG=v0.4.4), because the identity is the workflowrunning under that tag by construction; any fixed tag in the docs is wrong from
the next release on.
The attestation path was missing. Since v0.4.3 the wheel and sdist carry
PEP 740 build attestations over GitHub Actions OIDC. The README never mentioned
them, which left the harder check (install cosign, download four assets) as the
only documented route. Both are now documented, with the attestation check first:
Run against the live v0.4.3 files, this returns
OK:for both the wheel and thesdist. The negative control is in the docs too — pointed at a different
repository it refuses:
provenance was signed by repository "narko4u/mcp-evidence-validator", expected "narko4u/witnessos-verifier".Two claims I checked before writing them down, and did not change because
they turned out to be false alarms: the relative
SECURITY.md/CONTRIBUTING.mdlinks resolve (PyPI rewrites them to the repository; both return 200), and the
base64-wrapped
SHA256SUMS.pemis accepted as-is by cosign v3.1.3 — verifiedwith
cosign verify-blobagainst the real certificate,Verified OK. The PEMencoding is noted in passing for anyone feeding a plain PEM to another tool.
Install block.
pip install mcp-evidence-validatorwas still commented"# from PyPI once published", contradicting the working install button directly
above it.
Version bumped 0.4.4 (pyproject + the source-tree fallback, which the release job
now asserts against the tag), CHANGELOG entry under a new 0.4.4 section.
Local verification on this branch:
python -m buildproducesmcp_evidence_validator-0.4.4-*,PYTHONPATH=src pytestpasses,ruff check src testsclean, and the runtime reports 0.4.4.