The first eval measured the enforcer: a 20-minute scoreboard found three flaws code review missed
After a day of the honesty verifier falsely accusing an honest agent, we built eval v1 as read-back lenses over nodes the app already keeps: a Lab judgment-trend chart and a dk-verify scoreboard. The scoreboard's first run over 491 real receipts immediately surfaced three structural flaws — permanent 'failed' verdicts, an unverifiable Java stack, and a week-old misjudgment pattern.
The founder's frustration peaked after dk-verify's false accusations: "I want real eval." The answer wasn't a metrics platform — it was the house pattern applied to measurement: read-back lenses over memory the app already keeps. No new store, no new capture.
① Lab trend — is my judgment actually improving?
Every sealed Lab rep already persists a lab_scorecard artifact (a Korean scorecard string:
overall/100, coverage, catch rate, precision, tone, prediction accuracy). The lens parses those
back into numbers and draws the series with a last-5-vs-before delta. The Lab's whole thesis —
structured friction trains judgment — finally has a measurable curve instead of a feeling.
② dk-verify scoreboard — watch the watchman
Every re-run verdict is an immutable verification_receipt node. First run over the real graph
(491 receipts, 10 days): verified 78%, unsafe 11%, failed 9%, unrunnable 2%. Three env failures
(exit 127) branded as lies. Twenty-seven claims whose bad verdict was later overturned. Twelve
refusals that only passed after the agent swapped commands — the over-blocking cost of the old
denylist, now a number instead of an anecdote.
The eval's first 20 minutes found three flaws a week of code review hadn't:
- "Failed" is forever. Verdict nodes dedupe on claim+command hash, so a claim re-verified with the SAME command can never be redeemed in the ledger — it's structurally biased against the agent.
- Java projects can't verify. Every
./gradlewattempt in history was unrunnable, and the new allowlist doesn't include it — a whole stack has no way to emit test claims. - The cwd-drift misjudgment wasn't new. exit-2 grep failures matching yesterday's bug signature recur from June 23 — an eval would have caught the pattern a week earlier.
Lesson
An eval is a discovery device, not a dashboard. And the first thing worth measuring is the enforcer itself — a verifier nobody scores drifts into a cop nobody trusts.