Release 0.14.0
Agent Judge 0.14.0
Agent Judge 0.14 replaces the former sealed Score hierarchy with a normalized Judgment contract built for portable evaluation results.
This is a breaking pre-1.0 release; consumers must recompile and follow the 0.13 to 0.14 migration guide.
Highlights
Judgmentnow carries requiredstatusplus optional normalizedscoreand optionallabelas independent facts.PASS,FAIL,ABSTAIN, andERRORhave explicit semantics. Mixed applicable consensus votes aggregate toABSTAIN; downstream gate or tier policy decides whether disagreement rejects or escalates.- All voting strategies expose an
ErrorPolicy, defaulting toPROPAGATE, and aggregate results include structured population and error-accounting evidence. - Judgment metadata is validated and recursively frozen at construction as ordinary JSON-compatible values. Rejected values report their exact metadata path.
- Result timing uses the portable integer metadata key
elapsedMillis;Judgment.elapsed()remains the JavaDurationview. - Model usage records optional provider-reported input, output, reasoning, cache-creation, cache-read, and total token quantities. It stores no volatile price estimate.
agent-judge-coreno longer depends on Reactor. It remains framework-neutral while declaring its actual Jackson Databind, SLF4J API, and JSpecify dependencies.- JSpecify makes
scoreandlabelvisibly nullable in the public result API, with NullAway enforcing the adopted package during compilation. - Composite results now expose complete ordered named attempts through
Verdict.compositeAttempts().
Each attempt contains either its returned childVerdictor the code-only failure
jury_execution_failed;CompositePaths.flatten(...)derives stable RFC 6901 paths for nested
results. MetaJuryrecords and continues after member execution exceptions. If any member fails, its
strategy is not invoked and the root isERROR, while successful evidence and every ordered
success/failure attempt remain available.
Removed API
The complete io.github.markpollack.judge.score package and ReactiveJudge are removed.
Use outcome-specific Judgment factories/builders, effectiveScore() where a numeric PASS/FAIL view is intentional, and a runtime-specific async wrapper when needed.
The unreleased composite projection subVerdicts is deleted rather than deprecated. Composite
consumers must move directly to compositeAttempts() or CompositePaths.flatten(...) and handle
the verdict-or-failure outcome explicitly. See MIGRATION_0.14.md.
Samples
The Agent Judge Tutorial contains the canonical executable examples.
Ten credential-free Maven modules cover the normalized API, jury behavior, model-backed judges, and evaluated-side Koog and LangChain4j bridges.
Dependencies
Use io.github.markpollack:agent-judge-*:0.14.0 for every Agent Judge module.
Runtime bridge dependencies remain provided where practical, so applications choose their framework runtime versions.
License
Agent Judge 0.14.0 is licensed under the project-specific Business Source License terms in the repository root LICENSE file.