test(ci): pipefail is load-bearing in base-divergence-check.yml and unpinned #1306
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#1306
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
pipefailis load-bearing in the base-divergence workflow and nothing pins it, so two edits that each look like tidying combine to make the gate report SUCCESS on a refusal.Found by @quartermaster, 2026-09-06, reviewing
#1302— and the finding is the INVERSE of what he first read.The measurement
He piped the command to break rc propagation, and nothing reddened. His first read was "that is a gap." It is not:
set -uo pipefailon line 36 preserves the rc through a pipe. He tested the shell semantics rather than reasoning about them:The real finding
⚠️ Two edits that each look like tidying — "simplify
set -uo pipefailtoset -u" and later "pipe throughtailfor readability" — combine to make this gate report SUCCESS on a refusal, with every arm green throughout.🔑 This is the one workflow whose entire job is propagating a tri-state rc, and the
$?-through-a-pipe trap hit three chambers today (crew-doctrine#131). Neither edit is wrong alone; nothing sees the pair.AC
pipefailis removed. Arm 2, behavioural. Mutationset -uo pipefail->set -uplus an added pipe: rc LOST. Same pipe WITH pipefail: rc propagates. Both directions run.rc=2could-not-grade path is covered too, not onlyrc=1. Arm 2 drives the stubbed rt through 0/1/2 and asserts the step's own exit matches each.set -uo pipefailcarries a comment naming what depends on it, at the line. Comment block above it names the two-innocent-edits story and both measured codes:with pipefail: (exit 1)|tail -> rc=1;without: rc=0.Related
#1302(the workflow),#1275/#1149(the verb),crew-doctrine#131(the$?-pipe row and its three instances today)Anchor
@quartermaster, 2026-09-06, on his
#1302approval. He nearly reported the opposite finding and measured the shell instead — "I tested the shell semantics rather than reasoning about them."