Skip to content

Survive a build that emits no warnings at all - #12

Merged
damian1000 merged 1 commit into
mainfrom
survive-a-build-with-no-warnings
Aug 13, 2026
Merged

Survive a build that emits no warnings at all#12
damian1000 merged 1 commit into
mainfrom
survive-a-build-with-no-warnings

Conversation

@damian1000

@damian1000 damian1000 commented Aug 13, 2026

Copy link
Copy Markdown
Member

The gate failed every clean repository, and failed silently.

A composite step runs under bash --noprofile --norc -e -o pipefail. A grep that matches nothing exits 1, pipefail propagates it, and -e kills the step before a single echo runs — so the symptom is exit code 1 with no output, on exactly the repositories that had nothing to report. portfolio-manager was the first to hit it.

Both greps are now guarded with || true.

How it got through

The verification I ran before merging exercised the same pipeline, in four states, against real build logs — but through a harness script that did not set the shell flags GitHub uses. The no-match case passed there and could only fail in CI.

The fix is tested by extracting the step's own run: block out of the action and executing it under bash -e -o pipefail, across five states:

state expected result
clean build, no baseline pass 0 seen, exit 0
empty log pass 0 seen, exit 0
warnings + matching baseline pass 4 seen, all accepted, exit 0
warnings, no baseline fail, naming them exit 1, all four lines listed
missing build log fail exit 1, names the missing path

readme-surface-checks was audited for the same class of bug and is already guarded throughout.

The gate failed every clean repository, silently. A composite step runs under
bash -e -o pipefail, so a grep matching nothing exits 1, the pipeline inherits
it, and the step dies before printing anything -- exit code 1 with no output,
on exactly the repositories with nothing to report.

Both greps are now guarded. The verification that missed this ran the same
pipeline through a harness that did not set the shell's flags, so the no-match
case passed locally and failed on the first clean repository in CI; the fix is
tested by extracting the step's own script and running it under the flags
GitHub actually uses, across all five states including the empty one.
@damian1000
damian1000 enabled auto-merge (squash) August 13, 2026 16:37
@damian1000
damian1000 merged commit e399b6c into main Aug 13, 2026
1 check passed
@damian1000
damian1000 deleted the survive-a-build-with-no-warnings branch August 13, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant