Skip to content

Show the 0.65.1 Cloud welcome whether Cloud is on or off - #18886

Merged
austinywang merged 4 commits into
mainfrom
fix/cloud-welcome-all-users
Oct 10, 2026
Merged

austinywang merged 4 commits into
mainfrom
fix/cloud-welcome-all-users

Conversation

@austinywang

@austinywang austinywang commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

The 0.65.1 welcome currently skips people who have already turned Cloud on. This follow-up to merged #17243 shows the campaign once whether Cloud is on or off, except when an organization's MDM profile enforces DisableCloud.

Cloud starts off until the user turns it on; it has no rollout flag. The welcome now checks the managed policy directly and leaves the on/off preference untouched. Exact stable version 0.65.1, the marker written before presentation, and DEBUG/XCTest/UI-test suppression remain intact. Version 0.64.25 cannot trigger the campaign.

Free users also see the welcome. Creating Cloud VMs still requires Pro: the existing welcome action sends signed-in Free users to “Upgrade to Pro” and signed-out users to sign-in.

The first CI run failed before any jobs because #18611's merge restored an older ci-guards.yml while retaining its new caller and tests. Restore the reviewed guard routing from 575ab74328c, preserving the later Testbox and protected-signing checks. The first-class CI fast guards job remains authoritative; no validation is bypassed and no token permissions are widened.

Also repair the stale test-registry entries from that merge and initialize nightly receipt paths in a runner step, where RUNNER_TEMP is defined. The existing workflow linter rejected the previous job-level runner.temp expressions; paths and notarization checks are unchanged.

Testing

  • Scoped preflight passed all 5 selected checks, including Swift syntax and test wiring.
  • The existing workflow-permission and guard-structure regressions fail on d0e95d6b5fb and pass after the CI repair. All 36 guard-routing tests and 18 guard-runner tests pass; repository preflight passes its 16 applicable checks (Swift syntax skipped for the CI-only delta).
  • Regression coverage uses isolated preferences and the real managed-policy resolver: default/off/on states, MDM blocking, an unmanaged DisableCloud preference, exact release selection, marker upgrade/no-repeat, and dev/test suppression.
  • The regression run at 337e4882586 failed exactly once: Cloud on with no MDM block was incorrectly rejected. All other original CloudWelcome tests passed.
  • Workflow lint, all 34 execution-registry tests and 4 nightly polling tests pass. The actual receipt-path setup step was executed with a temporary path containing spaces and produced both expected environment entries.
  • Final-head focused workflow passed all 10 CloudWelcome tests (22 parameter cases) at 571b8b76ca73ea187c9a576517a90100046f9596, including the Free-account upgrade CTA and all five bundled clips.
  • Exact-head fleet job acb409074603b24704b1e065 completed on aws-m4pro-3. The published tagged artifact embeds 571b8b76c; its SHA-256 is 849c0d3a2ad9d3ef13091362980fc9e35de63c4ca07ad57eece0919c770dfa18. All five bundled MP4 files match the source bytes; workspace reset and cleanup receipts are present. Tagged build. This is a Debug artifact; stable-release eligibility is covered by the focused tests and production launch guards.
  • All 8 socket-evidence regression tests pass, including real app-stdout export, missing evidence, wrong-process logs, stale bundles and default-socket refusal.
  • PR CI is successful: 31 jobs passed, 14 intentionally skipped. The native lane actually executed all 10 CloudWelcome tests. The two earlier attempts stopped at Xcode's childPID > 0 launcher assertion during enumeration; the third succeeded unchanged on a healthy runner. The existing cleanup receipt repair remains owned by fix(ci): avoid app-host rsync metadata failures #18616.
  • All current PR checks are green: 40 passed, 22 intentionally skipped, none failed or pending; the three required checks passed.
  • The manual UI workflow remains failed / blocked by runner GUI activation. Attempts 1–5 stopped in foreground-activation preflight before any UI test ran, across cmuxs-mac-mini-3-glaeda, cmuxs-mac-mini-5-glaeda, cmux11s-mac-mini-glaeda, and cmuxs-mac-mini-5-glaeda-1. The final failure reports an unlocked, awake console but cannot activate Finder; its frontmost-app diagnostics are [ NULL ]. Build and artifact preparation succeeded. No welcome assertion failed, and there is no current UI pass to claim. Fleet GUI recovery is needed before rerunning failed test job 114057949055; no guards were weakened and no runner-policy override was applied.
  • The unchanged GUI preflight and strict socket-evidence wrapper previously completed successfully for the original PR on cmux11s-mac-mini-glaeda-1. That run confirmed socket readiness from real xcresult app stdout. It is historical evidence, not verification of this follow-up's head.
  • Conflict-only merge analysis passed against fetched main 48ba2090321ff4eb8222582ad1b7e03613d39d81; the worktree and submodules are clean.
  • Independent review of the product and CI changes found no actionable issues. The original PR's 13 threads are resolved, and this follow-up has no open review threads.

