Skip to content

ci(cmux-tui): hosted verification gate lists every job result, then fails - #22164

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/ci-focused-gate-all
Oct 20, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/ci-focused-gate-all

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

What

The cmux-tui focused hosted verification gate (Require selected verification jobs) stopped at the first red job. A red lint (linux) (today a base clippy red in ghostty-vt and cmux-tui-core) hid whether the filtered Rust tests passed, so every ./scripts/verify-cmux-tui-hosted.sh --filter run needed a job-log API read to find the test result.

Now the step checks every selected job, prints one line per job (Rust tests: success or ::error::lint finished with result 'failure'), and fails once at the end. Which jobs are required doesn't change.

Numbers

  • Before: on 2026-10-19, 5 of 5 of my --filter runs (39319904870, 39319904556, 39319904858, 39319906857, 39321361796) ended with only lint finished with result 'failure' in the gate. Finding that test (linux) passed took one extra jobs API read and one log download per run (about 2 REST calls and a 2-6k line log each).
  • After: the gate log names every job's result, so one read of the gate (which the script already prints) answers it.

Tests

  • tests/test_tui_focused_filter_guard.py::test_hosted_verification_gate_reports_every_selected_job_before_failing runs the real step script with a red lint and macOS job and green tests. It was committed first (ba59c8c) and failed on base (only the lint line printed); it passes on the fix.
  • Two other tests in that file (test_macos_job_runs_the_focused_filter, test_lint_is_one_required_job_and_os_matrix_only_runs_behavior_tests) already fail on base a827da19e2f; this PR doesn't touch them.

Risk

High by path (cmux-tui.yml). The change only collects failures before exiting; the set of required jobs and the exit status for any red stay the same.

Not UI: CI workflow step only.

Review and runtime evidence

Review: SHIP at 41f1e6b (independent correctness-first reviewer subagent; it ran the step script 14 ways under bash --noprofile --norc -eo pipefail and found no way for a red, cancelled, skipped or empty result to pass)
Runtime test: tests/test_tui_focused_filter_guard.py::test_hosted_verification_gate_reports_every_selected_job_before_failing, python -m pytest -q tests/test_tui_focused_filter_guard.py at 41f1e6b (fails at ba59c8c, passes at 41f1e6b)

Review follow-up (not in this PR): ci-guards.yml runs python3 tests/test_tui_focused_filter_guard.py, and the file has no __main__ runner, so CI never calls its test_* functions. Two of them already fail on base (above). That belongs in its own change.

🤖 Generated with Claude Code

teamleaderleo and others added 2 commits October 19, 2026 14:36
…d job before failing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… fails once

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

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review 41f1e6b: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr22164 -f ref=leo/ci-focused-gate-all -f platform=macos -f backend_mode=local

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Bead cx-o2kz8 created for this PR by the cmux coordinator.

@greptile-apps

greptile-apps Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; it reports all selected results without weakening the verification gate.

Summary

The hosted verification gate now prints every selected job’s result before exiting. It still fails when any required job is unsuccessful.

  • The verification gate reports every selected job before it fails.

Acknowledged by teamleaderleo: test_macos_job_runs_the_focused_filter and test_lint_is_one_required_job_and_os_matrix_only_runs_behavior_tests already fail on the base commit. Those failures are outside this change.

Reviews (1) · Last reviewed commit: "ci(cmux-tui): hosted verification gate l..." · Reviewed by Greptile

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (correctness first, subagent), head 41f1e6b34b

The Require selected verification jobs gate step in .github/workflows/cmux-tui.yml now checks every selected job, prints one line per result, and exits once at the end with failed, instead of stopping at the first red job.

  • non-blocking: .github/workflows/cmux-tui.yml:1486-1525. Correct under the Actions default bash -eo pipefail. Every command in require_success returns 0, so -e can't stop the step early, and a trailing if that is false still returns 0. exit "$failed" is 1 if any selected job was not success, so a failure, cancel, skip or empty result still fails the gate. The set of selected jobs is unchanged.
  • non-blocking: tests/test_tui_focused_filter_guard.py:348-366. The new test runs the real step body with every result set to success, then sets lint and macOS to failure, and asserts both error lines, a success line and exit code 1. It runs plain bash without -e; the logic gives the same result either way.
  • non-blocking (already disclosed in the PR body): ci-guards.yml runs this file as python3 tests/test_tui_focused_filter_guard.py, and the file has no __main__ runner, so CI never calls the new test (or the other test_* functions in it). This gap was already there before this PR.

Verdict: MERGE

@github-actions

github-actions Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

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