Skip to content

fix(homebrew): make-tarball's self-check reported the CLI missing under pipefail (EPIPE) — main's first tap publish - #2774

Merged
rbuergi merged 3 commits into
mainfrom
fix/make-tarball-epipe
Aug 30, 2026
Merged

rbuergi merged 3 commits into
mainfrom
fix/make-tarball-epipe

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

The Publish the tap (main) job of run 33313367517 (the merge of #2766) failed at Tarball:

tar: stdout: write error
tarball /home/runner/work/_temp/memex-local-0.2.11416.tar.gz does not contain deploy/homebrew/bin/memex-local

The archive carried the file. tar -tzf … | grep -qx is the same EPIPE trap the workflow's own steps were cured of on the PR: grep -q closes the pipe on its first match, tar dies writing the rest, and under pipefail the self-check reads as a missing CLI. The listing now goes to a variable first. Verified locally under bash -o pipefail and shellcheck-clean; the macOS job re-exercises the script on this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C1SquDKJNKZxEUbuaPjUgu

…rep -q — EPIPE under pipefail reported the CLI missing on main's first tap publish

The publish job on main (run 33313367517) failed at Tarball with 'tar: stdout: write error' and
'tarball … does not contain deploy/homebrew/bin/memex-local' — the archive carried it; grep -q had
closed the pipe on the first match. The listing goes to a variable first, exactly the fix the
workflow's own steps already got.
Copilot AI lite review requested due to automatic review settings August 30, 2026 13:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes make-tarball.sh’s tarball self-check so it doesn’t falsely report the CLI missing when pipefail is enabled and grep -q closes the pipe early (EPIPE), which previously broke the first “publish tap from main” attempt.

Changes:

  • Avoids the tar | grep -q EPIPE/pipefail trap by capturing tar -tzf output before checking for the CLI entry.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread deploy/homebrew/scripts/make-tarball.sh Outdated
@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

730 tests  ±0   538 ✅ ±0   4m 47s ⏱️ -4s
  5 suites ±0   192 💤 ±0 
  5 files   ±0     0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

1 547 tests  ±0   1 547 ✅ ±0   6m 29s ⏱️ +55s
    8 suites ±0       0 💤 ±0 
    8 files   ±0       0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

951 tests  ±0   951 ✅ ±0   5m 34s ⏱️ +4s
  6 suites ±0     0 💤 ±0 
  6 files   ±0     0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

971 tests  ±0   967 ✅ ±0   5m 34s ⏱️ -41s
  6 suites ±0     4 💤 ±0 
  6 files   ±0     0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@rbuergi

rbuergi commented Aug 30, 2026

Copy link
Copy Markdown
Contributor Author

The shard-5 red is not attributable to this diff

MeshWeaver.GitSync.Test.ActivityLiveProgressTest.EveryProgressLine_LandsWhileTheCommandIsStillRunning

This PR changes exactly one file — deploy/homebrew/scripts/make-tarball.sh. There is no path from a Homebrew tarball script to a GitSync activity-progress test.

Measured rather than assumed: across the last 6 main runs (41dd85a24, ead524e99, 2ead7832d, ec90061e4, 31993500e, d1a82597c) this test appears zero times in any failure annotation. So it is not deterministic on main either — this is a first occurrence on an unrelated diff.

What it is, and why it will recur

It is a liveness/ordering test with real time in it, and it is inherently contention-shaped:

ctx.Log("step one");
return ObserveMessage(ctx.ActivityPath, "step one").Timeout(30.Seconds())
    .SelectMany(_ => { ctx.Log("step two");
                       return ObserveMessage(ctx.ActivityPath, "step two").Timeout(30.Seconds()); })

It asserts a second progress line lands after the first was observed, through the real activity channel, bounded by two 30 s timeouts nested inside a 60 s one. Under a loaded shard the observation can miss its window — and when it does, the failure looks identical whether the channel genuinely closed early or the shard was merely busy.

Two things worth separating, since the outcome is the same red:

  1. The class's own docstring already flags this hazard for its siblings — it records that the two outcome-asserting tests still passed with ScheduleOffHubTurn deleted ("a regression pin that cannot fail is worse than no pin"), which is why a third test pins the seam directly. This one is in the outcome-asserting group.
  2. A timeout is not an assertion. As with IoPoolResidualNamesItsPoolTest on fix: a pooled-I/O residual NAMES the leaf that would not unwind #2770 today, a test whose failure mode is "a bounded wait expired" reports the same thing for a real regression and for a slow runner.

I am not re-running it to see whether it goes away — that discriminates nothing, and the attribution above is already stronger than a second sample would be. Nothing in this PR needs changing on account of it; if it recurs on other unrelated diffs it deserves its own issue, and the fix is to make it wait on the ordering signal rather than on wall clock.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

801 tests  ±0   801 ✅ ±0   6m 30s ⏱️ -12s
  6 suites ±0     0 💤 ±0 
  6 files   ±0     0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

   10 files  ±0     10 suites  ±0   5m 54s ⏱️ +53s
3 481 tests ±0  3 481 ✅ ±0  0 💤 ±0  0 ❌ ±0 
4 145 runs  ±0  4 145 ✅ ±0  0 💤 ±0  0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

   41 files  ±0     41 suites  ±0   34m 50s ⏱️ +55s
8 481 tests ±0  8 285 ✅ ±0  196 💤 ±0  0 ❌ ±0 
9 145 runs  ±0  8 949 ✅ ±0  196 💤 ±0  0 ❌ ±0 

Results for commit 6a57f97. ± Comparison against base commit 783a499.

♻️ This comment has been updated with latest results.

@rbuergi
rbuergi merged commit 4213425 into main Aug 30, 2026
28 checks passed
@rbuergi
rbuergi deleted the fix/make-tarball-epipe branch August 30, 2026 13:49
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.

2 participants