{% if domain %}{% endif %} Scan Quality Report - Finite State Report
{% if logo_path %}
{% else %}
{% endif %}

Scan Quality Report

{{ scope_label | default('All Projects') }} — Scan Coverage & Quality Analysis
Report: Scan Quality | Generated: {{ generated_at }} | Scope: {{ scope_label | default('All Projects') }} | Projects Scanned: {{ summary.total_projects | default(0) }}
Projects Scanned
{{ summary.total_projects | default(0) }}
Avg Coverage Score
{{ '%.1f' | format(summary.avg_coverage_score | default(0)) }}
out of 4
{% set rc = summary.reachability_coverage | default({'with_reachability': 0, 'binary_projects': 0}) %} {% set rc_total = rc.with_reachability + rc.binary_projects %}
Reachability Coverage
{{ rc.with_reachability }} of {{ rc_total }}
binary projects with reachability
Stale Projects
{{ summary.stale_project_count | default(0) }}
no scan in 90+ days
{% set unpack_issue_count = namespace(val=0) %} {% if summary_table %} {% for row in summary_table %} {% if row.unpack_rating is defined and row.unpack_rating in ('Fair', 'Poor') %} {% set unpack_issue_count.val = unpack_issue_count.val + 1 %} {% endif %} {% endfor %} {% endif %} {% if charts and charts.unpack_rating_distribution is defined %}
Unpack Issues
{{ unpack_issue_count.val }}
Fair or Poor rating
{% endif %}
{% if thresholds %}
Staleness Legend: FRESH = scanned within {{ thresholds.fresh }} days | AGING = {{ thresholds.fresh + 1 }}–{{ thresholds.aging }} days | STALE = {{ thresholds.aging + 1 }}–{{ thresholds.stale }} days | DORMANT = over {{ thresholds.stale }} days
{% endif %} {% if charts %}
{% if charts.staleness_distribution and charts.staleness_distribution.labels | default([]) | length > 0 %}

Staleness Distribution

Project staleness based on days since last scan.

{% endif %} {% if charts.scan_type_coverage and charts.scan_type_coverage.labels | default([]) | length > 0 %}

Scan Type Coverage

Number of projects with each scan type present in their latest version.

{% endif %}
{% if charts.unpack_rating_distribution is defined and charts.unpack_rating_distribution.labels | default([]) | length > 0 %}

Unpack Rating Distribution

Distribution of firmware unpack quality ratings across evaluated versions.

{% endif %} {% endif %}

Project Summary

One row per project, showing the latest version's scan coverage and quality indicators.

{% if summary_table and summary_table | length > 0 %} {% set ns = namespace(has_unpack=false) %} {% for row in summary_table %} {% if row.unpack_rating is defined and row.unpack_rating %} {% set ns.has_unpack = true %} {% endif %} {% endfor %} {% if ns.has_unpack %} {% endif %} {% for row in summary_table %} {% set staleness_lc = (row.staleness | default('') | lower) %} {% if ns.has_unpack %} {% endif %} {% endfor %}
Project Folder Versions Latest Version Last ScanUnpack RatingStaleness Coverage Reachability Critical High Total
{{ row.project_name | default('') }} {{ row.folder_name | default('') }} {{ row.version_count | default(0) }} {{ row.latest_version | default('') }} {{ row.last_scan_date | default('') }} {% set ur = row.unpack_rating | default('') %} {% if ur == 'Excellent' %}Excellent {% elif ur == 'Good' %}Good {% elif ur == 'Fair' %}Fair {% elif ur == 'Poor' %}Poor {% else %}{% endif %} {% if row.unpack_short_summary is defined and row.unpack_short_summary %}
{{ row.unpack_short_summary }}
{% endif %}
{% if staleness_lc %} {{ row.staleness }} {% else %}—{% endif %} {% set cs = row.coverage_score | default(0) %} {{ cs }} {% set reach = row.has_reachability | default('') %} {% if reach == 'Yes' %}Yes {% elif reach == 'No' %}No {% else %}N/A{% endif %} {{ row.critical_findings | default(0) }} {{ row.high_findings | default(0) }} {{ row.total_findings | default(0) }}
{% else %}
No project data available.
{% endif %}

Version Detail

One row per project-version. Hover over Unpack Rating to see the short summary.

{% if detail_table and detail_table | length > 0 %} {% set dns = namespace(has_unpack=false) %} {% for row in detail_table %} {% if row.unpack_rating is defined and row.unpack_rating %} {% set dns.has_unpack = true %} {% endif %} {% endfor %} {% if dns.has_unpack %} {% endif %} {% for row in detail_table %} {% set staleness_lc = (row.staleness | default('') | lower) %} {% if dns.has_unpack %} {% endif %} {% endfor %}
Project Folder Version Scans Last ScanUnpack RatingStaleness Coverage Reachability Critical High Total
{{ row.project_name | default('') }} {{ row.folder_name | default('') }} {{ row.version_name | default('') }} {{ row.scan_count | default(0) }} {{ row.last_scan_date | default('') }} {% set ur = row.unpack_rating | default('') %} {% if ur == 'Excellent' %}Excellent {% elif ur == 'Good' %}Good {% elif ur == 'Fair' %}Fair {% elif ur == 'Poor' %}Poor {% else %}{% endif %} {% if row.unpack_short_summary is defined and row.unpack_short_summary %}
{{ row.unpack_short_summary }}
{% endif %}
{% if staleness_lc %} {{ row.staleness }} {% else %}—{% endif %} {% set cs = row.coverage_score | default(0) %} {{ cs }} {% set reach = row.has_reachability | default('') %} {% if reach == 'Yes' %}Yes {% elif reach == 'No' %}No {% else %}N/A{% endif %} {{ row.critical_findings | default(0) }} {{ row.high_findings | default(0) }} {{ row.total_findings | default(0) }}
{% else %}
No version detail data available.
{% endif %}
{% include '_action_buttons.html' %}