verifiers 0.2.2.dev49__tar.gz → 0.2.2.dev50__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 (420) hide show
  1. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/PKG-INFO +1 -1
  2. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_e2e.py +3 -3
  3. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_judges.py +6 -18
  4. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/judge.py +3 -10
  5. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/taskset.py +5 -0
  6. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/agentic_judge/env.py +11 -21
  7. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/adapter.py +4 -8
  8. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/runner.py +14 -1
  9. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judge.py +4 -4
  10. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/task.py +11 -1
  11. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/taskset.py +8 -3
  12. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/lean/taskset.py +1 -2
  13. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/.gitignore +0 -0
  14. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/LICENSE +0 -0
  15. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/README.md +0 -0
  16. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/pyproject.toml +0 -0
  17. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/__init__.py +0 -0
  18. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/conftest.py +0 -0
  19. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_browser_env.py +0 -0
  20. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_build_script.py +0 -0
  21. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_cli_agent_env.py +0 -0
  22. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_client_auth_errors.py +0 -0
  23. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_client_config.py +0 -0
  24. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_client_multimodal_types.py +0 -0
  25. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_composable_env.py +0 -0
  26. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_context_token_metrics.py +0 -0
  27. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_decorator_ranks.py +0 -0
  28. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_endpoint_registry.py +0 -0
  29. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_env_group.py +0 -0
  30. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_env_server.py +0 -0
  31. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_environment.py +0 -0
  32. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_environment_extra.py +0 -0
  33. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_error_chain.py +0 -0
  34. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_eval_display.py +0 -0
  35. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_eval_utils.py +0 -0
  36. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_gepa_cli.py +0 -0
  37. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_gepa_utils.py +0 -0
  38. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_gym_env.py +0 -0
  39. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_harbor_env_mcp.py +0 -0
  40. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_imports.py +0 -0
  41. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_init_script.py +0 -0
  42. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_install_utils.py +0 -0
  43. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_interception_utils.py +0 -0
  44. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_logging.py +0 -0
  45. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_math_rubric.py +0 -0
  46. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_maybe_think_parser.py +0 -0
  47. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_message_utils.py +0 -0
  48. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_message_utils_multimodal.py +0 -0
  49. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_multiturn_env.py +0 -0
  50. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_nemorl_client.py +0 -0
  51. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_openai_chat_completions_token_client.py +0 -0
  52. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_openai_responses_client.py +0 -0
  53. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_opencode_rlm_env.py +0 -0
  54. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_openenv_client.py +0 -0
  55. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_parser.py +0 -0
  56. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_path_utils.py +0 -0
  57. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_per_turn_timing.py +0 -0
  58. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_pricing_utils.py +0 -0
  59. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_prime_plugin.py +0 -0
  60. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_renderer_client.py +0 -0
  61. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_renderer_e2e.py +0 -0
  62. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_rlm_composable_env.py +0 -0
  63. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_rubric.py +0 -0
  64. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_rubric_group.py +0 -0
  65. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_sandbox_debug_env.py +0 -0
  66. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_sandbox_env.py +0 -0
  67. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_sandbox_mixin.py +0 -0
  68. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_save_utils.py +0 -0
  69. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_setup_script.py +0 -0
  70. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_singleturn_env.py +0 -0
  71. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_stateful_tool_env.py +0 -0
  72. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_think_parser.py +0 -0
  73. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_tool_env.py +0 -0
  74. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_tool_utils.py +0 -0
  75. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_trajectory_processing.py +0 -0
  76. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_tui_info_formatting.py +0 -0
  77. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_types.py +0 -0
  78. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/test_xml_parser.py +0 -0
  79. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/conftest.py +0 -0
  80. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  81. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/duet_v1.py +0 -0
  82. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  83. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  84. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_multi_v0.py +0 -0
  85. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  86. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  87. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_v0.py +0 -0
  88. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/echo_v1.py +0 -0
  89. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/pyproject.toml +0 -0
  90. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  91. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_color_codeword_tasks.py +0 -0
  92. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_configs.py +0 -0
  93. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_envs.py +0 -0
  94. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_graph.py +0 -0
  95. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_legacy.py +0 -0
  96. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_scoring.py +0 -0
  97. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_taskset.py +0 -0
  98. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/tests/v1/test_trace.py +0 -0
  99. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/__init__.py +0 -0
  100. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/__init__.py +0 -0
  101. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/__init__.py +0 -0
  102. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/build.py +0 -0
  103. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/eval.py +0 -0
  104. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/gepa.py +0 -0
  105. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/init.py +0 -0
  106. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/install.py +0 -0
  107. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/commands/setup.py +0 -0
  108. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/plugins/__init__.py +0 -0
  109. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/plugins/prime.py +0 -0
  110. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/cli/tui.py +0 -0
  111. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/__init__.py +0 -0
  112. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/anthropic_messages_client.py +0 -0
  113. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/client.py +0 -0
  114. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/nemorl_chat_completions_client.py +0 -0
  115. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/openai_chat_completions_client.py +0 -0
  116. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/openai_chat_completions_token_client.py +0 -0
  117. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/openai_completions_client.py +0 -0
  118. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/openai_responses_client.py +0 -0
  119. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/clients/renderer_client.py +0 -0
  120. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/decorators.py +0 -0
  121. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/__init__.py +0 -0
  122. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/env_group.py +0 -0
  123. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/environment.py +0 -0
  124. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/README.md +0 -0
  125. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/__init__.py +0 -0
  126. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/cli_agent_env.py +0 -0
  127. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/README.md +0 -0
  128. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/__init__.py +0 -0
  129. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/_filter.py +0 -0
  130. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/composable_env.py +0 -0
  131. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harness.py +0 -0
  132. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harnesses/__init__.py +0 -0
  133. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harnesses/mini_swe_agent.py +0 -0
  134. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harnesses/opencode.py +0 -0
  135. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harnesses/prompt.txt +0 -0
  136. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/harnesses/rlm.py +0 -0
  137. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/sandbox_debug_env.py +0 -0
  138. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/swe_debug_env.py +0 -0
  139. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/task.py +0 -0
  140. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/__init__.py +0 -0
  141. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/cp/__init__.py +0 -0
  142. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/cp/cp_task.py +0 -0
  143. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/cp/test_utils.py +0 -0
  144. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/harbor/__init__.py +0 -0
  145. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/harbor/cli_gym.py +0 -0
  146. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/harbor/harbor.py +0 -0
  147. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/harbor/terminal_lego.py +0 -0
  148. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/math/__init__.py +0 -0
  149. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/math/math_task.py +0 -0
  150. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/README.md +0 -0
  151. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/__init__.py +0 -0
  152. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/__init__.py +0 -0
  153. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/extract_fix_patch.sh +0 -0
  154. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/multi_swe/taskset.py +0 -0
  155. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/openswe/__init__.py +0 -0
  156. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/openswe/taskset.py +0 -0
  157. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/__init__.py +0 -0
  158. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/log_parser.py +0 -0
  159. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/r2e_gym/taskset.py +0 -0
  160. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/__init__.py +0 -0
  161. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/scale_swe/taskset.py +0 -0
  162. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/shared/__init__.py +0 -0
  163. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/shared/test_patch.py +0 -0
  164. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/__init__.py +0 -0
  165. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_bench/taskset.py +0 -0
  166. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/__init__.py +0 -0
  167. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_lego/taskset.py +0 -0
  168. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/__init__.py +0 -0
  169. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/log_parsers.py +0 -0
  170. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_rebench_v2/taskset.py +0 -0
  171. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/__init__.py +0 -0
  172. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_smith/taskset.py +0 -0
  173. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/composable/tasksets/swe/swe_tasksets.py +0 -0
  174. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/gym_env.py +0 -0
  175. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/harbor_env/__init__.py +0 -0
  176. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/harbor_env/env.py +0 -0
  177. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/harbor_env/mcp.py +0 -0
  178. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/mcp_env.py +0 -0
  179. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/opencode_env.py +0 -0
  180. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/opencode_qa_env.py +0 -0
  181. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/opencode_rlm_env.py +0 -0
  182. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/sandbox_mixin.py +0 -0
  183. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/utils/__init__.py +0 -0
  184. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/utils/file_locks.py +0 -0
  185. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/experimental/utils/git_checkout_cache.py +0 -0
  186. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/README.md +0 -0
  187. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/__init__.py +0 -0
  188. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/README.md +0 -0
  189. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/__init__.py +0 -0
  190. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/browser_env.py +0 -0
  191. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/modes/__init__.py +0 -0
  192. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/modes/base.py +0 -0
  193. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/modes/cua_mode.py +0 -0
  194. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/browser_env/modes/dom_mode.py +0 -0
  195. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/openenv_env.py +0 -0
  196. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/reasoninggym_env.py +0 -0
  197. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/integrations/textarena_env.py +0 -0
  198. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/multiturn_env.py +0 -0
  199. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/python_env.py +0 -0
  200. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/sandbox_env.py +0 -0
  201. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/singleturn_env.py +0 -0
  202. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/stateful_tool_env.py +0 -0
  203. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/envs/tool_env.py +0 -0
  204. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/errors.py +0 -0
  205. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/gepa/__init__.py +0 -0
  206. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/gepa/adapter.py +0 -0
  207. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/gepa/config.py +0 -0
  208. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/gepa/display.py +0 -0
  209. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/gepa/gepa_utils.py +0 -0
  210. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/parsers/__init__.py +0 -0
  211. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/parsers/maybe_think_parser.py +0 -0
  212. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/parsers/parser.py +0 -0
  213. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/parsers/think_parser.py +0 -0
  214. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/parsers/xml_parser.py +0 -0
  215. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/__init__.py +0 -0
  216. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/experimental/hybrid_math_rubric.py +0 -0
  217. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/judge_rubric.py +0 -0
  218. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/math_rubric.py +0 -0
  219. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/rubric.py +0 -0
  220. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/rubrics/rubric_group.py +0 -0
  221. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/__init__.py +0 -0
  222. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/build.py +0 -0
  223. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/eval.py +0 -0
  224. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/gepa.py +0 -0
  225. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/init.py +0 -0
  226. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/install.py +0 -0
  227. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/setup.py +0 -0
  228. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/scripts/tui.py +0 -0
  229. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/__init__.py +0 -0
  230. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/client/env_client.py +0 -0
  231. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/client/zmq_env_client.py +0 -0
  232. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/server/__init__.py +0 -0
  233. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/server/env_router.py +0 -0
  234. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/server/env_server.py +0 -0
  235. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/server/env_worker.py +0 -0
  236. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/server/zmq_env_server.py +0 -0
  237. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/serve/types.py +0 -0
  238. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/types.py +0 -0
  239. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/__init__.py +0 -0
  240. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/async_utils.py +0 -0
  241. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/client_utils.py +0 -0
  242. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/config_utils.py +0 -0
  243. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/data_utils.py +0 -0
  244. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/display_utils.py +0 -0
  245. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/env_config_utils.py +0 -0
  246. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/env_utils.py +0 -0
  247. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/error_utils.py +0 -0
  248. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/eval_display.py +0 -0
  249. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/eval_utils.py +0 -0
  250. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/heartbeat.py +0 -0
  251. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/import_utils.py +0 -0
  252. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/install_utils.py +0 -0
  253. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/interception_utils.py +0 -0
  254. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/logging_utils.py +0 -0
  255. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/message_utils.py +0 -0
  256. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/metric_utils.py +0 -0
  257. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/path_utils.py +0 -0
  258. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/pricing_utils.py +0 -0
  259. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/process_utils.py +0 -0
  260. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/response_utils.py +0 -0
  261. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/save_utils.py +0 -0
  262. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/serve_utils.py +0 -0
  263. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/thread_utils.py +0 -0
  264. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/threaded_sandbox_client.py +0 -0
  265. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/tool_utils.py +0 -0
  266. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/usage_utils.py +0 -0
  267. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/utils/version_utils.py +0 -0
  268. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/__init__.py +0 -0
  269. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/acp/__init__.py +0 -0
  270. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/acp/_runner.py +0 -0
  271. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/agent.py +0 -0
  272. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/__init__.py +0 -0
  273. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  274. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/dashboard/base.py +0 -0
  275. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/dashboard/eval.py +0 -0
  276. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/dashboard/replay.py +0 -0
  277. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/dashboard/validate.py +0 -0
  278. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/debug.py +0 -0
  279. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/eval/__init__.py +0 -0
  280. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/eval/main.py +0 -0
  281. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/eval/resume.py +0 -0
  282. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/eval/runner.py +0 -0
  283. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/gepa.py +0 -0
  284. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/init.py +0 -0
  285. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/output.py +0 -0
  286. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/replay.py +0 -0
  287. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/resolve.py +0 -0
  288. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/serve.py +0 -0
  289. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/cli/validate.py +0 -0
  290. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/clients/__init__.py +0 -0
  291. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/clients/client.py +0 -0
  292. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/clients/config.py +0 -0
  293. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/clients/eval.py +0 -0
  294. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/clients/train.py +0 -0
  295. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/__init__.py +0 -0
  296. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/agent.py +0 -0
  297. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/__init__.py +0 -0
  298. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/debug.py +0 -0
  299. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/env.py +0 -0
  300. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/eval.py +0 -0
  301. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/init.py +0 -0
  302. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/replay.py +0 -0
  303. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/serve.py +0 -0
  304. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/cli/validate.py +0 -0
  305. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/env.py +0 -0
  306. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/harness.py +0 -0
  307. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/legacy.py +0 -0
  308. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/retries.py +0 -0
  309. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/serve.py +0 -0
  310. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/configs/task.py +0 -0
  311. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/decorators.py +0 -0
  312. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/dialects/__init__.py +0 -0
  313. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/dialects/anthropic.py +0 -0
  314. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/dialects/base.py +0 -0
  315. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/dialects/chat.py +0 -0
  316. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/dialects/responses.py +0 -0
  317. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/env.py +0 -0
  318. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/__init__.py +0 -0
  319. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  320. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  321. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/best_of_n/env.py +0 -0
  322. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  323. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/single_agent/env.py +0 -0
  324. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  325. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/envs/user_sim/env.py +0 -0
  326. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/episode.py +0 -0
  327. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/errors.py +0 -0
  328. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/__init__.py +0 -0
  329. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/config.py +0 -0
  330. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/dataset.py +0 -0
  331. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/gepa/reflection.py +0 -0
  332. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/graph.py +0 -0
  333. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harness.py +0 -0
  334. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/__init__.py +0 -0
  335. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  336. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/bash/harness.py +0 -0
  337. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/bash/program.py +0 -0
  338. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  339. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  340. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  341. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/codex/harness.py +0 -0
  342. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  343. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  344. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  345. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  346. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  347. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/null/__init__.py +0 -0
  348. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/null/harness.py +0 -0
  349. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/null/program.py +0 -0
  350. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  351. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/pi/harness.py +0 -0
  352. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/pool/__init__.py +0 -0
  353. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/pool/harness.py +0 -0
  354. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  355. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  356. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  357. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  358. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  359. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/__init__.py +0 -0
  360. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/base.py +0 -0
  361. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/pool.py +0 -0
  362. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/server.py +0 -0
  363. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  364. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/tunnel/base.py +0 -0
  365. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/tunnel/custom.py +0 -0
  366. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/interception/tunnel/prime.py +0 -0
  367. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judges/__init__.py +0 -0
  368. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judges/reference.py +0 -0
  369. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judges/reference.txt +0 -0
  370. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judges/rubric.py +0 -0
  371. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/judges/rubric.txt +0 -0
  372. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/legacy.py +0 -0
  373. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/loaders.py +0 -0
  374. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/mcp/__init__.py +0 -0
  375. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/mcp/launch.py +0 -0
  376. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/mcp/server.py +0 -0
  377. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/mcp/toolset.py +0 -0
  378. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/push.py +0 -0
  379. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/retries.py +0 -0
  380. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/rollout.py +0 -0
  381. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/__init__.py +0 -0
  382. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/base.py +0 -0
  383. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  384. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/docker/egress.py +0 -0
  385. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/limiters.py +0 -0
  386. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/modal.py +0 -0
  387. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/prime.py +0 -0
  388. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/runtimes/subprocess.py +0 -0
  389. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/scoring.py +0 -0
  390. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/serve/__init__.py +0 -0
  391. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/serve/client.py +0 -0
  392. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/serve/pool.py +0 -0
  393. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/serve/server.py +0 -0
  394. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/serve/types.py +0 -0
  395. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/session.py +0 -0
  396. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/state.py +0 -0
  397. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/__init__.py +0 -0
  398. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  399. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  400. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  401. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  402. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  403. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  404. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  405. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  406. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/trace.py +0 -0
  407. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/types.py +0 -0
  408. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/__init__.py +0 -0
  409. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/aio.py +0 -0
  410. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/compile.py +0 -0
  411. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/format.py +0 -0
  412. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/generic.py +0 -0
  413. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/git.py +0 -0
  414. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/image.py +0 -0
  415. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/install.py +0 -0
  416. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/interrupt.py +0 -0
  417. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/logging.py +0 -0
  418. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/memory.py +0 -0
  419. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/sampling.py +0 -0
  420. {verifiers-0.2.2.dev49 → verifiers-0.2.2.dev50}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: verifiers