No UI strings, layouts, media or translations change.

Changelog

Fixed: The one-time 0.65.1 Cloud welcome also appears for people who have already turned Cloud on, unless MDM blocks Cloud.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

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

@coderabbitai

coderabbitai Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 5b9e168d-54dd-4e42-b45f-34e1b51c961b

📥 Commits

Reviewing files that changed from the base of the PR and between d0e95d6 and 571b8b7.


📒 Files selected for processing (3)
  • .github/workflows/auto-resume-nightly-notarization.yml
  • .github/workflows/ci-guards.yml
  • tests/test-execution.toml

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 2 remain after this review.



📝 Walkthrough

Walkthrough

Cloud welcome eligibility now uses the campaign’s seen-version marker and managed-device policy. The CI workflow updates guard routing and preflight checks. The nightly notarization workflow sets polling paths through the runner environment and adds polling test coverage.

Changes

Cloud welcome eligibility

Layer / File(s) Summary
Eligibility rules and coverage
Sources/Cloud/CloudWelcomeWindowController.swift, cmuxTests/CloudWelcomeTests.swift
The controller checks the campaign version, seen-version marker, and managed policy. Cloud availability and enabled state no longer affect eligibility. Tests cover marker states, managed and unmanaged DisableCloud, and build-mode exclusions.

CI guard workflow

Layer / File(s) Summary
CI group routing and checks
.github/workflows/ci-guards.yml
The CI matrix excludes the CI group, and CI-group checks no longer depend on fast-guard skip output. Agent-chat and related checks move to preflight-agent-chat.
Guard route status validation
.github/workflows/ci-guards.yml
guard-status parses route group metadata and accepts a linux_guard_tests route containing only ci when the metadata is a list of strings.

Nightly notarization checks

Layer / File(s) Summary
Polling environment and test coverage
.github/workflows/auto-resume-nightly-notarization.yml, .github/workflows/ci-guards.yml, tests/test-execution.toml
The wait-and-staple job writes polling paths to GITHUB_ENV using RUNNER_TEMP. The workflow runs the notarization polling artifact-reuse test, which is added to the linux-guard lane; the obsolete fast-guard status test is removed from that lane.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix


Merge Risk: ⚪ Minimal · up to 571b8

The welcome eligibility and CI guard routing appear ready for normal validation before merge. No actionable issue was established by this review.

