verifiers 0.3.1.dev17__tar.gz → 0.3.1.dev19__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 (436) hide show
  1. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/PKG-INFO +1 -1
  2. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/debug.py +1 -1
  3. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/eval/resume.py +1 -1
  4. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/eval/runner.py +4 -9
  5. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/resume.py +0 -8
  6. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/validate.py +4 -6
  7. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/openclaw/harness.py +4 -2
  8. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/rollout.py +1 -0
  9. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/base.py +6 -1
  10. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/subprocess.py +3 -2
  11. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/pool.py +5 -3
  12. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/task.py +13 -0
  13. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/trace.py +2 -0
  14. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/.gitignore +0 -0
  15. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/LICENSE +0 -0
  16. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/README.md +0 -0
  17. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/pyproject.toml +0 -0
  18. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/__init__.py +0 -0
  19. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/conftest.py +0 -0
  20. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_browser_env.py +0 -0
  21. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_build_script.py +0 -0
  22. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_cli_agent_env.py +0 -0
  23. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_client_auth_errors.py +0 -0
  24. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_client_config.py +0 -0
  25. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_client_multimodal_types.py +0 -0
  26. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_composable_env.py +0 -0
  27. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_context_token_metrics.py +0 -0
  28. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_decorator_ranks.py +0 -0
  29. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_endpoint_registry.py +0 -0
  30. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_env_group.py +0 -0
  31. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_env_server.py +0 -0
  32. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_environment.py +0 -0
  33. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_environment_extra.py +0 -0
  34. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_error_chain.py +0 -0
  35. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_eval_display.py +0 -0
  36. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_eval_utils.py +0 -0
  37. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_gepa_cli.py +0 -0
  38. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_gepa_utils.py +0 -0
  39. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_gym_env.py +0 -0
  40. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_harbor_env_mcp.py +0 -0
  41. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_imports.py +0 -0
  42. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_init_script.py +0 -0
  43. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_install_utils.py +0 -0
  44. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_interception_utils.py +0 -0
  45. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_logging.py +0 -0
  46. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_math_rubric.py +0 -0
  47. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_maybe_think_parser.py +0 -0
  48. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_message_utils.py +0 -0
  49. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_message_utils_multimodal.py +0 -0
  50. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_multiturn_env.py +0 -0
  51. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_nemorl_client.py +0 -0
  52. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_openai_chat_completions_token_client.py +0 -0
  53. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_openai_responses_client.py +0 -0
  54. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_opencode_rlm_env.py +0 -0
  55. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_openenv_client.py +0 -0
  56. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_parser.py +0 -0
  57. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_path_utils.py +0 -0
  58. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_per_turn_timing.py +0 -0
  59. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_pricing_utils.py +0 -0
  60. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_prime_plugin.py +0 -0
  61. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_renderer_client.py +0 -0
  62. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_renderer_e2e.py +0 -0
  63. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_rlm_composable_env.py +0 -0
  64. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_rubric.py +0 -0
  65. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_rubric_group.py +0 -0
  66. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_sandbox_debug_env.py +0 -0
  67. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_sandbox_env.py +0 -0
  68. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_sandbox_mixin.py +0 -0
  69. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_save_utils.py +0 -0
  70. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_setup_script.py +0 -0
  71. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_singleturn_env.py +0 -0
  72. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_stateful_tool_env.py +0 -0
  73. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_think_parser.py +0 -0
  74. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_tool_env.py +0 -0
  75. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_tool_utils.py +0 -0
  76. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_trajectory_processing.py +0 -0
  77. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_tui_info_formatting.py +0 -0
  78. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_types.py +0 -0
  79. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/test_xml_parser.py +0 -0
  80. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/conftest.py +0 -0
  81. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  82. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/duet_v1.py +0 -0
  83. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  84. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  85. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  86. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  87. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/echo_v1.py +0 -0
  88. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/pyproject.toml +0 -0
  89. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  90. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_color_codeword_tasks.py +0 -0
  91. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_configs.py +0 -0
  92. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_e2e.py +0 -0
  93. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_envs.py +0 -0
  94. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_graph.py +0 -0
  95. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_judges.py +0 -0
  96. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_scoring.py +0 -0
  97. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_taskset.py +0 -0
  98. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/tests/v1/test_trace.py +0 -0
  99. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/__init__.py +0 -0
  100. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/__init__.py +0 -0
  101. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/__init__.py +0 -0
  102. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/build.py +0 -0
  103. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/eval.py +0 -0
  104. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/gepa.py +0 -0
  105. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/init.py +0 -0
  106. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/install.py +0 -0
  107. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/commands/setup.py +0 -0
  108. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/plugins/__init__.py +0 -0
  109. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/plugins/prime.py +0 -0
  110. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/cli/tui.py +0 -0
  111. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/__init__.py +0 -0
  112. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/__init__.py +0 -0
  113. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/anthropic_messages_client.py +0 -0
  114. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/client.py +0 -0
  115. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/nemorl_chat_completions_client.py +0 -0
  116. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/openai_chat_completions_client.py +0 -0
  117. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/openai_chat_completions_token_client.py +0 -0
  118. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/openai_completions_client.py +0 -0
  119. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/openai_responses_client.py +0 -0
  120. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/clients/renderer_client.py +0 -0
  121. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/decorators.py +0 -0
  122. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/__init__.py +0 -0
  123. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/env_group.py +0 -0
  124. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/environment.py +0 -0
  125. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/README.md +0 -0
  126. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/__init__.py +0 -0
  127. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/cli_agent_env.py +0 -0
  128. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/README.md +0 -0
  129. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/__init__.py +0 -0
  130. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/_filter.py +0 -0
  131. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/composable_env.py +0 -0
  132. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harness.py +0 -0
  133. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harnesses/__init__.py +0 -0
  134. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  135. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harnesses/opencode.py +0 -0
  136. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harnesses/prompt.txt +0 -0
  137. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/harnesses/rlm.py +0 -0
  138. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/sandbox_debug_env.py +0 -0
  139. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/swe_debug_env.py +0 -0
  140. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/task.py +0 -0
  141. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/__init__.py +0 -0
  142. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  143. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  144. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  145. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  146. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  147. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  148. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  149. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  150. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  151. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/README.md +0 -0
  152. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  153. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  154. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  155. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  156. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  157. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  158. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  159. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  160. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  161. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  162. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  163. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  164. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  165. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  166. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  167. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  168. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  169. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  170. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  171. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  172. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  173. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  174. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  175. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/gym_env.py +0 -0
  176. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/harbor_env/__init__.py +0 -0
  177. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/harbor_env/env.py +0 -0
  178. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/harbor_env/mcp.py +0 -0
  179. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/mcp_env.py +0 -0
  180. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/opencode_env.py +0 -0
  181. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/opencode_qa_env.py +0 -0
  182. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/opencode_rlm_env.py +0 -0
  183. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/sandbox_mixin.py +0 -0
  184. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/utils/__init__.py +0 -0
  185. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/utils/file_locks.py +0 -0
  186. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/experimental/utils/git_checkout_cache.py +0 -0
  187. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/README.md +0 -0
  188. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/__init__.py +0 -0
  189. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/README.md +0 -0
  190. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/__init__.py +0 -0
  191. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/browser_env.py +0 -0
  192. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/modes/__init__.py +0 -0
  193. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/modes/base.py +0 -0
  194. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  195. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  196. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/openenv_env.py +0 -0
  197. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/reasoninggym_env.py +0 -0
  198. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/integrations/textarena_env.py +0 -0
  199. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/multiturn_env.py +0 -0
  200. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/python_env.py +0 -0
  201. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/sandbox_env.py +0 -0
  202. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/singleturn_env.py +0 -0
  203. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/stateful_tool_env.py +0 -0
  204. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/envs/tool_env.py +0 -0
  205. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/errors.py +0 -0
  206. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/gepa/__init__.py +0 -0
  207. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/gepa/adapter.py +0 -0
  208. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/gepa/config.py +0 -0
  209. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/gepa/display.py +0 -0
  210. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/gepa/gepa_utils.py +0 -0
  211. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/parsers/__init__.py +0 -0
  212. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/parsers/maybe_think_parser.py +0 -0
  213. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/parsers/parser.py +0 -0
  214. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/parsers/think_parser.py +0 -0
  215. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/parsers/xml_parser.py +0 -0
  216. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/__init__.py +0 -0
  217. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/experimental/hybrid_math_rubric.py +0 -0
  218. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/judge_rubric.py +0 -0
  219. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/math_rubric.py +0 -0
  220. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/rubric.py +0 -0
  221. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/rubrics/rubric_group.py +0 -0
  222. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/__init__.py +0 -0
  223. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/build.py +0 -0
  224. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/eval.py +0 -0
  225. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/gepa.py +0 -0
  226. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/init.py +0 -0
  227. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/install.py +0 -0
  228. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/setup.py +0 -0
  229. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/scripts/tui.py +0 -0
  230. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/__init__.py +0 -0
  231. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/client/env_client.py +0 -0
  232. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/client/zmq_env_client.py +0 -0
  233. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/server/__init__.py +0 -0
  234. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/server/env_router.py +0 -0
  235. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/server/env_server.py +0 -0
  236. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/server/env_worker.py +0 -0
  237. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/server/zmq_env_server.py +0 -0
  238. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/serve/types.py +0 -0
  239. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/types.py +0 -0
  240. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/__init__.py +0 -0
  241. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/async_utils.py +0 -0
  242. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/client_utils.py +0 -0
  243. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/config_utils.py +0 -0
  244. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/data_utils.py +0 -0
  245. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/display_utils.py +0 -0
  246. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/env_config_utils.py +0 -0
  247. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/env_utils.py +0 -0
  248. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/error_utils.py +0 -0
  249. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/eval_display.py +0 -0
  250. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/eval_utils.py +0 -0
  251. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/heartbeat.py +0 -0
  252. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/import_utils.py +0 -0
  253. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/install_utils.py +0 -0
  254. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/interception_utils.py +0 -0
  255. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/logging_utils.py +0 -0
  256. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/message_utils.py +0 -0
  257. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/metric_utils.py +0 -0
  258. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/path_utils.py +0 -0
  259. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/pricing_utils.py +0 -0
  260. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/process_utils.py +0 -0
  261. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/response_utils.py +0 -0
  262. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/save_utils.py +0 -0
  263. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/serve_utils.py +0 -0
  264. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/thread_utils.py +0 -0
  265. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/threaded_sandbox_client.py +0 -0
  266. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/tool_utils.py +0 -0
  267. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/usage_utils.py +0 -0
  268. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/legacy/utils/version_utils.py +0 -0
  269. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/__init__.py +0 -0
  270. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/acp/__init__.py +0 -0
  271. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/acp/runner.py +0 -0
  272. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/agent.py +0 -0
  273. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/__init__.py +0 -0
  274. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  275. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/dashboard/base.py +0 -0
  276. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/dashboard/eval.py +0 -0
  277. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/dashboard/replay.py +0 -0
  278. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/dashboard/validate.py +0 -0
  279. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/eval/__init__.py +0 -0
  280. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/eval/main.py +0 -0
  281. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/gepa.py +0 -0
  282. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/init.py +0 -0
  283. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/output.py +0 -0
  284. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/replay.py +0 -0
  285. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/cli/resolve.py +0 -0
  286. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/clients/__init__.py +0 -0
  287. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/clients/base.py +0 -0
  288. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/clients/client.py +0 -0
  289. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/clients/eval.py +0 -0
  290. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/clients/train.py +0 -0
  291. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/__init__.py +0 -0
  292. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/agent.py +0 -0
  293. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/__init__.py +0 -0
  294. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/debug.py +0 -0
  295. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/env.py +0 -0
  296. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/eval.py +0 -0
  297. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/init.py +0 -0
  298. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/replay.py +0 -0
  299. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/cli/validate.py +0 -0
  300. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/client.py +0 -0
  301. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/env.py +0 -0
  302. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/harness.py +0 -0
  303. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/judge.py +0 -0
  304. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/retries.py +0 -0
  305. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/serve.py +0 -0
  306. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/task.py +0 -0
  307. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/configs/taskset.py +0 -0
  308. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/dialects/__init__.py +0 -0
  309. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/dialects/anthropic.py +0 -0
  310. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/dialects/base.py +0 -0
  311. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/dialects/chat.py +0 -0
  312. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/dialects/responses.py +0 -0
  313. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/env.py +0 -0
  314. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/__init__.py +0 -0
  315. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  316. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  317. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  318. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/best_of_n/env.py +0 -0
  319. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  320. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  321. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/single_agent/env.py +0 -0
  322. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  323. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/envs/user_sim/env.py +0 -0
  324. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/episode.py +0 -0
  325. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/errors.py +0 -0
  326. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/__init__.py +0 -0
  327. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/adapter.py +0 -0
  328. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/config.py +0 -0
  329. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/dataset.py +0 -0
  330. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/reflection.py +0 -0
  331. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/gepa/runner.py +0 -0
  332. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/graph.py +0 -0
  333. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harness.py +0 -0
  334. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/__init__.py +0 -0
  335. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  336. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/bash/harness.py +0 -0
  337. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/bash/program.py +0 -0
  338. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  339. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  340. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  341. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  342. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  343. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  344. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/codex/harness.py +0 -0
  345. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  346. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  347. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  348. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  349. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  350. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  351. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  352. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  353. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/node.py +0 -0
  354. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/null/__init__.py +0 -0
  355. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/null/harness.py +0 -0
  356. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/null/program.py +0 -0
  357. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  358. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  359. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/pi/harness.py +0 -0
  360. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  361. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/pool/harness.py +0 -0
  362. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  363. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  364. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  365. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  366. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  367. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/__init__.py +0 -0
  368. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/base.py +0 -0
  369. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/pool.py +0 -0
  370. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/server.py +0 -0
  371. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  372. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/tunnel/base.py +0 -0
  373. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/tunnel/custom.py +0 -0
  374. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/interception/tunnel/prime.py +0 -0
  375. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judge.py +0 -0
  376. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judges/__init__.py +0 -0
  377. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judges/reference.py +0 -0
  378. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judges/reference.txt +0 -0
  379. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judges/rubric.py +0 -0
  380. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/judges/rubric.txt +0 -0
  381. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/mcp/__init__.py +0 -0
  382. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/mcp/launch.py +0 -0
  383. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/mcp/server.py +0 -0
  384. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/mcp/toolset.py +0 -0
  385. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/__init__.py +0 -0
  386. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  387. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/docker/egress.py +0 -0
  388. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/limiters.py +0 -0
  389. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/modal.py +0 -0
  390. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/runtimes/prime.py +0 -0
  391. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/__init__.py +0 -0
  392. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/client.py +0 -0
  393. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/encoding.py +0 -0
  394. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/server.py +0 -0
  395. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/serve/types.py +0 -0
  396. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/session.py +0 -0
  397. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/state.py +0 -0
  398. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/taskset.py +0 -0
  399. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/__init__.py +0 -0
  400. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  401. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/harbor/env.py +0 -0
  402. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  403. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  404. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  405. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  406. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  407. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  408. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  409. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  410. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  411. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  412. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  413. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  414. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  415. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/types.py +0 -0
  416. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/__init__.py +0 -0
  417. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/aio.py +0 -0
  418. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/artifacts.py +0 -0
  419. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/compile.py +0 -0
  420. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/decorators.py +0 -0
  421. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/format.py +0 -0
  422. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/generic.py +0 -0
  423. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/git.py +0 -0
  424. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/image.py +0 -0
  425. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/install.py +0 -0
  426. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/install_utils.py +0 -0
  427. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/interrupt.py +0 -0
  428. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/loaders.py +0 -0
  429. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/logging.py +0 -0
  430. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/memory.py +0 -0
  431. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/paths.py +0 -0
  432. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/platform.py +0 -0
  433. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/prime_config.py +0 -0
  434. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/retries.py +0 -0
  435. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/score.py +0 -0
  436. {verifiers-0.3.1.dev17 → verifiers-0.3.1.dev19}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.3.1.dev17
