HOLD build-only: cmux-tui cbbeec18 + relay panic fix 2c2bd862 for a narrow Cloud image (hq#7086)

Draft
TE
1d ago
+21-1

HOLD: a build-only branch, never to merge. It exists so cmux-tui artifacts publishes this commit for the Cloud VM image lock (hq#7086).

This is cmux-tui cbbeec18, the cmux-tui in the approved image cloud-native-cbbeec1, plus only #36739 (2c2bd862, cherry-picked). The relay thread panic in images up to cbbeec18 ends every prod relay chat as machine_offline after about 62 s. Staging proof with this fix installed is in manaflow-ai/cmuxterm-hq#7086 (comment 6666965248).

Leo, 2026-11-05 21:39Z: "If you're, like basing it off the golden image and just doing it bit by bit, slice by slice, sure. And you can preserve multiple copies, can't you?"

Next: a separate PR pins images/cmux-vm/inputs.lock.json to this commit's publish. Then a bake, the cmux-vm approve (older images stay listed), and the CLOUD_VM_API_IMAGE flip: dev, then the staging gate, then prod.

Changelog

  • none

🤖 Generated with Claude Code

Agent session: agent session


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


Summary by cubic

Fixes a panic in the relay thread's backoff wait that ended every prod relay chat as machine_offline after about 62 seconds, and pins the fix onto the cmux-tui commit in the approved Cloud image for the image lock (hq#7086). This build-only branch will never merge.

Bug Fixes

  • The wait between dials built its timer on the relay's plain thread, which is in no runtime, so the first dropped socket panicked the relay thread and the machine never dialed again.
  • The timer is now created inside the runtime, and a test covers a wait from a thread outside any runtime.