# V2 Iris Real-Time Translation

## Scope

`@v2/iris-realtime-translation` wires V2 spectator chat and commentary
localization to `@iris/voice` through `createVoiceCallTranslation`. The bridge
registers spectator and commentator speakers, creates per-locale receiver feeds,
and emits immutable delivery transcripts for:

- spectator chat translation;
- commentary subtitle localization;
- esports broadcast overlays;
- companion second-screen feeds.

## Runtime Contract

The bridge is presentation-only. Translated text can update chat, subtitles,
broadcast graphics, and companion UI, but it never feeds rollback simulation
state, move selection, frame data, match outcome, ranking, moderation penalties,
or deterministic gameplay logic.

Iris owns translation provider routing and failover. V2 supplies match
correlation, participants, target languages, surfaces, and utterance metadata.
If the provider fails and V2 configures fail-open behavior, the original text is
delivered with failed-delivery metadata so viewers can still see the source
utterance and operators can alert on degraded localization.

## V2Services Binding

`V2Services` registers an `iris-realtime-translation` adapter on the Iris domain
for `@iris/voice`. It is available to client surfaces, disabled for
dedicated-server gameplay, and off rollback. `bMayInfluenceRollback` remains
false.

## Validation

The repo gate is `python V2/ue/Tools/check-v2-iris-realtime-translation.py`. It
validates the V2 package, tests, docs, `V2Services` adapter, CI wiring, domain
reciprocal notes, and this TODO completion state.
