verifiers 0.3.2.dev102__tar.gz → 0.3.2.dev103__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 (218) hide show
  1. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/PKG-INFO +1 -1
  2. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_serve_delta.py +14 -1
  3. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/delta.py +49 -4
  4. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/.gitignore +0 -0
  5. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/LICENSE +0 -0
  6. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/README.md +0 -0
  7. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/pyproject.toml +0 -0
  8. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/conftest.py +0 -0
  9. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/counter_tool_v1.py +0 -0
  10. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/duet_v1.py +0 -0
  11. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/echo_acp_resume_v1.py +0 -0
  12. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/echo_agentic_v1.py +0 -0
  13. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/echo_tool_v1.py +0 -0
  14. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/echo_user_sim_v1.py +0 -0
  15. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/echo_v1.py +0 -0
  16. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/pyproject.toml +0 -0
  17. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/fixtures/tool_response_image_v1.py +0 -0
  18. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_color_codeword_tasks.py +0 -0
  19. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_configs.py +0 -0
  20. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_e2e.py +0 -0
  21. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_envs.py +0 -0
  22. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_graph.py +0 -0
  23. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_judges.py +0 -0
  24. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_platform_run.py +0 -0
  25. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_scoring.py +0 -0
  26. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_taskset.py +0 -0
  27. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/tests/v1/test_trace.py +0 -0
  28. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/__init__.py +0 -0
  29. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/cli/commands/init.py +0 -0
  30. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/__init__.py +0 -0
  31. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/acp/__init__.py +0 -0
  32. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/acp/runner.py +0 -0
  33. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/agent.py +0 -0
  34. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/__init__.py +0 -0
  35. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/dashboard/__init__.py +0 -0
  36. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/dashboard/base.py +0 -0
  37. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/dashboard/eval.py +0 -0
  38. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/dashboard/replay.py +0 -0
  39. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/dashboard/validate.py +0 -0
  40. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/debug.py +0 -0
  41. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/eval/__init__.py +0 -0
  42. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/eval/hint.py +0 -0
  43. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/eval/main.py +0 -0
  44. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/eval/resume.py +0 -0
  45. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/eval/runner.py +0 -0
  46. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/gepa.py +0 -0
  47. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/init.py +0 -0
  48. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/output.py +0 -0
  49. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/replay.py +0 -0
  50. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/resolve.py +0 -0
  51. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/resume.py +0 -0
  52. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/cli/validate.py +0 -0
  53. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/clients/__init__.py +0 -0
  54. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/clients/base.py +0 -0
  55. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/clients/client.py +0 -0
  56. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/clients/eval.py +0 -0
  57. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/clients/train.py +0 -0
  58. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/__init__.py +0 -0
  59. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/agent.py +0 -0
  60. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/__init__.py +0 -0
  61. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/debug.py +0 -0
  62. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/env.py +0 -0
  63. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/eval.py +0 -0
  64. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/init.py +0 -0
  65. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/replay.py +0 -0
  66. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/cli/validate.py +0 -0
  67. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/client.py +0 -0
  68. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/env.py +0 -0
  69. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/harness.py +0 -0
  70. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/judge.py +0 -0
  71. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/retries.py +0 -0
  72. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/runtime.py +0 -0
  73. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/serve.py +0 -0
  74. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/task.py +0 -0
  75. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/configs/taskset.py +0 -0
  76. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/dialects/__init__.py +0 -0
  77. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/dialects/anthropic.py +0 -0
  78. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/dialects/base.py +0 -0
  79. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/dialects/chat.py +0 -0
  80. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/dialects/responses.py +0 -0
  81. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/env.py +0 -0
  82. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/__init__.py +0 -0
  83. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/agentic_judge/__init__.py +0 -0
  84. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/agentic_judge/env.py +0 -0
  85. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/best_of_n/__init__.py +0 -0
  86. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/best_of_n/env.py +0 -0
  87. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/isolated_verifier/__init__.py +0 -0
  88. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/isolated_verifier/env.py +0 -0
  89. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/shared_agentic_judge/__init__.py +0 -0
  90. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/single_agent/__init__.py +0 -0
  91. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/single_agent/env.py +0 -0
  92. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/user_sim/__init__.py +0 -0
  93. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/envs/user_sim/env.py +0 -0
  94. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/episode.py +0 -0
  95. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/errors.py +0 -0
  96. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/__init__.py +0 -0
  97. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/adapter.py +0 -0
  98. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/config.py +0 -0
  99. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/dataset.py +0 -0
  100. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/reflection.py +0 -0
  101. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/gepa/runner.py +0 -0
  102. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/graph.py +0 -0
  103. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harness.py +0 -0
  104. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/__init__.py +0 -0
  105. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/bash/__init__.py +0 -0
  106. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/bash/harness.py +0 -0
  107. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/browser_use/__init__.py +0 -0
  108. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/browser_use/harness.py +0 -0
  109. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/browser_use/program.py +0 -0
  110. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/claude_code/__init__.py +0 -0
  111. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/claude_code/harness.py +0 -0
  112. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/codex/__init__.py +0 -0
  113. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/codex/harness.py +0 -0
  114. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/hermes_agent/__init__.py +0 -0
  115. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/hermes_agent/harness.py +0 -0
  116. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/hermes_agent/program.py +0 -0
  117. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/kimi_code/__init__.py +0 -0
  118. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/kimi_code/harness.py +0 -0
  119. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/mini_swe_agent/__init__.py +0 -0
  120. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/mini_swe_agent/harness.py +0 -0
  121. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/mini_swe_agent/program.py +0 -0
  122. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/node.py +0 -0
  123. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/null/__init__.py +0 -0
  124. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/null/harness.py +0 -0
  125. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/openclaw/__init__.py +0 -0
  126. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/openclaw/harness.py +0 -0
  127. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/pi/__init__.py +0 -0
  128. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/pi/harness.py +0 -0
  129. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/prime_agent/__init__.py +0 -0
  130. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/prime_agent/harness.py +0 -0
  131. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/rlm/__init__.py +0 -0
  132. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/rlm/harness.py +0 -0
  133. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/terminus_2/__init__.py +0 -0
  134. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/terminus_2/harness.py +0 -0
  135. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/terminus_2/program.py +0 -0
  136. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/__init__.py +0 -0
  137. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/compaction.py +0 -0
  138. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/core.py +0 -0
  139. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/install.py +0 -0
  140. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/launch.py +0 -0
  141. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/harnesses/utils/mcp.py +0 -0
  142. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/__init__.py +0 -0
  143. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/base.py +0 -0
  144. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/pool.py +0 -0
  145. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/server.py +0 -0
  146. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/tool.py +0 -0
  147. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/tunnel/__init__.py +0 -0
  148. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/tunnel/base.py +0 -0
  149. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/tunnel/custom.py +0 -0
  150. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/interception/tunnel/prime.py +0 -0
  151. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judge.py +0 -0
  152. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judges/__init__.py +0 -0
  153. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judges/reference.py +0 -0
  154. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judges/reference.txt +0 -0
  155. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judges/rubric.py +0 -0
  156. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/judges/rubric.txt +0 -0
  157. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/mcp/__init__.py +0 -0
  158. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/mcp/launch.py +0 -0
  159. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/mcp/server.py +0 -0
  160. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/mcp/toolset.py +0 -0
  161. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/rollout.py +0 -0
  162. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/__init__.py +0 -0
  163. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/base.py +0 -0
  164. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/docker/__init__.py +0 -0
  165. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/docker/egress.py +0 -0
  166. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/limiters.py +0 -0
  167. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/modal.py +0 -0
  168. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/prime.py +0 -0
  169. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/runtimes/subprocess.py +0 -0
  170. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/semantic.py +0 -0
  171. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/__init__.py +0 -0
  172. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/client.py +0 -0
  173. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/encoding.py +0 -0
  174. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/pool.py +0 -0
  175. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/server.py +0 -0
  176. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/serve/types.py +0 -0
  177. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/session.py +0 -0
  178. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/state.py +0 -0
  179. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/task.py +0 -0
  180. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/taskset.py +0 -0
  181. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/__init__.py +0 -0
  182. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/harbor/__init__.py +0 -0
  183. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/harbor/env.py +0 -0
  184. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/harbor/taskset.py +0 -0
  185. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/harbor/toolset.py +0 -0
  186. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/lean/__init__.py +0 -0
  187. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/lean/scoring.py +0 -0
  188. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/lean/taskset.py +0 -0
  189. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/nemo_gym/__init__.py +0 -0
  190. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/nemo_gym/response.py +0 -0
  191. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/nemo_gym/server.py +0 -0
  192. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/nemo_gym/taskset.py +0 -0
  193. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/nemo_gym/toolset.py +0 -0
  194. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/openenv/__init__.py +0 -0
  195. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/openenv/taskset.py +0 -0
  196. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/textarena/__init__.py +0 -0
  197. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/tasksets/textarena/taskset.py +0 -0
  198. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/trace.py +0 -0
  199. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/types.py +0 -0
  200. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/__init__.py +0 -0
  201. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/aio.py +0 -0
  202. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/artifacts.py +0 -0
  203. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/compile.py +0 -0
  204. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/decorators.py +0 -0
  205. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/format.py +0 -0
  206. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/generic.py +0 -0
  207. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/git.py +0 -0
  208. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/image.py +0 -0
  209. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/interrupt.py +0 -0
  210. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/loaders.py +0 -0
  211. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/logging.py +0 -0
  212. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/memory.py +0 -0
  213. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/paths.py +0 -0
  214. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/platform.py +0 -0
  215. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/prime.py +0 -0
  216. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/retries.py +0 -0
  217. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/verifiers/v1/utils/score.py +0 -0
  218. {verifiers-0.3.2.dev102 → verifiers-0.3.2.dev103}/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.dev102
