verifiers 0.3.2.dev165__tar.gz → 0.3.2.dev167__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (221) hide show
  1. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_trace.py +21 -19
  3. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/dialects/responses.py +15 -0
  4. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/graph.py +4 -3
  5. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/rlm/harness.py +1 -1
  6. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/semantic.py +6 -26
  7. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/trace.py +0 -22
  8. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/.gitignore +0 -0
  9. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/LICENSE +0 -0
  10. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/README.md +0 -0
  11. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/pyproject.toml +0 -0
  12. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/conftest.py +0 -0
  13. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  14. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/duet_v1.py +0 -0
  15. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  16. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  17. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  18. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  19. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/echo_v1.py +0 -0
  20. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/pyproject.toml +0 -0
  21. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  22. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_color_codeword_tasks.py +0 -0
  23. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_configs.py +0 -0
  24. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_e2e.py +0 -0
  25. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_envs.py +0 -0
  26. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_graph.py +0 -0
  27. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_judges.py +0 -0
  28. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_platform_run.py +0 -0
  29. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_scoring.py +0 -0
  30. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_serve_delta.py +0 -0
  31. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/tests/v1/test_taskset.py +0 -0
  32. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/__init__.py +0 -0
  33. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/__init__.py +0 -0
  34. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/acp/__init__.py +0 -0
  35. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/acp/runner.py +0 -0
  36. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/agent.py +0 -0
  37. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/__init__.py +0 -0
  38. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  39. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/dashboard/base.py +0 -0
  40. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/dashboard/eval.py +0 -0
  41. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/dashboard/replay.py +0 -0
  42. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/dashboard/validate.py +0 -0
  43. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/debug.py +0 -0
  44. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/eval/__init__.py +0 -0
  45. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/eval/hint.py +0 -0
  46. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/eval/main.py +0 -0
  47. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/eval/resume.py +0 -0
  48. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/eval/runner.py +0 -0
  49. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/gepa.py +0 -0
  50. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/init.py +0 -0
  51. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/output.py +0 -0
  52. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/replay.py +0 -0
  53. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/resolve.py +0 -0
  54. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/resume.py +0 -0
  55. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/cli/validate.py +0 -0
  56. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/clients/__init__.py +0 -0
  57. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/clients/base.py +0 -0
  58. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/clients/client.py +0 -0
  59. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/clients/eval.py +0 -0
  60. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/clients/train.py +0 -0
  61. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/__init__.py +0 -0
  62. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/agent.py +0 -0
  63. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/__init__.py +0 -0
  64. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/debug.py +0 -0
  65. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/env.py +0 -0
  66. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/eval.py +0 -0
  67. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/init.py +0 -0
  68. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/replay.py +0 -0
  69. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/cli/validate.py +0 -0
  70. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/client.py +0 -0
  71. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/env.py +0 -0
  72. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/harness.py +0 -0
  73. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/judge.py +0 -0
  74. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/retries.py +0 -0
  75. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/runtime.py +0 -0
  76. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/select.py +0 -0
  77. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/serve.py +0 -0
  78. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/task.py +0 -0
  79. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/configs/taskset.py +0 -0
  80. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/dialects/__init__.py +0 -0
  81. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/dialects/anthropic.py +0 -0
  82. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/dialects/base.py +0 -0
  83. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/dialects/chat.py +0 -0
  84. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/env.py +0 -0
  85. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/__init__.py +0 -0
  86. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  87. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  88. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  89. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/best_of_n/env.py +0 -0
  90. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  91. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  92. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  93. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  94. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/single_agent/env.py +0 -0
  95. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  96. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/envs/user_sim/env.py +0 -0
  97. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/episode.py +0 -0
  98. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/errors.py +0 -0
  99. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/__init__.py +0 -0
  100. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/adapter.py +0 -0
  101. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/config.py +0 -0
  102. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/dataset.py +0 -0
  103. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/reflection.py +0 -0
  104. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/gepa/runner.py +0 -0
  105. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harness.py +0 -0
  106. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/__init__.py +0 -0
  107. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  108. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/bash/harness.py +0 -0
  109. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  110. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  111. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  112. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  113. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  114. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  115. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/codex/gate.mjs +0 -0
  116. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/codex/harness.py +0 -0
  117. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  118. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  119. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  120. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  121. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  122. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  123. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  124. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  125. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/node.py +0 -0
  126. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/null/__init__.py +0 -0
  127. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/null/harness.py +0 -0
  128. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  129. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  130. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  131. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/pi/gate.mjs +0 -0
  132. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/pi/harness.py +0 -0
  133. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  134. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  135. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  136. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  137. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  138. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  139. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  140. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  141. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/core.py +0 -0
  142. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/install.py +0 -0
  143. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/launch.py +0 -0
  144. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  145. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/__init__.py +0 -0
  146. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/base.py +0 -0
  147. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/pool.py +0 -0
  148. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/server.py +0 -0
  149. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  150. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/tunnel/base.py +0 -0
  151. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/tunnel/custom.py +0 -0
  152. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/interception/tunnel/prime.py +0 -0
  153. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judge.py +0 -0
  154. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judges/__init__.py +0 -0
  155. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judges/reference.py +0 -0
  156. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judges/reference.txt +0 -0
  157. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judges/rubric.py +0 -0
  158. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/judges/rubric.txt +0 -0
  159. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/mcp/__init__.py +0 -0
  160. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/mcp/launch.py +0 -0
  161. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/mcp/server.py +0 -0
  162. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/mcp/toolset.py +0 -0
  163. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/rollout.py +0 -0
  164. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/__init__.py +0 -0
  165. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/apptainer.py +0 -0
  166. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/base.py +0 -0
  167. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/container.py +0 -0
  168. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  169. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/docker/egress.py +0 -0
  170. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/limiters.py +0 -0
  171. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/modal.py +0 -0
  172. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/prime.py +0 -0
  173. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/runtimes/subprocess.py +0 -0
  174. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/__init__.py +0 -0
  175. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/client.py +0 -0
  176. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/delta.py +0 -0
  177. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/encoding.py +0 -0
  178. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/pool.py +0 -0
  179. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/server.py +0 -0
  180. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/serve/types.py +0 -0
  181. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/session.py +0 -0
  182. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/state.py +0 -0
  183. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/task.py +0 -0
  184. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/taskset.py +0 -0
  185. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/__init__.py +0 -0
  186. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  187. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/harbor/compose.py +0 -0
  188. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/harbor/env.py +0 -0
  189. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  190. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  191. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  192. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  193. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  194. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  195. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  196. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  197. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  198. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  199. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  200. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/types.py +0 -0
  201. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/__init__.py +0 -0
  202. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/aio.py +0 -0
  203. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/artifacts.py +0 -0
  204. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/compile.py +0 -0
  205. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/decorators.py +0 -0
  206. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/format.py +0 -0
  207. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/generic.py +0 -0
  208. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/git.py +0 -0
  209. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/image.py +0 -0
  210. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/interrupt.py +0 -0
  211. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/loaders.py +0 -0
  212. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/logging.py +0 -0
  213. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/memory.py +0 -0
  214. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/paths.py +0 -0
  215. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/platform.py +0 -0
  216. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/prime.py +0 -0
  217. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/retries.py +0 -0
  218. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/scope.py +0 -0
  219. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/score.py +0 -0
  220. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/trace_store.py +0 -0
  221. {verifiers-0.3.2.dev165 → verifiers-0.3.2.dev167}/verifiers/v1/utils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: verifiers
