manifest.json
The three kinds
There is deliberately no fourth kind, and in particular no built-in.
Why the platform is never a verifier
Why the platform is never a verifier
The last time this repository grew a built-in scorer, it wrote its own simulation pipeline with its
own weights, arrived at a different judgement from the evaluation side, and had to be reverted
whole. A verifier living in the control plane would be a second definition of “correct” no matter
how small it started, and the two definitions would disagree exactly when it mattered.
Contracts
Whatever the kind, the resolved verifier looks the same from the platform’s side:- rubric
- plugin
- endpoint
prompt, the flattened trajectory text, and the task’s reference if there is one.The trajectory is flattened for you — a string stays a string, a message object contributes its
content or text, and a list is joined. Harnesses differ in shape and the verifier contract is
about what the model produced, so the folding happens once here rather than in every author’s code.A failed verification is an error, never a zero
This is the single most important rule for anyone writing a verifier, and it is worth being blunt about why: a silently zeroed reward is indistinguishable from an answer that was actually wrong. A training run whose verifier quietly broke at step 400 would keep producing a reward curve, keep looking plausible, and teach the model from noise for the remaining hours of the job. So in your own verifier code:VerificationError with the reference that failed, so the job log names which
verifier stopped and why.
Picking one
Use a rubric
When correctness is a matter of judgement — quality, tone, whether an explanation is sound. Also
when you want the same standard to score both training rewards and benchmarks.
Use a plugin
When correctness is computable and the computation is cheap and local: an exact match, a parser,
a unit test.
Use an endpoint
When something already decides this — a compiler service, a simulator, an internal grading system.
Do not reimplement it in a plugin.