{% extends "base.html" %} {% block title %}Diff - devqubit{% endblock %} {% block content %}
| Project | {% if report.metadata.project_match %}✓ Match{% else %}✗ Different{% endif %} |
| Backend | {% if report.metadata.backend_match %}✓ Match{% else %}✗ Different{% endif %} |
| Project A | {{ report.metadata.project_a or 'N/A' }} |
| Project B | {{ report.metadata.project_b or 'N/A' }} |
| Backend A | {{ report.metadata.backend_a or 'N/A' }} |
| Backend B | {{ report.metadata.backend_b or 'N/A' }} |
| Run A | {{ report.fingerprints.a | short_digest }} |
| Run B | {{ report.fingerprints.b | short_digest }} |
| Match | {% if report.fingerprints.a == report.fingerprints.b %}✓ Yes{% else %}✗ No{% endif %} |
| Exact Match | {% if report.program.exact_match %}✓ Yes{% else %}✗ No{% endif %} |
| Structural Match | {% if report.program.structural_match %}✓ Yes{% else %}✗ No{% endif %} |
| Circuit Hash A | {{ report.program.circuit_hash_a | short_digest if report.program.circuit_hash_a else 'N/A' }} |
| Circuit Hash B | {{ report.program.circuit_hash_b | short_digest if report.program.circuit_hash_b else 'N/A' }} |
ℹ Same circuit structure with different parameter values (typical for VQE/QAOA).
{% elif not report.program.exact_match and not report.program.structural_match %}⚠ Program artifacts differ between runs.
{% endif %}⚠ Significant calibration drift detected. Results may not be directly comparable.
{% elif report.device_drift and not report.device_drift.has_calibration_data %}No calibration data available
{% elif report.device_drift and report.device_drift.has_calibration_data %}Calibration within acceptable thresholds
{% else %}No calibration data available
{% endif %} {% if report.device_drift and report.device_drift.top_drifts %}| Metric | Change |
|---|---|
| {{ d.metric }} | {{ "%.1f" | format(d.percent_change) if d.percent_change is not none else 'N/A' }}% |
| Parameter | Run A | Run B |
|---|---|---|
| {{ key }} | {{ values.a }} | {{ values.b }} |
| Parameter | Value |
|---|---|
| {{ key }} | {{ value }} |
| Parameter | Value |
|---|---|
| {{ key }} | {{ value }} |
All parameters match
{% endif %}| Metric | Run A | Run B |
|---|---|---|
| {{ key }} | {{ values.a }} | {{ values.b }} |
| Metric | Value |
|---|---|
| {{ key }} | {{ value }} |
| Metric | Value |
|---|---|
| {{ key }} | {{ value }} |
All metrics match
{% endif %}Circuit structure matches
{% endif %}| Total Variation Distance (TVD) | {{ "%.6f" | format(report.tvd) }} |
| Total Shots (A / B) | {{ report.shots.a }} / {{ report.shots.b }} |
| Noise Threshold (p95) | {{ "%.6f" | format(report.noise_context.noise_p95) if report.noise_context.noise_p95 else "%.6f" | format(report.noise_context.expected_noise * 2) }} |
| p-value | {{ "%.3f" | format(report.noise_context.p_value) }} |
{# Bootstrap path: use p_value #} {% if report.noise_context.p_value is defined and report.noise_context.p_value is not none %} {% if report.noise_context.p_value >= 0.10 %} ✓ Consistent with sampling noise — difference is not statistically significant. {% elif report.noise_context.p_value >= 0.05 %} ⚠ Borderline (p={{ "%.2f" | format(report.noise_context.p_value) }}). Consider increasing shots for a clearer signal. {% else %} ✗ Statistically significant difference (p={{ "%.2f" | format(report.noise_context.p_value) }}) — results show meaningful divergence. {% endif %} {# Fallback: use noise_ratio heuristic #} {% else %} {% if report.noise_context.noise_ratio < 1.5 %} ✓ TVD is within expected shot noise range. {% elif report.noise_context.noise_ratio < 3.0 %} ⚠ Ambiguous ({{ "%.1f" | format(report.noise_context.noise_ratio) }}× expected noise). Consider increasing shots. {% else %} ✗ TVD exceeds expected noise ({{ "%.1f" | format(report.noise_context.noise_ratio) }}×) — results show meaningful differences. {% endif %} {% endif %}
{% endif %}