Skip to content

docs: give the verify command that actually works - #141

Merged
donislawdev merged 2 commits into
masterfrom
docs/verify-command-fix
Aug 19, 2026
Merged

docs: give the verify command that actually works#141
donislawdev merged 2 commits into
masterfrom
docs/verify-command-fix

Conversation

@donislawdev

Copy link
Copy Markdown
Owner

Caught by running it against the real v0.5.0-rc.2 release - the only place it could be
caught, because nothing in the suite runs gh.

What was wrong

Both READMEs handed users gh attestation verify <zip> --bundle <bundle>. It fails twice:

  1. gh refuses without --repo or --owner;
  2. past that it looks for a build-provenance attestation and reports "no attestations
    found with predicate type"
    - because the bundle published beside the archive is the
    SBOM attestation, made after signing over the bytes a user downloads.

Both are the tool being precise. The documentation was wrong.

Verified in both directions

On the released files: with --repo and --predicate-type https://spdx.dev/Document/v2.3
it exits 0 and prints nothing. Append one byte to the archive and it exits 1
("verifying with issuer sigstore.dev"). A green that cannot go red would have proved
nothing.

New guard

The predicate type the READMEs tell people to ask for must be the one
attest-release.yml actually produces. Change what the workflow attests and the command
would otherwise break silently for every user, with nothing in CI able to notice. A
mutation drops the flag from the README and is caught.

Also

Drops a claim I could not support: the old text said the bundle works "with no network at
all". That was never measured. What is true is narrower - the evidence travels with the
download instead of being fetched from the API.

🤖 Generated with Claude Code

donislawdev and others added 2 commits August 19, 2026 19:22
Caught by running it against the real 0.5.0-rc.2 release, which is the only place it
could be caught: nothing in the suite runs `gh`. The line both READMEs handed users
was `gh attestation verify <zip> --bundle <bundle>`, and it fails twice over.

`gh` refuses without `--repo` or `--owner`. Past that, it looks for a build-provenance
attestation and reports "no attestations found with predicate type" - because the
bundle published beside the archive is the SBOM attestation, made after signing over
the bytes a user downloads. Both are the tool being precise. The documentation was
wrong.

Verified in both directions on the released files: with the two flags added it exits 0
and prints nothing, and appending one byte to the archive makes it exit 1. A green
that cannot go red would have proved nothing.

New guard pins the two halves together: the predicate type the READMEs tell people to
ask for must be the one attest-release.yml actually produces, so changing what the
workflow attests can no longer break the command silently for every user. A mutation
drops the flag from the README and is caught.

Also drops a claim I could not support. The old text said the bundle works "with no
network at all"; that was never measured, and what is true is narrower - the evidence
travels with the download instead of being fetched from the API.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
`test_no_stale_app_flags_in_readmes` reads every backticked `--flag` in the READMEs
and asserts our own parser has it - which is the right check, and it cannot tell
whose flag it is looking at. The verification section now spells out the exact `gh`
command a user runs against a release, so `--repo` and `--predicate-type` read as
flags this program has lost.

They go on the same list that already carries PyInstaller's, with a note saying whose
each one is. The list stays short on purpose: its job is to stop a real typo in OUR
flags hiding behind somebody else's.

Caught by CI on the ubuntu leg, and reproduced locally afterwards in the two guards I
had not run - the README ones I did run were green, and this reads the READMEs from a
different file.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@donislawdev
donislawdev merged commit 7d8d6ff into master Aug 19, 2026
13 of 14 checks passed
@donislawdev
donislawdev deleted the docs/verify-command-fix branch August 19, 2026 17:42
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