Skip to content

Cloud start and move: put the project on the machine with link seed push - #30812

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
seed-start-wiring
Nov 1, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
seed-start-wiring

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 1, 2026 •

Copy link
Copy Markdown
Collaborator

Piece 4 of the Cloud project seed (leo-workspace design/cloud.md, "Getting the project onto the machine"), the start-chat wiring on its own. Leo, on the start screen's line:

Your project folder is copied up.
we'll want to deal with the edge cases for this too

#30634 added cmux link seed push. This PR makes the app use it, so a Cloud start or move seeds a GitHub working copy from its remote plus one bundle and copies anything else. It is split out of #30655: that PR also feeds the seed's live progress into the startup checklist, but it is built on #30517, whose base checklist (#30386) has an open revert (#30792). The progress feed follows in #30655 once the checklist re-lands. This PR depends on neither of those.

What changes

  • start-chat copy (link/start_chat_cli.rs) pushes with seed_cli::push instead of sync_cli::push. seed_cli::push itself refuses a machine without fs-v1 (machine_outdated), as the old pre-check did. The ledger is unchanged: a finished copy is never pushed again, and a retry tries the next work root the same way. The success answer gains mode (seed | copy), fallback_code, fallback_why, install_url (when the machine needs the cmux GitHub App) and skipped_files, all read with get (no new panic-ratchet hits).
  • Swift:
    • CloudMoveCLI.syncPush becomes seedPush, which runs cmux link seed push. Its callers are the move's sync and the Cloud handler's copy.
    • The move's frozen sync passes --sync seed; Bring Back Local keeps --sync pull.
    • CmuxNextApp's line count is unchanged (check-app-size). The tests expect the new arguments.

Tests

  • Rust (cmux-ci test, Linux):
    • the start_chat_cli tests (push stand-ins now answer a Value), plus a_copy_answers_how_the_push_went;
    • tests/link_seed.rs and tests/cloud_move_journey.rs (two real daemons: the seed, then a --sync seed move);
    • clippy -D warnings.
  • Swift: cmux-ci compile-check --app; CloudMoveTests and CloudBringBackTests expect link seed push and --sync seed.

Risk: every Cloud start and move now reaches the machine through the seed. Any seed failure the push can recover from (not git, no GitHub remote, a private repo without the App, a missing base, a failed clone, a machine without git-seed-v1) falls back to the same streamed copy as before, and the answer says why.

Follow-ups: #30637 (a card for the GitHub App install; until then install_url is in the answer only), #30644, #30668, #30669; the checklist progress feed in #30655.

Agent session: agent session

🤖 Generated with Claude Code


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


Summary by cubic

Cloud start and move now put the project on the machine with cmux link seed push instead of a streamed copy. The start-chat copy CLI pushes through seed_cli::push, seeding a git folder from its GitHub remote plus one bundle and copying when it can't. The copy's answer now carries how it went: mode (seed or copy), fallback_code, fallback_why, install_url, and skipped_files. The Swift app's move and copy steps call link seed push, and the move's frozen sync passes --sync seed instead of --sync push. Seed failures fall back to the same streamed copy as before, with the reason in the answer.

Written for commit d98ac99. Summary will update on new commits.

View guided diff Turn on auto-fix

start-chat copy pushes with seed_cli::push (seed from the GitHub remote,
else the copy) and answers mode, fallback_code, fallback_why, install_url
and skipped_files. The app's move and copy steps call link seed push and
the move's frozen sync uses --sync seed. CmuxNextApp does not grow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Agent-Session: https://cmux.com/deeplink/agent?id=aid-3bab30503f0b9a7059e5
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

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

Review d98ac99: 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=pr30812 -f ref=seed-start-wiring -f platform=macos -f backend_mode=local

Not verified: macOS jobs did not run: compile and app tests were skipped on d98ac99313; ci-status is green without them.

CI passes on d98ac99313 (run 41299970702 attempt 1).
macOS jobs did not run: compile and app tests were skipped: Fast static checks skipped (the macos job needs both to succeed). Re-run CI once they pass, before merging.

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.

Default changes

This pull request changes 1 default at d98ac9931380 (what everyone gets without configuring anything):

  • tunable-source.CmuxNextApp/Handlers/CloudHandlers+Account.swift:startNewWorkspaceInCloud: "908613edabc9a53e9510a54c56fbdd1b630bebc36fcb3c715a9f135ce00f4f64" -> "262ec6e64c5b282f3fd2559203429343d85cea0ff056b5626edbaeff56727011"

Signed off on this commit by review (codex, router-review).

