{# Executive — KPI strip (in-panel, Overview only). Six tiles in a responsive grid; locked left-to-right order: AIVSS / Band / Findings / 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-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 and is structurally distinct from the BAND pill below (different parent tile, different colour-class binding). The ``data-live="band"`` attribute previously collided with the BAND pill's writer (critic patch G8/P8); we rename to ``band-sub`` so the snapshot patcher can target the two surfaces independently. #} {{ band_label }}
Band {{ kpi_info('band') }} {{ band_label }} {# Mini-chart: 5-segment horizontal bar (Critical · Poor · Warning · Good · Excellent). #} {% set _seg = kpi_chart_data.band_index | default(-1) %} {% set _seg_classes = ['critical', 'poor', 'warning', 'good', 'excellent'] %} {# QA-062 (2026-06-03) — hover data-table dropped from every tile except FINDINGS; the prose ⓘ explainer remains the single source of detail. #}
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-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 grid now renders 6 columns at >=1280px (see ``executive.css`` §3). #}
Elapsed {{ kpi_info('elapsed') }} {{ elapsed_label }} {# Mini-chart: progress bar OR "no cap" indicator. #}
Cost {{ kpi_info('cost') }} {{ usd_label }}
Coverage {{ kpi_info('coverage') }} {{ asi_covered }}/10 {# Mini-chart: 10-segment pip row, filled cells = covered ASI categories. #} {% set _covered = kpi_chart_data.coverage_covered | int %}