{% extends "base.html" %}
{% from "_macros.html" import findings_badges, empty_state, info_tip %}
{% set verdict_projects = projects | selectattr("design_verdict") | list %}
{% block title %}{{ skill.nav_label }} — secfoo{% endblock %}
{% block content %}
{% from "_page.html" import page_head %}
{{ page_head(skill.id, "Activity", skill.name, skill.description) }}
{% if run_count == 0 %}
{% call empty_state("No " ~ skill.name ~ " runs yet", "/assessments", "Go to assessments", "u-mt-6") %}
The figures below fill in after the first run. Start one from an
assessment's Run Assessment page, or run
secfoo run --skill {{ skill.id }}.
{% endcall %}
{% endif %}
{% if dash %}
{% include "activities/architecture_dashboard.html" %}
{% endif %}
{% if tm_dash %}
{% include "activities/threat_modeling_dashboard.html" %}
{% endif %}
{% if sca_dash %}
{% include "activities/sca_dashboard.html" %}
{% endif %}
{% if sast_dash %}
{% include "activities/sast_dashboard.html" %}
{% endif %}
{% if secret_dash %}
{% include "activities/secret_scanning_dashboard.html" %}
{% endif %}
{% if not tm_dash and not dash and not sca_dash and not sast_dash and not secret_dash %}
{# All three program dashboards above already cover coverage, findings,
and trust-boundary counts with more specific tiles -- this generic block
would just duplicate them. #}
Projects with at least one run of this activity.
A project with only a failed run is still listed. Coverage on the program dashboards counts successful reviews only.
{% endcall %} {{ projects | length }} Projects coveredHow many times this activity has been run, across those projects.
Repeats count. This is not the number of projects.
{% endcall %} {{ run_count }} RunsFinding counts written on this activity's runs, added together.
Repeat runs count again, so this can be higher than the open findings you would fix today.
{% endcall %} {{ severity.total }} Total findingsThe critical and high counts from those same runs, added together.
Medium, low, and info findings are in Total findings and not in this number.
{% endcall %} {{ severity.critical + severity.high }} Critical + HighProjects whose latest design verdict is anything other than Sound.
The first number is those projects. The second is every project that has a verdict.
{% endcall %} {{ verdict_projects | rejectattr("verdict_label", "equalto", "Sound") | list | length }}/{{ verdict_projects | length }} Projects not cleanly SoundTrust boundaries called out in the latest review of each project, added together.
A boundary is a place data crosses from one trust level to another, such as from the internet into an API.
{% endcall %} {{ projects | sum(attribute="boundary_count") }} Trust boundaries identifiedThe design verdict from each project's latest successful review, and the reason the report gave.
Open a row to read the full review. Only the latest verdict per project is shown.
{% endcall %}Severity counts written on this activity's runs.
Repeat runs count again. A project scanned twice contributes both scans.
{% endcall %}Data flow diagram from the selected project's most recent successful review.
{% if diagram_projects | length > 1 %} {% endif %} {% if selected_diagram_project %} {{ selected_diagram_project.project_display_name }} {% if selected_diagram_project.design_verdict %}{{ selected_diagram_project.verdict_reason }}
{% endif %}{{ selected_diagram_project.diagram_source }}
{{ selected_diagram_project.diagram_source }}
{% endif %}
{% endif %}
{% if not mermaid_available %}
secfoo vendor mermaid to render these as pictures.secfoo run --skill {{ skill.id }}.