3
- Version: 0.3.2.dev165
3
+ Version: 0.3.2.dev167
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
@@ -487,7 +487,7 @@ def test_semantic_edge_uses_last_committed_retry_node():
487
487
  assert tr.nodes[3].semantic_parents == [vf.ParentLink(node=2, type="continuation")]
488
488
 
489
489
 
490
- def test_semantic_edge_cycle_is_rejected_without_partial_mutation():
490
+ def test_semantic_edge_loops_attach_and_invalid_sets_do_not_partially_mutate():
491
491
  tr = vf.Trace(
492
492
  agent=vf.AgentInfo(config=vf.AgentConfig()),
493
493
  task=vf.TraceTask(type="Task", data=vf.TaskData(idx=0, prompt="q")),
@@ -507,21 +507,21 @@ def test_semantic_edge_cycle_is_rejected_without_partial_mutation():
507
507
  ],
508
508
  )
509
509
 
510
- with pytest.raises(ValueError, match="cycle in the message graph"):
511
- tr.add_semantic_edges(
512
- vf.SemanticEdgeSet(
513
- edges=[
514
- vf.SemanticEdge(
515
- source_request_id="second",
516
- target_request_id="first",
517
- type="custom",
518
- )
519
- ]
520
- )
521
- )
522
-
510
+ loop = vf.SemanticEdge(
511
+ source_request_id="second", target_request_id="first", type="subagent_cancel"
512
+ )
513
+ unknown = vf.SemanticEdge(
514
+ source_request_id="first", target_request_id="missing", type="custom"
515
+ )
516
+ with pytest.raises(ValueError, match="has no committed message node"):
517
+ tr.add_semantic_edges(vf.SemanticEdgeSet(edges=[loop, unknown]))
523
518
  assert all(not node.semantic_parents for node in tr.nodes)