3
- Version: 0.2.2.dev49
3
+ Version: 0.2.2.dev50
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
@@ -401,6 +401,8 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
401
401
  model's call. Exercises the config surface too: a policy-only prompt
402
402
  override (the verdict contract is appended regardless) and
403
403
  reward-composition weights."""
404
+ policy = tmp_path / "judge_policy.txt"
405
+ policy.write_text("Check EMPIRICALLY that the agent echoed the word back.")
404
406
  traces = await run_v1(
405
407
  "echo-v1",
406
408
  harness=None, # seats pin their own harness; there is no run-level one
@@ -414,9 +416,7 @@ async def test_env_id_agentic_judge(run_v1, tmp_path):
414
416
  "harness": {"id": "bash"},
415
417
  "max_output_tokens": 8192,
416
418
  },
417
- "task": {
418
- "prompt": "Check EMPIRICALLY that the agent echoed the word back.",
419
- },
419
+ "task": {"prompt": str(policy)},
420
420
  "score": {"task_weight": 0.5},
421
421
  },
422
422
  output_dir=tmp_path,
@@ -371,32 +371,20 @@ async def test_rubric_view_full_trace(tmp_path, fake_judge_model):
371
371
  assert all("SECRET REASONING" not in prompt for prompt in fake_judge_model)
372
372
 
373
373
 
374
- async def test_config_prompt_overrides_class_template(fake_judge_model):
375
- judge = vf.ReferenceJudge(
376
- vf.ReferenceJudgeConfig(prompt="Q:{question} A:{answer} R:{response}")
377
- )
374
+ async def test_config_prompt_overrides_class_template(tmp_path, fake_judge_model):
375
+ # Config `prompt` is a file path; the same {field} placeholders work.
376
+ file = tmp_path / "judge.txt"
377
+ file.write_text("Q:{question} A:{answer} R:{response}")
378
+ judge = vf.ReferenceJudge(vf.ReferenceJudgeConfig(prompt=file))
378
379
  assert judge.build_messages(question="q", answer="a", response="r") == "Q:q A:a R:r"
379
380
  # A template needn't use every evaluate field: score also passes {positive}/{negative},
380
381
  # which str.format ignores when the (custom) prompt doesn't reference them.
381
382
  trace = make_trace()
382
383
  assert await judge.score(trace.task.data, trace) == 1.0
383
384
  assert fake_judge_model[0] == "Q:Capital of France? A:Paris R:It is Paris."
384
-
385
-
386
- async def test_prompt_file(tmp_path, fake_judge_model):
387
- # The prompt template can come from a file; the same {field} placeholders work.
388
- file = tmp_path / "judge.txt"
389
- file.write_text("Q:{question} A:{answer} R:{response}")
390
- trace = make_trace()
391
- judge = vf.ReferenceJudge(vf.ReferenceJudgeConfig(prompt_file=file))
392
- assert await judge.score(trace.task.data, trace) == 1.0
393
- assert fake_judge_model[0] == "Q:Capital of France? A:Paris R:It is Paris."
394
385
  # a bad path fails at judge construction, not mid-eval at score time
395
386
  with pytest.raises(FileNotFoundError):
396
- vf.ReferenceJudge(vf.ReferenceJudgeConfig(prompt_file=tmp_path / "missing.txt"))
397
- # inline and file prompts are mutually exclusive
398
- with pytest.raises(ValueError, match="not both"):
399
- vf.ReferenceJudgeConfig(prompt="inline", prompt_file=file)
387
+ vf.ReferenceJudge(vf.ReferenceJudgeConfig(prompt=tmp_path / "missing.txt"))
400
388
 
401
389
 
402
390
  # --- reference input/verdict knobs ------------------------------------------------------------
@@ -5,7 +5,7 @@ from collections.abc import Sequence
5
5
  from pathlib import Path
6
6
  from typing import Any
7
7
 
8
- from pydantic import BaseModel, SerializeAsAny, model_validator
8
+ from pydantic import BaseModel, SerializeAsAny
9
9
 
10
10
  from verifiers.v1.clients import BaseClientConfig
11
11
  from verifiers.v1.types import ID, SamplingConfig
@@ -20,15 +20,8 @@ class JudgeConfig(BaseClientConfig):
20
20
  weight: float = 1.0
21
21
  model: str = "openai/gpt-5.4-nano"
22
22
  sampling: SamplingConfig = SamplingConfig()
23
- prompt: str | None = None
24
- prompt_file: Path | None = None
25
- """Prompt file override, mutually exclusive with `prompt`."""
26
-
27
- @model_validator(mode="after")
28
- def check_prompt_source(self) -> "JudgeConfig":
29
- if self.prompt is not None and self.prompt_file is not None:
30
- raise ValueError("set `prompt` or `prompt_file`, not both")
31
- return self
23
+ prompt: Path | None = None
24
+ """File whose text overrides the judge's default prompt template."""
32
25
 
