{% extends "base.html" %} {% block title %}False Positive Analysis — {{ project_filter or folder_name or recipe_name }}{% endblock %} {% block content %}
{{ summary.total_open_findings if summary else 0 }}
Open Findings
{{ summary.fp_candidates_found if summary else 0 }}
FP Candidates
{{ summary.mechanical_detections if summary else 0 }}
Mechanical Detections
{{ summary.ai_detections if summary else 0 }}
AI Detections
{% if identity_assertions and identity_assertions|length > 0 %}

Component Identity Assertions

{{ identity_assertions|length }} component(s) detected as misidentified relative to NVD. Each assertion groups the CVEs attributed to the scanned component and classifies whether they apply to the actual product.

{% for a in identity_assertions %}
{{ a.component_name }} {{ a.component_version }} — scanned as {{ a.likely_product or '?' }}, NVD expected {{ a.nvd_product or '?' }} MISMATCHED confidence: {{ a.confidence or 'medium' }}

Evidence: {{ a.evidence or '—' }}

{% for cv in a.cve_verdicts %} {% endfor %}
CVE Verdict Rationale Recommended VEX
{{ cv.cve_id }} {% if cv.verdict == 'does_not_apply' %} does_not_apply {% else %} might_still_apply {% endif %} {{ cv.rationale or '—' }} {% if cv.verdict == 'does_not_apply' %} NOT_AFFECTED / CODE_NOT_PRESENT {% else %} Review individually {% endif %}
{% endfor %}
{% endif %}

Residual FP Candidates

Findings on components whose identity was confirmed or ambiguous, flagged as likely FP by finding-level applicability analysis.

{% if candidates and candidates|length > 0 %} {% for row in candidates %} {% endfor %}
CVE Component Severity Confidence Signals Reason / AI Rationale Action
{{ row.cve_id or row.finding_id or '—' }} {{ row.component_name or '—' }} {{ row.component_version or '' }} {{ row.severity or 'UNKNOWN' }} {{ row.fp_confidence or '—' }} {% if row.fp_signals %} {% if row.fp_signals is string %} {% for sig in row.fp_signals.split(',') %} {{ sig.strip() }} {% endfor %} {% else %} {% for sig in row.fp_signals %} {{ sig }} {% endfor %} {% endif %} {% endif %} {{ row.primary_reason or '—' }} {% if row.ai_rationale %}
AI details
Verdict: {{ row.ai_verdict }}
{{ row.ai_rationale }}
{% endif %}
{{ row.recommended_action or 'Review' }}
{% else %}

No residual FP candidates.

{% endif %}
{% if ai_component_prompts and ai_component_prompts|length > 0 %}

Component Identity Prompts

{{ ai_component_prompts|length }} prompt(s) for offline LLM review. Paste each into an external model; if the answer is IDENTITY: mismatched, run the per-CVE applicability fan-out using the LIKELY_PRODUCT and NVD_PRODUCT values. These prompts are also written to False Positive Analysis_prompts.md alongside this report.

{% for p in ai_component_prompts %}
{{ p.component }}
{{ p.prompt }}
{% endfor %}
{% endif %} {% if summary and summary.by_signal_type %}

Detection by Signal Type

{% for sig, count in summary.by_signal_type.items() %} {% endfor %}
SignalCount
{{ sig }}{{ count }}
{% endif %} {% endblock %}