3
+ Version: 0.3.1.dev19
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
@@ -193,7 +193,7 @@ async def run_action(runtime: Runtime, config: DebugConfig) -> dict[str, Any]:
193
193
 
194
194
  async def debug_task(task: Task, config: DebugConfig) -> tuple[Trace, bool]:
195
195
  trace = Trace(
196
- task=TraceTask(type=type(task).__name__, data=task.data),
196
+ task=TraceTask(type=type(task).__name__, data=task.data, hash=task.hash),
197
197
  state=state_cls(type(task))(),
198
198
  # No agent plays here (no model, no harness): the seat records the
199
199
  # runtime policy, and the provisioned box lands on it below (id, resolved
@@ -19,9 +19,9 @@ from pathlib import Path
19
19
  from pydantic_core import from_json
20
20
 
21
21
  from verifiers.v1.cli.output import CONFIG_FILE, TRACES_FILE, sniff_episode
22
- from verifiers.v1.cli.resume import task_key
23
22
  from verifiers.v1.configs.cli.eval import EvalConfig
24
23
  from verifiers.v1.episode import Episode, WireEpisode
24
+ from verifiers.v1.task import task_key
25
25
  from verifiers.v1.trace import WireTrace
26
26
 
27
27
 
@@ -12,7 +12,7 @@ from verifiers.v1.cli.output import (
12
12
  output_path,
13
13
  save_config,
14
14
  )
15
- from verifiers.v1.cli.resume import distribute, task_key
15
+ from verifiers.v1.cli.resume import distribute
16
16
  from verifiers.v1.clients import ModelContext
17
17
  from verifiers.v1.configs.cli.eval import EvalConfig
18
18
  from verifiers.v1.env import Env, RunSlot
@@ -45,9 +45,7 @@ async def run_eval(env: Env, config: EvalConfig) -> list[Episode]:
45
45
  # Kept on-disk rollouts rejoin the run as finished episodes; only owed ones re-run.
46
46
  finished: list[Episode] = []
47
47
  if config.resume is not None:
48
- keys = [
49
- task_key(t.data.model_dump(mode="json", exclude_none=True)) for t in tasks
50
- ]
48
+ keys = [task.hash for task in tasks]
51
49
  finished, owed = resume.load(out, keys, config.num_rollouts, env.complete)
52
50
  if not owed: # already complete - report it and exit successfully
53
51
  print(resume.nothing_to_resume_msg(out, len(tasks), config.num_rollouts))
@@ -163,7 +161,7 @@ async def run_eval_server(config: EvalConfig) -> list[Episode]:
163
161
  client = EnvClient(address=address)
164
162
  await client.wait_for_server_startup(timeout=600)
165
163
  # A run dispatches — and resumes — tasks by content: the client owns them,
166
- # and `task_key` is their identity.
164
+ # and `task.hash` is their identity.
167
165
  plan = [
168
166
  ({"task_data": task.data.model_dump(mode="json")}, config.num_rollouts)
169
167
  for task in tasks
@@ -171,10 +169,7 @@ async def run_eval_server(config: EvalConfig) -> list[Episode]:
171
169
  out = output_path(config)
172
170
  finished: list[Episode] = []
173
171
  if config.resume is not None:
174
- keys = [
175
- task_key(t.data.model_dump(mode="json", exclude_none=True))
176
- for t in tasks
177
- ]
172
+ keys = [task.hash for task in tasks]
178
173
  finished, owed = resume.load(out, keys, config.num_rollouts)
179
174
  counts = distribute(keys, owed, config.num_rollouts)
180
175
  if not owed: # already complete - report it and exit successfully
@@ -1,16 +1,8 @@
1
1
  """Resume primitives shared by eval-like CLIs."""
2
2
 
3
- import hashlib
4
- import json
5
- from collections.abc import Mapping
6
3
  from pathlib import Path
7
4
 
8
5
 
9
- def task_key(data: Mapping) -> str:
10
- """Content identity for task wire data, independent of field order."""
11
- return hashlib.sha256(json.dumps(data, sort_keys=True).encode()).hexdigest()
12
-
13
-
14
6
  def distribute(
15
7
  selected_keys: list[str], owed: dict[str, int], num_results: int
16
8
  ) -> list[int]:
@@ -26,7 +26,7 @@ from verifiers.v1.cli.resolve import (
26
26
  references_config_file,
27
27
  with_positional_taskset,
28
28
  )
29
- from verifiers.v1.cli.resume import distribute, split_resume, task_key
29
+ from verifiers.v1.cli.resume import distribute, split_resume
30
30
  from verifiers.v1.configs.cli.validate import ValidateConfig
31
31
  from verifiers.v1.runtimes import make_runtime
32
32
  from verifiers.v1.state import state_cls
@@ -247,7 +247,7 @@ async def _run_gold(task: Task, config: ValidateConfig) -> ResultRow:
247
247
  valid, exc = False, None
248
248
  try:
249
249
  trace = Trace(
250
- task=TraceTask(type=type(task).__name__, data=task.data),
250
+ task=TraceTask(type=type(task).__name__, data=task.data, hash=task.hash),
251
251
  state=state_cls(type(task))(),
252
252
  # No agent runs here — the info only records the runtime policy.
253
253
  agent=vf.AgentInfo(
@@ -288,7 +288,7 @@ async def _run_setup(task: Task, config: ValidateConfig) -> ResultRow:
288
288
  valid, exc = False, None
289
289
  try:
290
290
  trace = Trace(
291
- task=TraceTask(type=type(task).__name__, data=task.data),
291
+ task=TraceTask(type=type(task).__name__, data=task.data, hash=task.hash),
292
292
  state=state_cls(type(task))(),
293
293
  # No agent runs here — the info only records the runtime policy.
294
294
  agent=vf.AgentInfo(
@@ -380,9 +380,7 @@ async def run_validate(config: ValidateConfig) -> list[dict]:
380
380
  mode = validation_mode(config)
381
381
  checks = "gold+setup" if mode == "all" else mode
382
382
  out = output_path(config)
383
- selected_keys = [
384
- task_key(task.data.model_dump(mode="json", exclude_none=True)) for task in tasks
385
- ]
383
+ selected_keys = [task.hash for task in tasks]
386
384
  if config.resume is None:
387
385
  save_run(config, out, len(tasks))
388
386
  rows: list[ResultRow] = []
@@ -8,7 +8,6 @@ import secrets
8
8
  import shlex
9
9
  from collections.abc import AsyncIterator
10
10
  from contextlib import asynccontextmanager
11
- from pathlib import Path
12
11
 
13
12
  from pydantic import Field
14
13
 
@@ -19,6 +18,7 @@ from verifiers.v1.harness import Harness
19
18
  from verifiers.v1.runtimes import DockerRuntime, ProgramResult, Runtime
20
19
  from verifiers.v1.task import TaskData
21
20
  from verifiers.v1.trace import Trace
21
+ from verifiers.v1.utils.paths import CACHE_DIR
22
22
 
23
23
  logger = logging.getLogger(__name__)
24
24
 
@@ -40,7 +40,9 @@ async def _gateway_start_lock(runtime: Runtime) -> AsyncIterator[None]:
40
40
  yield
41
41
  return
42
42
  # Unrestricted Docker containers share the host network across server workers.
43
- with Path("/tmp/vf-openclaw-gateway.lock").open("a") as lock: # noqa: ASYNC230
43
+ lock_path = CACHE_DIR / "harnesses" / "openclaw" / "gateway.lock"
44
+ lock_path.parent.mkdir(parents=True, exist_ok=True)
45
+ with lock_path.open("a") as lock:
44
46
  while True:
45
47
  try:
46
48
  fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB)
@@ -83,6 +83,7 @@ class Rollout:
83
83
  task=TraceTask(
84
84
  type=type(task).__name__,
85
85
  data=task.data,
86
+ hash=task.hash,
86
87
  ),
87
88
  state=state_cls(type(task))(),
88
89
  # The seat's resolved config, role overrides included — the agent
@@ -20,9 +20,14 @@ from pydantic_config import BaseConfig
20
20
 
21
21
  from verifiers.v1.errors import SandboxError
22
22
  from verifiers.v1.utils.aio import run_shielded
23
+ from verifiers.v1.utils.paths import CACHE_DIR
23
24
 
24
25
  logger = logging.getLogger(__name__)
25
26
 
27
+ # Digest-keyed cache of prepared PEP 723 scripts. Every runtime's `write` creates parent
28
+ # directories, so the path also works inside containers and sandboxes.
29
+ SCRIPTS_DIR = str(CACHE_DIR / "runtimes" / "scripts")
30
+
26
31
  # Ensure the latest `uv` is available for our PEP 723 scripts: prefer pip on Python images,
27
32
  # then fall back to the standalone installer (curl/wget), installing curl + CA certs when a
28
33
  # bare image has no downloader. Both paths install to ~/.local/bin, which we prepend to PATH.
@@ -277,7 +282,7 @@ class Runtime(ABC):
277
282
  """
278
283
  data = script.encode() if isinstance(script, str) else script
279
284
  digest = hashlib.sha256(data).hexdigest()
280
- path = f"/tmp/vf-scripts/{digest}.py"
285
+ path = f"{SCRIPTS_DIR}/{digest}.py"
281
286
  if digest not in self._uv_interpreters:
282
287
  async with self._uv_script_locks.setdefault(digest, asyncio.Lock()):
283
288
  if digest not in self._uv_interpreters:
@@ -17,6 +17,7 @@ from verifiers.v1.runtimes.base import (
17
17
  Runtime,
18
18
  RuntimeProcess,
19
19
  )
20
+ from verifiers.v1.utils.paths import CACHE_DIR
20
21
 
21
22
  _BACKGROUND_STOP_TIMEOUT = 5
22
23
 
@@ -89,8 +90,8 @@ class SubprocessRuntime(Runtime):
89
90
  self._background: list[asyncio.subprocess.Process] = []
90
91
 
91
92
  async def start(self) -> None:
92
- self.workdir = Path("/tmp") / self.name
93
- self.workdir.mkdir()
93
+ self.workdir = CACHE_DIR / "runtimes" / "subprocess" / self.name
94
+ self.workdir.mkdir(parents=True)
94
95
  self.info.id = str(self.workdir)
95
96
 
96
97
  async def run(self, argv: list[str], env: dict[str, str]) -> ProgramResult:
@@ -26,8 +26,8 @@ import logging
26
26
  import multiprocessing as mp
27
27
  import os
28
28
  import signal
29
+ import tempfile
29
30
  import threading
30
- import uuid
31
31
  from collections.abc import Callable
32
32
 
33
33
  import msgpack
@@ -90,7 +90,7 @@ class EnvServerPool:
90
90
  self.multiplex = multiplex
91
91
  self.elastic = elastic
92
92
  self.log_setup = log_setup
93
- self.session = uuid.uuid4().hex[:12]
93
+ self._ipc_dir = tempfile.mkdtemp(prefix="vf-pool-")
94
94
  self.workers: list[dict] = []
95
95
  self._mpctx = mp.get_context("spawn")
96
96
  self._poller: zmq.asyncio.Poller | None = None
@@ -105,7 +105,7 @@ class EnvServerPool:
105
105
  self.address = self.frontend.getsockopt_string(zmq.LAST_ENDPOINT)
106
106
 
107
107
  def _worker_path(self, i: int) -> str:
108
- return f"/tmp/vf-pool-{self.session}-{i}"
108
+ return f"{self._ipc_dir}/{i}"
109
109
 
110
110
  def _spawn_worker(self) -> None:
111
111
  i = len(self.workers) # upscale-only, so the next index is the current count
@@ -241,6 +241,8 @@ class EnvServerPool:
241
241
  w["dealer"].close()
242
242
  with contextlib.suppress(OSError):
243
243
  os.unlink(self._worker_path(w["index"]))
244
+ with contextlib.suppress(OSError):
245
+ os.rmdir(self._ipc_dir)
244
246
  self.frontend.close()
245
247
  self.ctx.term()
246
248
  logger.info("EnvServerPool down")
@@ -10,7 +10,9 @@ initializes a task instance. Rides on `trace.task.data` in `traces.jsonl`.
10
10
  from __future__ import annotations
11
11
 
12
12
  import copy
13
+ import hashlib
13
14
  import inspect
15
+ import json
14
16
  import logging
15
17
  from collections.abc import Callable, Mapping
16
18
  from typing import TYPE_CHECKING, Any, ClassVar, Generic, Self
@@ -40,6 +42,11 @@ if TYPE_CHECKING:
40
42
  logger = logging.getLogger(__name__)
41
43
 
42
44
 
45
+ def task_key(data: Mapping) -> str:
46
+ """Content identity for task wire data, independent of field order."""
47
+ return hashlib.sha256(json.dumps(data, sort_keys=True).encode()).hexdigest()
48
+
49
+
43
50
  class TaskResources(BaseModel):
44
51
  """Optional resource limits for the task."""
45
52
 
@@ -134,6 +141,12 @@ class Task(Generic[DataT, StateT, ConfigT]):
134
141
  self.data = data
135
142
  self.config = config if config is not None else self.config_type()()
136
143
 
144
+ @property
145
+ def hash(self) -> str:
146
+ """Content hash of the task's wire data — the identity that matches saved
147
+ rollouts to tasks; recorded on the trace as `task.hash`."""
148
+ return task_key(self.data.model_dump(mode="json", exclude_none=True))
149
+
137
150
  def with_system_prompt(self, system_prompt: str) -> Self:
138
151
  clone = copy.copy(self)
139
152
  clone.data = self.data.model_copy(update={"system_prompt": system_prompt})
@@ -121,6 +121,8 @@ class TraceTask(BaseModel, Generic[DataT]):
121
121
  """The Task class name (`type(task).__name__`)."""
122
122
  data: DataT
123
123
  """The (immutable) row being solved."""
124
+ hash: str | None = None
125
+ """Content hash of `data` (`Task.hash`) — the task's identity across runs."""
124
126
 
125
127
 
126
128
  class Reward(BaseModel):
File without changes