fix(fleet): unify user data-home seam and add actionable unscaffolded-agent error
Integration reconciliation of T2/T3 seams on feat/wf-fleet-mvp: - fleet launch now resolves the user root through defaultFleetDataHome() (MOSAIC_DATA_HOME), the same seam fleet agent new uses, instead of a divergent MOSAIC_USER_HOME variable. - Launching an unscaffolded name raises AGENT_NOT_SCAFFOLDED with the actionable message pointing at 'mosaic fleet agent new <name>' (acceptance carried over from the T3 card after the roster-v2 reconciliation moved it onto the launch path). Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Dtdjx4Gxude9fwyLezCrhh
This commit is contained in:
co-authored by
Claude Fable 5
parent
4e2f9888a0
commit
0fdcfa0ff4
@@ -122,6 +122,24 @@ describe('profile-selected overlay', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('unscaffolded agent names', () => {
|
||||
it('points an unscaffolded name at mosaic fleet agent new', () => {
|
||||
const fx = fixture();
|
||||
try {
|
||||
resolveFleetLaunchComposition('ghost', {
|
||||
systemHome: fx.systemHome,
|
||||
userHome: fx.userHome,
|
||||
});
|
||||
throw new Error('expected resolution to fail');
|
||||
} catch (error: unknown) {
|
||||
const launchError = error as FleetLaunchError;
|
||||
expect(launchError.code).toBe('AGENT_NOT_SCAFFOLDED');
|
||||
expect(launchError.message).toContain("no such fleet agent 'ghost'");
|
||||
expect(launchError.message).toContain('mosaic fleet agent new ghost');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('A3 credential validation', () => {
|
||||
it('refuses a symlinked bundle credential file', () => {
|
||||
const fx = fixture();
|
||||
|
||||
Reference in New Issue
Block a user