{# Vendored from opportunities/_summary_cards.html. Same two-card local-runtime grid, same classes, same chip patterns. Only deltas are the labels and the data variables — cost → slot, opportunity count → failed-execution count. The cloud-only Savings cards stay gated behind ``local_runtime_mode`` so audit shows two cards. #}

Failed Executions

{{ summary.active_count }}

{{ summary.with_solutions_count }} unique quer{{ "ies" if summary.with_solutions_count != 1 else "y" }} {% if summary.suggestions_available_count > 0 %} · {{ summary.suggestions_available_count }} with suggestions {% endif %}

Slot Wasted

!
Sum of total_slot_ms across every failed execution — reservation time these queries consumed before erroring.

{{ summary.total_slot_human }}

{% if summary.top_reason %} {# KPI is prose only — sentence-cased reason reads cleanly in running text. The raw camelCase code is still visible in the table's REASON column and in the Reason filter dropdown for greppability against Google's docs. Tooltip carries the curated description so hovering the KPI explains what the reason actually means. #} Top reason: {{ summary.top_reason | bq_reason_humanize }} {% else %} summed across every failed execution {% endif %}