verifiers 0.3.2.dev159__tar.gz → 0.3.2.dev160__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.
Files changed (221) hide show
  1. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/validate.py +66 -14
  3. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/validate.py +12 -6
  4. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/.gitignore +0 -0
  5. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/LICENSE +0 -0
  6. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/README.md +0 -0
  7. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/pyproject.toml +0 -0
  8. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/conftest.py +0 -0
  9. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  10. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/duet_v1.py +0 -0
  11. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  12. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  13. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  14. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  15. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/echo_v1.py +0 -0
  16. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/pyproject.toml +0 -0
  17. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  18. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_color_codeword_tasks.py +0 -0
  19. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_configs.py +0 -0
  20. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_e2e.py +0 -0
  21. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_envs.py +0 -0
  22. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_graph.py +0 -0
  23. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_judges.py +0 -0
  24. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_platform_run.py +0 -0
  25. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_scoring.py +0 -0
  26. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_serve_delta.py +0 -0
  27. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_taskset.py +0 -0
  28. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/tests/v1/test_trace.py +0 -0
  29. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/__init__.py +0 -0
  30. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/__init__.py +0 -0
  31. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/acp/__init__.py +0 -0
  32. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/acp/runner.py +0 -0
  33. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/agent.py +0 -0
  34. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/__init__.py +0 -0
  35. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  36. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/dashboard/base.py +0 -0
  37. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/dashboard/eval.py +0 -0
  38. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/dashboard/replay.py +0 -0
  39. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/dashboard/validate.py +0 -0
  40. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/debug.py +0 -0
  41. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/eval/__init__.py +0 -0
  42. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/eval/hint.py +0 -0
  43. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/eval/main.py +0 -0
  44. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/eval/resume.py +0 -0
  45. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/eval/runner.py +0 -0
  46. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/gepa.py +0 -0
  47. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/init.py +0 -0
  48. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/output.py +0 -0
  49. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/replay.py +0 -0
  50. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/resolve.py +0 -0
  51. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/cli/resume.py +0 -0
  52. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/clients/__init__.py +0 -0
  53. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/clients/base.py +0 -0
  54. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/clients/client.py +0 -0
  55. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/clients/eval.py +0 -0
  56. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/clients/train.py +0 -0
  57. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/__init__.py +0 -0
  58. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/agent.py +0 -0
  59. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/__init__.py +0 -0
  60. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/debug.py +0 -0
  61. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/env.py +0 -0
  62. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/eval.py +0 -0
  63. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/init.py +0 -0
  64. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/cli/replay.py +0 -0
  65. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/client.py +0 -0
  66. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/env.py +0 -0
  67. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/harness.py +0 -0
  68. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/judge.py +0 -0
  69. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/retries.py +0 -0
  70. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/runtime.py +0 -0
  71. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/select.py +0 -0
  72. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/serve.py +0 -0
  73. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/task.py +0 -0
  74. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/configs/taskset.py +0 -0
  75. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/dialects/__init__.py +0 -0
  76. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/dialects/anthropic.py +0 -0
  77. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/dialects/base.py +0 -0
  78. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/dialects/chat.py +0 -0
  79. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/dialects/responses.py +0 -0
  80. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/env.py +0 -0
  81. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/__init__.py +0 -0
  82. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  83. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  84. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  85. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/best_of_n/env.py +0 -0
  86. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  87. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  88. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  89. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  90. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/single_agent/env.py +0 -0
  91. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  92. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/envs/user_sim/env.py +0 -0
  93. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/episode.py +0 -0
  94. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/errors.py +0 -0
  95. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/__init__.py +0 -0
  96. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/adapter.py +0 -0
  97. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/config.py +0 -0
  98. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/dataset.py +0 -0
  99. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/reflection.py +0 -0
  100. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/gepa/runner.py +0 -0
  101. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/graph.py +0 -0
  102. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harness.py +0 -0
  103. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/__init__.py +0 -0
  104. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  105. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/bash/harness.py +0 -0
  106. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  107. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  108. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  109. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  110. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  111. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  112. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
  113. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/codex/harness.py +0 -0
  114. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  115. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  116. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  117. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  118. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  119. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  120. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  121. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  122. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/node.py +0 -0
  123. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/null/__init__.py +0 -0
  124. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/null/harness.py +0 -0
  125. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  126. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  127. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  128. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
  129. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/pi/harness.py +0 -0
  130. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  131. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  132. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  133. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  134. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  135. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  136. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  137. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  138. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  139. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/core.py +0 -0
  140. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/install.py +0 -0
  141. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/launch.py +0 -0
  142. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  143. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/__init__.py +0 -0
  144. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/base.py +0 -0
  145. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/pool.py +0 -0
  146. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/server.py +0 -0
  147. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  148. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/tunnel/base.py +0 -0
  149. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/tunnel/custom.py +0 -0
  150. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/interception/tunnel/prime.py +0 -0
  151. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judge.py +0 -0
  152. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judges/__init__.py +0 -0
  153. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judges/reference.py +0 -0
  154. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judges/reference.txt +0 -0
  155. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judges/rubric.py +0 -0
  156. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/judges/rubric.txt +0 -0
  157. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/mcp/__init__.py +0 -0
  158. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/mcp/launch.py +0 -0
  159. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/mcp/server.py +0 -0
  160. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/mcp/toolset.py +0 -0
  161. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/rollout.py +0 -0
  162. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/__init__.py +0 -0
  163. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/apptainer.py +0 -0
  164. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/base.py +0 -0
  165. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/container.py +0 -0
  166. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  167. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/docker/egress.py +0 -0
  168. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/limiters.py +0 -0
  169. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/modal.py +0 -0
  170. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/prime.py +0 -0
  171. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/runtimes/subprocess.py +0 -0
  172. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/semantic.py +0 -0
  173. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/__init__.py +0 -0
  174. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/client.py +0 -0
  175. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/delta.py +0 -0
  176. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/encoding.py +0 -0
  177. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/pool.py +0 -0
  178. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/server.py +0 -0
  179. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/serve/types.py +0 -0
  180. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/session.py +0 -0
  181. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/state.py +0 -0
  182. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/task.py +0 -0
  183. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/taskset.py +0 -0
  184. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/__init__.py +0 -0
  185. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  186. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/harbor/compose.py +0 -0
  187. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/harbor/env.py +0 -0
  188. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  189. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  190. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  191. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  192. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  193. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  194. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  195. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  196. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  197. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  198. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  199. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/trace.py +0 -0
  200. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/types.py +0 -0
  201. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/__init__.py +0 -0
  202. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/aio.py +0 -0
  203. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/artifacts.py +0 -0
  204. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/compile.py +0 -0
  205. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/decorators.py +0 -0
  206. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/format.py +0 -0
  207. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/generic.py +0 -0
  208. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/git.py +0 -0
  209. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/image.py +0 -0
  210. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/interrupt.py +0 -0
  211. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/loaders.py +0 -0
  212. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/logging.py +0 -0
  213. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/memory.py +0 -0
  214. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/paths.py +0 -0
  215. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/platform.py +0 -0
  216. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/prime.py +0 -0
  217. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/retries.py +0 -0
  218. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/scope.py +0 -0
  219. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/score.py +0 -0
  220. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/verifiers/v1/utils/trace_store.py +0 -0
  221. {verifiers-0.3.2.dev159 → verifiers-0.3.2.dev160}/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.dev159
