tests/test.sh, and its result comes from a reward file.
Write a reward
This verifier checks the example instruction:tests/test.sh
A nonempty
reward.json takes precedence over reward.txt. The primary reward is the reward field, or the only field in a one-field object. A primary reward must be in [0, 1].
/logs/verifier/reward.json
reward key produce a scored trial with no primary reward. That trial cannot contribute a primary success to pass@k.
Choose where verification runs
- Separate
Separate verification
A verifier with its own Dockerfile keeps grading dependencies out of the agent’s image.environment_mode omitted, [verifier.environment] selects separate mode. An explicit environment_mode = "shared" keeps verification in the agent sandbox.
How the verifier image is selected
The effective configuration is[verifier.environment] when present; otherwise, it copies [environment].
The task source must still contain a nonempty
tests/test.sh, including when a distinct prebuilt verifier image already contains it.
A tests/Dockerfile is not built when the effective configuration pins an image. The import records a tests_dockerfile_not_built note if that unused file exists.
Prepare outputs for collection
Most tasks only need anartifacts list. If outputs need preparation after the agent finishes, add pre_artifacts.sh at the task root. It runs from the task’s working directory.
pre_artifacts.sh
/app/summary.json. A custom collection script must also provide /logs/artifacts/model.patch; it can be empty when the task does not produce a patch. If you omit the script, Evolve prepares that file for you.
Collect from a service
[[verifier.collect]] runs a command before artifact collection. For a multi-container task, use service to choose the container. For a single container, omit it or use main.
task.toml
api service with a /stats endpoint and curl installed. Hook failures are logged and do not stop the run. Make the verifier reject missing evidence when it is required for a valid score.
Main-service hooks run before collecting its files. In separate verification, Evolve then stops main, runs sidecar hooks, and collects sidecar files. Shared verification keeps the containers running. Sidecar artifacts retain their source paths in the separate verifier.
timeout_sec defaults to 60 seconds. Compose hooks can set user to choose an existing container user. Single-container hooks do not accept that override.
Grade with a model
Reward Kit combines reusable checks, custom Python, and model judges. A verifier can request model access for an LLM judge:task.toml
no-network through the judge gateway.
For a Reward Kit judge, override its agent and model for one job with:
--ve keys. Judge spend is reported separately from agent spend. Its independent cap is the smaller of the agent’s per-trial cap and $5. Judge-enabled trials are not currently regradable.

