{# Exploitability Report — EXTERNAL (Briefing) variant. Extends _briefing_shell.html (the shell OWNS the document wrapper + render-mode gate). This child fills blocks only. CUTOVER GUARD: a v2 dataset (spec 2026-06-23 §5) yields the bucketed view model {subject, summary, buckets, bucket_counts, record_count}; the §0-§7 IA below renders under {% if buckets %}. A legacy v1 dataset yields {cover, coverage, cards}; the {% else %} branch keeps rendering it verbatim until the §10 cutover. Shares _exploitability_macros.html + _exploitability_style.html with the console variant. No charts, no CDN, no JS. #} {% extends "_briefing_shell.html" %} {# Defensive defaults (both shapes). #} {% set cover = cover | default({}) %} {% if cover is not mapping %}{% set cover = {} %}{% endif %} {% set cards = cards | default([]) %} {% if cards is mapping or cards is string or cards is not iterable %}{% set cards = [] %}{% endif %} {% set subject = subject | default({}) %} {% if subject is not mapping %}{% set subject = {} %}{% endif %} {% set buckets = buckets | default(None) %} {% set mode = mode | default('external') %} {% block title %}Exploitability Report{% if buckets %}{% if subject.scope_descriptor %} — {{ subject.scope_descriptor }}{% endif %}{% elif cover.subject %} — {{ cover.subject }}{% endif %} - Finite State Report{% endblock %} {% block head_extra %} {% include "_exploitability_style.html" %} {% endblock %} {# §0 Identity header — v2 overrides the shell's generic chrome (which would otherwise show "Scope: Portfolio · 0 records"); v1 falls back to the default. #} {% block briefing_header %} {% if buckets %} {% include "_default_logo.html" %} {% else %} {{ super() }} {% endif %} {% endblock %} {% block hero %}
{{ subject.scope_descriptor | default('') }}{% if subject.platform %} — {{ subject.platform }}{% endif %}
{% else %}Verified {{ cover.N | default(0) }} of {{ cover.M | default(0) }} findings in {{ cover.scope_label | default('scope') }}; the remaining {{ (cover.M | default(0)) - (cover.N | default(0)) }} are untested, not cleared.
{% endif %}These were not individually pen-tested — the on-device version predates the upstream fix. Remediate by the upgrade in the decision summary above.
{{ exp.version_table(ver) }}No verdict records in scope.
{% endif %} {% endif %} {% endblock %} {% block methodology %} {% if not buckets %}