{# Executive — Probe detail-sheet drawer body (QA-049 / BUG-1). Server-rendered HTML fragment loaded into ``.exec-slideover__body`` when an operator opens a probe row. Replaces the legacy ``#exec-probes-payload`` JSON-island wall (BUG-1, 2026-06-02): the row click triggers a small ``fetch()`` to ``/scan//probe?index=``; this template renders the response body. Initial page HTML no longer carries any per-probe prompt / target-response / judge-reasoning text — that data only enters the DOM on demand, scoped to the probe the operator explicitly opened. The fragment is wrapped in ``
`` so the drawer body can be styled / asserted independently of the slide-over chrome. Required context: - probe : one probe record (the locked ``_assemble_probes_list`` shape — agent / asi_category / csa_category / turn / strategy / probe_id / prompt / target_response / verdict / confidence / reasoning / timestamp_label / attacker_refused). - scan_id : the surrounding scan's id (used for the evidence-chain link + the reproduce CLI command). All ``probe.*`` fields are operator-untrusted — Jinja autoescape applies to every emission. Never use ``|safe`` on these values. #} {%- set _verdict = probe.verdict or 'unknown' -%} {%- if _verdict == 'fail' -%} {%- set _verdict_label = 'EXPLOITED' -%} {%- elif _verdict == 'pass' -%} {%- set _verdict_label = 'DEFENDED' -%} {%- elif _verdict == 'inconclusive' -%} {%- set _verdict_label = 'INCONCLUSIVE' -%} {%- else -%} {%- set _verdict_label = 'PENDING' -%} {%- endif -%} {# ---- Header chips slot — JS replaces these via [data-slideover-*] selectors on the parent slide-over header. We emit them again here as a ``