docs: agent-judge OSS eval adapter — planning (refs promptlm-evals#44)#267
Draft
fabapp2 wants to merge 2 commits into
Draft
docs: agent-judge OSS eval adapter — planning (refs promptlm-evals#44)#267fabapp2 wants to merge 2 commits into
fabapp2 wants to merge 2 commits into
Conversation
Adds two proposals and a spike plan introducing OSS evaluation adapters as a first-class concern in this repo: - docs/proposals/oss-eval-adapter-tier.md establishes where third-party evaluation adapters live (components/promptlm-evaluation-<vendor>/), introduces a community vs core tier signalled by a Maven property + README badge + repo-root manifest (not by directory location or build profile), and defines the extensions["x-evaluation-<adapter>"] convention so structured payloads can ride alongside the v1 EvaluationResult POJO and bridge cleanly into the commercial v2 schema when promptlm-evals is on the classpath. - docs/proposals/agent-judge-oss-adapter.md is the concrete design for the first adapter under this scheme. Implements the host Evaluation interface, writes v1 POJO + structured extension-slot payload (the "two writes" pattern), auto-configures via @ConditionalOnClass when agent-judge is on the classpath, and defers GraalVM native-image support to a second milestone. - docs/spikes/2026-05-agent-judge.md is a 2-day, time-boxed spike plan with hard license / Maven Central pre-flight gates, JVM end-to-end checklist, payload-shape stress tests (including a mock commercial- bridge read), GraalVM scouting pass, and a filled-at-end decision matrix. No code changes. Intended for review as a draft PR so the structural decisions can be argued before any module scaffolding lands. Replaces an earlier planning attempt on promptlm-evals (PR #45) which was re-rooted here after discovering the BSL/Apache-2.0 licensing boundary: OSS adapters belong in this Apache-2.0 repo; any future commercial bridge that lifts the extension-slot payload to v2 lives in promptlm-evals as a follow-up. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Planning-only PR (draft, no code). Re-rooted from promptlm-evals#45 after we hit the BSL/Apache-2.0 boundary — OSS-tier planning belongs here, in this Apache-2.0 repo.
What's in this PR
Three documents, intended to be argued before any module scaffolding lands:
docs/proposals/oss-eval-adapter-tier.mdcomponents/promptlm-evaluation-<vendor>/as the home for third-party evaluation adapters in this repo.<promptlm.eval.tier>community</promptlm.eval.tier>), README badge, and a repo-rootdocs/eval-adapters.mdmanifest — not by directory location or build profile.extensions["x-evaluation-<adapter>"]convention so structured payloads (e.g. per-Checkcascade results) can ride alongside the v1EvaluationResultPOJO and bridge cleanly into the commercial v2 schema whenpromptlm-evalsis on the classpath.docs/proposals/agent-judge-oss-adapter.mddev.promptlm.domain.promptspec.Evaluation.EvaluationResult(score + reasoning summary) and structuredJudgmentpayload toextensions["x-evaluation-agent-judge"]— preserves the per-Checkgranularity that the Pollack post argues is load-bearing (Kamoi et al., He et al., Zhuo et al.).@ConditionalOnClass(ai.pollack.agentjudge.Judge)auto-config; opt-in via classpath presence.application.yamljury composition for users who don't want to author beans.docs/spikes/2026-05-agent-judge.mdWhy two writes (the structurally interesting decision)
The OSS v1
EvaluationResultPOJO is deliberately narrow (evaluator, type, score, reasoning, comments). The whole reasonagent-judgeis worth integrating is the structured per-Checkoutput — collapsing it to a single score throws away the point. We considered four options:comments— semantically wrong; tooling that displayscommentsgets garbage.extensionsto v1 POJO — pulls v1 toward v2, re-fragments the schema landscape.PromptSpec✅ — reuses the existing D-33 two-slot persistence pattern. OSS users get the data; commercial bridge lifts it losslessly.Option 4 is the one this PR adopts. It's the smallest move that honours both the Pollack thesis and the OSS+commercial compatibility goal.
Why a draft PR
The tier structure (
oss-eval-adapter-tier.md) and the extension-slot convention are the highest-cost decisions in here. Once they land, the rest follows. PR-as-discussion-thread keeps the argument in one place.What this PR is not
agent-judgedependency added anywhere.docs/eval-adapters.mdmanifest yet (created when the first adapter actually lands).Out of scope / follow-ups
agent-judge(file after spike).promptlm-evalsreadingextensions["x-evaluation-agent-judge"]and lifting to v2 — to land after the OSS adapter ships, not before.Suggested review order
oss-eval-adapter-tier.md(the structural calls — tier model + extension-slot convention).agent-judge-oss-adapter.md(concrete design — only meaningful if the structural calls land).🤖 Generated with Claude Code