{% extends "base.html" %} {% block title %}Sentinel — Compare Run #{{ run.id }} vs #{{ base_run.id }}{% endblock %} {% block content %} ← Back to Run #{{ run.id }}
New Findings
+{{ new_findings|length }}
Resolved
-{{ resolved_findings|length }}
Persistent
{{ persistent_findings|length }}
Net Change
{% set delta = new_findings|length - resolved_findings|length %}
{{ '+' if delta > 0 else '' }}{{ delta }}
{% if new_findings %}
🆕 New Findings ({{ new_findings|length }}) Appeared in Run #{{ run.id }} but not in Run #{{ base_run.id }}
{% for f in new_findings %}
{{ f.severity.value }} {{ f.title }} {{ f.detector }} {% if f.file_path %} {{ f.file_path }}{% if f.line_start %}:{{ f.line_start }}{% endif %} {% endif %}
{% endfor %}
{% endif %} {% if resolved_findings %}
✅ Resolved Findings ({{ resolved_findings|length }}) Present in Run #{{ base_run.id }} but not in Run #{{ run.id }}
{% for f in resolved_findings %}
{{ f.severity.value }} {{ f.title }} {{ f.detector }} {% if f.file_path %} {{ f.file_path }}{% if f.line_start %}:{{ f.line_start }}{% endif %} {% endif %}
{% endfor %}
{% endif %} {% if persistent_findings %}
🔄 Persistent Findings ({{ persistent_findings|length }}) Present in both runs {% for f in persistent_findings %}
{{ f.severity.value }} {{ f.title }} {{ f.detector }}
{% endfor %}
{% endif %} {% if not new_findings and not resolved_findings and not persistent_findings %}

No findings

Neither run produced any findings.

{% endif %} {% endblock %}