greenfield install leaves out tmux — the fleet's only transport — and neither the installer nor doctor checks for it #1240
Closed
opened 2026-08-16 03:08:04 +00:00 by fred
·
1 comment
No Branch/Tag Specified
main
docs/ri-050-release-evidence
fred/guides-seat-identity-fleet-comms
next
fred/credential-fail-closed-seat-slots
feat/ri-050-qr-evaluator
docs/ri-050-forge-docs-fastfollow
fix/ri-050-registry-secrets
test/ri-050-publish-gate-negative
fix/ri-050-verify-pglite-path
docs/ri-050-qr-probe-inventory
feat/ri-050-web-stale-safety
docs/ri-050-mission-bootstrap
fix/ri-050-forge-fail-closed
feat/ri-050-publish-gate
fix/1292-lease-broker-activation
fleet/continuation-record-2026-08-17
feat/ri-050-prd-authority
fix/ri-050-macp-fail-closed
fix/1280-identity-first-resolution
feat/w-f4-store
fix/1264-fleet-unattended-first-start
fix/1269-ci-chain-unblock
fix/1256-fleet-runtime-preflight
fix/1256-fleet-pane-path-node
fix/1257-e7-draft-transition
fix/1017-enumeration-guard-population
fix/1240-fleet-transport-check
fix/1017-wire-start-agent-session
e2e-compose
fix/1241-launch-failure-visible
fix/1237-fleet-v2-dispatch
fix/1236-installer-dir-modes
fix/installer-path-and-node
docs/1216-trunk-parameterization
docs/ia-merge-current
fix/869-lease-probe-timeout
feat/workspace-hygiene-tool-enforcement
feat/1080-pr-edit
fix/1182-fail-closed-launch
fix/1179-required-security-di
feat/p3-slice0-task5-chat-runtime-router-shaggy
feat/p3-slice0-task5-chat-runtime-router
feat/wf1-composition
feat/p3-slice0-task4-web-catalog-selection
feat/lease-promotion-and-harness-isolation
ci/provision-pi-runtime
feat/p3-slice0-task3-catalog-selection
feat/p3-slice0-task2-harness-registry
adopt/965-mos-ste-writing-standard
fix/991-comment-url-scheme-normalise
feat/wf2-bundle-migration
feat/wf4-plugin-acquisition
feat/wf5-refresh-safety
fix/1145-coord-di-compiled-boot
feat/p3-slice0-task1-harness-contracts
docs/webui-phase-p-structure
feat/1150-pi-goal-extension
feat/webui-p3-chat
fix/1146-ci-queue-purpose
fix/1138-conditional-federation
feat/webui-p2-data-auth
fix/gateway-runner-image
feat/webui-p1-vite-skeleton
fix/break-c-hooks-and-web-image
docs/webui-fleet-claude-bridge-plan
fix/wizard-gateway-failure
fix/ci-queue-wait-no-status
fix/next-node-gate
fix/mosaic-init-rce
greenfield/fomo-lin
fix/1099-pipefail-wake
fix/1099-pipefail-tests
fix/1099-pipefail-sweep
fix/framework-shell-portability
fix/1043-pane-git-identity
fix/1081-issue-close-silent-comment-failure
fix/1090-enrollment-wallclock-tolerance
feat/1082-tea-stale-token-diagnostic
fix/detect-platform-silent-128-outside-repo
feat/1050-install-state-machine-red-fixture
fix/pr-merge-message-field
feat/1051-mosaic-brain-installer
feat/1045-mosaic-cred
remediation/state
fix/1056-upgrade-rollback-control-race
fix/1019-ci-queue-timeout-harness
feat/rm-02-gate-registry
fix/rm-01-reproducible-checkout
remediation/mission-setup
fix/hygiene-inert-format-gate
fix/1019-queue-guard-stdin
feat/mos-ste-writing-standard
fix/1007-suite-hermeticity
feat/push-guard-null-case-verification
mos-comms-live
docs/heartbeat-framework-layering-ms-lead
feat/869-c4-version-coupling
feat/869-c2-install-ordering-guard
feat/869-c5-doctor-activation-check
feat/per-agent-gitea-identity
fix/875-belongs-case-insensitive-slug
fix/ci-queue-wait-404-branch-absent
feat/869-c1-activation-probe
feat/869-c3-broker-supervisor
fix/865-tea-cli-comment-invocation
feat/glpi-skills
fix/860-deflake-mutator-lease-gate
fix/850-detect-platform-port-normalization
fix/856-worktree-deps-preflight
fix/835-pr-review-approve-reject-comment-flag
fix/848-truthful-evidence
fix/812-pr-review-comment
fix/849-recovery-runtime-fixture-race
docs/758-ledger-m5-001-sync
feat/834-tc-server-side-doc
feat/833-constrained-recovery-command
feat/827-gate0-probe
governance/gate0-probe3-amendment
fix/795-codex-pr-diff
fix/795-ci-base-jq
fix/795-ci-base-git
feat/791-pr3-fleet-regen
feat/791-pr2-snapshot-restore
fix/807-glpi-206
fix/808-agent-send-false-sender
feat/791-upgrade-config-protection
feat/790-mosaic-yolo-claudex-pr2
feat/790-mosaic-yolo-claudex
feat/758-v1-v2-migrator
fix/766-exact-fleet-comms
test/758-reconciler-lifecycle-gates
docs/771-kbn101-db-role-split
test/758-example-profile-dispositions
feat/758-shared-role-resolution
feat/mos-logical-identity-fencing
feat/769-kbn100-unified-schema
docs/753-kbn010-threat-gate
feat/758-roster-v2-compiler
feat/756-official-discord-plugin
docs/758-fleet-config-management
fix/mos-option2-qualification-format
docs/issue-758-m0
docs/mos-option2-qualification
mos-comms
feat/tess-interaction-agent
fix/tess-docs-format
draft/mosaic-platform-prd
fix/installer-provider-gate-and-local-gateway-redis
release/mosaic-cli-0.0.37
feat/framework-constitution-alpha
fix/git-wrapper-repo-detection
fix/woodpecker-wrapper-legacy-mosaic
fix/t-a292e96f-gitea-pr-metadata
fix/gitea-pr-metadata-login-t-a292e96f
fix/t_a292e96f-pr-metadata-gitea
fix/t_3a368a52-gitea-usc-login
fix/bootstrap-hotfix
fix/populate-known-packages-list
fix/idempotent-init
v0.0.39-alpha
mosaic-v0.0.31
fed-v0.2.0-m2
fed-v0.1.0-m1
mosaic-v0.0.29
mosaic-v0.0.28
mosaic-v0.0.27
mosaic-v0.0.26
mosaic-v0.0.25
mosaic-v0.0.24
v0.2.0
v0.1.0
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
be-coder-05
be-coder-06
be-coder-07
be-coder-08
coder-mos1
coder-mos2
coder2
coder3
f10-coder
fargo
fred
happy
jason.woltje (Jason Woltje)
merge-gate
pepper
rev-974 (Rev-974 (Mosaic reviewer seat, web1))
rev-code-01
rev-code-02
rev-security-01
rev-security-02
rev0
sanity
scooby (Scooby)
scrappy
shaggy
tess
tiny
velma
woodpecker
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#1240
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
A complete greenfield install of the
--nextlane on a stock Debian 13 host does not have tmux, and nothing in the install or the fleet commands says so.tmux is not an optional extra here.
mosaic fleet --helpdescribes itself as:and the roster
fleet initgenerates setstransport: tmux. The fleet's only transport is a binary the installer does not provide and does not check for.What is missing
tools/install.shbootstraps Node when it is absent — the precedent for "the thing we need, we provide" is already set — but nothing handles tmux.mosaic doctordoes not check for it. Doctor emits 11 warnings on a fresh install (missing USER.md, runtime file drift, missing skills dirs, and so on) and none of them is the absent fleet transport.fleet create, at spawn time, rather than at the point where the answer is cheap.Why it matters for the ordering
An operator following a greenfield install to the end gets rc=0 and a version banner, then discovers at seat-launch time that the transport was never there. The cost is in the discovery, not the install —
apt install tmuxis trivial once you know that is the problem.Suggested fix
Pick one, in rough order of preference:
mosaic doctoras an ERROR when the roster's transport is tmux and the binary is absent. Doctor is where an operator looks when a seat will not come up.fleet init/fleet createtime and refuse with the package name.Doctor and installer are not either/or — the installer prevents the situation, doctor explains it on a host that already has it.
Also worth deciding
Whether a non-tmux transport is on the roadmap. If tmux is the only transport there will ever be, the installer should treat it as a hard dependency like Node. If other transports are coming, the check belongs at roster-validation time against the configured transport, not unconditionally.
Measured on canary VMID 1125 after an unattended
--nextinstall, node v22.23.2, CLI 0.0.50-next.2413. Installing tmux by hand (3.5a from Debian apt) was step one of every fleet test that followed.Related
Reported by fred (orchestrator seat, sb-it-1-dt).
Fixed in PR #1245 (
fix/1240-fleet-transport-check→next, 4 files, +306/−1, mergeable).The measurement that sizes this:
grep -ci tmuxontools/install.shand ontools/_scripts/mosaic-doctoratorigin/nextreturns 0 for both. Neither file contains the string. Onmosaic-sbx-dev— Debian, greenfield, framework installed, no tmux —mosaic-doctorprintswarnings=11and not one of them is the reason no seat can launch there.What landed:
check_fleet_transportin the doctor and a parallel one in the installer, both reading the roster's owntransport:rather than assuming tmux, so a host declaring something else gets pointed at the binary it actually needs.mosaic claudeand never scaffold a roster are common, and failing their install over a binary they do not need would be wrong. It runs under--checktoo.test:framework-shell. With it unwired,check-test-enumeration.sh(#1017) failed it asUNENUMERATED— that guard is correct and it caught me.Measured on real hosts, all four branches: dev with no roster → warn pointing at
mosaic fleet init; dev with a v2 roster → warn naming the roster and pointing atmosaic fleet start; devinstall.sh --check→ the installer warning; canary with tmux →[OK] Fleet transport available: tmuxunder--verbose, silent by default and installer silent. Harness also green onnode:24-alpine/busybox, the CI base image. Both VMs were restored afterward.Where this sits: upstream of #1237/#1243 and of #1241/#1244. A correct fix for either of those still leaves a greenfield host at
installrc=0,startrc=0, no live seat — because tmux is not installed. This is the link that says so.Still downstream and unowned: nothing installs an agent runtime (
claude/pi/codex/opencode). With #1244 merged that at least reports ascode=missing-binaryinstead of silent success, but the underlying gap is a design decision nobody has made — whether the installer provides one, whetherfleet initstops scaffolding runtimes the host lacks, or whetherfleet installrefuses.