verifiers 0.3.2.dev50__tar.gz → 0.3.2.dev52__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.3.2.dev50 → verifiers-0.3.2.dev52}/PKG-INFO +1 -1
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_trace.py +128 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/acp/__init__.py +5 -6
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/rlm/harness.py +5 -1
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/modal.py +33 -19
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/semantic.py +2 -2
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/trace.py +22 -6
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/.gitignore +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/LICENSE +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/README.md +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/pyproject.toml +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/conftest.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/counter_tool_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/duet_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/echo_tool_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/echo_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/pyproject.toml +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_color_codeword_tasks.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_configs.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_e2e.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_envs.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_graph.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_judges.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_scoring.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/tests/v1/test_taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/cli/commands/init.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/acp/runner.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/agent.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/dashboard/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/dashboard/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/dashboard/eval.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/dashboard/replay.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/dashboard/validate.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/debug.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/eval/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/eval/main.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/eval/resume.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/eval/runner.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/gepa.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/init.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/output.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/replay.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/resolve.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/resume.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/cli/validate.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/clients/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/clients/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/clients/client.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/clients/eval.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/clients/train.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/agent.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/debug.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/eval.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/init.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/replay.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/cli/validate.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/client.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/judge.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/retries.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/runtime.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/serve.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/task.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/configs/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/dialects/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/dialects/anthropic.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/dialects/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/dialects/chat.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/dialects/responses.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/agentic_judge/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/best_of_n/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/single_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/single_agent/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/user_sim/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/user_sim/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/episode.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/errors.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/adapter.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/config.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/dataset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/reflection.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/gepa/runner.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/graph.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/bash/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/bash/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/program.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/codex/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/codex/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/node.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/null/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/null/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/pi/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/pi/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/pool/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/pool/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/compaction.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/core.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/install.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/launch.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/utils/mcp.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/pool.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/server.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tool.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tunnel/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tunnel/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tunnel/custom.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tunnel/prime.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judge.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judges/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judges/reference.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judges/reference.txt +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judges/rubric.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/judges/rubric.txt +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/mcp/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/mcp/launch.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/mcp/server.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/mcp/toolset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/rollout.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/base.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/docker/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/docker/egress.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/limiters.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/prime.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/runtimes/subprocess.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/client.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/encoding.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/pool.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/server.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/serve/types.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/session.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/state.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/task.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/harbor/env.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/lean/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/lean/scoring.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/lean/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/types.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/__init__.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/aio.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/artifacts.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/compile.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/decorators.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/format.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/generic.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/git.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/image.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/interrupt.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/loaders.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/logging.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/memory.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/paths.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/platform.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/prime.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/retries.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/score.py +0 -0
- {verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/utils/version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: verifiers
|
|
3
|
-
Version: 0.3.2.
|
|
3
|
+
Version: 0.3.2.dev52
|
|
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
|
|
@@ -434,6 +434,134 @@ def test_acp_semantic_edge_metadata_is_optional():
|
|
|
434
434
|
assert all(not node.semantic_parents for node in trace.nodes)
|
|
435
435
|
|
|
436
436
|
|
|
437
|
+
def test_acp_derives_compaction_attempt_branch_trainability():
|
|
438
|
+
trace = vf.Trace(
|
|
439
|
+
agent=vf.AgentInfo(config=vf.AgentConfig()),
|
|
440
|
+
task=vf.TraceTask(type="Task", data=vf.TaskData(idx=0, prompt="q")),
|
|
441
|
+
nodes=[
|
|
442
|
+
MessageNode(parent=None, message=UserMessage(content="work")),
|
|
443
|
+
MessageNode(
|
|
444
|
+
parent=0,
|
|
445
|
+
message=AssistantMessage(content="working"),
|
|
446
|
+
sampled=True,
|
|
447
|
+
token_ids=[1],
|
|
448
|
+
mask=[True],
|
|
449
|
+
logprobs=[-0.1],
|
|
450
|
+
),
|
|
451
|
+
MessageNode(parent=1, message=UserMessage(content="summarize")),
|
|
452
|
+
MessageNode(
|
|
453
|
+
parent=2,
|
|
454
|
+
message=AssistantMessage(content="bad tool call"),
|
|
455
|
+
sampled=True,
|
|
456
|
+
token_ids=[2, 3],
|
|
457
|
+
mask=[True, True],
|
|
458
|
+
logprobs=[-0.2, -0.3],
|
|
459
|
+
),
|
|
460
|
+
MessageNode(
|
|
461
|
+
parent=2,
|
|
462
|
+
message=AssistantMessage(content="accepted summary"),
|
|
463
|
+
sampled=True,
|
|
464
|
+
token_ids=[4, 5],
|
|
465
|
+
mask=[True, True],
|
|
466
|
+
logprobs=[-0.4, -0.5],
|
|
467
|
+
),
|
|
468
|
+
MessageNode(parent=0, message=UserMessage(content="compacted context")),
|
|
469
|
+
MessageNode(
|
|
470
|
+
parent=5,
|
|
471
|
+
message=AssistantMessage(content="answer"),
|
|
472
|
+
sampled=True,
|
|
473
|
+
token_ids=[6],
|
|
474
|
+
mask=[True],
|
|
475
|
+
logprobs=[-0.6],
|
|
476
|
+
),
|
|
477
|
+
],
|
|
478
|
+
calls=[
|
|
479
|
+
vf.ModelCall(node=1, acp=vf.ACPInfo(request_id="work")),
|
|
480
|
+
vf.ModelCall(node=3, acp=vf.ACPInfo(request_id="rejected")),
|
|
481
|
+
vf.ModelCall(node=4, acp=vf.ACPInfo(request_id="accepted")),
|
|
482
|
+
vf.ModelCall(node=6, acp=vf.ACPInfo(request_id="resumed")),
|
|
483
|
+
],
|
|
484
|
+
)
|
|
485
|
+
harness = RLMHarness(RLMHarnessConfig(id="rlm"))
|
|
486
|
+
harness._consume_protocol_metadata(
|
|
487
|
+
trace,
|
|
488
|
+
{
|
|
489
|
+
ACP_SEMANTIC_EDGES_METADATA_KEY: {
|
|
490
|
+
"edges": [
|
|
491
|
+
{
|
|
492
|
+
"source_request_id": "work",
|
|
493
|
+
"target_request_id": "rejected",
|
|
494
|
+
"type": "compaction_attempt",
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"source_request_id": "work",
|
|
498
|
+
"target_request_id": "accepted",
|
|
499
|
+
"type": "compaction_attempt",
|
|
500
|
+
},
|
|
501
|
+
]
|
|
502
|
+
},
|
|
503
|
+
},
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
attempts = {branch.nodes[-1].message.content: branch for branch in trace.branches}
|
|
507
|
+
assert attempts["bad tool call"].trainable is False
|
|
508
|
+
assert attempts["accepted summary"].trainable is False
|
|
509
|
+
|
|
510
|
+
harness._consume_protocol_metadata(
|
|
511
|
+
trace,
|
|
512
|
+
{
|
|
513
|
+
ACP_SEMANTIC_EDGES_METADATA_KEY: {
|
|
514
|
+
"edges": [
|
|
515
|
+
{
|
|
516
|
+
"source_request_id": "work",
|
|
517
|
+
"target_request_id": "rejected",
|
|
518
|
+
"type": "compaction_attempt",
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
"source_request_id": "work",
|
|
522
|
+
"target_request_id": "accepted",
|
|
523
|
+
"type": "compaction_attempt",
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
"source_request_id": "accepted",
|
|
527
|
+
"target_request_id": "resumed",
|
|
528
|
+
"type": "compaction",
|
|
529
|
+
},
|
|
530
|
+
]
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
)
|
|
534
|
+
|
|
535
|
+
assert trace.nodes[3].sampled is True
|
|
536
|
+
assert trace.nodes[3].mask == [True, True]
|
|
537
|
+
assert trace.nodes[4].mask == [True, True]
|
|
538
|
+
assert trace.nodes[6].mask == [True]
|
|
539
|
+
assert trace.nodes[3].semantic_parents == [
|
|
540
|
+
vf.ParentLink(node=1, type="compaction_attempt")
|
|
541
|
+
]
|
|
542
|
+
assert trace.nodes[4].semantic_parents == [
|
|
543
|
+
vf.ParentLink(node=1, type="compaction_attempt")
|
|
544
|
+
]
|
|
545
|
+
assert trace.nodes[6].semantic_parents == [vf.ParentLink(node=4, type="compaction")]
|
|
546
|
+
assert trace.num_branches == 3
|
|
547
|
+
branches = {branch.nodes[-1].message.content: branch for branch in trace.branches}
|
|
548
|
+
assert branches["bad tool call"].trainable is False
|
|
549
|
+
assert branches["accepted summary"].trainable is True
|
|
550
|
+
assert branches["answer"].trainable is True
|
|
551
|
+
assert branches["bad tool call"].nodes[-2] is trace.nodes[2]
|
|
552
|
+
assert branches["accepted summary"].nodes[-2] is trace.nodes[2]
|
|
553
|
+
|
|
554
|
+
restored = vf.WireTrace.model_validate_json(trace.model_dump_json())
|
|
555
|
+
assert restored.nodes[3].sampled is True
|
|
556
|
+
assert restored.nodes[3].mask == [True, True]
|
|
557
|
+
assert restored.nodes[4].mask == [True, True]
|
|
558
|
+
restored_branches = {
|
|
559
|
+
branch.nodes[-1].message.content: branch for branch in restored.branches
|
|
560
|
+
}
|
|
561
|
+
assert restored_branches["bad tool call"].trainable is False
|
|
562
|
+
assert restored_branches["accepted summary"].trainable is True
|
|
563
|
+
|
|
564
|
+
|
|
437
565
|
def test_semantic_edge_set_rejects_duplicate_self_and_cyclic_edges():
|
|
438
566
|
edge_set = _semantic_edge_set().model_dump(mode="json")
|
|
439
567
|
edge_set["edges"].append(edge_set["edges"][0])
|
|
@@ -78,12 +78,11 @@ class ACPHarness(Harness[ConfigT]):
|
|
|
78
78
|
self, trace: Trace, response_metadata: dict[str, Any]
|
|
79
79
|
) -> None:
|
|
80
80
|
"""Attach optional protocol extensions understood by every ACP harness."""
|
|
81
|
-
if ACP_SEMANTIC_EDGES_METADATA_KEY
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
trace.add_semantic_edges(edge_set)
|
|
81
|
+
if ACP_SEMANTIC_EDGES_METADATA_KEY in response_metadata:
|
|
82
|
+
edge_set = SemanticEdgeSet.model_validate(
|
|
83
|
+
response_metadata[ACP_SEMANTIC_EDGES_METADATA_KEY]
|
|
84
|
+
)
|
|
85
|
+
trace.add_semantic_edges(edge_set)
|
|
87
86
|
|
|
88
87
|
@abstractmethod
|
|
89
88
|
async def prepare_acp(
|
|
@@ -51,10 +51,13 @@ class CompactionConfig(BaseConfig):
|
|
|
51
51
|
max_compactions: PositiveInt | None = None
|
|
52
52
|
"""Compactions per session before the engine stops compacting; `None` =
|
|
53
53
|
nano-rlm's default."""
|
|
54
|
+
max_attempts: PositiveInt | None = None
|
|
55
|
+
"""Summary-generation attempts within one compaction cycle; `None` =
|
|
56
|
+
nano-rlm's default (5)."""
|
|
54
57
|
|
|
55
58
|
|
|
56
59
|
class RLMHarnessConfig(HarnessConfig):
|
|
57
|
-
version: str = Field(default="
|
|
60
|
+
version: str = Field(default="e384006", min_length=1)
|
|
58
61
|
"""Git ref (branch, tag, or commit) of nano-rlm to install. Must know every
|
|
59
62
|
field this harness puts on the wire, i.e. be at least the default ref."""
|
|
60
63
|
max_depth: NonNegativeInt | None = None
|
|
@@ -170,6 +173,7 @@ class RLMHarness(ACPHarness[RLMHarnessConfig]):
|
|
|
170
173
|
policy_knobs["compaction"] = True
|
|
171
174
|
policy_knobs["summarize_at_tokens"] = compaction.summarize_at_tokens
|
|
172
175
|
policy_knobs["max_compactions"] = compaction.max_compactions
|
|
176
|
+
policy_knobs["max_compaction_attempts"] = compaction.max_attempts
|
|
173
177
|
appends = [
|
|
174
178
|
text
|
|
175
179
|
for text in (system_prompt, self.config.append_to_system_prompt)
|
|
@@ -27,6 +27,7 @@ from verifiers.v1.runtimes.base import (
|
|
|
27
27
|
RuntimeProcess,
|
|
28
28
|
)
|
|
29
29
|
from verifiers.v1.runtimes.limiters import creation_limiter
|
|
30
|
+
from verifiers.v1.utils.aio import run_shielded
|
|
30
31
|
|
|
31
32
|
logger = logging.getLogger(__name__)
|
|
32
33
|
|
|
@@ -128,25 +129,7 @@ class ModalRuntime(Runtime):
|
|
|
128
129
|
creation_limiter(self.config.creates_per_sec, "modal-sandbox")
|
|
129
130
|
or contextlib.nullcontext()
|
|
130
131
|
):
|
|
131
|
-
|
|
132
|
-
"sleep",
|
|
133
|
-
"infinity", # keep-alive entrypoint; the harness runs via `exec`
|
|
134
|
-
app=app,
|
|
135
|
-
name=self.name,
|
|
136
|
-
# Clear the image's ENTRYPOINT so `sleep infinity` runs as the command
|
|
137
|
-
# rather than as args to it — otherwise an image with its own entrypoint
|
|
138
|
-
# (e.g. SWE task images) never starts the keep-alive and the sandbox dies.
|
|
139
|
-
image=modal.Image.from_registry(self.config.image).entrypoint([]),
|
|
140
|
-
workdir=self.config.workdir,
|
|
141
|
-
env=self.env,
|
|
142
|
-
cpu=self.config.cpu,
|
|
143
|
-
memory=int(self.config.memory * 1024), # Modal memory is MB
|
|
144
|
-
gpu=self.config.gpu,
|
|
145
|
-
region=self.config.region,
|
|
146
|
-
block_network=not self.config.network_access,
|
|
147
|
-
timeout=24 * 60 * 60, # Maximum lifetime of any sandbox.
|
|
148
|
-
encrypted_ports=[SERVICE_PORT],
|
|
149
|
-
)
|
|
132
|
+
await run_shielded(self._create_sandbox(app))
|
|
150
133
|
self.info.id = self._sandbox.object_id
|
|
151
134
|
logger.info(
|
|
152
135
|
"modal: sandbox %s up (image=%s)", self.info.id, self.config.image
|
|
@@ -157,6 +140,37 @@ class ModalRuntime(Runtime):
|
|
|
157
140
|
) as e: # provisioning failure is one rollout's problem, not the eval's
|
|
158
141
|
raise SandboxError(f"modal sandbox provisioning failed: {e}") from e
|
|
159
142
|
|
|
143
|
+
async def _create_sandbox(self, app) -> None:
|
|
144
|
+
"""Create the sandbox and take ownership of the handle, as one shielded step.
|
|
145
|
+
|
|
146
|
+
Modal schedules the sandbox before `Sandbox.create` returns, so a cancellation
|
|
147
|
+
landing between those two points leaves a sandbox that boots and bills with
|
|
148
|
+
`_sandbox` still unset — invisible to both `teardown` and the atexit backstop, and
|
|
149
|
+
alive until its 24h maximum lifetime. Assigning inside the coroutine that
|
|
150
|
+
`run_shielded` owns keeps the cancellation pending until the handle is ours.
|
|
151
|
+
"""
|
|
152
|
+
import modal
|
|
153
|
+
|
|
154
|
+
self._sandbox = await modal.Sandbox.create.aio(
|
|
155
|
+
"sleep",
|
|
156
|
+
"infinity", # keep-alive entrypoint; the harness runs via `exec`
|
|
157
|
+
app=app,
|
|
158
|
+
name=self.name,
|
|
159
|
+
# Clear the image's ENTRYPOINT so `sleep infinity` runs as the command rather
|
|
160
|
+
# than as args to it — otherwise an image with its own entrypoint (e.g. SWE
|
|
161
|
+
# task images) never starts the keep-alive and the sandbox dies.
|
|
162
|
+
image=modal.Image.from_registry(self.config.image).entrypoint([]),
|
|
163
|
+
workdir=self.config.workdir,
|
|
164
|
+
env=self.env,
|
|
165
|
+
cpu=self.config.cpu,
|
|
166
|
+
memory=int(self.config.memory * 1024), # Modal memory is MB
|
|
167
|
+
gpu=self.config.gpu,
|
|
168
|
+
region=self.config.region,
|
|
169
|
+
block_network=not self.config.network_access,
|
|
170
|
+
timeout=24 * 60 * 60, # Maximum lifetime of any sandbox.
|
|
171
|
+
encrypted_ports=[SERVICE_PORT],
|
|
172
|
+
)
|
|
173
|
+
|
|
160
174
|
async def expose(self, port: int) -> str | None:
|
|
161
175
|
# Publish a server hosted IN the sandbox: Modal forwards `port` (named via
|
|
162
176
|
# `encrypted_ports` at creation) to a public URL, read back from `sandbox.tunnels()`.
|
|
@@ -63,8 +63,8 @@ class SemanticEdgeSet(BaseModel):
|
|
|
63
63
|
"""A harness-published set of semantic edges over logical request IDs.
|
|
64
64
|
|
|
65
65
|
Edge labels are intentionally extensible. Initial harnesses use ``continuation``,
|
|
66
|
-
``compaction``, ``subagent_call``, and ``subagent_return``;
|
|
67
|
-
unknown labels.
|
|
66
|
+
``compaction_attempt``, ``compaction``, ``subagent_call``, and ``subagent_return``;
|
|
67
|
+
consumers must preserve unknown labels.
|
|
68
68
|
"""
|
|
69
69
|
|
|
70
70
|
model_config = ConfigDict(extra="forbid", strict=True)
|
|
@@ -20,11 +20,7 @@ from verifiers.v1.configs.agent import AgentConfig, WireAgentConfig
|
|
|
20
20
|
from verifiers.v1.errors import ProviderError
|
|
21
21
|
from verifiers.v1.graph import RECORD_FLOAT_DECIMALS, MessageNode
|
|
22
22
|
from verifiers.v1.runtimes import RuntimeInfo
|
|
23
|
-
from verifiers.v1.semantic import
|
|
24
|
-
ACPInfo,
|
|
25
|
-
ParentLink,
|
|
26
|
-
SemanticEdgeSet,
|
|
27
|
-
)
|
|
23
|
+
from verifiers.v1.semantic import ACPInfo, ParentLink, SemanticEdgeSet
|
|
28
24
|
from verifiers.v1.state import State, StateT
|
|
29
25
|
from verifiers.v1.task import DataT, WireTaskData
|
|
30
26
|
from verifiers.v1.types import (
|
|
@@ -201,6 +197,8 @@ class Branch(BaseModel):
|
|
|
201
197
|
index: int
|
|
202
198
|
nodes: list[MessageNode]
|
|
203
199
|
calls: list[ModelCall] = Field(default_factory=list)
|
|
200
|
+
trainable: bool = True
|
|
201
|
+
"""Whether this physical path contributes a training sample."""
|
|
204
202
|
mm_token_type_id_map: dict[int, int] = Field(default_factory=dict)
|
|
205
203
|
"""The trace's `mm_token_type_id_map`, carried so `mm_token_type_ids` is self-contained."""
|
|
206
204
|
|
|
@@ -492,8 +490,18 @@ class Trace(BaseModel, Generic[DataT, StateT, AgentConfigT]):
|
|
|
492
490
|
|
|
493
491
|
@property
|
|
494
492
|
def branches(self) -> list[Branch]:
|
|
495
|
-
"""One root-to-leaf
|
|
493
|
+
"""One root-to-leaf view per graph leaf, with no duplicated node storage.
|
|
494
|
+
|
|
495
|
+
A compaction attempt is a dangling physical leaf. It is trainable only when
|
|
496
|
+
the final semantic graph shows that the harness resumed from it.
|
|
497
|
+
"""
|
|
496
498
|
by_node = {c.node: c for c in self.calls if c.node is not None}
|
|
499
|
+
accepted_compaction_attempts = {
|
|
500
|
+
link.node
|
|
501
|
+
for node in self.nodes
|
|
502
|
+
for link in node.semantic_parents
|
|
503
|
+
if link.type == "compaction"
|
|
504
|
+
}
|
|
497
505
|
branches: list[Branch] = []
|
|
498
506
|
for i, leaf in enumerate(graph.leaves(self)):
|
|
499
507
|
path: list[int] = []
|
|
@@ -502,11 +510,19 @@ class Trace(BaseModel, Generic[DataT, StateT, AgentConfigT]):
|
|
|
502
510
|
path.append(nid)
|
|
503
511
|
nid = self.nodes[nid].parent
|
|
504
512
|
path.reverse()
|
|
513
|
+
is_compaction_attempt = any(
|
|
514
|
+
link.type == "compaction_attempt"
|
|
515
|
+
for link in self.nodes[leaf].semantic_parents
|
|
516
|
+
)
|
|
505
517
|
branches.append(
|
|
506
518
|
Branch(
|
|
507
519
|
index=i,
|
|
508
520
|
nodes=[self.nodes[n] for n in path],
|
|
509
521
|
calls=[by_node[n] for n in path if n in by_node],
|
|
522
|
+
trainable=(
|
|
523
|
+
not is_compaction_attempt
|
|
524
|
+
or leaf in accepted_compaction_attempts
|
|
525
|
+
),
|
|
510
526
|
mm_token_type_id_map=self.mm_token_type_id_map,
|
|
511
527
|
)
|
|
512
528
|
)
|
|
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
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/isolated_verifier/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/envs/shared_agentic_judge/__init__.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
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/browser_use/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/claude_code/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/claude_code/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/hermes_agent/program.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/kimi_code/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/mini_swe_agent/program.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
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/prime_agent/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/prime_agent/harness.py
RENAMED
|
File without changes
|
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/__init__.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/harness.py
RENAMED
|
File without changes
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/harnesses/terminus_2/program.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
|
{verifiers-0.3.2.dev50 → verifiers-0.3.2.dev52}/verifiers/v1/interception/tunnel/__init__.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
|