524
519
 
520
+ tr.add_semantic_edges(vf.SemanticEdgeSet(edges=[loop]))
521
+ assert tr.nodes[1].semantic_parents == [
522
+ vf.ParentLink(node=3, type="subagent_cancel")
523
+ ]
524
+
525
525
 
526
526
  def test_acp_info_is_validated_and_stripped():
527
527
  headers = {
@@ -689,7 +689,7 @@ def test_acp_derives_compaction_attempt_branch_trainability():
689
689
  assert restored_branches["accepted summary"].trainable is True
690
690
 
691
691
 
692
- def test_semantic_edge_set_rejects_duplicate_self_and_cyclic_edges():
692
+ def test_semantic_edge_set_rejects_duplicate_and_self_edges_but_accepts_loops():
693
693
  edge_set = _semantic_edge_set().model_dump(mode="json")
694
694
  edge_set["edges"].append(edge_set["edges"][0])
695
695
  with pytest.raises(ValueError, match="duplicate semantic edge"):
@@ -708,16 +708,18 @@ def test_semantic_edge_set_rejects_duplicate_self_and_cyclic_edges():
708
708
  }
709
709
  )
710
710
 
711
+ # A parent cancels the child whose report it just read: the cancel lands on that child turn.
711
712
  edge_set = _semantic_edge_set().model_dump(mode="json")
712
713
  edge_set["edges"].append(
713
714
  {
714
715
  "source_request_id": "root-after",
715
- "target_request_id": "root-turn",
716
- "type": "custom",
716
+ "target_request_id": "child-turn",
717
+ "type": "subagent_cancel",
717
718
  }
718
719
  )
719
- with pytest.raises(ValueError, match="semantic edge cycle"):
720
- vf.SemanticEdgeSet.model_validate(edge_set)
720
+ assert len(vf.SemanticEdgeSet.model_validate(edge_set).edges) == len(
721
+ edge_set["edges"]
722
+ )
721
723
 
722
724
 
723
725
  def test_semantic_edge_set_accepts_deep_acyclic_chain():
@@ -393,6 +393,21 @@ class ResponsesDialect(Dialect[OpenAIResponse]):
393
393
  safe_input.append(item)
394
394
  continue
395
395
  kind = item.get("type")
396
+ if (
397
+ kind == "reasoning"
398
+ and not item.get("encrypted_content")
399
+ and isinstance(content := item.get("content"), list)
400
+ and content
401
+ and all(
402
+ isinstance(part, dict)
403
+ and part.get("type") == "reasoning_text"
404
+ and isinstance(part.get("text"), str)
405
+ for part in content
406
+ )
407
+ and any(part["text"] for part in content)
408
+ ):
409
+ # Inline reasoning needs no provider-side history lookup.
410
+ item.pop("id", None)
396
411
  if kind in ("additional_tools", "tool_search_output"):
