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

Reviewer Overrides

Active TTL'd overrides suppress known false-positive findings emitted by the static-scan reviewer (fw reviewer T-XXX, fw reviewer audit). Mutations are CLI-only for now: fw reviewer override add|list|prune|remove. Authority-gated web mutations land in v2.1.

Active: {{ active_count }}   Expired: {{ expired_count }}

Active Overrides{% if overrides %} ({{ overrides|length }}){% endif %}

{% if overrides %} {#- T-2089: max-height scroll container + sticky thead so growing overrides list (8628px on first measurement) stays within the 8000px guard. Same fix shape as T-2038/T-2044/T-2045/T-2087 used for unbounded tables. -#}
{% for o in overrides %} {% endfor %}
ID Task Pattern AC Days remaining Expires Reason Added by
{{ o.id }} {{ o.task_id }} {{ o.pattern_id }} {{ o.ac_index }} {% if o.is_expired %}EXPIRED {% elif o.days_remaining < 14 %}{{ o.days_remaining }} {% else %}{{ o.days_remaining }}{% endif %} {{ o.expires_at }} {{ o.reason }} {{ o.added_by }}
{#- /overrides-scroll (T-2089) -#} {% else %}

No active overrides.

{% endif %}

Recent feedback-stream events{% if events %} ({{ events|length }}){% endif %}

{% if event_counts %}

{% for k, v in event_counts.items() %} {{ k }}: {{ v }}{% if not loop.last %}, {% endif %} {% endfor %}

{% endif %} {% if events %} {#- T-2089: same scroll-container shape — events table grew to 77 rows (8628px) at filing. -#}
{% for e in events %} {% endfor %}
Kind Timestamp Task Scan ID Payload
{{ e.kind }} {{ e.timestamp }} {% if e.task_id %}{{ e.task_id }}{% endif %} {{ e.scan_id }} {{ e.payload }}
{#- /events-scroll (T-2089) -#} {% else %}

No feedback events yet — run fw reviewer T-XXX on a completed task.

{% endif %}
{% endblock %}