3
+ Version: 0.3.2.dev160
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
@@ -30,6 +30,7 @@ from verifiers.v1.cli.resolve import (
30
30
  )
31
31
  from verifiers.v1.cli.resume import distribute
32
32
  from verifiers.v1.configs.cli.validate import ValidateConfig
33
+ from verifiers.v1.errors import TaskError, boundary
33
34
  from verifiers.v1.runtimes import make_runtime
34
35
  from verifiers.v1.state import state_cls
35
36
  from verifiers.v1.task import Task
@@ -47,14 +48,17 @@ SUMMARY_FILE = "summary.json"
47
48
  LOG_FILE = "logs/validate.log"
48
49
  FINAL_VALUES = {"valid": True, "invalid": False, "unchecked": None}
49
50
  REASONS = ("valid", "invalid", "unchecked", "error", "timeout")
51
+ SOLVED = 1.0
52
+ """An untouched task whose reward reaches this already passes: its noop check is
53
+ invalid. Lower (partial) rewards are recorded but pass the check."""
50
54
 
51
55
  ResultRow = dict[str, Any]
52
56
 
53
57
  USAGE = (
54
- "usage: uv run vf-validate [<taskset-id>] [--only-setup | --only-gold] "
58
+ "usage: uv run vf-validate [<taskset-id>] [--only-setup | --only-gold | --only-noop] "
55
59
  "[-o <output-dir>] [--runtime.type subprocess] [options] [@ file.toml]\n"
56
60
  " uv run vf-validate @ <run-dir>/configs/validate.json --resume (re-run missing/errored/timed-out tasks)\n"
57
- " runs persisted gold and setup-only checks per task (no model)"
61
+ " runs persisted gold and noop (untouched scoring) checks per task (no agent)"
58
62
  )
59
63
 
60
64
 
@@ -70,6 +74,8 @@ def validation_mode(config: ValidateConfig) -> str:
70
74
  return "gold"
71
75
  if config.only_setup:
72
76
  return "setup"
77
+ if config.only_noop:
78
+ return "noop"
73
79
  return "all"
74
80
 
75
81
 
