<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Evaluation on Electric Nexus</title><link>https://arkoniak.com/tags/evaluation/</link><description>Recent content in Evaluation on Electric Nexus</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 20 Oct 2026 13:00:00 +0300</lastBuildDate><atom:link href="https://arkoniak.com/tags/evaluation/index.xml" rel="self" type="application/rss+xml"/><item><title>Exerakt: Calibrating Jev</title><link>https://arkoniak.com/posts/exerakt-jev-calibration/</link><pubDate>Tue, 20 Oct 2026 13:00:00 +0300</pubDate><guid>https://arkoniak.com/posts/exerakt-jev-calibration/</guid><description>What 204 questions asked to both Jev and Claude showed: Jev is almost never confidently wrong, it is unsure on the questions that need careful reading, and the data says almost nothing about how well it catches problems.</description><content:encoded><![CDATA[<p>The previous posts mentioned that every question Jev answers in the pipeline is also put to Claude,
and that Claude decides while this calibration is on. Here is what that comparison showed.</p>
<h2 id="how-jev-answers">How Jev answers</h2>
<p>Jev does not answer yes or no. For each question, for example &ldquo;does every function belong to the
module&rsquo;s stated responsibility&rdquo;, it gives the probability that the answer is yes. The pipeline turns
that into a decision with two thresholds: 0.85 or more is yes, 0.3 or less is no, and everything in
between is a gray zone. While calibration is on, Claude answers the same questions, and the
comparison shows where the thresholds should be.</p>
<h2 id="what-204-questions-showed">What 204 questions showed</h2>
<p>Over all runs so far Jev got 204 such questions about the code of 28 cards: six project rules and
the criteria of each card.</p>
<p>Where Jev was confident, it agreed with Claude every time except once. That one case was the rule
about errors: failures have to be typed errors, not booleans or strings.</p>
<p>The uncertainty is not spread evenly. On the rule &ldquo;the code cannot panic&rdquo; 11 of 23 answers fell
into the gray zone, and on the rule about typed errors also 11 of 23. On a rule like &ldquo;the code
implements the general rule from the task, not the values from the tests&rdquo; there was no gray zone at
all. So Jev is careful exactly on the questions where the answer needs a close reading of the code.
For these two rules the threshold could be lowered to 0.3 or 0.4, and Jev would agree with Claude
almost everywhere.</p>
<p>The second use of Jev is classifying failures: should the card be retried, or should it go back to
Claude. Here Jev and Claude agreed in 31 of 34 cases, and all three disagreements were the same: Jev
said the model is going in circles and the card should go back, Claude said it was a typo and worth
another attempt. Jev is more pessimistic and sends cards back more often than needed.</p>
<p>Over all this time Jev cost about one cent and Claude as the judge about 2.70 dollars.</p>
<h2 id="the-catch">The catch</h2>
<p>The numbers above look very good, but there is a catch in them. Claude said &ldquo;yes, the code follows
the rule&rdquo; in 201 of 204 cases. By the time code reaches Jev it already compiles, clippy has nothing
to say, the mechanical rules hold and the tests pass. Code like that rarely breaks a rule, so there
were only three violations in the whole set.</p>
<p>This means that the high agreement mostly shows that both Jev and Claude find the code fine. How well Jev catches a problem these data almost cannot show, because there were almost
no problems to catch.</p>
<p>And this is the main thing I take from the calibration. In the current setup everything around Jev,
Rust&rsquo;s compiler, clippy and the frozen tests, makes such a solid base that Jev as a gate turns out to
be almost unnecessary. This is one of the things that made me reconsider Jev&rsquo;s role in this
project, but that is for a later post.</p>
]]></content:encoded></item></channel></rss>