Files
stack/docs/reports/quality/1099-pipefail-sweep.md
T
f10-coderandMos b0f7d26dd9
ci/woodpecker/push/publish Pipeline failed
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/manual/ci-image Pipeline failed
ci/woodpecker/manual/publish Pipeline failed
ci/woodpecker/manual/ci Pipeline was successful
fix(shell): remove test harness pipe hazards (#1106)
Co-authored-by: f10-coder <[email protected]>
2026-08-07 11:12:17 +00:00

6.5 KiB

#1099 pipefail + early-exit sweep

Baseline: df4c591ab42aa1ae62c12935fdc0e772684864a0

This is a site inventory, not a risk count. FIXED means the early-exiting consumer no longer has a piped upstream process whose SIGPIPE can become the result under pipefail. NOT-LOAD-BEARING means the pipeline status is explicitly discarded. UNREACHABLE-AND-WHY describes designed input, not a payload-size safety claim.

Tranche 1 — runtime and general scripts

Baseline site Verdict Construction / reason
tools/matrix-presence-harness/run.sh:38 FIXED nullglob array selects the first path; no pipeline
tools/e2e-install-test.sh:139 FIXED capture help completely, then grep via redirection
tools/install.sh:312 FIXED NUL mapfile reads all roots; count != 1 reaches the named malformed-archive diagnostic
scripts/analysis/reflect-board-history.sh:76 FIXED capture Git history completely, then grep via redirection
scripts/analysis/reflect-git-history.sh:67 FIXED grep reads from a here-string
scripts/analysis/reflect-git-history.sh:69 FIXED grep reads from a here-string
packages/mosaic/framework/tools/authentik/user-create.sh:72 FIXED jq first(...) reads the response directly
packages/mosaic/framework/tools/git/mutate-push-guard.sh:87 FIXED grep -m1 reads the file directly; downstream cut consumes its complete scalar output
packages/mosaic/framework/tools/orchestrator/session-resume.sh:94 FIXED mapfile plus bounded indexed loop replaces head pipeline
packages/mosaic/framework/tools/prdy/prdy-status.sh:69 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:172 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:173 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:174 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:175 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:176 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:177 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/reflect-stop-hook.sh:178 FIXED grep reads from a here-string
packages/mosaic/framework/tools/qa/typecheck-hook.sh:16 FIXED Bash regex extracts the first field without a pipeline
packages/mosaic/framework/tools/qa/typecheck-hook.sh:56 FIXED grep and bounded sed each read from a here-string
packages/mosaic/framework/tools/tmux/send-message.sh:113 FIXED grep reads from a here-string
packages/mosaic/framework/tools/tmux/send-message.sh:124 FIXED grep reads from a here-string
packages/mosaic/framework/tools/wake/detector.sh:126 FIXED one awk reads the manifest directly and exits after the first exact key
packages/mosaic/framework/tools/wake/detector.sh:270 FIXED grep reads from a here-string
packages/mosaic/framework/tools/wake/detector.sh:278 FIXED grep reads from a here-string
packages/mosaic/framework/tools/wake/digest.sh:647 FIXED capture complete locator output, then select first line by parameter expansion
packages/mosaic/framework/tools/wake/reconcile.sh:149 FIXED one awk reads the manifest directly and exits after the first exact key

Explicit withdrawn / non-load-bearing sites

Baseline site Verdict Reason
tools/install.sh:182 NOT-LOAD-BEARING `
tools/install.sh:356 UNREACHABLE-AND-WHY pnpm pack writes one matching CLI tarball into a fresh directory immediately before lookup; citation withdrawn in #1099
tools/install.sh:357 UNREACHABLE-AND-WHY same fresh-directory invariant for gateway tarball; citation withdrawn in #1099
tools/install.sh:627 NOT-LOAD-BEARING `
scripts/agent/session-start.sh:70 NOT-LOAD-BEARING optional scratchpad lookup has `
packages/mosaic/framework/templates/repo/scripts/agent/session-start.sh:58 NOT-LOAD-BEARING optional scratchpad lookup has `
packages/mosaic/framework/tools/qa/qa-hook-stdin.sh:25 UNREACHABLE-AND-WHY withdrawn in #1099 after designed-input reachability measurement; preserved without re-litigation
packages/mosaic/framework/tools/qa/qa-hook-stdin.sh:27 UNREACHABLE-AND-WHY same withdrawn designed-input finding
packages/mosaic/framework/tools/qa/qa-hook-stdin.sh:30 UNREACHABLE-AND-WHY same withdrawn designed-input finding
packages/mosaic/framework/tools/qa/qa-hook-stdin.sh:32 UNREACHABLE-AND-WHY same withdrawn designed-input finding
packages/mosaic/framework/tools/qa/qa-hook-stdin.sh:34 UNREACHABLE-AND-WHY same withdrawn designed-input finding

Tranche 2 — non-wake test harnesses

All 22 baseline sites below are FIXED; the checked-in tranche fixture is passed through the same scanner and asserts all 22 occurrences and 21 normalized identities (the same response-split line occurs twice).

Baseline site(s) Verdict Construction
systemd/user/test-fleet-units.sh:148 FIXED capture tmux output, then grep via redirection
git/test-issue-comment-readback.sh:283,302 FIXED parameter expansion splits status/body without head
git/test-pr-review-gitea-comment.sh:228 FIXED parameter expansion splits status/body
git/test-lane-brief-pr-linkage.sh:72 FIXED grep reads from a here-string
git/test-pr-review-repo-host-override.sh:225-226 FIXED grep reads from a here-string
orchestrator/smoke-test.sh:67,72 FIXED parameter expansion selects first line
orchestrator/test-board-roll.sh:99-100 FIXED grep reads from a here-string
quality/scripts/test-upgrade-durable-snapshot.sh:180 FIXED complete sorted output is read with mapfile, then indexed
quality/scripts/test-upgrade-rollback.sh:339,356 FIXED direct grep -m1 file reads; cleanup captures before testing
tmux/test-send-message-socket.sh:37,38,44-46,68,72 FIXED capture commands complete before redirected grep assertions
tmux/test-send-message-verdict.sh:34 FIXED grep reads from a here-string

Remaining wake-validation sites are intentionally deferred to the final review-sized tranche and are not yet assigned a safety verdict here.