Merge receipt: merged as 47270454a525 with these defaults changed, signed off by review (codex, router-review).

Regenerate the snapshot with python3 scripts/ci/defaults_guard.py snapshot.

Shipped in:

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Owned by an agent session · session

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 issue found across 8 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="cmux-tui/crates/cmux-tui/src/link/start_chat_cli/tests.rs">

<violation number="1" location="cmux-tui/crates/cmux-tui/src/link/start_chat_cli/tests.rs:1368">
P3: `a_copy_answers_how_the_push_went` never checks `fallback_why`, so it can pass while the user-facing fallback reason is dropped. Assert the reason alongside `fallback_code`.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

let answer = copy.run(&path, &push);
assert_eq!(answer["copied"], json!(true), "{answer}");
assert_eq!(answer["mode"], json!("copy"));
assert_eq!(answer["fallback_code"], json!("seed.needs_github"));

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P3: a_copy_answers_how_the_push_went never checks fallback_why, so it can pass while the user-facing fallback reason is dropped. Assert the reason alongside fallback_code.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At cmux-tui/crates/cmux-tui/src/link/start_chat_cli/tests.rs, line 1368:

<comment>`a_copy_answers_how_the_push_went` never checks `fallback_why`, so it can pass while the user-facing fallback reason is dropped. Assert the reason alongside `fallback_code`.</comment>

<file context>
@@ -1334,3 +1347,26 @@ fn plan_makes_a_personal_repository_sends_machine_through_the_platform() {
+    let answer = copy.run(&path, &push);
+    assert_eq!(answer["copied"], json!(true), "{answer}");
+    assert_eq!(answer["mode"], json!("copy"));
+    assert_eq!(answer["fallback_code"], json!("seed.needs_github"));
+    assert_eq!(answer["install_url"], json!("https://github.com/apps/cmux/installations/new"));
+    assert_eq!(answer["skipped_files"][0]["path"], json!(".env"));
</file context>
Suggested change
assert_eq!(answer["fallback_code"], json!("seed.needs_github"));
assert_eq!(answer["fallback_code"], json!("seed.needs_github"));
assert_eq!(answer["fallback_why"], json!("private"));

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review (codex, router-review): SHIP at d98ac99

Reviewer: codex gpt-6-astra high, fast tier.

SHIP at d98ac99

Visual verdict: no images; Leo tries the build.

No correctness findings.

Follow-ups: none

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

cmux-bot approves d98ac99: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@blacksmith-sh

blacksmith-sh Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Found 7 test failures on Blacksmith runners:

Failures

Test View Logs
main.DeveloperIdAppTests.test_download_prints_the_active_profile_only/
test_download_prints_the_active_profile_only
View Logs
nightly must build and hand off the macOS 26 helper and Xcode 26.5 app before publishin
g/
nightly must build and hand off the macOS 26 helper and Xcode 26.5 app before publishin
g
View Logs
stubs: /System/Library/Frameworks/Security.framework/Versions/A/Security has no stub/
Security has no stub
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_CFRetain']/
CoreFoundation, missing 1: ['_CFRetain']
View Logs
stubs: CoreFoundation.tbd: install-name /System/Library/Frameworks/
CoreFoundation.framework/Versions/A/CoreFoundation, missing 1: ['_log2']/
CoreFoundation, missing 1: ['_log2']
View Logs
test_helper_never_takes_a_hosted_mac_and_skips_compile_on_hit (main.WorkflowTests.t
est_helper_never_takes_a_hosted_mac_and_skips_compile_on_hit)/
test_helper_never_takes_a_hosted_mac_and_skips_compile_on_hit (main.WorkflowTests.t
est_helper_never_takes_a_hosted_mac_and_skips_compile_on_hit)
View Logs
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)/
test_the_repository_highlights_validate (main.DigestTests.test_the_repository_highl
ights_validate)
View Logs

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

@teamleaderleo
teamleaderleo merged commit 4727045 into feat-cmux-next Nov 1, 2026
180 of 212 checks passed
@teamleaderleo
teamleaderleo deleted the seed-start-wiring branch November 1, 2026 11:37

This branch was successfully deployed

2 inactive deployments
artifacts — d98ac993 Deployed Nov 1, 2026 by teamleaderleo via publish to R2 #95884
sentry-dsyms — d98ac993 Deployed Nov 1, 2026 by teamleaderleo via upload cmux-tui dSYMs to Sentry #95884
ci-routing-agent — d98ac993 Deployed Nov 1, 2026 by teamleaderleo via namespace autofix #11171
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