{% extends "base.html" %} {% from "_macros.html" import rate %} {% set nav = 'compare' %} {% block body %}

Compare two runs

Gate-by-gate delta. Only meaningful when both runs used the same dataset and the same metrics_version — the numbers alone cannot warn you, so both are shown.

{% if comparability %} {% set bad = comparability.findings | selectattr('verdict', 'equalto', 'mismatch') | list %} {% set unsure = comparability.findings | selectattr('verdict', 'equalto', 'unverifiable') | list %} {% if bad %}

These runs are not comparable. The delta below measures the harness as much as it measures the systems. R4: two runs compared against each other must share their dataset, their generation budget and the settings that decide what the metrics mean.

{% endif %} {% if bad or unsure %}
{% for f in bad + unsure %} {% endfor %}
SettingVerdictBaselineCandidateWhy it matters
{{ f.field }} {% if f.verdict == 'mismatch' %}mismatch{% else %}unverified{% endif %} {{ f.left if f.left is not none else '—' }} {{ f.right if f.right is not none else '—' }} {{ f.note }}

Unverified is not "the same". Where a run does not record a setting — an older run, or an adapter that cannot see the budget of the system behind it — nothing can be concluded either way, and saying so is the point.

{% endif %} {% endif %} {% if rows %} {% if left_summary and right_summary and left_summary.dataset != right_summary.dataset %}

These runs used different datasets ({{ left_summary.dataset }} vs {{ right_summary.dataset }}). The deltas below compare answers to two different questions.

{% endif %}
{% for row in rows %} {% endfor %}
Metric {{ left_summary.label if left_summary else 'baseline' }} {{ right_summary.label if right_summary else 'candidate' }} Delta
{{ row.gate }} {{ rate(row.left) }} {{ rate(row.right) }} {% if row.delta is none %}n/a {% elif row.delta > 0 %}+{{ '%.1f'|format(row.delta * 100) }} pp {% elif row.delta < 0 %}{{ '%.1f'|format(row.delta * 100) }} pp {% else %}±0{% endif %}
{% elif left and right %}

Nothing comparable — is either run unscored?

{% endif %} {% endblock %}