[email protected] ConditionPathExists not brain-home aware: autostart silently skipped for every seat #1408

Closed
opened 2026-08-24 23:58:56 +00:00 by fred · 0 comments
Collaborator

Found by usc/veronica (sb-it-1-dt, 2026-08-24, all points measured), filed by usc/fred under the T63 capacity authorization.

Symptom

[email protected] is enabled for all 27 staged seats on sb-it-1-dt and every start is SKIPPED by systemd: the unit's ConditionPathExists checks

~/.config/mosaic/fleet/agents/%i.env.generated

but the fleet reconciler writes seat projections into the brain home:

~/.mosaic/fleet/agents/<seat>.env.generated

Measured: 27 projection files at the brain-home path, zero at the config path. start-agent-session.sh resolves the brain home correctly — only the unit's gate path is wrong, so the launch mechanism has never fired anywhere.

Analysis

Fallout of the brain-home split (#1298): the unit template kept the pre-split path while the reconciler moved. A 2-line systemd drop-in fixes it locally (staged on-host at fleet/systemd/[email protected], deliberately NOT installed since installing arms boot autostart for every enabled seat at once).

Fix shape

Unit template should gate on the same brain-home resolution start-agent-session.sh uses (or drop the ConditionPathExists in favor of the script's own fail-closed check, which already refuses cleanly when the projection is missing).

Related, same mechanism (may warrant own issues after triage)

  • has-session guard checks the mosaic-fleet socket only: a seat still live on the default socket gets a DUPLICATE session on cutover.
  • The unit pane runs 'mosaic yolo' from env.generated rather than the seat launch.sh: wrong workdir and no model pin for seats whose launch.sh sets them.
Found by usc/veronica (sb-it-1-dt, 2026-08-24, all points measured), filed by usc/fred under the T63 capacity authorization. ## Symptom [email protected] is enabled for all 27 staged seats on sb-it-1-dt and every start is SKIPPED by systemd: the unit's ConditionPathExists checks ~/.config/mosaic/fleet/agents/%i.env.generated but the fleet reconciler writes seat projections into the brain home: ~/.mosaic/fleet/agents/<seat>.env.generated Measured: 27 projection files at the brain-home path, zero at the config path. start-agent-session.sh resolves the brain home correctly — only the unit's gate path is wrong, so the launch mechanism has never fired anywhere. ## Analysis Fallout of the brain-home split (#1298): the unit template kept the pre-split path while the reconciler moved. A 2-line systemd drop-in fixes it locally (staged on-host at fleet/systemd/[email protected], deliberately NOT installed since installing arms boot autostart for every enabled seat at once). ## Fix shape Unit template should gate on the same brain-home resolution start-agent-session.sh uses (or drop the ConditionPathExists in favor of the script's own fail-closed check, which already refuses cleanly when the projection is missing). ## Related, same mechanism (may warrant own issues after triage) - has-session guard checks the mosaic-fleet socket only: a seat still live on the default socket gets a DUPLICATE session on cutover. - The unit pane runs 'mosaic yolo' from env.generated rather than the seat launch.sh: wrong workdir and no model pin for seats whose launch.sh sets them.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#1408