Repository navigation
release: the signed-tag check reads the tag object before searching it - #648
Merged
Merged
Conversation
release.just's reuse of a tag on HEAD piped `git cat-file tag` into `grep -qE` for the signature block, under pipefail. grep -q closes the pipe at its match; a producer still writing after that is killed by SIGPIPE, and pipefail turns its exit 141 into the pipeline's failure, so a signed tag can read as unsigned and the release refuse it. The signature block opens near the end of a tag object and lines follow it, so the window exists; forkcloser/openssh's release of v10.6.1.5 was refused by the same shape on codesign's output (forkcloser/openssh#99). The object is captured first and searched after, as every other grep -q in the recipes already reads from a variable. limen's own .justfile had the one other live producer, utmctl's status line, and takes the same form; its message now carries the status it read. Measured on this machine against the newest tag, 200 runs each: the piped form failed 0 of 200 and the captured form 0 of 200 on a 499-byte tag object, which git writes at once; the window is the producer's second write, which codesign makes and this git call rarely does. The change makes the shape uniform rather than closes a failure seen here. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Signed-off-by: closer-claudio <claudio@farcloser.world>
apostasie
approved these changes
Nov 10, 2026
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.
release.just's reuse of a tag on HEAD piped
git cat-file tagintogrep -qEfor the signature block, under pipefail. grep -q closes thepipe at its match; a producer still writing after that is killed by
SIGPIPE, and pipefail turns its exit 141 into the pipeline's failure, so
a signed tag can read as unsigned and the release refuse it. The
signature block opens near the end of a tag object and lines follow it,
so the window exists; forkcloser/openssh's release of v10.6.1.5 was
refused by the same shape on codesign's output
(forkcloser/openssh#99). The object is captured
first and searched after, as every other grep -q in the recipes already
reads from a variable. limen's own .justfile had the one other live
producer, utmctl's status line, and takes the same form; its message now
carries the status it read.
Measured on this machine against the newest tag, 200 runs each:
the piped form failed 0 of 200 and the captured form 0 of 200 on a
499-byte tag object, which git writes at once; the window is the
producer's second write, which codesign makes and this git call rarely
does. The change makes the shape uniform rather than closes a failure
seen here.
just lintandjust testgreen.