{# Merge confirmation (issue #54) — the exact, SERVER-computed effect of the proposed merge, shown before anything is written. Swapped into #merge-confirm by the preview POST; the Confirm form applies it and swaps the whole #labels list. `expected_json` carries each label's current effective-ruling id so the apply route can reject a stale confirm (409) instead of silently overriding a decision the operator never saw. #}
{% if target_speaker %} → assign all to existing speaker {{ target_speaker.display_name }}. {% elif target_name %} → enroll a new speaker “{{ target_name }}” and assign all to it. {% endif %}
{% if preview.distinct_roster_speakers %}These labels currently map to two different roster identities. This only changes attribution in this recording — it does not merge those identities on the roster. If they are the same person everywhere, merge them on the Speakers page.
{% endif %}Affects {{ preview.total_turns }} diarization turns and {{ preview.total_segments }} transcript segments in this recording. Reversible — you can re-rule any label afterwards.