carry of #28037: show Cloud machine transitions and failed changes

TE
5d ago
+5519-2155

Carry of https://github.com/manaflow-ai/cmux/pull/28037, preserving its commits and authorship.

Leo: "let's just get the cloud and its respective ui up to snuff".

Cloud machines retain Pausing…, Resuming… and Deleting… until the operation settles, gate conflicting power actions, and show the server's failure reason. The carry merges current feat-cmux-next, preserves the API client's extracted create retries and current sidebar status rendering, and maps all three transition states to the existing working spinner.

Risk: contained sidebar status behavior and transition-only Cloud list refreshes. Reads continue until the server confirms a settled state; failures back off to a 30-second cap. Settled lists, service stop, policy disable, and account teardown cancel the loop. Pending mutations survive stale status/list reads; app-server decimal revisions identify superseding operations, and stale provider failures cannot roll back a newer operation. Broker credentials remain until confirmed destruction; list omissions retain failed cleanup.

The base merge retains the existing native lifecycle and fixes the Classic Cloud page's transition mapping. A reviewed, scoped architecture exception covers 264 native integration lines through 2026-11-07; mutation tracking and revision comparison reside in CmuxNextCloud. The large string-catalog diff preserves the original localized copy.

Observed / Not run

Independent gpt-6.1-sol review: SHIP at 7f3e4802dcc2fe330345e580d1a7faa497300309. Pre-push checks passed. Catalog structure, Swift localization defaults and feature-flag checks passed; the changed catalogs add no enforced localization errors against base. The workspace package-group mismatch is unchanged from base.

All 10 focused Cloud suites passed (120 tests) at 4c10632038ddb662f9557d672e58a42ea6569a3b, as did Mac Release compilation for arm64 and x86_64. The bot then merged base into 7f3e4802dcc2fe330345e580d1a7faa497300309; the PR patch is identical, the independent review was carried to that exact head, and a fresh Linux app/Rust compile passed there. The three release-notary failures match the named tests and errors on a real base run; see comparison. Regression coverage includes optimistic Classic page status, app-server revision supersession, and stale provider rollback reads. Swift is unavailable locally; no local compile or runtime tests were run.

Before/after gallery from the original PR (stubbed status, real SidebarListView):
Before: pausing read Paused
After: Pausing

No capture: no new live images are attached for this repair batch. The DEBUG fixture now accepts transition statuses; earlier fleet transition captures were viewed privately. Failed-provider paths are covered by the Cloud transition tests.

Viewed after image: yes.
Visual verdict: The after gallery shows Pausing…, Resuming… and Deleting… using the existing compact status treatment and spinner, with no layout regression.

Agent session: agent session