{% 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 %}
Total records
{{ ns.total }}
Parsed from supplied artifacts JSON
High/Critical
{{ ns.critical + ns.high }}
Priority findings
Integrity verified
{{ integrity.get('summary', {}).get('verified_count', 0) if integrity else 0 }}
Artifacts currently matching recorded hashes
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 %}
Highlights
{% for item in highlights %}
- {{ item }}
{% endfor %}
{% if case_summary %}
Case workspace summary
| Total artifacts | {{ case_summary.get('total_artifact_count') }} | Jobs | {{ case_summary.get('jobs', {}).get('total') }} |
| Runtime sessions | {{ case_summary.get('runtime_sessions', {}).get('total') }} | Targets | {{ case_summary.get('target_serials') | join(', ') if case_summary.get('target_serials') else 'n/a' }} |
{% 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 status
{{ integrity.get('advisory') }}
| Modified | {{ integrity.get('summary', {}).get('modified_count') }} | Missing | {{ integrity.get('summary', {}).get('missing_count') }} |
| Unreadable | {{ integrity.get('summary', {}).get('unreadable_count') }} | Unsupported | {{ integrity.get('summary', {}).get('unsupported_count') }} |
{% endif %}
OWASP MASTG alignment
{% if mastg and mastg.get('mastg_ids') %}
Mapped test IDs:
{% for mid in mastg.get('mastg_ids') %}
{{ mid }}
{% endfor %}
{% else %}
No MASTG mappings available for the supplied artifacts.
{% 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 %}
Top findings (first 50 rows)
| Severity |
ID |
Title |
Details |
{% if artifacts is sequence and artifacts is not string %}
{% for a in artifacts[:50] %}
{% 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. |
{% endif %}
{% if evidence_inventory %}
Evidence inventory (first 50 artifacts)
| ID | Category | Status | Path |
{% for item in evidence_inventory[:50] %}
| {{ item.get('artifact_id') }} |
{{ item.get('category') }} |
{{ item.get('status') }} |
{{ item.get('path') }} |
{% endfor %}
{% endif %}