verifiers 0.4.1.dev21__tar.gz → 0.4.1.dev23__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/PKG-INFO +1 -1
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/conftest.py +1 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_examples.py +35 -12
- verifiers-0.4.1.dev23/tests/integration/test_rubric_judge.py +40 -0
- verifiers-0.4.1.dev23/tests/integration/test_sampling.py +29 -0
- verifiers-0.4.1.dev23/tests/unit/test_dialects.py +51 -0
- verifiers-0.4.1.dev21/tests/integration/test_rubric_judge.py +0 -31
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/.gitignore +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/LICENSE +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/README.md +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/pyproject.toml +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/agent_user_harness_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/agent_user_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/duet_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/network_policy_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/pyproject.toml +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/skill_codeword_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/skills/project-codeword/SKILL.md +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/grid.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_agent_user.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_agentic_judge.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_compose_scoring.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_limits.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_multi_agent.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_multi_turn.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_multi_turn_tool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_multimodal_tool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_network_policy.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_resume_tool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_shared_tool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_single_turn.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_skills.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_stateful_tool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_user_echo.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/test_user_sim.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/cli/test_replay.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/conftest.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/harnesses/test_core.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/harnesses/test_rlm.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/interception/test_tunnel.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/judges/conftest.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/judges/test_judge.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/judges/test_reference.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/judges/test_rubric.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/runtimes/test_e2b.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/serve/test_client.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/serve/test_delta.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/serve/test_pool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_agent.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_graph.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_semantic.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_task.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/test_trace.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/utils/test_compile.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/utils/test_loaders.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/utils/test_platform.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/unit/utils/test_score.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/acp/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/agent.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/eval/hint.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/scoring.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/select.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/episode.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/errors.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/grading.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/graph.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/rlm/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judge.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/decision.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/apptainer.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/compose.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/container.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/deployment.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/e2b.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/modal.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/runtime.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/strategies.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/semantic.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/delta.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/session.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/state.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/task.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/trace.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/types.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/env.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/eval.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/scope.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/trace_store.py +0 -0
- {verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.4.1.
|
|
3
|
+
Version: 0.4.1.dev23
|
|
4
4
|
Summary: Verifiers: Environments for LLM Reinforcement Learning
|
|
5
5
|
Project-URL: Homepage, https://github.com/primeintellect-ai/verifiers
|
|
6
6
|
Project-URL: Documentation, https://github.com/primeintellect-ai/verifiers
|
|
@@ -27,6 +27,7 @@ CI_MODEL = "internal/deepseek-v4.1-flash"
|
|
|
27
27
|
CI_REASONING_EFFORT = "low"
|
|
28
28
|
# Judge config fields that keep config-plugged judges on the CI model and effort.
|
|
29
29
|
CI_JUDGE = {"model": CI_MODEL, "sampling": {"reasoning_effort": CI_REASONING_EFFORT}}
|
|
30
|
+
CI_DECISION_JUDGE = {"model": "cloudflare/clef"}
|
|
30
31
|
|
|
31
32
|
# Fixture tasksets (echo-v1, echo-agentic-v1, ...) live in tests/integration/fixtures,
|
|
32
33
|
# added to the path via `pythonpath` in pyproject so the loader resolves them by id.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Smoke-eval every example taskset in `environments/` through the `eval` CLI.
|
|
2
2
|
|
|
3
|
-
Each taskset runs with its required harness for
|
|
4
|
-
example taskset fails CI. `compact` is excluded (it's a harness, not a taskset);
|
|
3
|
+
Each taskset runs with its required harness for capped rollouts, so a broken
|
|
4
|
+
example taskset fails CI. Interception exercises all four of its behaviors. `compact` is excluded (it's a harness, not a taskset);
|
|
5
5
|
SWE/container tasksets need a docker/prime runtime and are covered by the agentic tests.
|
|
6
6
|
"""
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ import subprocess
|
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
|
|
13
13
|
import pytest
|
|
14
|
-
from conftest import
|
|
14
|
+
from conftest import CI_DECISION_JUDGE, CI_MODEL, CI_REASONING_EFFORT
|
|
15
15
|
from grid import agent_seats
|
|
16
16
|
|
|
17
17
|
EVAL_TIMEOUT = 600 # 10 minutes for a capped eval (-n 1 -r 1)
|
|
@@ -24,18 +24,27 @@ SKIP_EVAL = {
|
|
|
24
24
|
"proposer_solver": "the CI model's proposer reasons past the token cap",
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
#
|
|
27
|
+
# CI explicitly selects the existing decision judge for grading and interception.
|
|
28
28
|
JUDGE_OVERRIDES = {
|
|
29
29
|
"interception": [
|
|
30
|
+
"--env.taskset.task.judge.id",
|
|
31
|
+
"decision",
|
|
30
32
|
"--env.taskset.task.judge.model",
|
|
31
|
-
|
|
32
|
-
"--env.taskset.task.judge.sampling.reasoning-effort",
|
|
33
|
-
CI_REASONING_EFFORT,
|
|
33
|
+
CI_DECISION_JUDGE["model"],
|
|
34
34
|
],
|
|
35
35
|
"wiki_search": [
|
|
36
36
|
"--env.taskset.task.judges",
|
|
37
|
-
#
|
|
38
|
-
json.dumps(
|
|
37
|
+
# Replace the reference judge with the existing decision judge in CI.
|
|
38
|
+
json.dumps(
|
|
39
|
+
[
|
|
40
|
+
{
|
|
41
|
+
"id": "decision",
|
|
42
|
+
"question_field": "question",
|
|
43
|
+
"answer_field": "answer",
|
|
44
|
+
**CI_DECISION_JUDGE,
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
),
|
|
39
48
|
],
|
|
40
49
|
}
|
|
41
50
|
|
|
@@ -52,8 +61,7 @@ def v1_tasksets() -> list[str]:
|
|
|
52
61
|
|
|
53
62
|
@pytest.mark.parametrize("taskset", v1_tasksets())
|
|
54
63
|
def test_eval(taskset: str, tmp_path: Path):
|
|
55
|
-
"""
|
|
56
|
-
taskset that bundles a harness uses it by default."""
|
|
64
|
+
"""Smoke-eval each example, including all four interception behaviors."""
|
|
57
65
|
if reason := SKIP_EVAL.get(taskset):
|
|
58
66
|
pytest.skip(reason)
|
|
59
67
|
if os.getenv("PRIME_API_KEY"):
|
|
@@ -78,10 +86,11 @@ def test_eval(taskset: str, tmp_path: Path):
|
|
|
78
86
|
for seat in agent_seats(taskset)
|
|
79
87
|
for flag in (f"--env.{seat}.max-turns", "16")
|
|
80
88
|
]
|
|
89
|
+
num_tasks = "4" if taskset == "interception" else "1"
|
|
81
90
|
cmd = [
|
|
82
91
|
"uv", "run", "--no-sync", "vf-eval", taskset,
|
|
83
92
|
*model,
|
|
84
|
-
"-n",
|
|
93
|
+
"-n", num_tasks, "-r", "1", *caps,
|
|
85
94
|
"--sampling.max-tokens", "4096", "--no-rich", "--no-push",
|
|
86
95
|
"--output-dir", str(tmp_path), "--run.dir", "run",
|
|
87
96
|
# Recipe envs run their seats one at a time by default; in parallel, a
|
|
@@ -107,3 +116,17 @@ def test_eval(taskset: str, tmp_path: Path):
|
|
|
107
116
|
for holder in (episode, *episode["traces"])
|
|
108
117
|
for error in holder.get("errors") or []
|
|
109
118
|
]
|
|
119
|
+
if taskset == "interception" and os.getenv("PRIME_API_KEY"):
|
|
120
|
+
assert len(episodes) == 4
|
|
121
|
+
judged = [
|
|
122
|
+
trace
|
|
123
|
+
for episode in episodes
|
|
124
|
+
for trace in episode["traces"]
|
|
125
|
+
if trace["info"].get("judge_calls")
|
|
126
|
+
]
|
|
127
|
+
assert len(judged) == 1
|
|
128
|
+
assert (
|
|
129
|
+
judged[0]["info"]["judge_calls"][0]["request"]["model"]
|
|
130
|
+
== CI_DECISION_JUDGE["model"]
|
|
131
|
+
)
|
|
132
|
+
assert judged[0]["response_rewrites"]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Config-plugged judges score the rollout on top of the task's own reward."""
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
from conftest import CI_DECISION_JUDGE, CI_JUDGE
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@pytest.mark.parametrize("judge_id", ["rubric", "decision"])
|
|
8
|
+
async def test_rubric_judge(run, tmp_path, judge_id):
|
|
9
|
+
"""Keep rubric coverage and exercise Clef through the existing decision judge.
|
|
10
|
+
|
|
11
|
+
Both variants verify config loading, grading, trace records and usage; the
|
|
12
|
+
rubric variant also checks its per-criterion metric.
|
|
13
|
+
"""
|
|
14
|
+
rubric = tmp_path / "rubric.toml"
|
|
15
|
+
rubric.write_text(
|
|
16
|
+
"[[criteria]]\n"
|
|
17
|
+
'name = "always_yes"\n'
|
|
18
|
+
'text = "Always satisfied — answer yes regardless of the response."\n'
|
|
19
|
+
)
|
|
20
|
+
judge = {
|
|
21
|
+
"id": judge_id,
|
|
22
|
+
**(CI_DECISION_JUDGE if judge_id == "decision" else CI_JUDGE),
|
|
23
|
+
}
|
|
24
|
+
if judge_id == "rubric":
|
|
25
|
+
judge["path"] = str(rubric)
|
|
26
|
+
(episode,) = await run(
|
|
27
|
+
"echo-v1",
|
|
28
|
+
harness="null",
|
|
29
|
+
runtime={"type": "subprocess"},
|
|
30
|
+
taskset_overrides={"task": {"judges": [judge]}},
|
|
31
|
+
max_turns=2,
|
|
32
|
+
)
|
|
33
|
+
(trace,) = episode.traces
|
|
34
|
+
assert trace.ok
|
|
35
|
+
assert trace.rewards[judge_id].score > 0 # the judge's verdict landed in the reward
|
|
36
|
+
if judge_id == "rubric":
|
|
37
|
+
assert trace.metrics["rubric/always_yes"] == 1.0
|
|
38
|
+
assert trace.info["judge_calls"] # the call was recorded onto the trace
|
|
39
|
+
assert trace.info["judge_calls"][0]["request"]["model"] == judge["model"]
|
|
40
|
+
assert trace.extra_usage[-1].prompt_tokens > 0
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Sampling overrides reach the provider: the eval's temperature, top_p, and reasoning
|
|
2
|
+
effort replace whatever the harness sends, across every harness. codex speaks Responses,
|
|
3
|
+
claude-code Anthropic messages, and the rest chat completions."""
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
from grid import grid
|
|
7
|
+
|
|
8
|
+
SAMPLING = {"temperature": 0.3, "top_p": 0.9, "reasoning_effort": "high"}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@pytest.mark.parametrize(
|
|
12
|
+
"harness,harness_runtime", grid(runtimes=("prime",)), indirect=True
|
|
13
|
+
)
|
|
14
|
+
async def test_sampling_overrides(run, harness, harness_runtime):
|
|
15
|
+
(episode,) = await run(
|
|
16
|
+
"echo-v1",
|
|
17
|
+
harness=harness,
|
|
18
|
+
runtime=harness_runtime,
|
|
19
|
+
env={"agent": {"sampling": SAMPLING}},
|
|
20
|
+
)
|
|
21
|
+
(trace,) = episode.traces
|
|
22
|
+
assert trace.ok, [error.message for error in trace.errors]
|
|
23
|
+
assert trace.calls
|
|
24
|
+
# Each call records the sampling parsed from the request that went upstream.
|
|
25
|
+
for call in trace.calls:
|
|
26
|
+
assert call.sampling is not None
|
|
27
|
+
assert call.sampling.temperature == SAMPLING["temperature"]
|
|
28
|
+
assert call.sampling.top_p == SAMPLING["top_p"]
|
|
29
|
+
assert call.sampling.reasoning_effort == SAMPLING["reasoning_effort"]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Each dialect imposes the eval's sampling in its native request shape, replacing the
|
|
2
|
+
harness's own values, and parses the same shape back for the trace."""
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from verifiers.v1.dialects import AnthropicDialect, ChatDialect, ResponsesDialect
|
|
7
|
+
from verifiers.v1.types import SamplingConfig
|
|
8
|
+
|
|
9
|
+
SAMPLING = SamplingConfig(temperature=0.3, top_p=0.9, reasoning_effort="low")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@pytest.mark.parametrize(
|
|
13
|
+
"dialect,body,effort",
|
|
14
|
+
[
|
|
15
|
+
(
|
|
16
|
+
ChatDialect(),
|
|
17
|
+
{"temperature": 1.0, "top_p": 1.0, "reasoning_effort": "high"},
|
|
18
|
+
lambda body: body["reasoning_effort"],
|
|
19
|
+
),
|
|
20
|
+
(
|
|
21
|
+
ResponsesDialect(),
|
|
22
|
+
{
|
|
23
|
+
"temperature": 1.0,
|
|
24
|
+
"top_p": 1.0,
|
|
25
|
+
"reasoning": {"effort": "high", "summary": "detailed"},
|
|
26
|
+
},
|
|
27
|
+
lambda body: body["reasoning"]["effort"],
|
|
28
|
+
),
|
|
29
|
+
(
|
|
30
|
+
AnthropicDialect(),
|
|
31
|
+
{"temperature": 1.0, "top_p": 1.0, "output_config": {"effort": "high"}},
|
|
32
|
+
lambda body: body["output_config"]["effort"],
|
|
33
|
+
),
|
|
34
|
+
],
|
|
35
|
+
ids=["chat", "responses", "anthropic"],
|
|
36
|
+
)
|
|
37
|
+
def test_apply_overrides_sampling(dialect, body, effort):
|
|
38
|
+
sent = dialect.apply_overrides(body, "m", SAMPLING)
|
|
39
|
+
assert (sent["temperature"], sent["top_p"], effort(sent)) == (0.3, 0.9, "low")
|
|
40
|
+
parsed = dialect.parse_sampling(sent)
|
|
41
|
+
assert (parsed.temperature, parsed.top_p, parsed.reasoning_effort) == (
|
|
42
|
+
0.3,
|
|
43
|
+
0.9,
|
|
44
|
+
"low",
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def test_apply_overrides_keeps_other_reasoning_fields():
|
|
49
|
+
body = {"reasoning": {"effort": "high", "summary": "detailed"}}
|
|
50
|
+
sent = ResponsesDialect().apply_overrides(body, "m", SAMPLING)
|
|
51
|
+
assert sent["reasoning"] == {"effort": "low", "summary": "detailed"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"""A config-plugged rubric judge scores the rollout on top of the task's own reward."""
|
|
2
|
-
|
|
3
|
-
from conftest import CI_JUDGE
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
async def test_rubric_judge(run, tmp_path):
|
|
7
|
-
"""A config-plugged rubric judge scores the rollout on top of the taskset's own reward.
|
|
8
|
-
|
|
9
|
-
The single criterion is trivially satisfiable ("answer yes"), so any live judge model
|
|
10
|
-
scores it 1.0 — the test asserts the plumbing (config narrowing -> judge call -> reward +
|
|
11
|
-
per-criterion metric on the trace), not judge quality."""
|
|
12
|
-
rubric = tmp_path / "rubric.toml"
|
|
13
|
-
rubric.write_text(
|
|
14
|
-
"[[criteria]]\n"
|
|
15
|
-
'name = "always_yes"\n'
|
|
16
|
-
'text = "Always satisfied — answer yes regardless of the response."\n'
|
|
17
|
-
)
|
|
18
|
-
(episode,) = await run(
|
|
19
|
-
"echo-v1",
|
|
20
|
-
harness="null",
|
|
21
|
-
runtime={"type": "subprocess"},
|
|
22
|
-
taskset_overrides={
|
|
23
|
-
"task": {"judges": [{"id": "rubric", "path": str(rubric), **CI_JUDGE}]}
|
|
24
|
-
},
|
|
25
|
-
max_turns=2,
|
|
26
|
-
)
|
|
27
|
-
(trace,) = episode.traces
|
|
28
|
-
assert trace.ok
|
|
29
|
-
assert trace.rewards["rubric"].score > 0 # the judge's verdict landed in the reward
|
|
30
|
-
assert trace.metrics["rubric/always_yes"] == 1.0
|
|
31
|
-
assert trace.info["judge_calls"] # the call was recorded onto the trace
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/agent_user_harness_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/counter_tool_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_acp_resume_v1.py
RENAMED
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_agentic_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/echo_user_sim_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/network_policy_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/skill_codeword_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.4.1.dev21 → verifiers-0.4.1.dev23}/tests/integration/fixtures/tool_response_image_v1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|