{# 07 / EVIDENCE -- collapsible
blocks per evidence group. T12 update: dropped the dump of every captured endpoint (50+ rows on busy sites was unreadable); replaced with bucket counts derived from the T7 intent-filter ``bucket_assignment`` blob. The anti-bot + framework signals + synthesis notes still render in full. #}
07 / EVIDENCE

Raw evidence trail

Every claim above is derived from data captured in your session. Click to expand.

{% set ns = namespace(anti_bot=[], hints=[]) %} {% for f in report.detection_result.findings %} {% if f.kind == 'anti_bot' %} {% for ev in f.evidence %} {% set _line = (f.vendor or 'unknown') ~ ' \xb7 ' ~ ev.signal ~ ': ' ~ ev.value %} {{- ns.anti_bot.append(_line) or '' -}} {% endfor %} {% endif %} {% endfor %} {% if ns.anti_bot %} {% set body_text = ns.anti_bot | join('\n') %} {% with summary='Anti-bot signals (' ~ (ns.anti_bot | length) ~ ')', body=body_text %} {% include 'partials/evidence_details.html' %} {% endwith %} {% endif %} {% for hint in report.analysis_result.framework_hints %} {% for ev in hint.evidence %} {% set _line = hint.name ~ ' \xb7 ' ~ ev.signal ~ ': ' ~ ev.value %} {{- ns.hints.append(_line) or '' -}} {% endfor %} {% endfor %} {% if ns.hints %} {% set body_text = ns.hints | join('\n') %} {% with summary='Framework signals (' ~ (ns.hints | length) ~ ')', body=body_text %} {% include 'partials/evidence_details.html' %} {% endwith %} {% endif %} {# Endpoint distribution -- collapsed bucket counts replacing the v0.1.0 endpoint dump. We compute lengths from the persisted bucket_assignment; legacy scans (no filter) fall back to the raw analysis endpoint count. #} {% set ba = report.bucket_assignment or {} %} {% set bucket_a_len = (ba.get('bucket_a') or []) | length %} {% set bucket_b_len = (ba.get('bucket_b') or []) | length %} {% set bucket_c_len = (ba.get('bucket_c') or []) | length %} {% set raw_endpoint_count = report.analysis_result.endpoints | length %} {% if bucket_a_len or bucket_b_len or bucket_c_len %} {% set _bucket_lines = [ 'Bucket A (data calls): ' ~ bucket_a_len, 'Bucket B (prerequisites): ' ~ bucket_b_len, 'Bucket C (dropped as noise): ' ~ bucket_c_len, 'Raw endpoint inventory: ' ~ raw_endpoint_count, ] %} {% set body_text = _bucket_lines | join('\n') %} {% with summary='Endpoint distribution', body=body_text %} {% include 'partials/evidence_details.html' %} {% endwith %} {% elif raw_endpoint_count %} {% set _bucket_lines = ['Raw endpoint inventory: ' ~ raw_endpoint_count, 'Intent-filter has not run -- no bucket breakdown available.'] %} {% set body_text = _bucket_lines | join('\n') %} {% with summary='Endpoint distribution', body=body_text %} {% include 'partials/evidence_details.html' %} {% endwith %} {% endif %} {% set notes = (report.synthesis_result.notes if report.synthesis_result else []) %} {% if notes %} {% set body_text = notes | join('\n\n') %} {% with summary='Synthesis notes (' ~ (notes | length) ~ ')', body=body_text %} {% include 'partials/evidence_details.html' %} {% endwith %} {% endif %} {# T18: notes prompt failed -- offer a free per-section retry. Hides #} {# automatically once `notes` is non-empty above. #} {% if synthesis_section_failed(report, 'notes') %} {% with section_name='notes', section_label='synthesis notes' %} {% include 'partials/retry_section.html' %} {% endwith %} {% endif %} {% if not (ns.anti_bot or ns.hints or bucket_a_len or bucket_b_len or bucket_c_len or raw_endpoint_count or notes) %} {% with summary='No evidence captured', body='No detection or analysis evidence is attached to this report.' %} {% include 'partials/evidence_details.html' %} {% endwith %} {% endif %}