feat(fleet): system-type profiles — declarative roster+topology mapping (H2)
Add declarative system-type profiles: framework/fleet/profiles/*.yaml map a system type to a persona roster + org topology (reports_to, multiplicity). Profiles are DATA, seeded like roles, so an operator declares a system type and gets the matching roster from the baseline library with no code change (NS-9 / AC-NS-6). - 5 baseline profiles: software-delivery, personal-assistant, research, business (company-in-a-box), marketing. - fleet-profiles.ts: loadProfiles/loadProfile/parseProfile/validateProfile + listPersonaClasses (extracts valid classes from the role library by unioning inline `class:` markers, LIBRARY.md rows, and role filenames so marker-less personas like planner/decomposition resolve). - CLI: `mosaic fleet profile list|show [--json]`; invalid profiles exit non-zero. - Spec covers parse/validate, the library-drift guard (every referenced class resolves against the real role library), and unknown-class/reports_to rejection. - install.sh: profiles seed via the existing rsync (comment clarified; the preserved top-level `fleet/*.yaml` glob does not shadow fleet/profiles/*.yaml). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -24,9 +24,11 @@ INSTALL_MODE="${MOSAIC_INSTALL_MODE:-prompt}"
|
||||
# reconcile_framework_files (overwrite + backup-once); the rest stay user-owned.
|
||||
# User-created content in these paths survives rsync --delete.
|
||||
#
|
||||
# fleet/* — the framework SEEDS only fleet/examples, fleet/roles, and
|
||||
# fleet/* — the framework SEEDS fleet/examples, fleet/roles, fleet/profiles, and
|
||||
# fleet/roster.schema.json (synced normally — every fleet/roles/*.md role contract
|
||||
# lands automatically via this sync, so no per-file entry is needed). The user's
|
||||
# and fleet/profiles/*.yaml system-type profile lands automatically via this sync,
|
||||
# so no per-file entry is needed; the preserved "fleet/*.yaml" glob is anchored to
|
||||
# the top level only and does NOT shadow fleet/profiles/*.yaml). The user's
|
||||
# own fleet files MUST
|
||||
# survive `mosaic update` (which runs this sync automatically): the active
|
||||
# roster (`fleet/roster.yaml` + any other `fleet/*.yaml`), per-agent env
|
||||
|
||||
Reference in New Issue
Block a user