Why a Jury?
A single judge gives you a single score. A jury gives you diagnostic information โ when something fails, you know where in the stack it failed and why. The experiment driver uses a cascaded jury with three tiers. Each tier is more expensive than the last, and only fires if cheaper tiers donโt already have a verdict.The Three Tiers
1
Tier 1: Deterministic
Zero-cost, instant, binary. Checks facts that are unambiguously right or wrong.Examples: Does the project compile? Does
java -version report the right version? Are all javax.* imports replaced with jakarta.*?Cost: Free (no LLM calls)2
Tier 2: Structural
Compares the agentโs output against the reference implementation at a structural level โ AST diffs, import sets, annotation changes, POM dependency trees.Examples: Are the same imports present? Do method signatures match? Are the right dependencies in the POM?Cost: Free (structural comparison, no LLM)
3
Tier 3: Semantic
LLM-powered evaluation for questions that canโt be answered structurally. Uses criteria extracted from the execution plan to judge whether the agentโs approach was sound.Examples: Is the error handling strategy appropriate? Does the migration preserve business logic semantics?Cost: LLM tokens per item
Wiring a Simple Jury
Start with a single Tier 1 judge:Wiring a Multi-Tier Jury
Add judges from each tier with weights:Writing a Custom Judge
ImplementJudge and JudgeWithMetadata:
Judge interface
JudgmentContext provides
Judgment fields
Diagnostic Feedback
After jury evaluation, theDiagnosticAnalyzer classifies failures into 8 gap categories:
This classification feeds the Forge pipeline โ knowledge gaps become new KB entries, tool gaps become new deterministic tools, and the flywheel turns.
Related
Four-Tier Jury Methodology
The evaluation framework behind experiment scoring
Creating Experiments
Dataset design, variant ladders, configuration