3
+ Version: 0.3.2.dev103
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
@@ -4,6 +4,7 @@ the episode the worker finished with."""
4
4
  import asyncio
5
5
  import copy
6
6
 
7
+ import numpy as np
7
8
  import pytest
8
9
 
9
10
  import verifiers.v1 as vf
@@ -176,7 +177,8 @@ async def test_pending_preview_streams_and_clears_on_commit():
176
177
 
177
178
 
178
179
  @pytest.mark.asyncio
179
- async def test_deltas_stream_once_and_reassemble_the_episode():
180
+ @pytest.mark.parametrize("routing_dtype", [np.uint8, np.uint16])
181
+ async def test_deltas_stream_once_and_reassemble_the_episode(routing_dtype):
180
182
  slot = Slot()
181
183
  frames: list[bytes] = []
182
184
 
@@ -192,8 +194,15 @@ async def test_deltas_stream_once_and_reassemble_the_episode():
192
194
  await settle()
193
195
  assert len(frames) == 1, "the mint and the boot span coalesce into one delta"
194
196
  add_turn(trace, "a1")
197
+ trace.nodes[1].routed_experts = np.arange(6, dtype=np.uint8).reshape(3, 2, 1)
195
198
  await settle()
196
199
  add_turn(trace, "a2")
200
+ # The next prefill corrects the previous turn's last routing row, potentially
201
+ # widening its dtype. The previous node has already crossed the wire.
202
+ trace.nodes[1].routed_experts = np.array(
203
+ [[[0], [1]], [[2], [3]], [[100], [np.iinfo(routing_dtype).max]]],
204
+ dtype=routing_dtype,
205
+ )
197
206
  trace.nodes[0].semantic_parents.append(ParentLink(node=1, type="reply"))
198
207
  await settle()
199
208
  trace.record_reward("match", 1.0)
@@ -224,6 +233,10 @@ async def test_deltas_stream_once_and_reassemble_the_episode():
224
233
  rebuilt = WireEpisode.model_validate(unpack(pack(assembly.finish(head, summaries))))
225
234
  assert rebuilt.ok and rebuilt.traces[0].id == trace.id
226
235
  assert rebuilt.traces[0].messages == trace.messages
236
+ np.testing.assert_array_equal(
237
+ rebuilt.traces[0].nodes[1].routed_experts, trace.nodes[1].routed_experts
238
+ )
239
+ assert rebuilt.traces[0].nodes[1].routed_experts.dtype == routing_dtype
227
240
  assert (
228
241
  rebuilt.traces[0].nodes[0].semantic_parents == trace.nodes[0].semantic_parents
229
242
  )
@@ -4,12 +4,12 @@ The worker streams a served episode as it grows. Each trace announces its own ch
4
4
  (`Trace.notify`, fired by the rollout at every phase change and by the interception proxy
5
5
  after every recorded turn); the `DeltaStreamer` then diffs the run's live traces against
6
6
  what it has already sent and ships only the new part — the trace header once, then
7
- appended nodes / calls / errors, semantic links landing on earlier nodes, the scalar
7
+ appended nodes / calls / errors, semantic links and routing-row repairs on earlier nodes, the scalar
8
8
  fields whose value changed (timing spans, stop condition, rewards, ...), and the
9
9
  `pending` preview — the messages of the request in flight that no node holds yet, so a
10
10
  watcher sees a tool result before the model has answered it. The `Trace` is
11
- append-only at turn granularity (a turn's nodes are committed complete, with their
12
- tokens), so apart from the preview, which a committed turn repeats, every byte of the
11
+ append-only at turn granularity except for links and the last routing row of a node,
12
+ which the next prefill can repair. Apart from these and the preview, every byte of the
13
13
  episode crosses the wire once and the stream costs about what a single reply would; the
14
14
  reply that ends the run carries only the episode head and per-trace counts the client
15
15
  checks its assembly against. A cursor advances only once its delta is on the wire, so a
@@ -29,8 +29,10 @@ from collections.abc import Awaitable, Callable
29
29
  from typing import TYPE_CHECKING, Any, Self
30
30
 
31
31
  import msgpack
32
+ import numpy as np
32
33
  from pydantic import BaseModel
33
34
 
35
+ from verifiers.v1.graph import _decode_ndarray, _encode_ndarray
34
36
  from verifiers.v1.serve.encoding import msgpack_encoder
35
37
 
36
38
  if TYPE_CHECKING:
@@ -73,7 +75,7 @@ def pack(payload: Any) -> bytes:
73
75
 
74
76
 
75
77
  def unpack(data: bytes) -> Any:
76
- # `links` is keyed by node index (int).
78
+ # Node updates are keyed by node index (int).
77
79
  return msgpack.unpackb(data, raw=False, strict_map_key=False)
78
80
 
79
81
 
@@ -90,6 +92,8 @@ class TraceCursor:
90
92
  self.sent = dict.fromkeys(LIST_FIELDS, 0)
91
93
  self.links: list[int] = []
92
94
  """Per sent node, how many of its semantic links went out with or after it."""
95
+ self.final_rows: dict[int, bytes] = {}
96
+ """Per node that carries routing, its final row as packed when last sent."""
93
97
  self.scalars: dict[str, bytes] = {}
94
98
  self.pending: bytes = pack([])
95
99
 
@@ -157,6 +161,31 @@ class DeltaStreamer:
157
161
  else:
158
162
  self.cursors[trace_id] = cursor
159
163
 
164
+ def _maybe_add_routing_repairs(
165
+ self,
166
+ delta: dict[str, Any],
167
+ trace: Trace,
168
+ cursor: TraceCursor,
169
+ sent_nodes: int,
170
+ ) -> None:
171
+ """Add final rows repaired since they were sent, keyed by node index.
172
+
173
+ Record every node's current row on the cursor. `sent_nodes` is the pre-flush
174
+ count, so a node first sent in this delta is never reported as a repair.
175
+ """
176
+ repairs: dict[int, dict] = {}
177
+ for index, node in enumerate(trace.nodes):
178
+ if node.routed_experts is None:
179
+ continue
180
+ row = _encode_ndarray(node.routed_experts[-1:])
181
+ packed = pack(row)
182
+ if cursor.final_rows.get(index) != packed:
183
+ cursor.final_rows[index] = packed
184
+ if index < sent_nodes:
185
+ repairs[index] = row
186
+ if repairs:
187
+ delta["routing_repairs"] = repairs
188
+
160
189
  def diff(self) -> list[tuple[str, dict, TraceCursor | None]]:
161
190
  """Each trace's delta against its sent cursor, with the cursor as it stands once
