{% extends "base.html" %} {% block title %}{{ assessment.project_display_name }} — secfoo{% endblock %} {% from "_macros.html" import info_tip %} {% block content %} ← All assessments
{{ assessment.assessment_type | assessment_type_label }}

{{ assessment.project_display_name }}

Run Assessment
{% if has_running_run %}
A run is in progress. Open it to follow each step; this page updates when it finishes.
{% endif %}
Status
{{ assessment.status | assessment_status_label }}
Application ID
{{ assessment.application_id or '-' }}
Security Assessment Request
{{ assessment.sar_number or '-' }}
Reviewer
{{ assessment.reviewer or '-' }}
Review date
{{ assessment.review_date or '-' }}
{% if assessment.notes %}
Notes
{{ assessment.notes }}
{% endif %} {% if assessment.responsible_ai_risk %}
Responsible AI
{{ assessment.responsible_ai_risk }} {{ assessment.responsible_ai_status }}
{% endif %}
{% from "_icons.html" import icon %} {% set done = pipeline | selectattr("state", "equalto", "done") | list | length %} {% set blocked = pipeline | selectattr("state", "equalto", "blocked") | list | length %}

Review pipeline

{{ done }} of {{ pipeline | length }} done{% if blocked %} · {{ blocked }} blocked{% endif %}
    {% for n in pipeline %}
  1. {{ '%02d' % loop.index }} {% if n.state == 'done' %}Done{% elif n.state == 'blocked' %}Blocked{% elif n.state == 'running' %}Running{% else %}Not run{% endif %} {{ icon(n.id, "pipeline__icon", 1.6, 16) }}{{ n.label }} {% if n.state == 'done' %}{{ n.findings }} finding{{ 's' if n.findings != 1 }}{% if n.severe %} · {{ n.severe }} severe{% endif %} {% elif n.state == 'blocked' %}{{ {'binary_not_found': 'Agent not found', 'timeout': 'Timed out'}.get(n.run.status, 'Agent error') }} · open for the fix {% elif n.state == 'running' %}started {{ n.run.started_at | fmt_ago }} {% else %}Start this activity →{% endif %}
  2. {% endfor %}

Findings by severity {% call info_tip("Findings by severity", inline=True) %}

Severity counts from the runs attached to this assessment.

Repeat runs of the same activity count again, so this can be higher than the findings still open.

{% endcall %}

{% for row in severity_rows %}
{{ row.label }}
{{ row.count }}
{% endfor %}

Attached runs

{% if runs %}
{% for run in runs %} {% endfor %}
StartedSkillAgentStatusCost
{{ run.started_at | fmt_time }} {{ run.skill_name }} {{ run.agent_id }} {% if run.status in ('binary_not_found', 'failed', 'timeout') %}Blocked {{ run.status }}{% else %}{{ run.status }}{% endif %} {{ run.cost_usd | fmt_cost }}
{% else %}

No runs attached yet. Run secfoo run --assessment {{ assessment.id }} --skill security-architecture-review to attach one.

{% endif %}

Attachments

AI-BOM: {{ models_count }} model(s), {{ tools_count }} tool(s) tracked.

{% if attachments %}
{% for att in attachments %} {% endfor %}
FileKindUploaded
{{ att.original_name }}{{ att.attachment_kind }}{{ att.uploaded_at | fmt_time }}
{% endif %}
{% endblock %}