{# pyre-ignore-all-errors #} {% macro render_trend_svg(chart) %} {% if not chart %}
| Metric | Target | Mean | p50 | p90 | p95 | Max | N |
|---|---|---|---|---|---|---|---|
| {{ r.get("metric", "") }} | {{ r.get("avg", "—") }} | {{ r.get("p50", "—") }} | {{ r.get("p90", "—") }} | {{ r.get("p95", "—") }} | {{ r.get("max", "—") }} | {{ r.get("n", "—") }} |
| Tool | Calls | p50 | p95 | Max | Share |
|---|---|---|---|---|---|
{{ t.get("name", "") }} |
{{ t.get("calls", 0) }} | {{ t.get("p50_fmt", "—") }} | {{ t.get("p95_fmt", "—") }} | {{ t.get("max_fmt", "—") }} | {{ t.get("share_pct", "0%") }} |
| + {{ overflow.get("remaining_count", 0) }} more tools ({{ overflow.get("share_pct", "") }} total tool time) | |||||
| Evaluation | Turns | Median turn | Slowest turn | Turn breakdown |
|---|---|---|---|---|
| {{ e_nm }} {{ e_type }} | {{ se.get("turns_count", 0) }} | {{ se.get("median_turn_fmt", "—") }} | Turn {{ se.get("slowest_turn_num", 1) }} |
| Component / Stage | Calls (Calls/Turn) | Mean | p50 | p90 | Share of Suite PL | Observation |
|---|---|---|---|---|---|---|
{{ row.get('component', '') }}
{{ r_type }}
{% if sub_cbs %} ▶{% if sub_cbs | length == 1 %}1 callback{% else %}{{ sub_cbs | length }} callbacks in order{% endif %}
{% for sc in sub_cbs %}
{% set sc_seq = sc.get("seq", 1) %}
{% set sc_nm = sc.get("cb_name", "callback") %}
{% set sc_avg = _fmt_ms(sc.get("avg_ms", 0)) %}
{% set sc_p90 = _fmt_ms(sc.get("p90_ms", 0)) %}
{% set sc_cnt = sc.get("calls", 0) %}
{% set sc_cts = sc.get("child_tools") or [] %}
{% set sc_has_det = (sc.get("has_detailed_latency") or (sc.get("avg_code_ms", 0) or 0) > 0 or (sc.get("avg_sandbox_ms", 0) or 0) > 0) %}
{% set tot_r = (sc.get("avg_ms", 0) | float) | round | int %}
{% set code_r = (sc.get("avg_code_ms", 0) | float) | round | int %}
{% set wait_r = (sc.get("avg_ext_wait_ms", 0) | float) | round | int %}
{% set sbx_r = 0 if (tot_r - code_r - wait_r) < 0 else (tot_r - code_r - wait_r) %}
#{{ sc_seq }}
{% endfor %}
{{ sc_nm }} — avg {{ sc_avg }}{% if sc_has_det %} {% endif %}, p90 {{ sc_p90 }} {% if sc_cts %} · {% endif %}
|
{{ row.get('calls', 0) }} ({{ "%.2g" | format(cpt) }}×/turn) | {{ _fmt_ms(row.get('avg_ms')) }} | {{ _fmt_ms(row.get('p50_ms')) }} | {{ _fmt_ms(row.get('p90_ms')) }} | {{ "%.1f" | format(share_pct) }}% ({{ r_imp }}/turn) |
session.state serialization/diffing & sandbox init .| Operation / Tool | Mean / p90 Dur | Unmasked Rate | Post-Filler Dead Air | Observation |
|---|---|---|---|---|
{{ frow.get('tool_name', '') }} |
{{ f_avg }} / {{ f_p90 }} | {{ badge_lbl }} | {% if frow.get("masked_calls", 0) > 0 and frow.get("unmasked_calls", 0) == 0 %} 0 ms {% elif frow.get("pl_unmasked_ms") is not none %} {% set u_cls = _pl_status_cls(frow.get("pl_unmasked_ms")) %} {{ _fmt_ms(frow.get("pl_unmasked_ms")) }} PL {% else %} {% endif %} |
Naturalness grading (1–5 scale), language & language-switch adherence, multimodal audio checks, and spoken caller-experience issues.
{{ suite_audio.gpa_meta }} ?
Multimodal audio analyses & conversation checks
Routed language code vs agent spoken language
Flagged across naturalness factors, language switch, audio checks & latency — click any bar to filter runs
Turn-level vocal & linguistic factor averages (1–5 scale), multimodal audio check breakdown, and per-run explorer.
Mean score across all graded agent turns (1.0 = bot-like, 5.0 = human-like)
Whole-call coherence, voice consistency, pause & cutoff checks
Showing {{ total_runs }} of {{ total_runs }} conversations
| Run | Conversation / Eval | Type | Outcome | Grade ? | Score ? | Language ? | Audio Checks ? | Turns | Latency p50 ? | WER ? | Flags / Issues ? |
|---|---|---|---|---|---|---|---|---|---|---|---|
| #{{ r.run_num }} |
{{ r.eval_name | escape }}
{% if r.session_id %}
{{ r.session_id | escape }}
{% endif %}
|
{{ r.eval_type }} | {{ pass_str }} | {{ r.grade_label }} | {{ score_str }} | {{ r.language_status_label | escape }} | {{ chk_str }} | {{ r.turns_count or 1 }} | {{ pl_str }} | {{ wer_str }} | {% if r.issue_keys %} {% for ik in r.issue_keys %} {% set full_lbl = r.issue_labels[loop.index0] if (r.issue_labels and r.issue_labels | length > loop.index0) else ik %} {% set fl = r.flag_labels[loop.index0] if (r.flag_labels and r.flag_labels | length > loop.index0) else (r.issue_labels[loop.index0] if (r.issue_labels and r.issue_labels | length > loop.index0) else ik) %} {% set bad_issues = ["language_mismatch", "voice_drift", "long_pauses", "agent_looping", "audio_cutoff", "having_trouble", "audio_exp_failed", "verdict_barged_missed", "subagent_ping_pong_loop", "ignored_user", "markdown_link_tts_leakage", "prompt_or_directive_leakage", "midturn_voice_seam", "audio_truncation"] %} {% set cls_name = "bad" if ik in bad_issues else "warn" %} {% set tip_txt = tips.issue_tips.get(ik, "") if (tips.issue_tips is mapping) else "" %} {{ fl | escape }} {% endfor %} {% else %} None {% endif %} |
| No evaluation runs recorded | |||||||||||
{{ data.source_report_uri | escape }} | {% endif %}Generated {{ data.generated_at | escape }} | App: {% if data.ces_base %}{{ data.app_id | escape }} ↗{% else %}{{ data.app_id | escape }}{% endif %}
| Audio: {{ data.recordings_uri | escape }}/<date>/<session_id>/| # | Scenario · turn | Dead air | |
|---|---|---|---|
| {{ w.idx }} | {{ w.name | escape }} · run {{ w.run_no }} · turn {{ w.turn_no }} | {{ "%.2f" | format(w.dead_air_s) }}s | {% if w.seek_at is not none %}{% endif %} |
| # | Scenario | Tags | Status | Goals | Expect. | Turns | Avg dead air | Max dead air | Setup |
|---|---|---|---|---|---|---|---|---|---|
| {{ row.idx }} | {{ row.name | escape }} | {% for tag in row.tags %}{{ tag.text | escape }}{% endfor %} | {{ 'PASS' if row.passed else 'FAIL' }} | {{ row.goals | escape }} | {{ row.expectations | escape }} | {{ row.turns | escape }} | {% if row.avg_dead_air_s is not none %}{{ "%.2f" | format(row.avg_dead_air_s) }}s{% else %}—{% endif %} | {% if row.max_dead_air_s is not none %}{{ "%.2f" | format(row.max_dead_air_s) }}s{% else %}—{% endif %} | {% if row.setup_s is not none %}{{ "%.1f" | format(row.setup_s) }}s{% else %}—{% endif %} |
| Caller | Agent (server-recorded full-session(k).wav — exact dead air) |
|---|---|
Turn {{ tr.turn_no }} {% if tr.seek_offset_s is not none %} {% endif %}🗣 "{{ tr.user | escape }}" | 🤖 {% if tr.agent_lines %}{% for line in tr.agent_lines %}{{ line | escape }}{% if not loop.last %} {{ render_ces_turn_vad(tr.turn_vad) }}{% for ev in tr.events %}{% if ev.kind == "tool" %}{% endif %}{% endfor %}{% else %}(no agent text){% endif %} 🔧 {{ ev.text | escape }}{% if ev.tool_input %}Input {{ ev.tool_input | escape }}{% endif %}{% if ev.tool_output %}Output{{ ev.tool_output | escape }}{% endif %}🔀 {% else %}{{ ev.text | escape }}{{ ev.text | escape }} {% endif %}{% endfor %} |
{{ run.session_parameters_json | escape }}| Timestamp (UTC) | Suite | Gate | Cases Passed | Changelist / SHA | Run ID | Artifact |
|---|---|---|---|---|---|---|
| {{ row.timestamp_utc | escape }} | {{ row.suite | escape }} |
{{ 'PASS' if row.gate_passed else 'FAIL' }} | {{ row.passed_cases }}/{{ row.total_cases }} ({{ row.pass_rate_pct_str }}) | {{ row.git_sha_short | escape }} |
{{ row.run_id | escape }} |
Open Report{% if row.enriched_report_url %} · Enriched (Audio+VAD){% endif %} |
| Result | Type | Eval | Detail |
|---|---|---|---|
| {% if u["type"] == "sim" and "run_results" in u %} {% set p = u["run_results"] | selectattr('passed') | list | length %} {% set t = u["run_results"] | length %} {% if p == t %} PASSED {% elif p == 0 %} FAILED {% else %} MIXED {% endif %} {% elif u["passed"] %} PASSED {% else %} FAILED {% endif %} | {{ u["type"] }} | {{ u["name"] | escape }} | {% if u["type"] == "sim" and "run_results" in u %} {% for r in u["run_results"] %} {% set dot_cls = "p" if r.get("passed") else "f" %} {% endfor %} {% else %} {{ u["detail"] | escape }} {% endif %} |
{{ r['session_id'] }}
{% else %}
{{ r['session_id'] }}
{% endif %}
{{ json.dumps(r['session_parameters'], indent=2) | escape }}
{{ json.dumps(comp['expected_args'], indent=2, default=str) | escape }}{{ json.dumps(comp['actual_args'], indent=2, default=str) | escape }}{{ r['sim_user_voice'] | escape }}{% endif %}{% if ces_aud and ces_aud.get('avg_dead_air_s') is not none %} ⏱ avg dead air {{ "%.2f" | format(ces_aud['avg_dead_air_s']) }}s{% endif %}{% if ces_aud and ces_aud.get('max_dead_air_s') is not none %} max {{ "%.2f" | format(ces_aud['max_dead_air_s']) }}s{% endif %}{% if ces_aud and ces_aud.get('setup_s') is not none %} setup {{ "%.2f" | format(ces_aud['setup_s']) }}s{% endif %}{{ run_bg | escape }}{% if run_level %} at {{ run_level }}{% endif %}{% if run_snr is not none %} ({{ run_snr }} dB SNR){% endif %}{% endif %}
{% if run_burst %}{% if run_bg %} · {% endif %}Burst noise ({{ run_burst | length }} file(s){% if run_burst_level %} at {{ run_burst_level }}{% endif %}{% if run_burst_snr is not none %} @ {{ run_burst_snr }} dB SNR{% endif %}): {{ run_burst | join(', ') | escape }}{% endif %}
{{ r['session_id'] }}{% if ces_aud and ces_aud.get('gcs_dir') %} · {{ ces_aud['gcs_dir'] | escape }}{% endif %}{{ r['session_id'] }}{% if ces_aud and ces_aud.get('gcs_dir') %} · {{ ces_aud['gcs_dir'] | escape }}{% endif %}{{ json.dumps(r['session_parameters'], indent=2) | escape }}
{{ args | escape }}
{% endif %}
{% if kind == "tool_pair" %}
{% set _, _, result = item[2].partition(" with result ") %}
{% if result %}
{{ result | escape }}
{% endif %}
{% endif %}
{{ result | escape }}
{% endif %}