33
26
 
34
27
  Judges = list[SerializeAsAny[JudgeConfig]]
@@ -1,5 +1,7 @@
1
1
  """The taskset plugin's config: which rows load, under `--env.taskset.*`."""
2
2
 
3
+ from pathlib import Path
4
+
3
5
  from pydantic import SerializeAsAny
4
6
  from pydantic_config import BaseConfig
5
7
 
@@ -14,6 +16,9 @@ class TasksetConfig(BaseConfig):
14
16
  positional `eval <taskset-id>`)."""
15
17
  task: SerializeAsAny[TaskConfig] = TaskConfig()
16
18
  """Config passed to each task, under `--env.taskset.task.*`."""
19
+ system_prompt: Path | None = None
20
+ """File whose text overrides each task's `TaskData.system_prompt` in
21
+ `Taskset.select` (e.g. a GEPA `best_system_prompt.txt`)."""
17
22
 
18
23
  @property
19
24
  def name(self) -> str:
@@ -180,41 +180,31 @@ class JudgeTask(vf.Task):
180
180
  class JudgeTaskConfig(vf.BaseConfig):
181
181
  """The judge's minted task: the grading policy and what lands in its box."""
182
182
 
183
- prompt: Path | str | None = None
184
- """Grading-policy override: inline text, or a policy file (a value ending in
185
- `.md`/`.txt` is read from disk). Replaces only the policy body — the verdict
186
- contract and workspace note are always appended, so a custom policy cannot
187
- break verdict scraping. May reference `{prompt}` (the solver task's prompt);
188
- if it doesn't, the task statement is appended after the policy."""
189
- hint: Path | str | None = None
190
- """Optional hints injected as their own section (inline text or a `.md`/
191
- `.txt` file): task-family pointers into the trace or box — e.g. for math,
192
- where the reference answer lives in the record; for SWE, to diff the repo
193
- or read `info.patch`."""
183
+ prompt: Path | None = None
184
+ """Grading-policy file. Replaces only the policy body the verdict contract
185
+ and workspace note are always appended. May reference `{prompt}` (the solver
186
+ task's prompt); if it doesn't, the task statement is appended after."""
187
+ hint: Path | None = None
188
+ """Optional hints file injected as their own section: task-family pointers
189
+ into the trace or box e.g. for math, where the reference answer lives in
190
+ the record; for SWE, to diff the repo or read `info.patch`."""
194
191
  rubric: Path | None = None
