Skip to content

fix(cmux-next checks): pre-push gate fixture, manifest reader, Browser waivers, scrollbar List false positive (base reds) - #25032

Merged
teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/base-red-gate-route-crash
Oct 25, 2026
Merged

teamleaderleo merged 2 commits into
feat-cmux-nextfrom
leo/base-red-gate-route-crash

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

Four base reds in "cmux-next checks" on feat-cmux-next (run 40146316318, job 121028307969), each fixed where it starts. This PR touches scripts and tests only, no product code.

Script tests: test_a_branch_that_merges_feat_cmux_next_in_is_judged_on_its_own_changes and test_a_merge_cannot_use_an_upstream_removal_to_pay_for_the_branch_s_own_debt expect [main-async].

  • Cause: prepush-gate.py runs the guardrails only when GITHUB_ACTIONS is unset (ceebde5). The fixture env did not strip it, so on CI the guardrails never ran. The assertions came in with 4ab5c24 and ef34f91.
  • Fix: the fixture strips GITHUB_ACTIONS and CMUX_GUARDRAILS_SKIP_REASON, as tests/test_cmux_next_guardrails.py does.
  • With the guardrails on, four more tests failed, and they would fail the same way on a dev machine: the newer raw-blocking and main-blocking rules refuse the old fixtures. So NEW_CLEAN now reads through Data(blockingContentsOf:), the checked seam, and the skip-reason test pushes a try!-only file.
  • Result: all 37 gate tests pass on a CI Linux runner (cmux-ci test).

Tier routing: test_the_manifest_reader_finds_the_graph_targets fails for CmuxNextActionsTests.

  • Cause: the reader searched for path: from a target's name up to the next target's name. Since cmux NEXT: host real SwiftUI preview leaf #24978 the .package(path:) dependencies come after the target list, so the last target picked up ../../Shared/CmuxGhosttyKit as its path.
  • Fix: each target's path: is now read only inside its own (...) call. Balanced parentheses, skipping strings and comments.
  • Result: every graph target is found; test_cmux_next_route.py gives 37 OK.

Crash safety: swift CmuxNextBrowser: dynamic_dispatch.waived 9 -> 11.

  • Cause: 8e23ffe and 2ae3fe8 replaced one NSSelectorFromString (in the deleted WebKitTab+GesturelessScript.swift) with three reviewed // crash-allow: selectors in WebKitGestureFreeEvaluation.swift.
  • Each selector is sent only after path(in:) or functionPath() checks responds(to:). With no path the call throws .unsupported, so all three waivers are justified.
  • Fix: recorded with crash_ratchet.py --record-waivers, the designed path for a reviewed crash-allow. The same run also lowers rust.unwrap cmux-tui-core from 1151 to 1150 (a ratchet going down).
  • Result: crash-ratchet: ok; crash-ratchet-tracked, crash-ratchet-v2 and test_crash_ratchet_compare pass.

Scrollbars thin (warn-only): AgentCLIIntentLedger.swift:21 List(expectedMachineID:...) was a false positive.

  • Fix: check-scrollbars.sh now judges a SwiftUI ScrollView/List only in a file that imports SwiftUI. That covers @preconcurrency, access-level (public import) and scoped (import struct SwiftUI.List) imports. No CmuxNext module re-exports SwiftUI.
  • Checked: across all of Sources, the only ScrollView/List the new rule skips is that Ledger line.
  • Tests: new cases in check-scrollbars.test.sh; the existing SwiftUI cases now import SwiftUI. The real Swift hits go in a separate PR.

Risk: low. Test fixtures, a test-side manifest reader, one baseline row, and a checker's scope. CI gate behavior is unchanged except for the scrollbar false positive.

🤖 Generated with Claude Code

Agent session: cosmic-gray


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

…xture, manifest reader, Browser waivers, scrollbar List)

- tests/test_cmux_next_prepush_gate.py: the fixture strips GITHUB_ACTIONS and
  CMUX_GUARDRAILS_SKIP_REASON (as test_cmux_next_guardrails.py does). prepush-gate.py
  runs the guardrails locally only, so the two [main-async] tests failed only on CI.
  With the guardrails on, NEW_CLEAN reads through Data(blockingContentsOf:) (the
  raw-blocking rule) and the skip-reason test pushes a try! with no blocking read.
- tests/test_cmux_next_route.py: a target's path: is read inside its own call.
  Since #24978 the .package(path:) dependencies follow the target list, and the
  last target (CmuxNextActionsTests) read ../../Shared/CmuxGhosttyKit as its path.
- crash-safety-baseline.json: --record-waivers for CmuxNextBrowser
  dynamic_dispatch.waived 9 -> 11. WebKitGestureFreeEvaluation's three selectors
  (8e23ffe, 2ae3fe8) are sent only after path()/functionPath() check
  responds(to:); they replace one in the deleted WebKitTab+GesturelessScript.
  The same run lowers cmux-tui-core unwrap 1151 -> 1150.
- check-scrollbars.sh: a ScrollView/List is judged only in a file that imports
  SwiftUI (any access level or scoped import), so AgentCLIIntentLedger's
  List(expectedMachineID:) request is no longer a hit; test cases added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a1708f-432e-7f23-a9e8-11c5945da2f6&host=cosmic-gray
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by claude-sr2/base-red-checks on cosmic-gray · session

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@blacksmith-sh

blacksmith-sh Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Found 16 test failures on Blacksmith runners:

Failures

Test View Logs
/tmp/tmp9jcfe3cq/summary-fail.json (live):/summary-fail.json (live): View Logs
/tmp/tmpf9mu2q33/summary-missing.json (live):/summary-missing.json (live): View Logs
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows/
[new_workspaces] debug.new_workspace timed 0 of 50 new workspace rows
View Logs
[new_workspaces] the window draws no frames/[new_workspaces] the window draws no frames View Logs
[tabs] debug.tab_switch timed 0 of 40 switches/
[tabs] debug.tab_switch timed 0 of 40 switches
View Logs
[tabs] the window draws no frames/[tabs] the window draws no frames View Logs
bundle-cmux-tui.sh failed (/tmp/tmp.vIJeyf3zMY/new/cmux-tui) View Logs
bundle-cmux-tui.sh failed (/tmp/tmp.vIJeyf3zMY/new/cmux-tui) View Logs
bundle-cmux-tui.sh failed (tree, /tmp/tmp.Ix41GDH5uA/build/one/cmux-tui) View Logs
bundle-cmux-tui.sh failed (tree, /tmp/tmp.Ix41GDH5uA/build/one/cmux-tui) View Logs

...and 6 more test failures. View all on Blacksmith: run 40154205708, run 40154205780

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

…el path: (strings, raw and multi-line strings, nested comments, nested calls); @_spi(...) import SwiftUI counts

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a1708f-432e-7f23-a9e8-11c5945da2f6&host=cosmic-gray
@github-actions

github-actions Bot commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

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

Review b01e7c5: 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=pr25032 -f ref=leo/base-red-gate-route-crash -f platform=macos -f backend_mode=local

red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base 44faef5; does not block

@github-actions github-actions Bot added the risk:normal Risk tier (docs/ci/risk-tiers.md) label Oct 25, 2026
@teamleaderleo
teamleaderleo merged commit 6f14edd into feat-cmux-next Oct 25, 2026
115 of 120 checks passed
@teamleaderleo
teamleaderleo deleted the leo/base-red-gate-route-crash branch October 25, 2026 02:50
@github-actions

github-actions Bot commented Oct 25, 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

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant