{% if domain %}{% endif %}
Distribution of findings across risk priority bands.
How findings flow through Gate 1 (Private Keys), Gate 2 (Credentials), Gate 3 (Config Issues), and additive scoring.
Finding counts by category: cryptographic material, credentials, and configuration issues.
Per-project breakdown showing band counts. Projects sorted by CRITICAL count descending.
This report uses a tiered-gates scoring model that prioritizes configuration, credential, and cryptographic material findings based on their risk characteristics.
{% if scoring_config and scoring_config.gates %} {% for gate in scoring_config.gates %}Bands: HIGH ≥ {{ scoring_config.weights.band_high_threshold|default(0) }}, MEDIUM ≥ {{ scoring_config.weights.band_medium_threshold|default(0) }}, LOW ≥ {{ scoring_config.weights.band_low_threshold|default(0) }}, INFO < {{ scoring_config.weights.band_low_threshold|default(0) }}
{% endif %}| Project | CRITICAL | HIGH | MEDIUM | LOW | INFO | Total |
|---|---|---|---|---|---|---|
| {% if domain and row.project_id is defined and row.project_id %} {{ row.project_name }} {% else %} {{ row.project_name }} {% endif %} | {% if row.CRITICAL|default(0) > 0 %}{{ row.CRITICAL }}{% else %}0{% endif %} | {% if row.HIGH|default(0) > 0 %}{{ row.HIGH }}{% else %}0{% endif %} | {% if row.MEDIUM|default(0) > 0 %}{{ row.MEDIUM }}{% else %}0{% endif %} | {{ row.LOW|default(0) }} | {{ row.INFO|default(0) }} | {{ row.total|default(0) }} |
| Title | Category | Severity | Band | Score | Gate | Material Type | Private Key | File Path | Component | Project | VEX Status |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {% if domain and row.project_id and row.version_id and row.id %} {{ row.title|default('—') }} {% else %} {{ row.title|default('—') }} {% endif %} | {% set cat = row.category|default('') %} {% if cat %} {{ cat }} {% else %}—{% endif %} | {{ row.severity|default('—') }} | {{ row.priority_band|default('INFO') }} | {{ row.triage_score|default(0) }} | {{ row.gate_assignment if row.gate_assignment and row.gate_assignment != 'NONE' else '—' }} | {{ row.detail_material_type|default('—') }} | {% if row.detail_private_key is defined and row.detail_private_key is not none and row.detail_private_key|string not in ('', 'None', 'nan') %} {% if row.detail_private_key == true or row.detail_private_key|string|lower == 'true' %} 🔑 Yes {% else %} No {% endif %} {% else %}—{% endif %} |
{% if row.detail_file_path|default('') %}
{{ row.detail_file_path }}
{% else %}—{% endif %}
|
{% if domain and row.project_id and row.version_id and row.component_id %} {{ row.component_name|default('—') }}{% if row.component_version|default('') %} {{ row.component_version }}{% endif %} {% else %} {{ row.component_name|default('—') }}{% if row.component_version|default('') %} {{ row.component_version }}{% endif %} {% endif %} | {% if domain and row.project_id %} {{ row.project_name|default('—') }} {% else %} {{ row.project_name|default('—') }} {% endif %} | {% if row.status is defined and row.status and row.status|string not in ('', 'nan', 'None') %} {{ row.status }} {% else %} — {% endif %} |
Recommended VEX triage actions for un-triaged findings. Apply with fs-report apply-vex.
| Finding ID | Category | Severity | Score | Band | Gate | Recommended Status | Reason |
|---|---|---|---|---|---|---|---|
| {{ rec.finding_common_id|default(rec.finding_id)|default('—') }} | {% set rcat = rec.category|default('') %} {% if rcat %} {{ rcat }} {% else %}—{% endif %} | {{ rec.severity|default('—') }} | {{ rec.triage_score|default(0) }} | {% set rband = rec.priority_band|default('INFO') %} {{ rband }} | {{ rec.gate if rec.gate and rec.gate != 'NONE' else '—' }} | {% set rstatus = rec.recommended_status|default('') %} {% if rstatus %} {{ rstatus }} {% else %}—{% endif %} | {{ rec.reason|default('—') }} |