195
192
  """Criteria the judge grades against: a `.toml`/`.json` file with a
196
193
  `criteria` list — the plugged rubric judge's format, so the same rubric
197
194
  files work for both. None grades the single built-in `solved` criterion."""
198
195
 
199
- @staticmethod
200
- def _resolve(value: Path | str) -> str:
201
- path = Path(value)
202
- if isinstance(value, Path) or path.suffix in (".md", ".txt"):
203
- return path.read_text(encoding="utf-8")
204
- return str(value)
205
-
206
196
  def build_prompt(self) -> str:
207
197
  if self.prompt is None:
208
198
  return GRADE_PROMPT + "\n\n" + TASK_SECTION
209
- return self._resolve(self.prompt)
199
+ return self.prompt.read_text()
210
200
 
211
201
  def build_hint(self) -> str | None:
212
- return self._resolve(self.hint) if self.hint is not None else None
202
+ return self.hint.read_text() if self.hint is not None else None
213
203
 
214
204
  def criteria(self) -> list[Criterion]:
215
205
  if self.rubric is None:
216
206
  return [SOLVED]
217
- text = self.rubric.read_text(encoding="utf-8")
207
+ text = self.rubric.read_text()
218
208
  data = (
219
209
  tomllib.loads(text)
220
210
  if self.rubric.suffix.lower() == ".toml"
@@ -68,14 +68,10 @@ class GEPAAdapter:
68
68
  )
