Version Comparison
Per-project progression of findings across versions; fixed + new counts per pair; finding status changes; component churn; externally-driven CVE changes.
External CVE changes were not looked up for this run (--no-external-changes or the web toggle "Look up external CVE changes" turned off): no Externally changed findings, New-finding notes or External Changes export.
External CVE changes were not looked up for this run (no API access): no Externally changed findings, New-finding notes or External Changes export.
{% elif ext_lookup == 'incomplete' %}Some external CVE-change lookups failed (see the run log), so Externally changed findings, New-finding notes and the External Changes export may be incomplete.
{% endif %} {# Aggregate KPI row — nested baseline→current shape per _aggregate_kpi (`total_findings.baseline/current/delta/pct`). The fs.kpi_cell macro takes a single label + value; render the arrow form (baseline → current) inside the value so the existing --sev-low/--sev-critical dot still signals improvement vs regression. #} {% set tf = kpi.total_findings | default({'baseline': 0, 'current': 0, 'delta': 0, 'pct': 0.0}) %} {% set cf = kpi.critical_findings | default({'baseline': 0, 'current': 0, 'delta': 0, 'pct': 0.0}) %} {% set hf = kpi.high_findings | default({'baseline': 0, 'current': 0, 'delta': 0, 'pct': 0.0}) %} {% set cp = kpi.components | default({'baseline': 0, 'current': 0, 'delta': 0, 'pct': 0.0}) %} {# Use `.kpi-row` (from _design_system.html) — the spaced grid designed for `.kpi-card` children. The compact `.kpi-bar` (from _console_shell.html) is intended for `.kpi-cell` children and would squash these baseline→current delta cards in standalone HTML/PDF. Round-1 multi-review M1-1 caught the double-class regression. #}Total Findings
{{ tf.baseline }}
→
{{ tf.current }}
{% if tf.delta > 0 %}+{% endif %}{{ tf.delta }} ({% if tf.delta > 0 %}+{% endif %}{{ tf.pct }}%)
Critical
{{ cf.baseline }}
→
{{ cf.current }}
{% if cf.delta > 0 %}+{% endif %}{{ cf.delta }}
High
{{ hf.baseline }}
→
{{ hf.current }}
{% if hf.delta > 0 %}+{% endif %}{{ hf.delta }}
Components
{{ cp.baseline }}
→
{{ cp.current }}
{% if cp.delta > 0 %}+{% endif %}{{ cp.delta }}
Fixed (latest)
{% if kpi.fixed_count is none %}—{% else %}{{ kpi.fixed_count | default(0) }}{% endif %}
New (latest)
{% if kpi.new_count is none %}—{% else %}{{ kpi.new_count | default(0) }}{% endif %}
Status changes (latest)
{% if kpi.status_changed_count is none %}—{% else %}{{ kpi.status_changed_count | default(0) }}{% endif %}
{# In fragment mode `
{% include '_action_buttons.html' %}
{% endif %}