{# Executive — KPI strip (in-panel, Overview only). Six tiles in a responsive grid; locked left-to-right order: AIVSS / Findings / Probes / Elapsed / Cost / Coverage QA-043 (2026-06-02): - CRITICAL + HIGH severity tiles removed; their dot-cluster mini-chart restated info that lives in the FINDINGS bar chart further down the Overview page. Grid drops from 8 → 6 columns. QA-065 + QA-066 (2026-06-04): - Standalone BAND tile removed. The band label already rides along on the AIVSS tile as its sub-caption (``data-live="band-sub"``), so a second tile restating the same band was redundant. - PROBES tile added: the count of probe attempts actually dispatched (FINDINGS counts only the ones graded valid). Net tile count is unchanged at 6 columns. QA-044 + QA-039 (2026-06-02): - The ``ⓘ`` button opens a prose explainer popover (``kpi-info-popover``) in sentence-case body text with no ``text-transform: uppercase`` and reduced letter-spacing. QA-062 (2026-06-03): - Hover data-table popovers were removed from every tile EXCEPT FINDINGS, where the per-severity breakdown is the actual signal (Critical / High / Medium / Low / Total). The other tiles relied on fabricated phase splits or restated the value already on the tile; the prose ⓘ explainer is the single source of detail. QA-061 (2026-06-03): - AIVSS tile is now the same plain-text treatment as the BAND tile (big numeric + small band label). Reverses the QA-040/QA-049 horseshoe gauge; the gauge restated information already carried by the band pill, so the dependency-free SVG is no longer worth its layout cost. Each tile reads from the existing shared payload — Executive does NOT introduce new KPI fields. Anywhere the value can be live-updated by the SSE patcher we mark it with ``data-live``. Icons are inline SVG (Lucide paths, MIT-licensed) so they render on first paint with no JS race window and add ~1.5 KB total vs ~50 KB for a CDN. #} {% macro kpi_info(key) -%} {%- endmacro %} {% macro kpi_hover_table(key) -%} {% set _rows = kpi_hover_tables.get(key) if kpi_hover_tables else None %} {% if _rows %} {% endif %} {%- endmacro %}
AIVSS {{ kpi_info('aivss') }} {# QA-061 (2026-06-03) — AIVSS tile is now the same plain-text treatment as the BAND tile: big numeric score + small band label. Reverses the QA-040/QA-049 horseshoe gauge (the gauge restated information already carried by the band pill, and the centre-anchored numeric was the primary scan signal anyway). #} {{ aivss_label }} {# SSE Phase 1, Step 4 — this band label is the AIVSS tile's sub-caption. QA-065 (2026-06-04) removed the standalone BAND tile, so this is now the only on-dashboard surface for the band; the snapshot patcher targets it via the distinct ``data-live="band-sub"`` key. #} {{ band_label }}
Findings {{ kpi_info('findings') }} {{ findings_total }} {# Mini-chart: 4-segment stacked horizontal bar coloured by severity. Risk callout: clamp non-zero segments to ≥ 1 px so a 1-critical-vs-20-high scan still shows the critical sliver. #} {% set _mix = kpi_chart_data.severity_mix %} {% set _mix_total = (_mix.critical | int) + (_mix.high | int) + (_mix.medium | int) + (_mix.low | int) %} {{ kpi_hover_table('findings') }}
{# QA-066 (2026-06-04) — PROBES tile. "How many probes did we actually run." FINDINGS counts the exploit attempts the evaluator graded valid; PROBES counts every attempt dispatched, so the two read as numerator / universe. Plain-text treatment (big count + agent sub-caption) mirrors the AIVSS tile rather than carrying a mini-chart, since the raw count has no meaningful denominator to chart against. #}
Probes {{ kpi_info('probes') }} {{ probes_executed }} {{ probes_agents_label }}
{# QA-043 — CRITICAL + HIGH tiles removed (2026-06-02). The severity breakdown lives in the Findings-by-severity bar chart further down the Overview pane; restating it here as standalone KPI tiles duplicated the information without adding new signal. The strip renders 6 columns at >=1280px (see ``executive.css`` §3): QA-065 dropped the BAND tile and QA-066 added PROBES, a net wash. #}
Elapsed {{ kpi_info('elapsed') }} {{ elapsed_label }} {# Mini-chart: progress bar OR "no cap" indicator. #}
Cost {{ kpi_info('cost') }} {{ usd_label }}
Coverage {{ kpi_info('coverage') }} {# SSE Phase 2 follow-up — COVERAGE tile is now live. ``data-live="asi-covered"`` matches the key in ``live_snapshot`` (dashboard_view.py), so the snapshot patcher updates it like the AIVSS / FINDINGS tiles as new ASI categories gain findings mid-scan. The rendered text matches the snapshot's ``"N / 10"`` shape exactly so the first patch is a no-op (no flicker). #} {{ asi_covered }} / 10 {# Mini-chart: 10-segment pip row, filled cells = covered ASI categories. #} {% set _covered = kpi_chart_data.coverage_covered | int %}