{% extends "base.html" %} {% block title %}understudy - {{ run_id }}{% endblock %} {% block content %}
Starting from {{ trace.metadata.starting_point.mode }} after exchange {{ trace.metadata.starting_point.after_turn }}. Assertions below cover only the new exchange.
{% if trace.metadata.state_changes %}{{ trace.metadata.state_changes | tojson(indent=2) }}
{% endif %}
| Agent path | Invocation | Parent | Status |
|---|---|---|---|
| {{ execution.agent_path | join(' / ') }} | {{ execution.id }} | {{ execution.parent_id or '' }} | {{ execution.status }} |
| Turn | Role | Input Tokens | Output Tokens | Thinking Tokens | Latency |
|---|---|---|---|---|---|
| {{ loop.index }} | {{ trace.turns[loop.index0].role if loop.index0 < trace.turns|length else '-' }} | {{ turn_metric.input_tokens }} | {{ turn_metric.output_tokens }} | {{ turn_metric.thinking_tokens or 0 }} | {{ turn_metric.latency_ms }}ms |
Description: {{ scene.description }}
Starting Prompt: {{ scene.starting_prompt }}
Persona: {{ scene.persona.description }}
{{ scene.conversation_plan }}
| Rubric | Score | Agreement | Reasoning |
|---|---|---|---|
| {{ name }} | {% if result.score == 1 %} PASS {% else %} FAIL {% endif %} | {{ "%.0f"|format((result.agreement_rate or 0) * 100) }}% | {{ result.reasoning or "-" }} |
{{ scene.context | tojson(indent=2) }}