Add a PRESERVE-protected persona override layer at <mosaicHome>/fleet/roles.local/
that survives `mosaic update` while baseline fleet/roles/ keeps reseeding.
- fleet-personas.ts: shared class-extraction (single source of truth, DRY with
fleet-profiles.ts), resolvePersona (override wins, baseline fallback),
listPersonaClasses (baseline ⊕ override union), personaStatus
(baseline/overridden/custom), and the `fleet persona list|show|customize` CLI.
- fleet-profiles.ts: roster validation now uses the override-aware union so a
profile can reference a user-customized or user-ADDED persona; the old
listPersonaClasses(rolesDir) is kept as a thin delegate to the shared helper.
- install.sh: add fleet/roles.local to PRESERVE_PATHS (AC-NS-7 guarantee).
- specs: override-wins, custom-add, status classification, AC-NS-7
update-survival simulation, and profile-validation-accepts-custom-persona.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>