{% extends "base.html" %} {% block content %}

{{ device.hostname or '(unknown hostname)' }}

Source: {{ source_name }} · Detected: {{ product }} {% if stig_types %} ({{ stig_types|join(', ') }}){% endif %} · {{ device.interfaces|length }} interfaces ({{ device.dot1x_interfaces()|length }} dot1x-enabled)

⬇ STIG Viewer .ckl ⬇ Annotated .cfg ⬇ Excel report ⬇ CSV 🖨 Print / PDF ← New audit
{{ summary.PASS|default(0) }}
PASS
{{ (summary.FAIL|default(0)) + (summary.WARN|default(0)) }}
FAIL
{{ summary.MANUAL|default(0) }}
MANUAL
{{ likely_na|length }}
Likely N/A
{{ applicable|length }}
Applicable (localized)
{{ unknown|length }}
General review
CRITICAL · {{ sev_count.CRITICAL }} HIGH · {{ sev_count.HIGH }} MEDIUM · {{ sev_count.MEDIUM }} LOW · {{ sev_count.LOW }}
{# ─── FAIL section — always expanded ─── #} {% if fails or dot1x_fails %}

Findings — {{ fails|length + dot1x_fails|length }}

{% for f in fails + dot1x_fails %}
{{ f.severity }} FAIL {{ f.check_id }} {% if f.stig_cat %}CAT {{ f.stig_cat }}{% endif %} {% if f.interface %}{{ f.interface }}{% endif %}
{{ f.title }}
{% if f.deviation %}
Expected: {{ f.deviation.expected }}
Actual: {{ f.deviation.actual }}
{% if f.deviation.location %}
At: {{ f.deviation.location }}{% if f.deviation.line_numbers %} (lines {{ f.deviation.line_numbers[:5]|join(', ') }}{% if f.deviation.line_numbers|length > 5 %}, …{% endif %}){% endif %}
{% endif %} {% if f.deviation.patch %}
Patch:
{% for line in f.deviation.patch %}{{ line }}
{% endfor %}
{% endif %}
{% else %} {% if f.evidence %}
Evidence: {{ f.evidence }}
{% endif %} {% if f.remediation %}
Fix:
{{ f.remediation }}
{% endif %} {% endif %}
{% endfor %}
{% endif %} {# ─── PASS section — collapsed by default ─── #}

Passing checks — {{ passes|length + dot1x_passes|length }}

{% for f in passes + dot1x_passes %}
{{ f.severity }} PASS {{ f.check_id }} {% if f.stig_cat %}CAT {{ f.stig_cat }}{% endif %} {% if f.interface %}{{ f.interface }}{% endif %}
{{ f.title }}
{% if f.evidence %}
{{ f.evidence }}
{% endif %}
{% endfor %}
{# ─── MANUAL: Likely N/A bucket ─── #} {% if likely_na %}

MANUAL · Likely Not Applicable — {{ likely_na|length }} (admin to confirm)

{% for f in likely_na %}
{{ f.severity }} MANUAL {{ f.check_id }} {% if f.stig_cat %}CAT {{ f.stig_cat }}{% endif %} {% if f.stig_doc_type %}{{ f.stig_doc_type }}{% endif %}
{{ f.title }}
{{ f.triage.headline }}
{{ f.triage.reason }}
{% endfor %}
{% endif %} {# ─── MANUAL: Applicable (localized) bucket ─── #} {% if applicable %}

MANUAL · Applicable — review localized config — {{ applicable|length }}

{% for f in applicable %}
{{ f.severity }} MANUAL {{ f.check_id }} {% if f.stig_cat %}CAT {{ f.stig_cat }}{% endif %} {% if f.stig_doc_type %}{{ f.stig_doc_type }}{% endif %}
{{ f.title }}
{{ f.triage.headline }}
{{ f.triage.reason }}
{% if f.triage.relevant_lines %}
Lines to review: {{ f.triage.relevant_lines[:10]|join(', ') }}{% if f.triage.relevant_lines|length > 10 %} … (+{{ f.triage.relevant_lines|length - 10 }}){% endif %}
{% endif %}
{% endfor %}
{% endif %} {# ─── MANUAL: Unknown / general review ─── #} {% if unknown %}

MANUAL · General review — {{ unknown|length }}

{% for f in unknown %}
{{ f.severity }} MANUAL {{ f.check_id }} {% if f.stig_cat %}CAT {{ f.stig_cat }}{% endif %} {% if f.stig_doc_type %}{{ f.stig_doc_type }}{% endif %}
{{ f.title }}
Full manual review — no topic match.
{% endfor %}
{% endif %} {% endblock %}