V2 launch commentators are authored as @calliope/persona-live AI artists in
V2/ue/Content/V2/Audio/Commentary/commentator-personas.json and validated by
@v2/calliope-commentator-personas.
Each persona must carry:
- cleared
@iris/voicevoice clone metadata with watermarking and abuse monitoring; - Calliope brand metadata: booth role, tone pillars, ruleset expertise, approved catchphrases, prohibited claims, sponsor boundaries, and AI disclosure label;
- talent signoff covering V2 commentary, voice clone, brand metadata, likeness, and fallback-bank scopes;
- deterministic fallback bank metadata keyed by
(cueKind,ruleset,commentatorId,seed); gameplayInert: trueand output channels limited to audio and subtitle.
V2Audio consumes the same launch roster through
BuildDefaultCommentaryPersonas() and rejects personas whose voice clone, brand
metadata, talent signoff, or fallback bank metadata are incomplete. V2Services
registers the calliope-persona-live adapter as a Calliope domain service that
stays outside rollback and does not run on dedicated servers.
The four launch banks are source-controlled under
V2/ue/Content/V2/Audio/Commentary/FallbackBanks/, with 24 authored lines per
persona and at least two choices for every supported cue kind. The TypeScript
cook boundary and Python CI checker recompute SHA-256 over exact file bytes,
reject repeated-character placeholders, verify bank identity and coverage, and
require the manifest and Unreal defaults to carry the same hash and line count.
Runtime fallback choice is a deterministic SHA-256 selection over the full
(cueKind,ruleset,commentatorId,seed) identity. These banks are
presentation-only and are not rollback simulation state.
CI runs V2/ue/Tools/check-v2-calliope-commentator-personas.py to verify the
Calliope schema, V2 manifest, TypeScript package, Unreal audio consumer, service
adapter, docs, and checklist state.