Repository navigation
cloud: a headless NEXT Cloud journey on previews, staging and production deploys - #35103
Conversation
…ion deploys scripts/cmux-next/cloud-journey.ts checks a backend end to end with no app build: sign in as the agent test account, create a machine, start an agent, chat, connect, sync, pause, resume, delete, each step timed. backend.yml runs it on every PR preview and after staging and production deploys (test team, plus CMUX_JOURNEY_PRODUCT_TEAM). cloud-dev-loop.sh is the inner loop on a personal dev Worker; deploy-worker.sh previews can bind a cmux-platform preview. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
Owned by an agent session · session |
…086); a failed machine fails fast Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
Bugbot needs on-demand usage enabledBugbot uses usage-based billing for this team and requires on-demand usage to be enabled. A team admin can enable on-demand usage in the Cursor dashboard. |
|
Found 8 test failures on Blacksmith runners: Failures
|
|
Review (subagent opus-5.5 medium, correctness): SHIP at 3a56cd8 |
|
Review (codex gpt-6.1-sol xhigh, router-review): BLOCK at 3a56cd8 BLOCK at 3a56cd8
Follow-ups:
|
Fail when no test account is set instead of printing PASS; delete the run's machine on SIGTERM/SIGINT and find it by name when create's reply was lost; count a missing row as gone in the delete wait; give the cleanup delete its own idempotency key; exact charset check for CMUX_PREVIEW_PLATFORM_WORKER; 50 minute journey job budget for two team runs. Closes #35132. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
…timeout is 124; app CLI machine name is plain and found by name Review BLOCK at 3a56cd8 (gpt-6.1-sol): POST /v1/handoffs needs {sessionId, machine} and production answers 404 until hand-off ships there, so the step was red on healthy backends. Now it sends the journey's agent session id and records a SKIP on 404. A null statusCode from exec-await is a command timeout (124, as the CLI maps it), not success. --app-cli names its machine journey-<tag> (no space, which isPlainName refused) and, when create answers pending without an id, finds it by name for cleanup. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-fb75b7af9902231028aa
|
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)
Shipped in:
|
|
Review (codex gpt-6-astra high, review box): SHIP at e3941d9
|
… production journey names its runner (#35717) * ci: the backend secret-route guard covers the three Cloud journey jobs journey-preview, journey-staging and journey-production (#35103) read secrets and the cmux-next-cloud-journey environment, so they belong in BACKEND_SECRET_JOBS; without them the guard's credentialed-set check fails and their routes go unchecked. Their routes already have the bounded pool-read shape. cloud-journey-prod.yml's job holds the production account, so it names blacksmith-4vcpu-ubuntu-2404 literally, as on main (#35303). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-8b9c8964a6aea0b7e2bd * ci: the production journey reads the Blacksmith pools, not a literal size feat-cmux-next's runner guards refuse a literal single-size label (#32457) and one with no overflow failover (#26439), and the old linux_2 route was reachable outside manaflow-ai. The job now takes the owner fork branch, then the overflow pool linux_16 or linux_8, the same pools backend.yml's credentialed jobs end in. It no longer reads vars.LINUX_RUNNER, so that variable cannot move it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-8b9c8964a6aea0b7e2bd --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
Leo asked (2026-11-04):
Getting a NEXT Cloud chat working end to end took days, because every check waited on an app build or a nightly. This PR adds one command that checks a backend end to end with no app build, and runs it on every PR preview and after every staging and production deploy.
What changed
scripts/cmux-next/cloud-journey.ts:bun scripts/cmux-next/cloud-journey.ts --backend local|dev|preview-N|staging|prod(or--api URL --stack dev|prod). It signs in as the agent test account and walks the routes the app and CLI use on the cmux API Worker:cmux-tui acp ensureon the machine), send chat, replyEach step prints PASS/FAIL/SKIP and its latency.
--out DIRwritesjourney.jsonandsummary.md. The machine it made is deleted at the end, pass or fail.--teamruns as another team, and--cmux PATHsends every exec throughcmux machine access exec, so the journey also checks the CLI. A failed machine fails its step at once, with the row's error..github/workflows/backend.yml:journey-previewruns after thepreviewjob, againstcmux-api-preview-<PR>. Its step table is the job summary, and a failed step makes that PR's check red.journey-stagingandjourney-productionrun after each deploy (including promote). They run as the test team and, whenCMUX_JOURNEY_PRODUCT_TEAMis set, as a product team on the never-pause path.cloud-chat-proof.ymlalready uses (cmux-next-vm-image-dev). Preview and production readcmux-next-cloud-journey(CMUX_JOURNEY_DEV_STACK_*,CMUX_JOURNEY_PROD_STACK_*). Without them, the job posts a notice and passes.scripts/cmux-next/cloud-dev-loop.sh --tag NAME [--platform-checkout DIR]: the inner loop. It deploys this worktree's API Worker as your owncmux-api-preview-NAMEand, if given, a cmux-platform worktree ascmux-platform-preview-NAME. Then it runs the journey there and prints the seconds for each part.backend/scripts/deploy-worker.sh:CMUX_PREVIEW_PLATFORM_WORKER=cmux-platform-preview-<n>points a preview's PLATFORM service and CLOUD_DO at a platform preview instead of development.--app-cli PATH --socket SOCKruns the commands a person runs, through a running NEXT build's own CLI: cloud list-machines, vm token create, cloud new-machine, machine-status, exec, start-session, start-chat --wait, and kill-machine (always, at the end). It is a mode of the same script rather than thescripts/cloud/cli-journey.shthe issue sketched, so each step gets the same timing and table. The backend named per step comes from the answer when the answer gives one.Closes #35086.
First result
Production, from a team Mac, as the production test account: health, sign in, user.ensure, install token and create passed (55 ms to 1.8 s each). Then the machine went to
failedafter 34 s, both times, withcloud.provider.unavailable: VM API: snapshot capture is still being confirmed. That is a live production bug that no existing smoke catches, and it is handed to its own lane in cmux-platform.Notes
Observed / Not run
cloud-journey.test.ts(sent to the fleet), and the staging, preview and local backends. This host has no dev-project pair, so those first run in CI.Changelog
none
Agent session: agent session