{# Operator dashboard metrics (issue #13). Rendered standalone on the htmx 15s poll (HX-Request) and included by dashboard.html for the full page. Pure read-only render over a SystemStats snapshot — no aggregation here; that all lives in stats_query.collect_stats(). #}

Snapshot at {{ stats.generated_at.strftime("%Y-%m-%d %H:%M:%SZ") }}. Throughput window since {{ stats.since.strftime("%Y-%m-%d %H:%M:%SZ") }}.

{% if since_invalid %}

Unrecognized ?since= value — showing the last 24 hours.

{% endif %}
Review backlog
{{ review_backlog }} run(s) awaiting adjudication
Runs created in window
{{ stats.runs_created_count }}
Roster size
{{ stats.roster_size }} enrolled speaker(s)

Runs by status

{% for status in run_statuses %} {% endfor %}
StatusRuns
{{ status.value }} {{ stats.status_counts.get(status.value, 0) }}

Stage timing

{% if stats.stage_durations %} {% for d in stats.stage_durations %} {% endfor %}
StageAvg durationFinished attempts
{{ d.stage }} {{ "%.2f"|format(d.avg_seconds) }}s {{ d.attempt_count }}
{% else %}

No finished stage attempts yet.

{% endif %}

Stage failures

{% if stats.stage_failure_counts %} {% for f in stats.stage_failure_counts %} {% endfor %}
StageFailed attempts
{{ f.stage }}{{ f.attempt_count }}
{% else %}

No stage failures recorded.

{% endif %}