carry of #27994: guard Cloud Ports actions while pending

Merged
TE
7d ago
+644-84

Carry of #27994: guard Cloud Ports actions while pending. This branch merges current feat-cmux-next and carries the original purpose and authorship while repairing the stale in-flight response overwrite.

Original PR: https://github.com/manaflow-ai/cmux/pull/27994

Validation: 27 port-action tests pass at 49a949d9a6a13cb746c620aa19b77b328ec3103d (run). They cover delayed replies, selection changes, and a detail load still waiting for snapshots after a port mutation completes.

No capture: the pending-state gallery fixture is included, but no running app capture was available for this carry. Deferred-response tests verify the asynchronous state transitions.

Agent session: agent session


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


Summary by cubic

Carries #27994: guards Cloud Ports actions while pending and prevents stale in-flight responses from overwriting newer state, adapted onto feat-cmux-next.

  • Forward, close, and browser actions lock per port so overlapping requests can't run concurrently; actions stay pending and disabled in the UI until the host call and any reconciliation finish.
  • Completed port mutations are tracked by revision, so a detail load or section reload can't replace a newer port list with a stale one.
  • Guard and pending state survive detail loads, reloads, and machine selection changes; late responses from an old session can't release a new session's lock, and mutations parked on another machine reconcile the current machine's ports on return.
  • Adds a pending variant to the Cloud gallery fixture and unit tests for action locking, coalescing, failure recovery, stale responses, parked mutations, and stale loads.