{% extends "base.html" %} {% block title %}History · ai-protect{% endblock %} {% block autorefresh %}window.AI_PROTECT_NO_AUTOREFRESH = true;{% endblock %} {% block content %}

History

Append-only timeline of every scan, finding, change, approval, apply, rollback, and re-scan. 365-day retention.

{% for f in [('scan', 'scans'), ('change', 'changes'), ('finding', 'findings')] %} {{ f[1] }} {% endfor %} {% if event_filter or app_filter %} clear filters {% endif %}
{% if events %} {% for e in events %} {% endfor %}
When Event Actor App / Change Detail
{{ e.ts }} {{ e.event }} {{ e.actor or "—" }} {% if e.change_id %} {{ e.change_id }} {% elif e.app_name %}{{ e.app_name }} {% elif e.app %}{{ e.app }} {% endif %} {% set extras = [] %} {% if e.from_state and e.to_state %}{% set _ = extras.append(e.from_state ~ " → " ~ e.to_state) %}{% endif %} {% if e.strategy %}{% set _ = extras.append("strategy: " ~ e.strategy) %}{% endif %} {% if e.confidence is defined %}{% set _ = extras.append("conf: " ~ ("%.0f" % (e.confidence * 100)) ~ "%") %}{% endif %} {% if e.test_count is defined %}{% set _ = extras.append("tests: " ~ e.test_count) %}{% endif %} {% if e.test_status %}{% set _ = extras.append("test_status: " ~ e.test_status) %}{% endif %} {% if e.scope %}{% set _ = extras.append("scope: " ~ e.scope) %}{% endif %} {% if e.kind %}{% set _ = extras.append("kind: " ~ e.kind) %}{% endif %} {% if e.findings is defined %}{% set _ = extras.append("findings: " ~ e.findings) %}{% endif %} {% if e.new_high_or_above is defined %}{% set _ = extras.append("HIGH+: " ~ e.new_high_or_above) %}{% endif %} {% if e.original_cleared is defined %}{% set _ = extras.append("cleared: " ~ e.original_cleared) %}{% endif %} {% if e.reason %}{% set _ = extras.append("reason: " ~ e.reason) %}{% endif %} {% if e.actions %}{% set _ = extras.append("actions: " ~ (e.actions|length) ~ " files") %}{% endif %} {{ extras|join(' · ') }}
{% else %}
No history yet.
{% endif %}
{% endblock %}