@@ -98,11 +104,14 @@ def _is_final(row: object, key: str, mode: str) -> bool:
98
104
  if not isinstance(row, dict):
99
105
  return False
100
106
  reason = row.get("reason")
107
+ # A noop check records its untouched scoring; a row without it never scored.
108
+ noop = row.get("noop") if mode == "all" else row
101
109
  return (
102
110
  row.get("task_key") == key
103
111
  and row.get("mode") == mode
104
112
  and reason in FINAL_VALUES
105
113
  and row.get("valid") is FINAL_VALUES[reason]
114
+ and (mode in ("gold", "setup") or isinstance(noop, dict) and "rewards" in noop)
106
115
  )
107
116
 
108
117
 
@@ -173,7 +182,7 @@ def summarize(rows: Sequence[ResultRow], total: int, mode: str) -> dict[str, Any
173
182
  }
174
183
  if mode == "all":
175
184
  checks: dict[str, dict[str, int]] = {}
176
- for check in ("gold", "setup"):
185
+ for check in ("gold", "noop"):
177
186
  check_counts = Counter(
178
187
  row.get(check, {}).get("reason")
179
188
  for row in rows
@@ -225,6 +234,36 @@ def _row(
225
234
  }
226
235
 
227
236
 
237
+ async def _setup_only(task: Task, trace: Trace, runtime) -> bool:
238
+ """Setup completing is the whole check."""
239
+ return True
240
+
241
+
242
+ async def _gold(task: Task, trace: Trace, runtime) -> bool | None:
243
+ """Apply and check the reference answer."""
244
+ return await task.validate(runtime)
245
+
246
+
247
+ async def _score_untouched(task: Task, trace: Trace, runtime) -> bool | None:
248
+ """Finalize and score the freshly set-up task exactly as a rollout would, with no
249
+ agent turn in between. Valid iff it does not already pass; `None` when the task
250
+ declares no reward to check."""
251
+ async with (
252
+ asyncio.timeout(task.data.timeout.finalize),
253
+ boundary(TaskError, "task finalize"),
254
+ ):
255
+ await invoke(task.finalize, {"trace": trace, "runtime": runtime})
256
+ async with asyncio.timeout(task.data.timeout.scoring):
257
+ await task.score(trace, runtime)
258
+ if not trace.rewards:
259
+ return None
260
+ return trace.reward < SOLVED
261
+
262
+
263
+ CHECKS = {"setup": _setup_only, "gold": _gold, "noop": _score_untouched}
264
+ """What each check runs after `Task.setup`, in the check's own fresh runtime."""
265
+
266
+
228
267
  async def _run_check(task: Task, config: ValidateConfig, mode: str) -> ResultRow:
229
268
  start = time.time()
230
269
  runtime = make_runtime(
@@ -238,6 +277,7 @@ async def _run_check(task: Task, config: ValidateConfig, mode: str) -> ResultRow
238
277
  )
239
278
  valid: bool | None = False
240
279
  exc = None
280
+ trace: Trace | None = None
241
281
  try:
242
282
  runtime.env = dict(task.runtime_env())
243
283
  trace = Trace(
@@ -257,10 +297,8 @@ async def _run_check(task: Task, config: ValidateConfig, mode: str) -> ResultRow
257
297
  invoke(task.setup, {"trace": trace, "runtime": runtime}),
258
298
  setup_timeout,
259
299
  )
260
- valid = (
261
- await asyncio.wait_for(task.validate(runtime), config.timeout.total)
262
- if mode == "gold"
263
- else True
300
+ valid = await asyncio.wait_for(
301
+ CHECKS[mode](task, trace, runtime), config.timeout.total
264
302
  )
265
303
  except Exception as e: # noqa: BLE001 - validation reports plugin failures per task
266
304
  exc = e
@@ -271,7 +309,21 @@ async def _run_check(task: Task, config: ValidateConfig, mode: str) -> ResultRow
271
309
  logger.warning(
272
310
  "runtime teardown failed (task %s)", task.data.idx, exc_info=True
273
311
  )
274
- return _row(task, mode, valid, exc, start)
312
+ row = _row(task, mode, valid, exc, start)
313
+ if mode == "noop":
314
+ rewards = trace.rewards if trace is not None else {}
315
+ row["reward"] = trace.reward if exc is None and rewards else None
316
+ row["rewards"] = {
317
+ name: reward.score if reward is not None else None
318
+ for name, reward in rewards.items()
319
+ }
320
+ return row
321
+
322
+
323
+ def _describe(row: ResultRow) -> str | None:
324
+ if row["mode"] == "noop" and row["reason"] == "invalid":
325
+ return f"passes untouched (reward={row['reward']:g})"
326
+ return row["error"]
275
327
 
276
328
 
277
329
  def _all_reason(rows: list[ResultRow]) -> str:
@@ -289,7 +341,7 @@ def _all_reason(rows: list[ResultRow]) -> str:
289
341
 
290
342
  def _all_error(rows: list[ResultRow]) -> tuple[str | None, str | None]:
291
343
  failed = [row for row in rows if row["reason"] not in ("valid", "unchecked")]
292
- parts = [f"{row['mode']}: {row['error'] or row['reason']}" for row in failed]
344
+ parts = [f"{row['mode']}: {_describe(row) or row['reason']}" for row in failed]
293
345
  error_types = {str(row["error_type"]) for row in failed if row["error_type"]}
294
346
  return ("; ".join(parts) or None, "+".join(sorted(error_types)) or None)
295
347
 
@@ -297,8 +349,8 @@ def _all_error(rows: list[ResultRow]) -> tuple[str | None, str | None]:
297
349
  async def _run_all(task: Task, config: ValidateConfig) -> ResultRow:
298
350
  start = time.time()
299
351
  gold = await _run_check(task, config, "gold")
300
- setup = await _run_check(task, config, "setup")
301
- rows = [gold, setup]
352
+ noop = await _run_check(task, config, "noop")
353
+ rows = [gold, noop]
302
354
  reason = _all_reason(rows)
303
355
  error, error_type = _all_error(rows)
304
356
  return {
@@ -311,7 +363,7 @@ async def _run_all(task: Task, config: ValidateConfig) -> ResultRow:
311
363
  "error": error,
312
364
  "error_type": error_type,
313
365
  "gold": gold,
314
- "setup": setup,
366
+ "noop": noop,
315
367
  }
316
368
 
317
369
 
@@ -338,7 +390,7 @@ async def run_validate(config: ValidateConfig) -> list[dict]:
338
390
  "taskset needs a container runtime to validate - pass --runtime.type docker (or prime)"
339
391
  )
340
392
  mode = validation_mode(config)
341
- checks = "gold+setup" if mode == "all" else mode
393
+ checks = "gold+noop" if mode == "all" else mode
342
394
  out = output_path(config)
343
395
  selected_keys = [task.hash for task in tasks]
344
396
  if not config.resume:
@@ -395,7 +447,7 @@ async def run_validate(config: ValidateConfig) -> list[dict]:
395
447
  await run_shielded(persist())
396
448
  st.end, st.state = time.time(), row["reason"]
397
449
  if not config.rich: # the dashboard shows this live; otherwise log each task
398
- detail = f" - {row['error']}" if row["error"] else ""
450
+ detail = f" - {note}" if (note := _describe(row)) else ""
399
451
  logger.info(
400
452
  "idx=%s valid=%s reason=%s (%.1fs)%s",
401
453
  row["index"],
@@ -16,8 +16,8 @@ class CheckTimeoutConfig(BaseConfig):
16
16
  setup: float | None = None
17
17
  """Max wall-clock for the task's `setup` hook."""
18
18
  total: float | None = None
19
- """Max wall-clock for the check itself per task — the `validate` hook, or the debug
20
- command/script."""
19
+ """Max wall-clock for the check itself per task, after setup — the gold check's
20
+ `validate` hook, or the noop check's `finalize` and scoring."""
21
21
 
22
22
 
23
23
  class ValidateConfig(BaseConfig):
@@ -32,9 +32,13 @@ class ValidateConfig(BaseConfig):
32
32
  """Where each task's validation hooks run."""
33
33
  timeout: CheckTimeoutConfig = CheckTimeoutConfig()
34
34
  only_setup: bool = False
35
- """Run only `Task.setup`."""
35
+ """Run only the setup check: `Task.setup`."""
36
36
  only_gold: bool = False
37
- """Run only `Task.setup` and `Task.validate`."""
37
+ """Run only the gold check: `Task.setup`, then `Task.validate`."""
38
+ only_noop: bool = False
39
+ """Run only the noop check: `Task.setup`, then `Task.finalize` and scoring on the
40
+ untouched task (no reference answer, no agent). Scoring is the task's full rewards,
41
+ configured judges included. Invalid when it already passes."""
38
42
  max_concurrent: int | None = Field(
39
43
  128, validation_alias=AliasChoices("max_concurrent", "c")
40
44
  )
@@ -72,8 +76,10 @@ class ValidateConfig(BaseConfig):
72
76
 
73
77
  @model_validator(mode="after")
74
78
  def _validate_only(self):
75
- if self.only_setup and self.only_gold:
76
- raise ValueError("pass at most one of `--only-setup` or `--only-gold`")
79
+ if self.only_setup + self.only_gold + self.only_noop > 1:
80
+ raise ValueError(
81
+ "pass at most one of `--only-setup`, `--only-gold` or `--only-noop`"
82
+ )
77
83
  return self
78
84
 
79
85
  @model_validator(mode="before")