{# Run-detail panel: synthdetect summary card (#145). Renders in the plugin_run_detail_panels loop. Shows job state, risk summary, link to the full report, and a manual score button for unscored/failed runs. Risk chip semantics: <10% low (negligible), 10-50% medium (elevated), ≥50% high. #}

Synthetic speech detection

{% if not synthdetect_plugin_enabled %}

Synthetic speech detection is off. Turn it on in Settings.

{% elif synthdetect_job is none %}

Not scored.

{% elif synthdetect_job.status == "queued" %}

Queued

{% elif synthdetect_job.status == "running" %}

Running

{% elif synthdetect_job.status == "succeeded" %}

Scored {{ synthdetect_job.scored_turns }} of {{ synthdetect_job.total_turns }} turns {%- if synthdetect_job.skipped_turns %} ({{ synthdetect_job.skipped_turns }} skipped){% endif %}

{% if synthdetect_job.mean_risk is not none %}
Mean risk {{ "%.1f"|format(synthdetect_job.mean_risk * 100) }}%
Max risk {{ "%.1f"|format(synthdetect_job.max_risk * 100) }}%
{% endif %}

Full report

{% elif synthdetect_job.status == "failed" %}

Failed {% if synthdetect_job.error %}{{ synthdetect_job.error }}{% endif %}

{% elif synthdetect_job.status == "cancelled" %}

Cancelled

{% endif %}