69
69
 
70
70
  async def _run_batch(self, batch: list[int], system_prompt: str) -> list[Episode]:
71
- # Inject the candidate by rebuilding each Task around a data row with the new
72
- # system_prompt (TaskData is frozen; behavior/config carry over unchanged).
73
- tasks = [
74
- type(t)(
75
- t.data.model_copy(update={"system_prompt": system_prompt}), t.config
76
- )
77
- for t in (self.tasks[idx] for idx in batch)
78
- ]
71
+ # Inject the candidate as a copy of each base task with its system_prompt overridden
72
+ # (`with_system_prompt` copies rather than reconstructs, so subclass state survives and
73
+ # the shared base task in `self.tasks` is left untouched for the next candidate).
74
+ tasks = [self.tasks[idx].with_system_prompt(system_prompt) for idx in batch]
79
75
  slots = [slot for task in tasks for slot in self.env.slots(task)]
80
76
  results = await asyncio.gather(
81
77
  *(
@@ -105,7 +105,20 @@ def run_gepa(env: Env, config: GEPAConfig) -> GEPAResult:
105
105
  "skip_perfect_score": False,
106
106
  "logger": _GEPALog(),
107
107
  }
108
- return optimize(**optimize_kwargs)
108
+ result = optimize(**optimize_kwargs)
109
+ if run_dir is not None:
110
+ # Persist the winning prompt as a plain file so it can be handed straight to
111
+ # eval/train via `--env.taskset.system-prompt` (see TasksetConfig).
112
+ candidate = result.best_candidate
113
+ best = (
114
+ candidate.get("system_prompt", "")
115
+ if isinstance(candidate, dict)
116
+ else str(candidate)
117
+ )
118
+ best_path = run_dir / "best_system_prompt.txt"
119
+ best_path.write_text(best, encoding="utf-8")
120
+ logger.info("best system prompt: %s", best_path)
121
+ return result
109
122
  finally:
110
123
  loop.run_until_complete(serving.__aexit__(None, None, None))
111
124
  finally:
@@ -116,13 +116,13 @@ def judge_config_cls(cls: type) -> type[JudgeConfig]:
116
116
 
117
117
  class Judge(Generic[ParsedT, ConfigT]):
118
118
  prompt: str | None = None
119
- """Default prompt template, overridden by config."""
119
+ """Default prompt template, overridden by a config `prompt` file."""
120
120
  schema: type[BaseModel] | None = None
121
121
 
122
122
  def __init__(self, config: ConfigT | None = None) -> None:
123
123
  self.config = cast(ConfigT, config or judge_config_cls(type(self))())
124
- if self.config.prompt_file is not None:
125
- self.prompt = self.config.prompt_file.read_text(encoding="utf-8")
124
+ if self.config.prompt is not None:
125
+ self.prompt = self.config.prompt.read_text()
126
126
 
127
127
  @property
128
128
  def reward_name(self) -> str:
@@ -132,7 +132,7 @@ class Judge(Generic[ParsedT, ConfigT]):
132
132
  return judge_key(self.config) or fallback or "judge"
133
133
 
134
134
  def build_messages(self, **fields: Any) -> str | Messages:
135
- template = self.config.prompt or self.prompt
135
+ template = self.prompt
136
136
  if template is None:
137
137
  raise ValueError(
138
138
  f"{type(self).__name__} has no `prompt`; set it or override build_messages"
@@ -24,10 +24,11 @@ wraps it in the declared `Task` — one task type per taskset.
24
24
 
25
25
  from __future__ import annotations
26
26
 
27
+ import copy
27
28
  import inspect
28
29
  import logging
29
30
  from collections.abc import Mapping
30
- from typing import TYPE_CHECKING, ClassVar, Generic
31
+ from typing import TYPE_CHECKING, ClassVar, Generic, Self
31
32
 
32
33
  from pydantic import ConfigDict, Field
33
34
  from pydantic_config import BaseConfig
@@ -197,6 +198,15 @@ class Task(Generic[DataT, StateT, ConfigT]):
197
198
  self.data = data
198
199
  self.config = config if config is not None else task_config_cls(type(self))()
199
200
 
201
+ def with_system_prompt(self, system_prompt: str) -> Self:
202
+ """A shallow copy of this task with `data.system_prompt` overridden. Copies the
203
+ instance instead of reconstructing via `type(self)(...)`, so a subclass with a
204
+ non-`(data, config)` constructor or extra load-time state keeps it. Used to apply the
205
+ config-layer / GEPA system prompt (see `TasksetConfig` and `verifiers.v1.gepa`)."""
206
+ clone = copy.copy(self)
207
+ clone.data = self.data.model_copy(update={"system_prompt": system_prompt})
208
+ return clone
209
+
200
210
  def plugged_judges(self) -> list[Judge]:
201
211
  from verifiers.v1.loaders import load_judge
202
212
 
@@ -79,10 +79,15 @@ class Taskset(Generic[TaskT, TasksetConfigT]):
79
79
  "taking the first %d generated tasks",
80
80
  num_tasks,
81
81
  )
82
- return list(itertools.islice(self.load(), num_tasks))
82
+ shuffle = False # can't materialize the whole taskset to sample from
83
83
  if shuffle:
84
- return sample(self.load(), shuffle=True, limit=num_tasks)
85
- return list(itertools.islice(self.load(), num_tasks))
84
+ tasks = sample(self.load(), shuffle=True, limit=num_tasks)
85
+ else:
86
+ tasks = list(itertools.islice(self.load(), num_tasks))
87
+ if self.config.system_prompt is not None:
88
+ override = self.config.system_prompt.read_text()
89
+ tasks = [t.with_system_prompt(override) for t in tasks]
90
+ return tasks
86
91
 
87
92
  def server_config(self, server_cls: type) -> BaseConfig:
88
93
  """The config a `tools` entry is built with, resolved off `self.config` (the
@@ -61,7 +61,6 @@ class LeanTaskConfig(TaskConfig):
61
61
  class LeanConfig(TasksetConfig):
62
62
  dataset: LeanDatasetConfig
63
63
  docker_image: str = DEFAULT_DOCKER_IMAGE
64
- system_prompt: str = DEFAULT_SYSTEM_PROMPT
65
64
  task: LeanTaskConfig = LeanTaskConfig()
66
65
 
67
66
 
@@ -187,7 +186,7 @@ class LeanTaskset(Taskset[LeanTask, LeanConfig]):
187
186
  idx=index,
188
187
  name=str(name) if name else f"task_{index:05d}",
189
188
  prompt=self._build_prompt(formal_statement, header),
190
- system_prompt=config.system_prompt,
189
+ system_prompt=DEFAULT_SYSTEM_PROMPT,
191
190
  image=config.docker_image,
192
191
  workdir=config.task.lean_project_path,
193
192
  resources=resources,
File without changes