fix(tests): make the emittable membership test process-free, retract the SIGPIPE claim #2027

Merged
sean merged 1 commit from fix/emittable-membership-processfree into trunk 2026-08-10 14:49:56 +00:00
Owner

285729d blamed a SIGPIPE race. That is disproven (981-byte set fits the pipe buffer; 3000-iteration stress test found nothing) and is retracted in the code comment and commit message.

The provable defect stands: an out-of-process membership test conflates absent with could-not-run. CI named pipeline-build-desktop missing while its own defined list printed it, 5th of 42. Test membership in bash alone so only the data decides.

Verified: green clean, red on an absent template, red on a strict prefix of a defined name.

285729d blamed a SIGPIPE race. That is disproven (981-byte set fits the pipe buffer; 3000-iteration stress test found nothing) and is retracted in the code comment and commit message. The provable defect stands: an out-of-process membership test conflates absent with could-not-run. CI named pipeline-build-desktop missing while its own defined list printed it, 5th of 42. Test membership in bash alone so only the data decides. Verified: green clean, red on an absent template, red on a strict prefix of a defined name.
285729d said the guard failed because grep -q exits at the first match,
printf then dies of SIGPIPE, and pipefail reports the pipeline failed.
That mechanism is WRONG and is retracted here. The defined set is 981
bytes, far inside the 64 KiB pipe buffer, so printf completes its single
write before grep can matter; a 3000-iteration stress test at this size
produced zero failures.

What IS provable is the defect the CI dump shows: an out-of-process
membership test cannot tell 'this name is absent' from 'the test could
not run', and reports both as absent. CI named pipeline-build-desktop
missing while printing that same name in its own defined list, 5th of
42. The trigger stays unproven; a transient fork/exec failure under load
fits but is not demonstrated.

Test membership in bash alone — no pipe, no subshell, no external grep —
so only the data can decide the answer. Verified green on a clean tree,
red on an absent template, and red on a strict prefix of a defined name
(substring safety). ~15 other '| grep -q' sites in tests/ share the
class; that sweep is separate.
sean merged commit 58d7674c80 into trunk 2026-08-10 14:49:56 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/pipelines!2027
No description provided.