{% if render_mode != 'fragment' %} {% if domain %}{% endif %} CVE Component Evidence - Finite State Report {# No charts in this recipe (output.charts: []) — ECharts CDN is intentionally NOT included. Only design-system tokens + console shell chrome. #} {% include "_design_system.html" %} {% include "_console_shell.html" %} {% endif %} {# Recipe-local styles — render in BOTH standalone and fragment modes so fragment_extractor (_STYLE_RE) collects them, scopes under .fs-section-cve-component-evidence, and re-emits at the top of the fragment. Pattern established by PR #80 round-1 multi-review fix. #} {% if render_mode != 'fragment' %} {% endif %} {% import "_console_macros.html" as fs with context %} {# Defensive defaults — keep the template renderable when the upstream transform short-circuited (e.g. empty data path before validation landed). Mirrors license_report.html:80-87. #} {% set transform_result = transform_result | default({}) %} {% if not transform_result is mapping %}{% set transform_result = {} %}{% endif %} {% set evidence_summary = transform_result.get('evidence_summary', {}) %} {% set data = data | default([]) %} {% if render_mode != 'fragment' %} {{ fs.topbar( crumbs=["Finite State", "CVE Component Evidence"], meta=[ {"label": "Domain", "value": domain or "—"}, {"label": "Project", "value": project_label or "—"}, {"label": "Generated", "value": generated_at or "—"}, ], controls=[], ) }} {% endif %}

CVE Component Evidence

Per-component CVEs and firmware file paths for the selected project version.

{% if evidence_summary %}
{{ fs.kpi_cell("Total Components", evidence_summary.get('total_components', 0)) }} {{ fs.kpi_cell("With Evidence Paths", evidence_summary.get('components_with_evidence', 0)) }} {{ fs.kpi_cell( "Without Evidence Paths", evidence_summary.get('components_without_evidence', 0), dot=("high" if (evidence_summary.get('components_without_evidence', 0)) > 0 else None), ) }} {{ fs.kpi_cell( "Findings Fetch Errors", evidence_summary.get('findings_fetch_errors', 0), dot=("critical" if (evidence_summary.get('findings_fetch_errors', 0)) > 0 else None), ) }} {{ fs.kpi_cell( "Evidence Fetch Errors", evidence_summary.get('evidence_fetch_errors', 0), dot=("critical" if (evidence_summary.get('evidence_fetch_errors', 0)) > 0 else None), ) }}
{% if (evidence_summary.get('findings_fetch_errors', 0)) > 0 %}
Warning: {{ evidence_summary.get('findings_fetch_errors', 0) }} component(s) had their findings call fail. Those components are missing from the table below as if they had no CVEs. Re-run with the same --cache-ttl to retry only the failed components.
{% endif %} {% endif %}
{{ fs.panel_head("Components with match evidence", meta=((data | length) | string) ~ " component" ~ ("s" if (data | length) != 1 else "")) }}

Each row is a component in the selected project version, with associated CVE IDs and the firmware file paths where the component was detected.

{% if data and data | length > 0 %} {% for row in data[:2000] %} {% endfor %}
Name Version CDX Type Supplier Findings (C/H/M/L) Policy violations Policy warnings Licenses Source CVEs Evidence File Paths
{{ row['Name'] }} {{ row['Version'] }} {{ row.get('CDX Type', '') }} {{ row.get('Supplier', '') }} {{ row.get('Findings - critical', 0) }} / {{ row.get('Findings - high', 0) }} / {{ row.get('Findings - medium', 0) }} / {{ row.get('Findings - low', 0) }} {{ row.get('policy - violations', 0) }} {{ row.get('policy - warnings', 0) }} {{ row.get('Licenses - names', '') }} {{ row.get('Source', '') }} {{ row.get('CVEs', '') }} {{ row.get('Evidence File Paths', '') }}
{% if data | length > 2000 %}

Showing 2,000 of {{ data | length }} rows. See CSV export for full data.

{% endif %} {% else %}

No components found

No components matched the selected project version. Confirm --version refers to a version of --project.

{% endif %}
{% if render_mode != 'fragment' %} {{ fs.status_bar(items=[ "Recipe: CVE Component Evidence", "Components: " ~ ((evidence_summary.get('total_components', data | length)) | string), generated_at | default(''), ], version='fs-report ' ~ (fs_report_version | default('dev'))) }} {% endif %} {% if render_mode != 'fragment' %} {% include '_action_buttons.html' %} {% endif %}