{% extends "base.html" %} {% block title %}Experiment #{{ e.id }}{% endblock %} {% block main %}
{{ e.flag }}{{ e.title }}, proposed by {% if e.base_run_id %}run #{{ e.base_run_id }}{% else %}a deleted run{% endif %} ({{ e.rule_id }}) for {{ e.base_url }}. {{ e.status }}
{{ e.reason | safe }}
{% if e.expected %}Expected {{ e.expected | safe }}
{% endif %} {% if e.risk %}Risk {{ e.risk | safe }}
{% endif %}Before {{ before if before is not none else "not known from the run" }}. To roll back, undo the change and restart.
Recorded {{ q_before.questions }} questions ({{ q_before.set_name }}) twice, passes #{{ q_before.id }} and #{{ q_floor.id if q_floor else "?" }}: {{ "%.1f%%" % (100 * q_before.accuracy) }} right{% if q_floor_flips is not none %}; asking twice flipped {{ "%.1f%%" % (100 * q_floor_flips) }}, the noise floor{% endif %}. After the change, step 06 asks the same questions again.
{% else %}Optional, and worth it for anything that changes the numbers the model computes with (number formats, a new checkpoint, a different engine). kneebench asks every question twice now, at temperature 0 with 16 at a time, so it knows how much answers move with nothing changed.
The rule is saved now, before any answers exist, so the result can't move it (lesson 54).
JSONL lines: {"prompt": "...", "answer": "...", "match": "exact|contains|number|choice|regex", "category": "..."}.
{{ how.intro }}
{{ how.code }}
kneebench never changes your server. Most flags need a restart; use a staging or canary replica if this one serves real traffic.
The verification run is in progress. Follow it.
{% elif comparison %}| Measure | Before (run #{{ e.base_run_id }}) | After (run #{{ verify_run.id }}) | Change | |
|---|---|---|---|---|
| {{ label }} | {{ a }} | {{ b }} | {{ change }} | {{ {'unknown': 'one run only'}.get(verdict, verdict) }} |
Changes under {{ "%.0f" % comparison.noise_pct }}% count as noise{% if comparison.noise_measured %}, from how much each run's repeated baseline moved{% endif %}. Full comparison · Verification report
{% if e.status not in ("kept", "reverted") %} {% else %}You {{ "kept" if e.status == "kept" else "reverted" }} this change. {% if e.status == "kept" %}The verification report has the next suggestions.{% endif %}
{% endif %} {% else %}The verification run ended as {{ verify_run.status }}{% if verify_run.error %}: {{ verify_run.error }}{% endif %}. You can start another below.
{% endif %} {% endif %} {% if not verify_run or verify_run.status not in ("running", "done") %}A short run with the same targets and request size, covering only the load levels this change can move, usually 5 to 15 minutes. It is compared with run #{{ e.base_run_id }}.
{% endif %}Record answers in step 02 before applying a change to compare them afterwards.
{% else %}