{% set ns = namespace(total=0, critical=0, high=0, medium=0, low=0, info=0) %}
{% if artifacts is sequence and artifacts is not string %}
{% for a in artifacts %}
{% if a is mapping %}
{% set ns.total = ns.total + 1 %}
{% if a.get('severity') == 'critical' %}{% set ns.critical = ns.critical + 1 %}{% endif %}
{% if a.get('severity') == 'high' %}{% set ns.high = ns.high + 1 %}{% endif %}
{% if a.get('severity') == 'medium' %}{% set ns.medium = ns.medium + 1 %}{% endif %}
{% if a.get('severity') == 'low' %}{% set ns.low = ns.low + 1 %}{% endif %}
{% if a.get('severity') == 'info' %}{% set ns.info = ns.info + 1 %}{% endif %}
{% endif %}
{% endfor %}
{% endif %}
Severity distribution
{% set denom = (ns.total if ns.total else 1) %}
Critical {{ ns.critical }}, High {{ ns.high }}, Medium {{ ns.medium }}, Low {{ ns.low }}, Info {{ ns.info }}
{% set c_fill = ((ns.critical * 10 / denom) | round(0, 'ceil')) %}
{% set h_fill = ((ns.high * 10 / denom) | round(0, 'ceil')) %}
{% set m_fill = ((ns.medium * 10 / denom) | round(0, 'ceil')) %}
{% set l_fill = ((ns.low * 10 / denom) | round(0, 'ceil')) %}
{% set i_fill = ((ns.info * 10 / denom) | round(0, 'ceil')) %}
Critical
{% for i in range(10) %}
{% endfor %}
High
{% for i in range(10) %}
{% endfor %}
Medium
{% for i in range(10) %}
{% endfor %}
Low
{% for i in range(10) %}
{% endfor %}
Info
{% for i in range(10) %}
{% endfor %}
{% if highlights %}
Highlights
{% for item in highlights %}- {{ item }}
{% endfor %}
{% endif %}
{% if case_summary %}
Case workspace summary
| Total artifacts | {{ case_summary.get('total_artifact_count') }} | Selected artifacts | {{ case_summary.get('artifact_count') }} |
| Jobs | {{ case_summary.get('jobs', {}).get('total') }} | Runtime sessions | {{ case_summary.get('runtime_sessions', {}).get('total') }} |
{% endif %}
{% if evidence_summary %}
Evidence summary
| Inventory count | {{ evidence_summary.get('artifact_count') }} | Payload rows | {{ evidence_summary.get('artifact_payload_rows') }} |
{% if evidence_summary.get('top_categories') %}
Top categories: {{ evidence_summary.get('top_categories') | tojson }}
{% endif %}
{% endif %}
{% if integrity %}
Integrity verification
{{ integrity.get('advisory') }}
| Verified | {{ integrity.get('summary', {}).get('verified_count') }} | Modified | {{ integrity.get('summary', {}).get('modified_count') }} |
| Missing | {{ integrity.get('summary', {}).get('missing_count') }} | Unreadable | {{ integrity.get('summary', {}).get('unreadable_count') }} |
{% endif %}
Findings / supplied rows (first 200 rows)
{% if artifacts is sequence and artifacts is not string %}
| Severity |
ID |
Title |
Details |
{% for a in artifacts[:200] %}
{% if a is mapping %}
{% set sev = a.get('severity') %}
{% set cls = 'sev-info' %}
{% if sev == 'critical' %}{% set cls = 'sev-critical' %}{% endif %}
{% if sev == 'high' %}{% set cls = 'sev-high' %}{% endif %}
{% if sev == 'medium' %}{% set cls = 'sev-medium' %}{% endif %}
{% if sev == 'low' %}{% set cls = 'sev-low' %}{% endif %}
| {{ sev or 'unknown' }} |
{{ a.get('id', '') }} |
{{ a.get('title', '') }} |
{{ a.get('details', {}) | tojson }} |
{% endif %}
{% endfor %}
{% else %}
Artifacts are not a list of findings; see raw JSON below.
{% endif %}
OWASP MASTG alignment
{% if mastg and mastg.get('mastg_ids') %}
Mapped IDs: {{ mastg.get('mastg_ids') | tojson }}
{% if mastg.get('mappings') %}
| Finding ID |
MASTG IDs |
{% for m in mastg.get('mappings') %}
| {{ m.get('finding_id') }} |
{{ m.get('mastg') | tojson }} |
{% endfor %}
{% endif %}
{% else %}
No MASTG mappings available for the supplied artifacts.
{% endif %}
{% if evidence_inventory %}
Evidence inventory (first 100 artifacts)
| ID | Category | Status | Path |
{% for item in evidence_inventory[:100] %}
| {{ item.get('artifact_id') }} |
{{ item.get('category') }} |
{{ item.get('status') }} |
{{ item.get('path') }} |
{% endfor %}
{% endif %}
{% if report_sections %}
Report readiness
{% for item in report_sections %}- {{ item.get('title') }}: {{ item.get('summary') }}
{% endfor %}
{% if report_preview %}
PDF backend: {{ report_preview.get('pdf_backend_status', {}).get('preferred') or 'unavailable' }}
{% endif %}
{% endif %}
Artifacts JSON
{{ artifacts | tojson(indent=2) }}
{% if operator_guidance %}
Operator guidance
{% for item in operator_guidance %}- {{ item }}
{% endfor %}
{% endif %}