{% import "_macros.html" as ui %} {# ---------- 1. Header ---------- #}

Live runtime review

{{ result.survey_domain }} · {{ result.survey_url[:80] }}{% if result.survey_url|length > 80 %}…{% endif %}
Run finished {{ result.timestamp.strftime("%Y-%m-%d %H:%M") }} · Steps: {{ result.steps_taken }} · Time: {{ '%.0f'|format(result.time_seconds) }}s · Model: {{ result.analysis_parameters.model }} · Categories: {{ result.analysis_parameters.category_rubric_version }} · Analysis ID: {{ result.analysis_id }}
{# ---------- 2. Score panel ---------- #}
{{ '%.0f'|format(result.defense_score) }}
Defense score / 100
in this run
{{ '%.0f'|format(result.bot_completion_likelihood) }}
Bot completion likelihood / 100
lower is better
{{ result.categories|length }}
Categories reviewed
{% if result.completed %}
Outcome: The agent completed the survey.
{% else %}
Outcome: The agent did not complete the survey. {% if evidence.blocked_phrase_hits or evidence.looped_at_step is not none %} Deterministic block sentinel fired: {% if evidence.blocked_phrase_hits %}block-phrase signals ({{ evidence.blocked_phrase_hits | join(', ') }}){% endif %} {%- if evidence.blocked_phrase_hits and evidence.looped_at_step is not none %}; {% endif -%} {% if evidence.looped_at_step is not none %}goal-loop at step {{ evidence.looped_at_step }}{% endif %}. {% endif %}
{% endif %} {% set failed_cats = result.categories | selectattr("error") | list %} {% if failed_cats %}
Note: {{ failed_cats|length }} categor{{ 'ies' if failed_cats|length != 1 else 'y' }} did not complete and {{ 'were' if failed_cats|length != 1 else 'was' }} weighted at zero in the defense score.
{% endif %} {# ---------- 3. Bot-resistance assessment ---------- #} {% if result.overall_feedback and result.overall_feedback.headline %}

Bot-resistance assessment

{{ result.overall_feedback.headline }}

{% for para in result.overall_feedback.paragraphs %}

{{ para }}

{% endfor %}
{% endif %} {# ---------- 4. Methods statement ---------- #}

Methods statement for your paper

Paste this into the Methods section of your manuscript to document the live-runtime evaluation.
{# ---------- 5. Per-category cards ---------- #}

Per-category review

{% for c in result.categories %}

{{ category_display(c.category) }}

{{ '%.0f'|format(c.score) }} / 100
{% if c.error %}

Reviewer error: {{ c.error }}

{% else %}

{{ c.summary }}

{% if c.findings %}
{{ c.findings|length }} finding{% if c.findings|length != 1 %}s{% endif %} {% for f in c.findings %}
{{ ui.severity_class(f.severity) }} {% if f.locator %} {{ f.locator }} {% endif %}
{{ f.rationale }}
{% if f.excerpt %}
"{{ f.excerpt }}"
{% endif %} {% if f.suggested_fix %}
→ {{ f.suggested_fix }}
{% endif %} {% if f.contributing_categories %}
Flagged by: {{ f.contributing_categories | map(attribute='value') | map('replace', '-', ' ') | join(', ') }}
{% endif %}
{% endfor %}
{% endif %} {% endif %}
{% endfor %} {# ---------- 6. Top recommendations ---------- #}

Top recommendations

{% if result.recommendations %}
    {% for r in result.recommendations %}
  1. {{ r.title }}
    {{ r.detail }}
    Surfaced by: {{ r.related_categories | map(attribute='value') | map('replace', '-', ' ') | join(', ') }}
  2. {% endfor %}
{% else %}

No actionable recommendations — every reviewer either passed cleanly or returned only low-impact findings.

{% endif %} {# ---------- 7. Narrative summary ---------- #}

Narrative summary

{{ result.narrative_summary }}
{% if result.final_result %}

Agent's final result

{{ result.final_result }}
{% endif %} {# ---------- 8. Step-by-step evidence appendix ---------- #}

Run transcript

{% for s in evidence.steps %}
step:{{ s.index }}{% if s.url %} · {{ s.url[:50] }}{% if s.url|length > 50 %}…{% endif %}{% endif %} {% if s.next_goal %} · {{ s.next_goal[:80] }}{% if s.next_goal|length > 80 %}…{% endif %}{% endif %}
{% if s.url %}
url: {{ s.url }}
{% endif %} {% if s.page_title %}
page_title: {{ s.page_title }}
{% endif %} {% if s.evaluation_previous_goal %}
eval_prev: {{ s.evaluation_previous_goal }}
{% endif %} {% if s.memory %}
memory: {{ s.memory }}
{% endif %} {% if s.next_goal %}
next_goal: {{ s.next_goal }}
{% endif %} {% for a in s.actions %}
action: {{ a }}
{% endfor %} {% if s.extracted_content %}
extracted: {{ s.extracted_content }}
{% endif %} {% if findings_by_step.get('step:' ~ s.index) %}
flagged by: {% for cat_name, f in findings_by_step['step:' ~ s.index] -%} {{ cat_name }}{% if not loop.last %}, {% endif %} {%- endfor %}
{% endif %}
{% endfor %}
{# ---------- 9. Citation block ---------- #}

Cite Survey Shield

APA
{{ citation.apa }}
BibTeX
{{ citation.bibtex }}
{# ---------- 10. Footer ---------- #} {{ ui.copy_button_script() }}