Repository navigation
Cloud start and move: put the project on the machine with link seed push - #30812
Conversation
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
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Not verified: macOS jobs did not run: compile and app tests were skipped on CI passes on Written by Default changesThis pull request changes 1 default at
Signed off on this commit by Merge receipt: merged as Regenerate the snapshot with Shipped in:
|
|
Owned by an agent session · session |
There was a problem hiding this comment.
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")); |
There was a problem hiding this comment.
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>
| 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")); |
|
Found 7 test failures on Blacksmith runners: Failures
|
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
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:#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 withseed_cli::pushinstead ofsync_cli::push.seed_cli::pushitself refuses a machine withoutfs-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 gainsmode(seed|copy),fallback_code,fallback_why,install_url(when the machine needs the cmux GitHub App) andskipped_files, all read withget(no new panic-ratchet hits).CloudMoveCLI.syncPushbecomesseedPush, which runscmux link seed push. Its callers are the move's sync and the Cloud handler's copy.--sync seed; Bring Back Local keeps--sync pull.Tests
cmux-ci test, Linux):start_chat_clitests (push stand-ins now answer a Value), plusa_copy_answers_how_the_push_went;tests/link_seed.rsandtests/cloud_move_journey.rs(two real daemons: the seed, then a--sync seedmove);-D warnings.cmux-ci compile-check --app;CloudMoveTestsandCloudBringBackTestsexpectlink seed pushand--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_urlis in the answer only), #30644, #30668, #30669; the checklist progress feed in #30655.Agent session: agent session
🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Cloud start and move now put the project on the machine with
cmux link seed pushinstead of a streamed copy. Thestart-chat copyCLI pushes throughseed_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(seedorcopy),fallback_code,fallback_why,install_url, andskipped_files. The Swift app's move and copy steps calllink seed push, and the move's frozen sync passes--sync seedinstead 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.