{% extends "base.html" %}
{% block title %}understudy - Report{% endblock %}
{% block content %}
Evaluation Report
{{ summary.total_runs }}
Total Runs
{{ "%.1f"|format(summary.pass_rate * 100) }}%
Pass Rate
{{ failed_runs|length }}
Failed Runs
{{ "%.1f"|format(summary.avg_turns) }}
Avg Turns/Run
{{ "%.0f"|format(summary.avg_latency_per_turn_ms) }}ms
Avg Latency/Turn
{{ "%.1f"|format(summary.total_latency_ms / 1000) }}s
Total Agent Time
{{ "%.0f"|format(summary.avg_input_tokens_per_turn) }}
Avg Input Tokens/Turn
{{ "%.0f"|format(summary.avg_output_tokens_per_turn) }}
Avg Output Tokens/Turn
{{ "%.0f"|format(summary.avg_thinking_tokens_per_turn) }}
Avg Thinking Tokens/Turn
{% if summary.judge_stats %}
| Rubric |
Pass Rate |
Avg Agreement |
Evaluated |
{% for rubric, stats in summary.judge_stats.items() %}
| {{ rubric }} |
{{ "%.0f"|format(stats.pass_rate * 100) }}%
|
{{ "%.0f"|format(stats.avg_agreement * 100) }}% |
{{ stats.count }} runs |
{% endfor %}
{% endif %}
{% if failed_runs %}
{% for run in failed_runs %}
Checks failed: {{ run.failed_checks|join(", ") }}
{{ run.turn_count }} turns · {{ run.terminal_state or "none" }}
{% if run.analysis %}
Analysis: {{ run.analysis }}
{% endif %}
{% endfor %}
{% endif %}
{% if summary.tool_usage %}
| Tool |
Total |
Avg/Run |
{% for tool, count in summary.tool_usage.items() %}
{{ tool }} |
{{ count }} |
{{ "%.1f"|format(count / summary.total_runs) }} |
{% endfor %}
{% endif %}
{% if summary.terminal_states %}
| State |
Count |
% |
{% for state, count in summary.terminal_states.items() %}
| {{ state }} |
{{ count }} |
{{ "%.0f"|format(count / summary.total_runs * 100) }}% |
{% endfor %}
{% endif %}
{% if summary.agents %}
| Agent |
Invocations |
{% for agent, count in summary.agents.items() %}
{{ agent }} |
{{ count }} |
{% endfor %}
{% endif %}
| Scene |
Status |
Terminal State |
Turns |
Tools |
Tags |
Timestamp |
{% for run in runs %}
|
{{ run.scene_id }}
|
{% if run.passed %}
PASS
{% else %}
FAIL
{% endif %}
|
{{ run.terminal_state or "none" }}
|
{{ run.turn_count }} |
{{ run.tools_called|length }} |
{% for key, value in run.tags.items() %}
{{ key }}={{ value }}
{% endfor %}
|
{{ run.timestamp }} |
{% else %}
| No runs found. |
{% endfor %}
{% endblock %}