397
412
  if blocked := request_filter.blocked(
398
413
  {**item, "tools": []}, item_path
@@ -90,10 +90,11 @@ class MessageNode(BaseModel):
90
90
  tools: list[Tool] = Field(default_factory=list, exclude_if=lambda tools: not tools)
91
91
  """Tools rendered into this branch's prompt. Populated only on root nodes."""
92
92
  semantic_parents: list[ParentLink] = Field(default_factory=list)
93
- """Additional harness-declared parents in the semantic execution graph.
93
+ """Typed incoming edges from other turns, declared by the harness (for example
94
+ ``subagent_return`` or ``subagent_cancel``).
94
95
 
95
- Unlike ``parent``, these links do not imply an exact token prefix and therefore do
96
- not affect physical branch construction. A list permits multiple parents of the same
96
+ They record causal links, not ancestry: unlike ``parent`` they imply no token prefix,
97
+ do not affect physical branch construction, and may form loops. A list permits multiple parents of the same
97
98
  type, supports incremental appends, and preserves their advertised wire order; edge
98
99
  application prevents duplicate ``(node, type)`` links.
99
100
  """
@@ -69,7 +69,7 @@ class CompactionConfig(BaseConfig):
69
69
 
70
70
  class RLMHarnessConfig(HarnessConfig):
71
71
  version: str = Field(
72
- default="f18f10800f86f13913e19ef930abe5fcde4aa90f", min_length=1
72
+ default="c38e20b60c90bbf625274d3fde2b2a384f390a66", min_length=1
73
73
  )
74
74
  """Git ref (branch, tag, or commit) of nano-rlm to install. Must know every
75
75
  field this harness puts on the wire, i.e. be at least the default ref."""
@@ -60,11 +60,14 @@ class ParentLink(BaseModel):
60
60
 
61
61
 
62
62
  class SemanticEdgeSet(BaseModel):
63
- """A harness-published set of semantic edges over logical request IDs.
63
+ """A harness-published list of typed edges between logical request IDs.
64
+
65
+ Each edge records that one turn caused or fed another. They are not ancestry, so
66
+ they may form loops: a cancel can land on the child turn whose report triggered it.
64
67
 
65
68
  Edge labels are intentionally extensible. Initial harnesses use ``continuation``,
66
- ``compaction_attempt``, ``compaction``, ``subagent_call``, and ``subagent_return``;
67
- consumers must preserve unknown labels.
69
+ ``compaction_attempt``, ``compaction``, ``subagent_call``, ``subagent_return``,
70
+ ``agent_message``, and ``subagent_cancel``; consumers must preserve unknown labels.
68
71
  """
69
72
 
70
73
  model_config = ConfigDict(extra="forbid", strict=True)
@@ -74,8 +77,6 @@ class SemanticEdgeSet(BaseModel):
74
77
  @model_validator(mode="after")
75
78
  def validate_edges(self) -> SemanticEdgeSet:
76
79
  identities: set[tuple[str, str, str]] = set()
77
- children: dict[str, list[str]] = {}
78
- nodes: set[str] = set()
79
80
  for edge in self.edges:
80
81
  identity = (
81
82
  edge.source_request_id,
@@ -85,27 +86,6 @@ class SemanticEdgeSet(BaseModel):
85
86
  if identity in identities:
86
87
  raise ValueError(f"duplicate semantic edge: {identity!r}")
87
88
  identities.add(identity)
88
- children.setdefault(edge.source_request_id, []).append(
89
- edge.target_request_id
90
- )
91
- nodes.update((edge.source_request_id, edge.target_request_id))
92
-
93
- indegree = dict.fromkeys(nodes, 0)
94
- for targets in children.values():
95
- for target in targets:
96
- indegree[target] += 1
97
-
98
- stack = [node for node, degree in indegree.items() if degree == 0]
99
- visited = 0
100
- while stack:
101
- node = stack.pop()
102
- visited += 1
103
- for child in children.get(node, ()):
104
- indegree[child] -= 1
105
- if indegree[child] == 0:
106
- stack.append(child)
107
- if visited != len(nodes):
108
- raise ValueError("semantic edge cycle detected")
109
89
  return self
110
90
 
111
91
 
@@ -568,7 +568,6 @@ class Trace(BaseModel, Generic[DataT, StateT, AgentConfigT]):
568
568
 
569
569
  resolved_identities: set[tuple[int, int, str]] = set()
570
570
  additions: list[tuple[int, ParentLink]] = []
571
- pending_parents: dict[int, list[ParentLink]] = {}
572
571
  for edge in edge_set.edges:
573
572
  endpoints: list[int] = []
574
573
  for request_id in (
@@ -592,28 +591,7 @@ class Trace(BaseModel, Generic[DataT, StateT, AgentConfigT]):
592
591
  if link in self.nodes[target].semantic_parents:
593
592
  continue
594
593
 
595
- # Adding source -> target creates a cycle exactly when target is already an
596
- # ancestor of source. Walk parent links directly so existing nodes and links
597
- # are never rebuilt as cumulative ACP edge sets arrive.
598
- stack = [source]
599
- visited: set[int] = set()
600
- while stack:
601
- node_id = stack.pop()
602
- if node_id == target:
603
- raise ValueError(
604
- "semantic edges create a cycle in the message graph"
605
- )
606
- if node_id in visited:
607
- continue
608
- visited.add(node_id)
609
- node = self.nodes[node_id]
610
- if node.parent is not None:
611
- stack.append(node.parent)
612
- stack.extend(parent.node for parent in node.semantic_parents)
613
- stack.extend(parent.node for parent in pending_parents.get(node_id, ()))
614
-
615
594
  additions.append((target, link))
616
- pending_parents.setdefault(target, []).append(link)
617
595
 
618
596
  for target, link in additions:
619
597
  self.nodes[target].semantic_parents.append(link)