fix(release-evidence): emit pasteable verify commands - #328
Merged
Conversation
- Replace ./verify-artifact.sh lines with shell the reader can run without the script - Read build properties from a real repository: a virtual and a floating tag carry none - Pick the verify path from the promotion record, not repo-key ranking
alexs-aero
approved these changes
Sep 11, 2026
alexs-aero
left a comment
Contributor
There was a problem hiding this comment.
Looks good.
nit: we should think about rewriting this python script to use templates instead of inline HTML code generation. This will offer more human readability.
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.
The "Verify it yourself" section of an evidence document listed
./verify-artifact.sh <path>lines. A reader opening the published page has no copy of that script, so the section verified nothing. Three defects, all in what the document hands a reader to run.The commands were unrunnable. Replaced with a shell session using nothing but
curl,jqandgh. It walks the digest, every repository holding those bytes, whether the seal names the file, the seal's own digest, the promotion records, the terminal attestation's back-reference to that digest, the build-info behind it, the pull request reviews, and the GitHub build provenance where one exists.The property lookup reused the path from the digest lookup, which is the consumer-facing location. That location often carries no
build.*properties: themaven,pypianddebvirtuals answer?propertieswith "No properties could be found", and for a container the floating tag folder carries onlydocker.*. The properties sit on the timestamped path the build pushed, in a real repository.qualified()resolves there, which ispasteable()without the public-virtual preference.The verify path could name the DEV copy of a release that reached PROD.
stage_of_reporeturnsNonefor a key outside the-prod-publicconvention, somost_public(["ecosystem-rpm-prod-local", "ecosystem-rpm-dev-local"])returns the DEV repo.verify_path()now prefers the repository the terminal promotion targeted, falling back to ranking. FixingREPO_ENV_STAGEinstead would shiftresident_stageson every report and could change verdicts, so it was left alone.The build lookup also names the metadata child rather than the artifact child where that is where the commit sits, since the artifact child carries no
vcsblock.Opened with
skip-jira, matching #303 which introduced the action.Test plan