Skip to content

ci: stop retrying a missing cmux-tui manifest - #14168

Merged
teamleaderleo merged 3 commits into
mainfrom
ci/tui-manifest-404-no-retry
Sep 24, 2026
Merged

teamleaderleo merged 3 commits into
mainfrom
ci/tui-manifest-404-no-retry

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

scripts/ci/resolve-cmux-tui-client-commit.sh probed each candidate manifest with curl --retry 5 --retry-delay 3 --retry-all-errors. That flag retries a genuine 404 too, so every unpublished candidate cost about 15 s before the resolver moved on. It happens in every release and nightly fallback, and in the tui-resolution guard leg, which took 81 s on CI (60 s in this one test). macOS admission on PRs waits for that leg.

The probe is now an explicit loop:

  • HTTP 404 or 410, or a missing file:// path (curl exit 37), moves on at once.
  • DNS, connection, 5xx and 429 failures keep the bounded retry (6 attempts, 3 s apart), so a network blip on a release runner still does not read as a missing manifest.
  • Statuses below 400 still count as found, as they did under curl -f.

CMUX_TUI_CLIENT_PROBE_RETRY_SECONDS overrides the retry delay, validated like the existing fetch settings.

Testing

  • The first commit adds only the test. Against the old resolver it fails with skipping a missing manifest took 15s; a 404 must not be retried.
  • The test also puts a curl shim on PATH that fails twice with exit 6 (DNS) and then runs the real curl, which proves transient failures are still retried and then resolve.
  • bash tests/test_ci_resolve_cmux_tui_client_commit.sh: 60.8 s before, 0.9 s after, locally on Linux. shellcheck is clean on both files.
  • A live run against files.cmux.com (--max-fallback 3 from a shallow worktree) resolved the published commit 37e93ff, so the HTTPS found path works.

Checklist

  • I tested the change locally
  • I added or updated tests for behavior changes
  • All code review bot comments are resolved

— Copypasta g1 🫧
Run: run_linux_guards_speed_20260924_be91c283

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

The cmux-tui manifest resolver no longer retries missing manifests, cutting the tui-resolution guard leg from ~61 s to under 1 s on CI.

  • A HTTP 404/410 or missing file:// path (curl exit 37) moves on to the next candidate immediately; DNS, connection, 5xx, and 429 failures keep the bounded retry (6 attempts, 3 s apart), so a network blip on a release runner does not read as a missing manifest.
  • Statuses below 400 still count as found, matching the old curl -f behavior.
  • Adds CMUX_TUI_CLIENT_PROBE_RETRY_SECONDS to override the retry delay, validated like the existing fetch settings.
  • Adds tests proving a 404 is not retried while transient failures still resolve after retry.

Written for commit 0d15abc. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Bug Fixes
    • Improved the reliability of resolving the cmux TUI client when temporary network failures interrupt manifest checks. The resolver now retries transient failures before moving on, while missing manifests are skipped promptly so available versions can be found faster.
    • Invalid retry-delay settings are now rejected with a clear usage error rather than proceeding with an unsupported value.

teamleaderleo and others added 2 commits September 23, 2026 23:49
A 404 on a cmux-tui client manifest is definitive, but the resolver's
curl --retry-all-errors retries it five times, 3 s apart. Each
unpublished candidate costs 15 s in the test and in every release and
nightly fallback. Bound that walk, and prove a transient probe failure
is still retried.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The manifest probe used curl --retry-all-errors, which cannot tell a
404 from a network failure, so every unpublished candidate slept
through five 3 s retries. Probe with an explicit loop instead: a 404 or
410 (or a missing file:// path) moves on at once, while DNS, connection
and 5xx failures keep the bounded retry. Statuses below 400 still count
as found, as they did under curl -f.

The tui-resolution guard test drops from 61 s to under 1 s locally.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 1664a20f-7111-4f08-bce6-f5a3878aaf92

📥 Commits

Reviewing files that changed from the base of the PR and between ac0ceae and 0d15abc.

📒 Files selected for processing (2)
  • scripts/ci/resolve-cmux-tui-client-commit.sh
  • tests/test_ci_resolve_cmux_tui_client_commit.sh
 ________________________________________________________________________________________________
< Your code and I have a love-hate relationship. I love finding bugs, you hate that I find them. >
 ------------------------------------------------------------------------------------------------
  \
   \   (\__/)
       (•ㅅ•)
       /   づ
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

The curl shim now replays scripted outcomes, so the test reaches the
HTTP branches a file:// store never produces: DNS, 503 and 429 are
retried until the published manifest is found, and 404 and 410 skip
the candidate at once. A resolver that retried 404, or gave up on a
5xx, now fails with a message instead of exiting silently under set -e.
The wall-clock bound for the 404 walk is 10 s, still under the old
15 s cost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 24, 2026 06:56
@teamleaderleo
teamleaderleo merged commit fae46b6 into main Sep 24, 2026
46 of 47 checks passed
rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 24, 2026
9567d6e refactor: give About and Licenses windows explicit ownership (manaflow-ai#13148)
fae46b6 ci: stop retrying a missing cmux-tui manifest (manaflow-ai#14168)
8421357 Point PR checklist and welcome note at the hidden Review Trigger block (manaflow-ai#14167)
b9415db ci: run app-host product consumers on compile admission's pool and Xcode (manaflow-ai#14163)
ac0ceae fix(sidebar): order panels without reading split-container geometry (manaflow-ai#13931)
37edc16 ci: judge Web complexity's trusted files in the pull request's merge (manaflow-ai#14018)
679f4e2 ci: leave three-day-old queued ghosts to GitHub instead of retrying them (manaflow-ai#14166)
07a2e22 fix(web): enumerate complexity-gate sources with git ls-files -z (manaflow-ai#13682)
c72f659 cloud: share concurrent VM stats reads (manaflow-ai#13327)
aa51f16 ci: trim package setup before the macOS compile admission build (manaflow-ai#14160)
82ea1ed ci: land the fleet review fixes manaflow-ai#14159 merged without (manaflow-ai#14165)
adddb59 docs: propose routing CI by capability instead of by vendor (manaflow-ai#14010)
f862390 ci: fix three fleet command gaps from the manaflow-ai#14159 review (manaflow-ai#14164)
77d56b3 agent-chat: make installed harnesses first-class (manaflow-ai#13347)
7dc57f6 Clarify writing guidance for issue and PR descriptions (manaflow-ai#13275)
ccf4963 ci: name the hung test when a Swift package test step stalls (manaflow-ai#14055)
9fca985 ci: guard the fleet routing switch, Xcode pin and quarantine (manaflow-ai#14159)
02972b7 fix: thin around and Developer ID sign the bundled cmux-tui SSH payloads (manaflow-ai#14154)

# Conflicts:
#	.github/workflows/app-host-test-rerun.yml
#	.github/workflows/ci-guards.yml
#	.github/workflows/ci-macos.yml
#	.github/workflows/test-ios.yml
#	.github/workflows/web-complexity-trusted.yml
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