162
191
  that delta is sent (None for a discard). Nothing here is committed: `flush`
@@ -183,6 +212,7 @@ class DeltaStreamer:
183
212
  cursor.links[index] = len(node_links)
184
213
  if links:
185
214
  delta["links"] = links
215
+ self._maybe_add_routing_repairs(delta, trace, cursor, cursor.sent["nodes"])
186
216
  for field in LIST_FIELDS:
187
217
  items = getattr(trace, field)
188
218
  sent = cursor.sent[field]
@@ -220,6 +250,20 @@ class EpisodeAssembly:
220
250
  def __init__(self) -> None:
221
251
  self.traces: dict[str, dict] = {}
222
252
 
253
+ def _maybe_apply_routing_repairs(self, delta: dict[str, Any], trace: dict) -> None:
254
+ """Replace repaired final rows in nodes the client already holds.
255
+
256
+ Rebuild each array: a repair can widen its dtype, and decoded rows alias
257
+ the original delta's bytes, which must remain unchanged for consumers.
258
+ """
259
+ for index, row in (delta.get("routing_repairs") or {}).items():
260
+ node = trace["nodes"][int(index)]
261
+ node["routed_experts"] = _encode_ndarray(
262
+ np.concatenate(
263
+ [_decode_ndarray(node["routed_experts"])[:-1], _decode_ndarray(row)]
264
+ )
265
+ )
266
+
223
267
  def apply(self, delta: dict) -> None:
224
268
  trace_id = delta["trace"]
225
269
  if delta.get("discard"):
@@ -234,6 +278,7 @@ class EpisodeAssembly:
234
278
  }
235
279
  for index, links in (delta.get("links") or {}).items():
236
280
  trace["nodes"][int(index)]["semantic_parents"].extend(links)
281
+ self._maybe_apply_routing_repairs(delta, trace)
237
282
  # a later `links` delta grows a node's semantic_parents in place, so the node
238
283
  # is copied: the delta stays as it was when the caller received it
239
284
  if "nodes" in delta: