fleet: move directories off managed paths instead of refusing forever
Launch will not delete a real directory sitting where it expects a managed link -- an auth/<harness>/primary that someone logged into by hand, or a plugin directory a seat acquired before the central store existed. That refusal is right and it is also a dead end: the operator gets a composition error and no way forward. `mosaic fleet adopt` is the way forward. Bare, it lists every such directory and the command that resolves it. With a verb, it moves one where it belongs. Nothing here deletes. A promotion is a rename; an occupied destination is a refusal, not a merge; a cross-device rename is reported rather than retried as copy-then-delete, because a copy-then-delete is a delete. Store adoption stops at the move and does not install the link. The seat's .mosaic-managed-links.json belongs to launch, and a link written behind it fails the next composition as an unrecorded symlink -- one refusal traded for another. The next launch installs and records it when the profile lists the entry; whether a seat gets a plugin stays `mosaic fleet plugin`'s decision. W-F3 of docs/plans/2026-08-14_fleet-seats-on-web1.md.
This commit is contained in:
@@ -82,6 +82,7 @@ describe('registerFleetCommand', () => {
|
||||
expect(fleet).toBeDefined();
|
||||
expect(fleet!.commands.map((command) => command.name()).sort()).toEqual([
|
||||
'add',
|
||||
'adopt',
|
||||
'agent',
|
||||
'apply',
|
||||
'backlog',
|
||||
|
||||
Reference in New Issue
Block a user