Pre-merge checks | Passed 24 | Failed 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 2 files. (3 skipped: 3… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (24 passed)
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input Passed PASS. The reviewed diff changes Cloud welcome eligibility/tests and CI workflow routing only. It does not change Cloud terminal creation, cmux-tui clients, physical transports, PTY or shell readiness,…
Cmux Swift Actor Isolation Passed The production diff keeps CloudWelcomeWindowController as an intentionally @MainActor UI coordinator. Its existing nonisolated helper remains a synchronous launch-gating function; the diff only …
Cmux Swift Blocking Runtime Passed The production Swift diff only changes Cloud welcome eligibility inputs and comments. It adds no semaphore, blocking wait, sleep, delayed dispatch, polling, main-queue sync, or manual lock. The remain…
Cmux Browser Automation Off-Main Passed The pull request does not modify either browser-automation target: Sources/TerminalController.swift and `Packages/macOS/CmuxControlSocket/Sources/CmuxControlSocket/Wire/ControlCommandExecutionPolicy…
Cmux Expensive Synchronous Load Passed The only production Swift change is CloudWelcomeWindowController. Its @MainActor launch path now reads a UserDefaults marker and checks ManagedDevicePolicy.isEnforced(.disableCloud). The diff …
Cmux Cache Substitution Correctness Passed The changed production code does not substitute a cached value for a fresh authoritative read in a persistence, history, undo, or snapshot path. It still reads the campaign marker from the supplied `U…
Cmux No Hacky Sleeps Passed PASS: The pull request does not introduce or worsen a covered hacky sleep. The changed non-Swift files are GitHub Actions YAML and a test registry; the rule explicitly excludes workflow YAML. The runt…
Cmux Algorithmic Complexity Passed The production Swift change only replaces several boolean guards with one UserDefaults lookup and one ManagedDevicePolicy check. It adds no loop, collection scan, sort, filter, join, or batch rescan. …
Cmux Swift Concurrency Passed The Swift diff does not introduce or materially expand any flagged legacy concurrency pattern. shouldPresentAutomatically and presentIfNeeded remain synchronous (CloudWelcomeWindowController.swift…
Cmux Swift @Concurrent Passed PASS. The Swift diff changes only synchronous eligibility and test code. The changed controller methods are nonisolated synchronous functions, with no async, @concurrent, or new task boundary. T…
Cmux Swift Package Boundaries Passed The only production Swift change is in CloudWelcomeWindowController, an AppKit window controller that composes launch presentation with the app lifecycle. The diff changes a small campaign eligibili…
Cmux Swiftpm Lockfiles Passed The PR changes only two workflows, Cloud Swift sources/tests, and the test registry. No Package.swift, Package.resolved, .gitignore, or Xcode project files changed. The workflow diff contains no…
Cmux Swift Logging Passed The changed production Swift file only updates Cloud welcome eligibility and imports CmuxSettings. The diff adds no print, debugPrint, dump, NSLog, file/stdout diagnostics, Logger declaratio…
Cmux User-Facing Error Privacy Passed The pull request does not add or materially change a user-facing error, alert, command output, API error body, or recovery message. The Cloud controller diff changes presentation eligibility and comme…
Cmux Full Internationalization Passed The production Swift diff changes Cloud welcome eligibility and comments only. It adds no user-facing text and leaves the existing localized window title unchanged. The added test descriptions are tes…
Cmux Swiftui State Layout Passed PASS: The Swift diff changes Cloud welcome eligibility and tests only. It adds no ObservableObject, @Published, GeometryReader, lazy/list row store reference, or render-time state mutation. The unchan…
Cmux Architecture Rethink Passed The Swift change is a small eligibility correction with clear owners. shouldPresentAutomatically reads the campaign marker from UserDefaults and the managed DisableCloud state from `ManagedDevic…
Cmux Swift Auxiliary Window Close Shortcuts Passed The Swift diff changes Cloud welcome eligibility and test setup, not standalone window construction or close-shortcut routing. The existing CloudWelcomeWindowController already uses the stable `cmux…
Cmux Source Artifacts Passed PASS. The pull request changes only hand-written Swift source and tests, GitHub Actions workflow configuration, and the test registry. The diff adds no logs, screenshots, recordings, temporary directo…
Cmux No Test Or Debug Seam In Production Source Passed PASS — The PR changes only Sources/Cloud/CloudWelcomeWindowController.swift in production Swift. The diff does not add a #if DEBUG or test-build-guarded extension, debug/test-only member, or widen…
Title check Passed The title clearly and concisely describes the primary product change: showing the 0.65.1 Cloud welcome when Cloud is enabled or disabled.
Description check Passed The description provides a detailed summary, testing results, changelog entry, known UI-test limitation, and CI-repair context. It omits the explicit Summary, Proof, and Checklist headings, but the re…

Full details: Docstring Coverage

Explanation

Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 2 files. (3 skipped: 3 unsupported.)



  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR


🛠️ Fix failing CI checks 💡
  • Commit to this branch
  • Create a new PR


  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Restore the reviewed guard routing from 575ab74 while retaining newer Testbox and protected-signing checks. The existing reusable-workflow permission and structure regressions fail before this repair and pass after it.

Co-authored-by: Austin Wang <38676809+austinywang@users.noreply.github.com>
Restore the deleted fast-guard test registration cleanup and nightly polling test registration. Resolve notarization receipt paths at runtime, where RUNNER_TEMP is defined, instead of using an invalid job-level runner context.
@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Passes: CI passes on 571b8b76ca.

CI passes on 571b8b76ca (run 37993724288 attempt 3).

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's; yours means the failing file is one this PR changes, also red on main that main's latest full suite fails the same way, seen on other PRs that it failed on another pull request's run lately.

@github-actions

github-actions Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

CI fast guards passes on 571b8b76ca (https://github.com/manaflow-ai/cmux/actions/runs/37993724288). This covers only the fast guards, not CI: CI's result is the ci-status check, and the CI failure attribution comment names any failing test.

@github-actions

github-actions Bot commented Oct 9, 2026

Copy link
Copy Markdown
Contributor

Dogfood tours of 571b8b76

cloud-machine-author-tour at 571b8b76: not run

skipped: CI built this head on a runner pool whose products the UI test Macs cannot load, and media never compiles one; gh workflow run pr-media.yml -f pr=&lt;n&gt; -f allow_compile=true does

Tours are picked by the paths globs in dogfood/scenarios/*.json; a Dogfood-tours: a, b line in the description picks them instead (none turns this off). Look at every frame before merging: a green tour only means no step failed.

@austinywang
austinywang merged commit 11ff257 into main Oct 10, 2026
191 of 197 checks passed
@austinywang
austinywang deleted the fix/cloud-welcome-all-users branch October 10, 2026 00:44
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 571b8b76ca: every check was green at merge (14 verified; 19 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Oct 10, 2026
11ff257 Show the 0.65.1 Cloud welcome whether Cloud is on or off (manaflow-ai#18886)

# Conflicts:
#	.github/workflows/auto-resume-nightly-notarization.yml
#	.github/workflows/ci-guards.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