benchflow 0.5.3.dev994__tar.gz → 0.6.1__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 (809) hide show
  1. benchflow-0.6.1/CHANGELOG.md +389 -0
  2. benchflow-0.6.1/PKG-INFO +230 -0
  3. benchflow-0.6.1/README.md +177 -0
  4. benchflow-0.6.1/pyproject.toml +175 -0
  5. benchflow-0.6.1/src/benchflow/__init__.py +250 -0
  6. benchflow-0.6.1/src/benchflow/_paths.py +218 -0
  7. benchflow-0.6.1/src/benchflow/_types.py +106 -0
  8. benchflow-0.6.1/src/benchflow/_utils/benchmark_repos.py +504 -0
  9. benchflow-0.6.1/src/benchflow/_utils/config.py +82 -0
  10. benchflow-0.6.1/src/benchflow/_utils/dataset_registry.py +250 -0
  11. benchflow-0.6.1/src/benchflow/_utils/evaluation_results.py +298 -0
  12. benchflow-0.6.1/src/benchflow/_utils/learner_memory.py +166 -0
  13. benchflow-0.6.1/src/benchflow/_utils/reward_events.py +159 -0
  14. benchflow-0.6.1/src/benchflow/_utils/scoring.py +315 -0
  15. benchflow-0.6.1/src/benchflow/_utils/source_provenance.py +131 -0
  16. benchflow-0.6.1/src/benchflow/_utils/task_authoring/__init__.py +357 -0
  17. benchflow-0.6.1/src/benchflow/_utils/task_authoring/_evidence_paths.py +187 -0
  18. benchflow-0.6.1/src/benchflow/_utils/task_authoring/acceptance_evidence.py +578 -0
  19. benchflow-0.6.1/src/benchflow/_utils/task_authoring/scaffolding.py +425 -0
  20. benchflow-0.6.1/src/benchflow/_utils/task_authoring/structural_checks.py +367 -0
  21. benchflow-0.6.1/src/benchflow/_utils/text.py +37 -0
  22. benchflow-0.6.1/src/benchflow/_utils/yaml_loader.py +170 -0
  23. benchflow-0.6.1/src/benchflow/acp/client.py +432 -0
  24. benchflow-0.6.1/src/benchflow/acp/runtime.py +739 -0
  25. benchflow-0.6.1/src/benchflow/acp/session.py +367 -0
  26. benchflow-0.6.1/src/benchflow/acp/transport.py +145 -0
  27. benchflow-0.6.1/src/benchflow/acp/types.py +355 -0
  28. benchflow-0.6.1/src/benchflow/adapters/__init__.py +54 -0
  29. benchflow-0.6.1/src/benchflow/adapters/harbor.py +146 -0
  30. benchflow-0.6.1/src/benchflow/adapters/inbound.py +326 -0
  31. benchflow-0.6.1/src/benchflow/adapters/ors.py +257 -0
  32. benchflow-0.6.1/src/benchflow/agent_router.py +852 -0
  33. benchflow-0.6.1/src/benchflow/agent_router_parity.py +500 -0
  34. benchflow-0.6.1/src/benchflow/agent_router_scaffold.py +272 -0
  35. benchflow-0.6.1/src/benchflow/agents/deepagents_acp_shim.py +530 -0
  36. benchflow-0.6.1/src/benchflow/agents/errors.py +7 -0
  37. benchflow-0.6.1/src/benchflow/agents/install.py +337 -0
  38. benchflow-0.6.1/src/benchflow/agents/openclaw_acp_shim.py +884 -0
  39. benchflow-0.6.1/src/benchflow/agents/protocol.py +250 -0
  40. benchflow-0.6.1/src/benchflow/agents/providers.py +491 -0
  41. benchflow-0.6.1/src/benchflow/agents/registry.py +1023 -0
  42. benchflow-0.6.1/src/benchflow/cli/_hosted_env.py +112 -0
  43. benchflow-0.6.1/src/benchflow/cli/_live_progress.py +328 -0
  44. benchflow-0.6.1/src/benchflow/cli/_options.py +33 -0
  45. benchflow-0.6.1/src/benchflow/cli/_shared.py +132 -0
  46. benchflow-0.6.1/src/benchflow/cli/adopt.py +36 -0
  47. benchflow-0.6.1/src/benchflow/cli/agent.py +93 -0
  48. benchflow-0.6.1/src/benchflow/cli/continue_cmd.py +239 -0
  49. benchflow-0.6.1/src/benchflow/cli/environment.py +155 -0
  50. benchflow-0.6.1/src/benchflow/cli/hub.py +183 -0
  51. benchflow-0.6.1/src/benchflow/cli/main.py +1020 -0
  52. benchflow-0.6.1/src/benchflow/cli/monitor.py +95 -0
  53. benchflow-0.6.1/src/benchflow/cli/sandbox.py +129 -0
  54. benchflow-0.6.1/src/benchflow/cli/skills.py +198 -0
  55. benchflow-0.6.1/src/benchflow/cli/tasks.py +353 -0
  56. benchflow-0.6.1/src/benchflow/cli/trace_import.py +393 -0
  57. benchflow-0.6.1/src/benchflow/continue_run/orchestrator.py +746 -0
  58. benchflow-0.6.1/src/benchflow/continue_run/replay_proxy.py +404 -0
  59. benchflow-0.6.1/src/benchflow/contracts/__init__.py +72 -0
  60. benchflow-0.6.1/src/benchflow/contracts/planes.py +103 -0
  61. benchflow-0.6.1/src/benchflow/contracts/user.py +294 -0
  62. benchflow-0.6.1/src/benchflow/demo_task/task.md +50 -0
  63. benchflow-0.6.1/src/benchflow/diagnostics.py +507 -0
  64. benchflow-0.6.1/src/benchflow/environment/manifest_env.py +342 -0
  65. benchflow-0.6.1/src/benchflow/environment/protocol.py +77 -0
  66. benchflow-0.6.1/src/benchflow/eval_plan.py +406 -0
  67. benchflow-0.6.1/src/benchflow/eval_sharding.py +363 -0
  68. benchflow-0.6.1/src/benchflow/eval_worker.py +122 -0
  69. benchflow-0.6.1/src/benchflow/evaluation.py +1865 -0
  70. benchflow-0.6.1/src/benchflow/experimental/mcp/hooks.py +52 -0
  71. benchflow-0.6.1/src/benchflow/hosted_env.py +870 -0
  72. benchflow-0.6.1/src/benchflow/hub/__init__.py +19 -0
  73. benchflow-0.6.1/src/benchflow/hub/harbor_registry.py +289 -0
  74. benchflow-0.6.1/src/benchflow/learner_store.py +277 -0
  75. benchflow-0.6.1/src/benchflow/loop_strategies.py +447 -0
  76. benchflow-0.6.1/src/benchflow/loop_sweep.py +413 -0
  77. benchflow-0.6.1/src/benchflow/metrics.py +413 -0
  78. benchflow-0.6.1/src/benchflow/providers/litellm_bedrock_patch.py +98 -0
  79. benchflow-0.6.1/src/benchflow/providers/litellm_bedrock_preflight.py +185 -0
  80. benchflow-0.6.1/src/benchflow/providers/litellm_config.py +351 -0
  81. benchflow-0.6.1/src/benchflow/providers/litellm_logging.py +416 -0
  82. benchflow-0.6.1/src/benchflow/providers/litellm_runtime.py +1144 -0
  83. benchflow-0.6.1/src/benchflow/rewards/builtins.py +527 -0
  84. benchflow-0.6.1/src/benchflow/rewards/file_readers.py +142 -0
  85. benchflow-0.6.1/src/benchflow/rewards/llm.py +307 -0
  86. benchflow-0.6.1/src/benchflow/rewards/rubric_config.py +287 -0
  87. benchflow-0.6.1/src/benchflow/rewards/validation.py +674 -0
  88. benchflow-0.6.1/src/benchflow/rollout/__init__.py +1968 -0
  89. benchflow-0.6.1/src/benchflow/rollout/_config.py +417 -0
  90. benchflow-0.6.1/src/benchflow/rollout/_results.py +558 -0
  91. benchflow-0.6.1/src/benchflow/rollout/_setup.py +473 -0
  92. benchflow-0.6.1/src/benchflow/rollout/_skills.py +111 -0
  93. benchflow-0.6.1/src/benchflow/rollout/_usage.py +235 -0
  94. benchflow-0.6.1/src/benchflow/rollout/_user_loop.py +542 -0
  95. benchflow-0.6.1/src/benchflow/rollout_planes.py +204 -0
  96. benchflow-0.6.1/src/benchflow/runtime.py +442 -0
  97. benchflow-0.6.1/src/benchflow/sandbox/_base.py +430 -0
  98. benchflow-0.6.1/src/benchflow/sandbox/_compose.py +48 -0
  99. benchflow-0.6.1/src/benchflow/sandbox/daytona.py +845 -0
  100. benchflow-0.6.1/src/benchflow/sandbox/daytona_dind.py +610 -0
  101. benchflow-0.6.1/src/benchflow/sandbox/daytona_pty.py +74 -0
  102. benchflow-0.6.1/src/benchflow/sandbox/daytona_reaper.py +224 -0
  103. benchflow-0.6.1/src/benchflow/sandbox/daytona_strategies.py +359 -0
  104. benchflow-0.6.1/src/benchflow/sandbox/docker.py +850 -0
  105. benchflow-0.6.1/src/benchflow/sandbox/lockdown.py +1148 -0
  106. benchflow-0.6.1/src/benchflow/sandbox/modal_impl.py +405 -0
  107. benchflow-0.6.1/src/benchflow/sandbox/process.py +854 -0
  108. benchflow-0.6.1/src/benchflow/sandbox/protocol.py +178 -0
  109. benchflow-0.6.1/src/benchflow/sandbox/providers.py +76 -0
  110. benchflow-0.6.1/src/benchflow/sandbox/setup.py +792 -0
  111. benchflow-0.6.1/src/benchflow/sandbox/snapshot.py +107 -0
  112. benchflow-0.6.1/src/benchflow/sandbox/user.py +19 -0
  113. benchflow-0.6.1/src/benchflow/sdk.py +238 -0
  114. benchflow-0.6.1/src/benchflow/skill_eval/_core.py +838 -0
  115. benchflow-0.6.1/src/benchflow/skill_eval/schema.py +161 -0
  116. benchflow-0.6.1/src/benchflow/skill_policy.py +223 -0
  117. benchflow-0.6.1/src/benchflow/skills.py +131 -0
  118. benchflow-0.6.1/src/benchflow/task/__init__.py +199 -0
  119. benchflow-0.6.1/src/benchflow/task/_document_evidence.py +247 -0
  120. benchflow-0.6.1/src/benchflow/task/_document_normalize.py +213 -0
  121. benchflow-0.6.1/src/benchflow/task/_document_parse.py +523 -0
  122. benchflow-0.6.1/src/benchflow/task/_document_profiles.py +156 -0
  123. benchflow-0.6.1/src/benchflow/task/acceptance_live.py +522 -0
  124. benchflow-0.6.1/src/benchflow/task/acceptance_live_model.py +103 -0
  125. benchflow-0.6.1/src/benchflow/task/acceptance_live_report.py +358 -0
  126. benchflow-0.6.1/src/benchflow/task/acceptance_live_validation.py +606 -0
  127. benchflow-0.6.1/src/benchflow/task/config.py +746 -0
  128. benchflow-0.6.1/src/benchflow/task/document.py +82 -0
  129. benchflow-0.6.1/src/benchflow/task/export.py +527 -0
  130. benchflow-0.6.1/src/benchflow/task/imports.py +235 -0
  131. benchflow-0.6.1/src/benchflow/task/output_format.py +52 -0
  132. benchflow-0.6.1/src/benchflow/task/package.py +170 -0
  133. benchflow-0.6.1/src/benchflow/task/paths.py +390 -0
  134. benchflow-0.6.1/src/benchflow/task/prompts.py +681 -0
  135. benchflow-0.6.1/src/benchflow/task/runtime_capabilities.py +783 -0
  136. benchflow-0.6.1/src/benchflow/task/runtime_view.py +170 -0
  137. benchflow-0.6.1/src/benchflow/task/task.py +57 -0
  138. benchflow-0.6.1/src/benchflow/task/verifier.py +167 -0
  139. benchflow-0.6.1/src/benchflow/task/verifier_core.py +1236 -0
  140. benchflow-0.6.1/src/benchflow/task/verifier_document.py +412 -0
  141. benchflow-0.6.1/src/benchflow/task/verifier_errors.py +57 -0
  142. benchflow-0.6.1/src/benchflow/task/verifier_judge_inputs.py +77 -0
  143. benchflow-0.6.1/src/benchflow/task/verifier_ors_episode.py +300 -0
  144. benchflow-0.6.1/src/benchflow/task/verifier_reward_kit.py +166 -0
  145. benchflow-0.6.1/src/benchflow/task/verifier_scan.py +65 -0
  146. benchflow-0.6.1/src/benchflow/task/verifier_script_strategy.py +87 -0
  147. benchflow-0.6.1/src/benchflow/templates/judge.py.tmpl +213 -0
  148. benchflow-0.6.1/src/benchflow/templates/test.sh.tmpl +30 -0
  149. benchflow-0.6.1/src/benchflow/traces/__init__.py +28 -0
  150. benchflow-0.6.1/src/benchflow/traces/huggingface.py +607 -0
  151. benchflow-0.6.1/src/benchflow/traces/models.py +106 -0
  152. benchflow-0.6.1/src/benchflow/traces/parsers.py +496 -0
  153. benchflow-0.6.1/src/benchflow/traces/task_gen.py +870 -0
  154. benchflow-0.6.1/src/benchflow/trajectories/__init__.py +31 -0
  155. benchflow-0.6.1/src/benchflow/trajectories/_capture.py +264 -0
  156. benchflow-0.6.1/src/benchflow/trajectories/_export_common.py +116 -0
  157. benchflow-0.6.1/src/benchflow/trajectories/export.py +289 -0
  158. benchflow-0.6.1/src/benchflow/trajectories/export_adp.py +265 -0
  159. benchflow-0.6.1/src/benchflow/trajectories/export_atif.py +230 -0
  160. benchflow-0.6.1/src/benchflow/trajectories/types.py +408 -0
  161. benchflow-0.6.1/src/benchflow/trajectories/viewer.py +434 -0
  162. benchflow-0.6.1/src/benchflow/usage_tracking.py +162 -0
  163. benchflow-0.6.1/tests/acceptance_live_harness.py +313 -0
  164. benchflow-0.6.1/tests/agents/test_protocol.py +203 -0
  165. benchflow-0.6.1/tests/conformance/README.md +24 -0
  166. benchflow-0.6.1/tests/conformance/acp_smoke/task.md +52 -0
  167. benchflow-0.6.1/tests/conftest.py +101 -0
  168. benchflow-0.6.1/tests/environment/test_manifest_env.py +465 -0
  169. benchflow-0.6.1/tests/examples/hello-world-task/task.md +48 -0
  170. benchflow-0.6.1/tests/examples/test_claude.sh +191 -0
  171. benchflow-0.6.1/tests/examples/test_codex.sh +238 -0
  172. benchflow-0.6.1/tests/examples/test_codex_custom_provider.sh +145 -0
  173. benchflow-0.6.1/tests/examples/test_gemini.sh +192 -0
  174. benchflow-0.6.1/tests/examples/test_openclaw.sh +191 -0
  175. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +18 -0
  176. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +79 -0
  177. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +127 -0
  178. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +123 -0
  179. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +120 -0
  180. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +1 -0
  181. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +113 -0
  182. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +28 -0
  183. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +6 -0
  184. benchflow-0.6.1/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +45 -0
  185. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +17 -0
  186. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +17 -0
  187. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +17 -0
  188. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +17 -0
  189. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +17 -0
  190. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +93 -0
  191. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +78 -0
  192. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +136 -0
  193. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +89 -0
  194. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +9 -0
  195. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +82 -0
  196. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +27 -0
  197. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +6 -0
  198. benchflow-0.6.1/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +32 -0
  199. benchflow-0.6.1/tests/fixtures/skillsbench_slice/manifest.json +76 -0
  200. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +23 -0
  201. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +205 -0
  202. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +56 -0
  203. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +50 -0
  204. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +48 -0
  205. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +48 -0
  206. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +16 -0
  207. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +51 -0
  208. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +237 -0
  209. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +29 -0
  210. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +32 -0
  211. benchflow-0.6.1/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +266 -0
  212. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +64 -0
  213. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +131 -0
  214. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +2 -0
  215. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +57 -0
  216. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +31 -0
  217. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +57 -0
  218. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +27 -0
  219. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +130 -0
  220. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +24 -0
  221. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +11 -0
  222. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +80 -0
  223. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +27 -0
  224. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +29 -0
  225. benchflow-0.6.1/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +324 -0
  226. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +36 -0
  227. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +101 -0
  228. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +78 -0
  229. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +97 -0
  230. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +25 -0
  231. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +179 -0
  232. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +29 -0
  233. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +6 -0
  234. benchflow-0.6.1/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +212 -0
  235. benchflow-0.6.1/tests/integration/agent_judge.py +642 -0
  236. benchflow-0.6.1/tests/integration/check_hosted_env_evidence.py +209 -0
  237. benchflow-0.6.1/tests/integration/check_results.py +1323 -0
  238. benchflow-0.6.1/tests/integration/check_skillsbench_harbor_parity.py +739 -0
  239. benchflow-0.6.1/tests/integration/deepagents_harness.py +370 -0
  240. benchflow-0.6.1/tests/integration/run.sh +202 -0
  241. benchflow-0.6.1/tests/integration/run_suite.py +920 -0
  242. benchflow-0.6.1/tests/integration/scenarios.py +364 -0
  243. benchflow-0.6.1/tests/integration/suites/release.yaml +504 -0
  244. benchflow-0.6.1/tests/test_acceptance_evidence.py +779 -0
  245. benchflow-0.6.1/tests/test_acceptance_live.py +708 -0
  246. benchflow-0.6.1/tests/test_acceptance_live_execution.py +645 -0
  247. benchflow-0.6.1/tests/test_acp.py +1822 -0
  248. benchflow-0.6.1/tests/test_acp_mcp_servers.py +231 -0
  249. benchflow-0.6.1/tests/test_adapters.py +422 -0
  250. benchflow-0.6.1/tests/test_agent_router.py +919 -0
  251. benchflow-0.6.1/tests/test_agent_router_cli_e2e.py +369 -0
  252. benchflow-0.6.1/tests/test_agent_router_scaffold.py +89 -0
  253. benchflow-0.6.1/tests/test_api_error_capture.py +254 -0
  254. benchflow-0.6.1/tests/test_bare_model_provider.py +291 -0
  255. benchflow-0.6.1/tests/test_base_install_imports.py +108 -0
  256. benchflow-0.6.1/tests/test_bedrock_thinking.py +77 -0
  257. benchflow-0.6.1/tests/test_check_skillsbench_harbor_parity.py +429 -0
  258. benchflow-0.6.1/tests/test_cli_adopt_aliases.py +143 -0
  259. benchflow-0.6.1/tests/test_cli_arg_validation.py +326 -0
  260. benchflow-0.6.1/tests/test_cli_daytona.py +117 -0
  261. benchflow-0.6.1/tests/test_cli_docs_drift.py +229 -0
  262. benchflow-0.6.1/tests/test_cli_edge_case_hardening.py +478 -0
  263. benchflow-0.6.1/tests/test_cli_hub_env.py +83 -0
  264. benchflow-0.6.1/tests/test_cli_live_progress.py +180 -0
  265. benchflow-0.6.1/tests/test_cli_misc.py +178 -0
  266. benchflow-0.6.1/tests/test_console_error_truncation.py +84 -0
  267. benchflow-0.6.1/tests/test_dataset_registry.py +596 -0
  268. benchflow-0.6.1/tests/test_daytona_dind_compose_up.py +97 -0
  269. benchflow-0.6.1/tests/test_daytona_download.py +205 -0
  270. benchflow-0.6.1/tests/test_daytona_poll_deadline.py +206 -0
  271. benchflow-0.6.1/tests/test_daytona_reap.py +500 -0
  272. benchflow-0.6.1/tests/test_deepagents_agent.py +274 -0
  273. benchflow-0.6.1/tests/test_docs_examples.py +121 -0
  274. benchflow-0.6.1/tests/test_eng50_capabilities.py +164 -0
  275. benchflow-0.6.1/tests/test_env_setup.py +550 -0
  276. benchflow-0.6.1/tests/test_environment_manifest_controls.py +299 -0
  277. benchflow-0.6.1/tests/test_eval_sharding.py +77 -0
  278. benchflow-0.6.1/tests/test_eval_worker_retry.py +65 -0
  279. benchflow-0.6.1/tests/test_eval_zero_task_guard.py +116 -0
  280. benchflow-0.6.1/tests/test_evaluation_environment_manifest.py +205 -0
  281. benchflow-0.6.1/tests/test_hosted_env_rollout_contract.py +399 -0
  282. benchflow-0.6.1/tests/test_hub_harbor_registry.py +328 -0
  283. benchflow-0.6.1/tests/test_inbound_adapter_manifest.py +213 -0
  284. benchflow-0.6.1/tests/test_inbound_adapters.py +307 -0
  285. benchflow-0.6.1/tests/test_integration_agent_judge.py +457 -0
  286. benchflow-0.6.1/tests/test_integration_run_suite.py +884 -0
  287. benchflow-0.6.1/tests/test_integration_suite.py +459 -0
  288. benchflow-0.6.1/tests/test_internet_policy.py +455 -0
  289. benchflow-0.6.1/tests/test_job.py +795 -0
  290. benchflow-0.6.1/tests/test_job_sequential_shared.py +595 -0
  291. benchflow-0.6.1/tests/test_judge_robustness.py +469 -0
  292. benchflow-0.6.1/tests/test_learner_skills.py +131 -0
  293. benchflow-0.6.1/tests/test_learner_skills_traversal.py +91 -0
  294. benchflow-0.6.1/tests/test_learner_store.py +257 -0
  295. benchflow-0.6.1/tests/test_litellm_hardening.py +846 -0
  296. benchflow-0.6.1/tests/test_llm_judge.py +919 -0
  297. benchflow-0.6.1/tests/test_llm_judge_event_tags.py +211 -0
  298. benchflow-0.6.1/tests/test_loop_strategies.py +559 -0
  299. benchflow-0.6.1/tests/test_loop_summary.py +153 -0
  300. benchflow-0.6.1/tests/test_loop_sweep.py +496 -0
  301. benchflow-0.6.1/tests/test_memory_scorer.py +386 -0
  302. benchflow-0.6.1/tests/test_metrics.py +422 -0
  303. benchflow-0.6.1/tests/test_mintlify_docs_config.py +27 -0
  304. benchflow-0.6.1/tests/test_oracle.py +162 -0
  305. benchflow-0.6.1/tests/test_oracle_chokepoint.py +1178 -0
  306. benchflow-0.6.1/tests/test_paths_safe.py +102 -0
  307. benchflow-0.6.1/tests/test_paths_symlink_helpers.py +94 -0
  308. benchflow-0.6.1/tests/test_process.py +810 -0
  309. benchflow-0.6.1/tests/test_provider_auth_detection.py +401 -0
  310. benchflow-0.6.1/tests/test_providers.py +506 -0
  311. benchflow-0.6.1/tests/test_registry_invariants.py +479 -0
  312. benchflow-0.6.1/tests/test_release_hardening_r5.py +103 -0
  313. benchflow-0.6.1/tests/test_resolve_env_helpers.py +1089 -0
  314. benchflow-0.6.1/tests/test_reward_lenient.py +151 -0
  315. benchflow-0.6.1/tests/test_reward_range.py +284 -0
  316. benchflow-0.6.1/tests/test_reward_unified_contract.py +171 -0
  317. benchflow-0.6.1/tests/test_rewards.py +442 -0
  318. benchflow-0.6.1/tests/test_rewards_jsonl.py +174 -0
  319. benchflow-0.6.1/tests/test_rollout_architecture.py +58 -0
  320. benchflow-0.6.1/tests/test_rollout_environment.py +50 -0
  321. benchflow-0.6.1/tests/test_rollout_on_ask_user_wiring.py +303 -0
  322. benchflow-0.6.1/tests/test_rollout_planes_contract.py +103 -0
  323. benchflow-0.6.1/tests/test_rollout_upload.py +841 -0
  324. benchflow-0.6.1/tests/test_rubric_config.py +371 -0
  325. benchflow-0.6.1/tests/test_runtime.py +170 -0
  326. benchflow-0.6.1/tests/test_runtime_capabilities.py +1114 -0
  327. benchflow-0.6.1/tests/test_runtime_config_wired.py +193 -0
  328. benchflow-0.6.1/tests/test_sandbox.py +497 -0
  329. benchflow-0.6.1/tests/test_sandbox_exec_secret_handling.py +316 -0
  330. benchflow-0.6.1/tests/test_sandbox_hardening.py +1736 -0
  331. benchflow-0.6.1/tests/test_sandbox_protocol.py +222 -0
  332. benchflow-0.6.1/tests/test_sandbox_provider_registry_drift.py +97 -0
  333. benchflow-0.6.1/tests/test_sandbox_snapshot_contract.py +251 -0
  334. benchflow-0.6.1/tests/test_sandbox_upload_symlink.py +221 -0
  335. benchflow-0.6.1/tests/test_sandbox_verifier_workspace.py +179 -0
  336. benchflow-0.6.1/tests/test_scene_outbox_trial.py +422 -0
  337. benchflow-0.6.1/tests/test_scene_parallel_group.py +51 -0
  338. benchflow-0.6.1/tests/test_scoring.py +249 -0
  339. benchflow-0.6.1/tests/test_sdk_internals.py +877 -0
  340. benchflow-0.6.1/tests/test_sdk_lockdown.py +394 -0
  341. benchflow-0.6.1/tests/test_sdk_run_alias.py +81 -0
  342. benchflow-0.6.1/tests/test_self_gen_export_error_channel.py +202 -0
  343. benchflow-0.6.1/tests/test_session_request_permission_dispatch.py +294 -0
  344. benchflow-0.6.1/tests/test_skill_eval.py +648 -0
  345. benchflow-0.6.1/tests/test_skill_eval_dryrun.py +399 -0
  346. benchflow-0.6.1/tests/test_skill_eval_integration.py +356 -0
  347. benchflow-0.6.1/tests/test_skill_eval_sweep.py +461 -0
  348. benchflow-0.6.1/tests/test_skill_eval_traversal.py +135 -0
  349. benchflow-0.6.1/tests/test_skill_policy.py +237 -0
  350. benchflow-0.6.1/tests/test_skillsbench_conversion_conformance.py +116 -0
  351. benchflow-0.6.1/tests/test_skillsbench_harbor_run_suite.py +103 -0
  352. benchflow-0.6.1/tests/test_smoke.py +245 -0
  353. benchflow-0.6.1/tests/test_smoke_wiring.py +208 -0
  354. benchflow-0.6.1/tests/test_subscription_auth.py +517 -0
  355. benchflow-0.6.1/tests/test_task_check_eval_consistency.py +468 -0
  356. benchflow-0.6.1/tests/test_task_config.py +293 -0
  357. benchflow-0.6.1/tests/test_task_digest.py +185 -0
  358. benchflow-0.6.1/tests/test_task_document.py +1256 -0
  359. benchflow-0.6.1/tests/test_task_download.py +701 -0
  360. benchflow-0.6.1/tests/test_task_export.py +531 -0
  361. benchflow-0.6.1/tests/test_task_output_format.py +67 -0
  362. benchflow-0.6.1/tests/test_task_package.py +452 -0
  363. benchflow-0.6.1/tests/test_tasks.py +454 -0
  364. benchflow-0.6.1/tests/test_trace_task_gen_traversal.py +123 -0
  365. benchflow-0.6.1/tests/test_trace_to_task_evidence.py +165 -0
  366. benchflow-0.6.1/tests/test_traces_parsers.py +470 -0
  367. benchflow-0.6.1/tests/test_traces_task_gen.py +732 -0
  368. benchflow-0.6.1/tests/test_train_mode_artifact_emission.py +448 -0
  369. benchflow-0.6.1/tests/test_trajectory_streaming.py +552 -0
  370. benchflow-0.6.1/tests/test_trial_install_agent_timeout.py +285 -0
  371. benchflow-0.6.1/tests/test_user.py +1216 -0
  372. benchflow-0.6.1/tests/test_v06_guard_ports.py +160 -0
  373. benchflow-0.6.1/tests/test_verifier_document.py +342 -0
  374. benchflow-0.6.1/tests/test_verifier_multi_container.py +331 -0
  375. benchflow-0.6.1/tests/test_verifier_output.py +355 -0
  376. benchflow-0.6.1/tests/test_verifier_strategies.py +505 -0
  377. benchflow-0.6.1/tests/test_verify.py +983 -0
  378. benchflow-0.6.1/tests/test_yaml_config.py +637 -0
  379. benchflow-0.6.1/tests/trajectories/test_export_adp.py +344 -0
  380. benchflow-0.6.1/tests/trajectories/test_export_atif.py +251 -0
  381. benchflow-0.6.1/tests/trajectories/test_export_common.py +91 -0
  382. benchflow-0.6.1/tests/trajectories/test_redaction.py +396 -0
  383. benchflow-0.5.3.dev994/CHANGELOG.md +0 -221
  384. benchflow-0.5.3.dev994/PKG-INFO +0 -183
  385. benchflow-0.5.3.dev994/README.md +0 -133
  386. benchflow-0.5.3.dev994/pyproject.toml +0 -166
  387. benchflow-0.5.3.dev994/src/benchflow/__init__.py +0 -255
  388. benchflow-0.5.3.dev994/src/benchflow/_paths.py +0 -218
  389. benchflow-0.5.3.dev994/src/benchflow/_types.py +0 -102
  390. benchflow-0.5.3.dev994/src/benchflow/_utils/benchmark_repos.py +0 -516
  391. benchflow-0.5.3.dev994/src/benchflow/_utils/config.py +0 -66
  392. benchflow-0.5.3.dev994/src/benchflow/_utils/dataset_registry.py +0 -216
  393. benchflow-0.5.3.dev994/src/benchflow/_utils/evaluation_results.py +0 -228
  394. benchflow-0.5.3.dev994/src/benchflow/_utils/learner_memory.py +0 -162
  395. benchflow-0.5.3.dev994/src/benchflow/_utils/reward_events.py +0 -95
  396. benchflow-0.5.3.dev994/src/benchflow/_utils/scoring.py +0 -264
  397. benchflow-0.5.3.dev994/src/benchflow/_utils/source_provenance.py +0 -129
  398. benchflow-0.5.3.dev994/src/benchflow/_utils/task_authoring.py +0 -268
  399. benchflow-0.5.3.dev994/src/benchflow/_utils/yaml_loader.py +0 -190
  400. benchflow-0.5.3.dev994/src/benchflow/acp/client.py +0 -408
  401. benchflow-0.5.3.dev994/src/benchflow/acp/runtime.py +0 -646
  402. benchflow-0.5.3.dev994/src/benchflow/acp/session.py +0 -337
  403. benchflow-0.5.3.dev994/src/benchflow/acp/transport.py +0 -146
  404. benchflow-0.5.3.dev994/src/benchflow/acp/types.py +0 -328
  405. benchflow-0.5.3.dev994/src/benchflow/adapters/__init__.py +0 -51
  406. benchflow-0.5.3.dev994/src/benchflow/adapters/harbor.py +0 -137
  407. benchflow-0.5.3.dev994/src/benchflow/adapters/inbound.py +0 -219
  408. benchflow-0.5.3.dev994/src/benchflow/adapters/ors.py +0 -99
  409. benchflow-0.5.3.dev994/src/benchflow/adapters/terminal_bench.py +0 -353
  410. benchflow-0.5.3.dev994/src/benchflow/agents/errors.py +0 -8
  411. benchflow-0.5.3.dev994/src/benchflow/agents/install.py +0 -309
  412. benchflow-0.5.3.dev994/src/benchflow/agents/openclaw_acp_shim.py +0 -778
  413. benchflow-0.5.3.dev994/src/benchflow/agents/protocol.py +0 -242
  414. benchflow-0.5.3.dev994/src/benchflow/agents/providers.py +0 -408
  415. benchflow-0.5.3.dev994/src/benchflow/agents/registry.py +0 -961
  416. benchflow-0.5.3.dev994/src/benchflow/cli/continue_cmd.py +0 -236
  417. benchflow-0.5.3.dev994/src/benchflow/cli/main.py +0 -1840
  418. benchflow-0.5.3.dev994/src/benchflow/cli/trace_import.py +0 -381
  419. benchflow-0.5.3.dev994/src/benchflow/compat/__init__.py +0 -19
  420. benchflow-0.5.3.dev994/src/benchflow/compat/harbor_registry.py +0 -289
  421. benchflow-0.5.3.dev994/src/benchflow/continue_run/orchestrator.py +0 -743
  422. benchflow-0.5.3.dev994/src/benchflow/continue_run/replay_proxy.py +0 -409
  423. benchflow-0.5.3.dev994/src/benchflow/contracts/__init__.py +0 -68
  424. benchflow-0.5.3.dev994/src/benchflow/contracts/planes.py +0 -96
  425. benchflow-0.5.3.dev994/src/benchflow/contracts/user.py +0 -74
  426. benchflow-0.5.3.dev994/src/benchflow/diagnostics.py +0 -393
  427. benchflow-0.5.3.dev994/src/benchflow/environment/manifest_env.py +0 -308
  428. benchflow-0.5.3.dev994/src/benchflow/environment/protocol.py +0 -77
  429. benchflow-0.5.3.dev994/src/benchflow/eval_sharding.py +0 -349
  430. benchflow-0.5.3.dev994/src/benchflow/eval_worker.py +0 -116
  431. benchflow-0.5.3.dev994/src/benchflow/evaluation.py +0 -1491
  432. benchflow-0.5.3.dev994/src/benchflow/experimental/mcp/hooks.py +0 -74
  433. benchflow-0.5.3.dev994/src/benchflow/hosted_env.py +0 -849
  434. benchflow-0.5.3.dev994/src/benchflow/learner_store.py +0 -277
  435. benchflow-0.5.3.dev994/src/benchflow/metrics.py +0 -419
  436. benchflow-0.5.3.dev994/src/benchflow/providers/litellm_bedrock_patch.py +0 -98
  437. benchflow-0.5.3.dev994/src/benchflow/providers/litellm_bedrock_preflight.py +0 -181
  438. benchflow-0.5.3.dev994/src/benchflow/providers/litellm_config.py +0 -335
  439. benchflow-0.5.3.dev994/src/benchflow/providers/litellm_logging.py +0 -385
  440. benchflow-0.5.3.dev994/src/benchflow/providers/litellm_runtime.py +0 -1141
  441. benchflow-0.5.3.dev994/src/benchflow/rewards/builtins.py +0 -537
  442. benchflow-0.5.3.dev994/src/benchflow/rewards/file_readers.py +0 -144
  443. benchflow-0.5.3.dev994/src/benchflow/rewards/llm.py +0 -297
  444. benchflow-0.5.3.dev994/src/benchflow/rewards/rubric_config.py +0 -220
  445. benchflow-0.5.3.dev994/src/benchflow/rewards/validation.py +0 -67
  446. benchflow-0.5.3.dev994/src/benchflow/rollout.py +0 -2950
  447. benchflow-0.5.3.dev994/src/benchflow/rollout_planes.py +0 -195
  448. benchflow-0.5.3.dev994/src/benchflow/runtime.py +0 -464
  449. benchflow-0.5.3.dev994/src/benchflow/sandbox/_base.py +0 -362
  450. benchflow-0.5.3.dev994/src/benchflow/sandbox/_compose.py +0 -28
  451. benchflow-0.5.3.dev994/src/benchflow/sandbox/daytona.py +0 -1606
  452. benchflow-0.5.3.dev994/src/benchflow/sandbox/docker.py +0 -853
  453. benchflow-0.5.3.dev994/src/benchflow/sandbox/lockdown.py +0 -982
  454. benchflow-0.5.3.dev994/src/benchflow/sandbox/modal_impl.py +0 -413
  455. benchflow-0.5.3.dev994/src/benchflow/sandbox/process.py +0 -832
  456. benchflow-0.5.3.dev994/src/benchflow/sandbox/protocol.py +0 -181
  457. benchflow-0.5.3.dev994/src/benchflow/sandbox/setup.py +0 -747
  458. benchflow-0.5.3.dev994/src/benchflow/sandbox/snapshot.py +0 -107
  459. benchflow-0.5.3.dev994/src/benchflow/sandbox/user.py +0 -10
  460. benchflow-0.5.3.dev994/src/benchflow/sdk.py +0 -217
  461. benchflow-0.5.3.dev994/src/benchflow/skill_eval/_core.py +0 -761
  462. benchflow-0.5.3.dev994/src/benchflow/skill_eval/schema.py +0 -153
  463. benchflow-0.5.3.dev994/src/benchflow/skill_policy.py +0 -191
  464. benchflow-0.5.3.dev994/src/benchflow/skills.py +0 -123
  465. benchflow-0.5.3.dev994/src/benchflow/task/__init__.py +0 -73
  466. benchflow-0.5.3.dev994/src/benchflow/task/config.py +0 -344
  467. benchflow-0.5.3.dev994/src/benchflow/task/paths.py +0 -171
  468. benchflow-0.5.3.dev994/src/benchflow/task/task.py +0 -49
  469. benchflow-0.5.3.dev994/src/benchflow/task/verifier.py +0 -457
  470. benchflow-0.5.3.dev994/src/benchflow/templates/judge.py.tmpl +0 -193
  471. benchflow-0.5.3.dev994/src/benchflow/templates/test.sh.tmpl +0 -20
  472. benchflow-0.5.3.dev994/src/benchflow/traces/__init__.py +0 -28
  473. benchflow-0.5.3.dev994/src/benchflow/traces/huggingface.py +0 -609
  474. benchflow-0.5.3.dev994/src/benchflow/traces/models.py +0 -108
  475. benchflow-0.5.3.dev994/src/benchflow/traces/parsers.py +0 -493
  476. benchflow-0.5.3.dev994/src/benchflow/traces/task_gen.py +0 -848
  477. benchflow-0.5.3.dev994/src/benchflow/trajectories/__init__.py +0 -36
  478. benchflow-0.5.3.dev994/src/benchflow/trajectories/_capture.py +0 -252
  479. benchflow-0.5.3.dev994/src/benchflow/trajectories/export.py +0 -304
  480. benchflow-0.5.3.dev994/src/benchflow/trajectories/otel.py +0 -263
  481. benchflow-0.5.3.dev994/src/benchflow/trajectories/types.py +0 -388
  482. benchflow-0.5.3.dev994/src/benchflow/trajectories/viewer.py +0 -392
  483. benchflow-0.5.3.dev994/src/benchflow/usage_tracking.py +0 -163
  484. benchflow-0.5.3.dev994/tests/agents/test_protocol.py +0 -191
  485. benchflow-0.5.3.dev994/tests/conformance/README.md +0 -21
  486. benchflow-0.5.3.dev994/tests/conftest.py +0 -89
  487. benchflow-0.5.3.dev994/tests/environment/test_manifest_env.py +0 -410
  488. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/environment/Dockerfile +0 -5
  489. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/instruction.md +0 -13
  490. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/solution/solve.sh +0 -11
  491. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/task.toml +0 -18
  492. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/tests/test.sh +0 -8
  493. benchflow-0.5.3.dev994/tests/examples/terminal-bench-smoke-task/tests/test_state.py +0 -27
  494. benchflow-0.5.3.dev994/tests/examples/test_claude.sh +0 -193
  495. benchflow-0.5.3.dev994/tests/examples/test_codex.sh +0 -240
  496. benchflow-0.5.3.dev994/tests/examples/test_codex_custom_provider.sh +0 -99
  497. benchflow-0.5.3.dev994/tests/examples/test_gemini.sh +0 -194
  498. benchflow-0.5.3.dev994/tests/examples/test_openclaw.sh +0 -193
  499. benchflow-0.5.3.dev994/tests/integration/check_hosted_env_evidence.py +0 -209
  500. benchflow-0.5.3.dev994/tests/integration/check_results.py +0 -1185
  501. benchflow-0.5.3.dev994/tests/integration/check_skillsbench_harbor_parity.py +0 -509
  502. benchflow-0.5.3.dev994/tests/integration/run.sh +0 -202
  503. benchflow-0.5.3.dev994/tests/integration/run_suite.py +0 -879
  504. benchflow-0.5.3.dev994/tests/integration/suites/release.yaml +0 -526
  505. benchflow-0.5.3.dev994/tests/test_acp.py +0 -1659
  506. benchflow-0.5.3.dev994/tests/test_adapters.py +0 -308
  507. benchflow-0.5.3.dev994/tests/test_base_install_imports.py +0 -106
  508. benchflow-0.5.3.dev994/tests/test_bedrock_thinking.py +0 -62
  509. benchflow-0.5.3.dev994/tests/test_cli_daytona.py +0 -97
  510. benchflow-0.5.3.dev994/tests/test_cli_docs_drift.py +0 -115
  511. benchflow-0.5.3.dev994/tests/test_cli_misc.py +0 -176
  512. benchflow-0.5.3.dev994/tests/test_compat_harbor_registry.py +0 -328
  513. benchflow-0.5.3.dev994/tests/test_dashboard_credential_env_scrub.py +0 -115
  514. benchflow-0.5.3.dev994/tests/test_dashboard_daytona_key.py +0 -129
  515. benchflow-0.5.3.dev994/tests/test_dashboard_no_host_paths.py +0 -169
  516. benchflow-0.5.3.dev994/tests/test_dashboard_release_evidence.py +0 -297
  517. benchflow-0.5.3.dev994/tests/test_dashboard_roadmap.py +0 -818
  518. benchflow-0.5.3.dev994/tests/test_dashboard_symlink_ingestion.py +0 -170
  519. benchflow-0.5.3.dev994/tests/test_dashboard_sync.py +0 -1699
  520. benchflow-0.5.3.dev994/tests/test_dataset_registry.py +0 -580
  521. benchflow-0.5.3.dev994/tests/test_daytona_status.py +0 -90
  522. benchflow-0.5.3.dev994/tests/test_docs_examples.py +0 -121
  523. benchflow-0.5.3.dev994/tests/test_eng50_capabilities.py +0 -168
  524. benchflow-0.5.3.dev994/tests/test_env_setup.py +0 -513
  525. benchflow-0.5.3.dev994/tests/test_environment_manifest_controls.py +0 -299
  526. benchflow-0.5.3.dev994/tests/test_eval_sharding.py +0 -38
  527. benchflow-0.5.3.dev994/tests/test_eval_worker_retry.py +0 -57
  528. benchflow-0.5.3.dev994/tests/test_eval_zero_task_guard.py +0 -116
  529. benchflow-0.5.3.dev994/tests/test_evaluation_environment_manifest.py +0 -213
  530. benchflow-0.5.3.dev994/tests/test_experiments_status.py +0 -181
  531. benchflow-0.5.3.dev994/tests/test_hf_scores.py +0 -91
  532. benchflow-0.5.3.dev994/tests/test_hosted_env_rollout_contract.py +0 -207
  533. benchflow-0.5.3.dev994/tests/test_inbound_adapter_manifest.py +0 -265
  534. benchflow-0.5.3.dev994/tests/test_inbound_adapters.py +0 -440
  535. benchflow-0.5.3.dev994/tests/test_integration_run_suite.py +0 -894
  536. benchflow-0.5.3.dev994/tests/test_internet_policy.py +0 -455
  537. benchflow-0.5.3.dev994/tests/test_job.py +0 -781
  538. benchflow-0.5.3.dev994/tests/test_job_sequential_shared.py +0 -595
  539. benchflow-0.5.3.dev994/tests/test_learner_skills.py +0 -137
  540. benchflow-0.5.3.dev994/tests/test_learner_skills_traversal.py +0 -95
  541. benchflow-0.5.3.dev994/tests/test_learner_store.py +0 -257
  542. benchflow-0.5.3.dev994/tests/test_litellm_hardening.py +0 -845
  543. benchflow-0.5.3.dev994/tests/test_llm_judge.py +0 -852
  544. benchflow-0.5.3.dev994/tests/test_llm_judge_event_tags.py +0 -217
  545. benchflow-0.5.3.dev994/tests/test_memory_scorer.py +0 -394
  546. benchflow-0.5.3.dev994/tests/test_metrics.py +0 -422
  547. benchflow-0.5.3.dev994/tests/test_oracle.py +0 -126
  548. benchflow-0.5.3.dev994/tests/test_oracle_chokepoint.py +0 -1011
  549. benchflow-0.5.3.dev994/tests/test_paths_safe.py +0 -106
  550. benchflow-0.5.3.dev994/tests/test_paths_symlink_helpers.py +0 -95
  551. benchflow-0.5.3.dev994/tests/test_process.py +0 -760
  552. benchflow-0.5.3.dev994/tests/test_provider_auth_detection.py +0 -308
  553. benchflow-0.5.3.dev994/tests/test_providers.py +0 -506
  554. benchflow-0.5.3.dev994/tests/test_registry_invariants.py +0 -429
  555. benchflow-0.5.3.dev994/tests/test_resolve_env_helpers.py +0 -1089
  556. benchflow-0.5.3.dev994/tests/test_reward_unified_contract.py +0 -175
  557. benchflow-0.5.3.dev994/tests/test_rewards.py +0 -337
  558. benchflow-0.5.3.dev994/tests/test_rewards_jsonl.py +0 -174
  559. benchflow-0.5.3.dev994/tests/test_rollout_architecture.py +0 -54
  560. benchflow-0.5.3.dev994/tests/test_rollout_environment.py +0 -24
  561. benchflow-0.5.3.dev994/tests/test_rollout_on_ask_user_wiring.py +0 -299
  562. benchflow-0.5.3.dev994/tests/test_rollout_upload.py +0 -633
  563. benchflow-0.5.3.dev994/tests/test_rubric_config.py +0 -280
  564. benchflow-0.5.3.dev994/tests/test_runtime.py +0 -190
  565. benchflow-0.5.3.dev994/tests/test_runtime_config_wired.py +0 -199
  566. benchflow-0.5.3.dev994/tests/test_sandbox.py +0 -320
  567. benchflow-0.5.3.dev994/tests/test_sandbox_exec_secret_handling.py +0 -231
  568. benchflow-0.5.3.dev994/tests/test_sandbox_hardening.py +0 -1595
  569. benchflow-0.5.3.dev994/tests/test_sandbox_protocol.py +0 -225
  570. benchflow-0.5.3.dev994/tests/test_sandbox_snapshot_contract.py +0 -259
  571. benchflow-0.5.3.dev994/tests/test_sandbox_upload_symlink.py +0 -227
  572. benchflow-0.5.3.dev994/tests/test_sandbox_verifier_workspace.py +0 -173
  573. benchflow-0.5.3.dev994/tests/test_scene_outbox_trial.py +0 -397
  574. benchflow-0.5.3.dev994/tests/test_scene_parallel_group.py +0 -40
  575. benchflow-0.5.3.dev994/tests/test_scoring.py +0 -231
  576. benchflow-0.5.3.dev994/tests/test_sdk_internals.py +0 -877
  577. benchflow-0.5.3.dev994/tests/test_sdk_lockdown.py +0 -283
  578. benchflow-0.5.3.dev994/tests/test_self_gen_export_error_channel.py +0 -202
  579. benchflow-0.5.3.dev994/tests/test_session_request_permission_dispatch.py +0 -289
  580. benchflow-0.5.3.dev994/tests/test_skill_eval.py +0 -630
  581. benchflow-0.5.3.dev994/tests/test_skill_eval_dryrun.py +0 -391
  582. benchflow-0.5.3.dev994/tests/test_skill_eval_integration.py +0 -351
  583. benchflow-0.5.3.dev994/tests/test_skill_eval_sweep.py +0 -472
  584. benchflow-0.5.3.dev994/tests/test_skill_eval_traversal.py +0 -141
  585. benchflow-0.5.3.dev994/tests/test_skill_policy.py +0 -209
  586. benchflow-0.5.3.dev994/tests/test_skillsbench_harbor_parity.py +0 -180
  587. benchflow-0.5.3.dev994/tests/test_skillsbench_harbor_run_suite.py +0 -87
  588. benchflow-0.5.3.dev994/tests/test_skillsbench_publish_scrub.py +0 -75
  589. benchflow-0.5.3.dev994/tests/test_smoke.py +0 -158
  590. benchflow-0.5.3.dev994/tests/test_subscription_auth.py +0 -506
  591. benchflow-0.5.3.dev994/tests/test_task_check_eval_consistency.py +0 -126
  592. benchflow-0.5.3.dev994/tests/test_task_config.py +0 -49
  593. benchflow-0.5.3.dev994/tests/test_task_digest.py +0 -161
  594. benchflow-0.5.3.dev994/tests/test_task_download.py +0 -660
  595. benchflow-0.5.3.dev994/tests/test_tasks.py +0 -298
  596. benchflow-0.5.3.dev994/tests/test_trace_task_gen_traversal.py +0 -123
  597. benchflow-0.5.3.dev994/tests/test_trace_to_task_evidence.py +0 -164
  598. benchflow-0.5.3.dev994/tests/test_traces_parsers.py +0 -478
  599. benchflow-0.5.3.dev994/tests/test_traces_task_gen.py +0 -733
  600. benchflow-0.5.3.dev994/tests/test_train_mode_artifact_emission.py +0 -328
  601. benchflow-0.5.3.dev994/tests/test_trajectory_streaming.py +0 -450
  602. benchflow-0.5.3.dev994/tests/test_trial_install_agent_timeout.py +0 -182
  603. benchflow-0.5.3.dev994/tests/test_user.py +0 -465
  604. benchflow-0.5.3.dev994/tests/test_verifier_multi_container.py +0 -313
  605. benchflow-0.5.3.dev994/tests/test_verifier_output.py +0 -214
  606. benchflow-0.5.3.dev994/tests/test_verify.py +0 -949
  607. benchflow-0.5.3.dev994/tests/test_yaml_config.py +0 -607
  608. benchflow-0.5.3.dev994/tests/trajectories/test_redaction.py +0 -357
  609. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/.gitignore +0 -0
  610. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/LICENSE +0 -0
  611. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/_dotenv.py +0 -0
  612. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/_run.py +0 -0
  613. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/_utils/__init__.py +0 -0
  614. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/_utils/json_safe.py +0 -0
  615. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/_utils/result_metadata.py +0 -0
  616. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/acp/__init__.py +0 -0
  617. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/acp/container_transport.py +0 -0
  618. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/adapters/inspect_ai.py +0 -0
  619. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/__init__.py +0 -0
  620. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/codex_config.py +0 -0
  621. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/credentials.py +0 -0
  622. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/env.py +0 -0
  623. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  624. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  625. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/branch.py +0 -0
  626. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/cli/__init__.py +0 -0
  627. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/continue_run/__init__.py +0 -0
  628. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/continue_run/batch.py +0 -0
  629. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/continue_run/run_folder.py +0 -0
  630. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  631. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  632. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/demo_task/instruction.md +0 -0
  633. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/demo_task/task.toml +0 -0
  634. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/demo_task/tests/test.sh +0 -0
  635. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/environment/__init__.py +0 -0
  636. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/environment/manifest.py +0 -0
  637. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/environment/readiness.py +0 -0
  638. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/experimental/__init__.py +0 -0
  639. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/experimental/mcp/__init__.py +0 -0
  640. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  641. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/learner_skills.py +0 -0
  642. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/models.py +0 -0
  643. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/monitor.py +0 -0
  644. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/providers/__init__.py +0 -0
  645. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/providers/runtime.py +0 -0
  646. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/py.typed +0 -0
  647. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/README.md +0 -0
  648. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/__init__.py +0 -0
  649. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/events.py +0 -0
  650. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/memory_scorer.py +0 -0
  651. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/node.py +0 -0
  652. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/protocol.py +0 -0
  653. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rewards/rubric.py +0 -0
  654. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/rollout_branch.py +0 -0
  655. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/__init__.py +0 -0
  656. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  657. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  658. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  659. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  660. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  661. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  662. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/metadata.py +0 -0
  663. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/sandbox/services.py +0 -0
  664. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/scenes.py +0 -0
  665. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/self_gen.py +0 -0
  666. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/skill_eval/__init__.py +0 -0
  667. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/skill_eval/gepa_export.py +0 -0
  668. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/task/env.py +0 -0
  669. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/templates/__init__.py +0 -0
  670. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/traces/local.py +0 -0
  671. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/trajectories/metrics.py +0 -0
  672. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/src/benchflow/trajectories/tree.py +0 -0
  673. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/__init__.py +0 -0
  674. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/agents/__init__.py +0 -0
  675. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  676. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  677. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  678. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/instruction.md +0 -0
  679. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  680. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/task.toml +0 -0
  681. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  682. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/conformance-results.json +0 -0
  683. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/proof_multi_agent.py +0 -0
  684. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/proof_snapshot.py +0 -0
  685. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/run_conformance.py +0 -0
  686. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  687. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/__init__.py +0 -0
  688. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/_helpers.py +0 -0
  689. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/test_batch.py +0 -0
  690. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/test_orchestrator.py +0 -0
  691. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/test_replay_proxy.py +0 -0
  692. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/continue_run/test_run_folder.py +0 -0
  693. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/__init__.py +0 -0
  694. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/test_chibench_manifest.py +0 -0
  695. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/test_clawsbench_manifest.py +0 -0
  696. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/test_manifest.py +0 -0
  697. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/test_protocol.py +0 -0
  698. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/environment/test_readiness.py +0 -0
  699. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  700. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/hello-world-task/instruction.md +0 -0
  701. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  702. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/hello-world-task/task.toml +0 -0
  703. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/hello-world-task/tests/test.sh +0 -0
  704. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/traces/minimal-claude.jsonl +0 -0
  705. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  706. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/README.md +0 -0
  707. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  708. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  709. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  710. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  711. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  712. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  713. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  714. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/beta-task/task.toml +0 -0
  715. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  716. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/mock_acp_agent.py +0 -0
  717. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  718. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  719. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/fixtures/mock_openai_responses_server.py +0 -0
  720. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/check_adapter_evidence.py +0 -0
  721. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/check_trace_to_task_evidence.py +0 -0
  722. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  723. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/codex-acp.yaml +0 -0
  724. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/gemini.yaml +0 -0
  725. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  726. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/openclaw.yaml +0 -0
  727. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/opencode.yaml +0 -0
  728. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/openhands.yaml +0 -0
  729. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/integration/configs/pi-acp.yaml +0 -0
  730. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_acp_capability_advertising.py +0 -0
  731. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_acp_model_config_dispatch.py +0 -0
  732. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_acp_pinned_protocol_guard.py +0 -0
  733. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_acp_setup_failure_propagation.py +0 -0
  734. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_adapter_scripts.py +0 -0
  735. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_cli.py +0 -0
  736. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_env_resolution.py +0 -0
  737. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_gemini_defaults.py +0 -0
  738. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_idle_timeout_cli.py +0 -0
  739. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_model_decouple.py +0 -0
  740. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_registry.py +0 -0
  741. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_setup.py +0 -0
  742. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_agent_spec.py +0 -0
  743. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_branch.py +0 -0
  744. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_capture_trajectory.py +0 -0
  745. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_clawsbench_slice.py +0 -0
  746. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_config_redaction.py +0 -0
  747. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_connect_as_env.py +0 -0
  748. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_continuallearningbench_adapter.py +0 -0
  749. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_daytona_command_polling.py +0 -0
  750. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_daytona_litellm_runtime.py +0 -0
  751. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_docker_prune_scoping.py +0 -0
  752. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_docker_uploads.py +0 -0
  753. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_eval_filters_applied.py +0 -0
  754. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_eval_single_task_summary.py +0 -0
  755. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_eval_source_provenance.py +0 -0
  756. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_exclude_tasks.py +0 -0
  757. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_harvey_lab_shim.py +0 -0
  758. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_hilbench_adapter.py +0 -0
  759. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_hosted_env.py +0 -0
  760. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_integration_check_results.py +0 -0
  761. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_job_sequential_shared_resume.py +0 -0
  762. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_judge_symlink_ingestion.py +0 -0
  763. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_learner_store_persistence.py +0 -0
  764. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_litellm_config.py +0 -0
  765. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_litellm_logging.py +0 -0
  766. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_litellm_runtime.py +0 -0
  767. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_litellm_smoke.py +0 -0
  768. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_llm_judge_verifier.py +0 -0
  769. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_mock_openai_responses_server.py +0 -0
  770. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_monitor_scaffold.py +0 -0
  771. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_native_acp_usage.py +0 -0
  772. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_no_cross_provider_fallback.py +0 -0
  773. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_notification_order_real.py +0 -0
  774. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_pi_acp_launcher.py +0 -0
  775. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_reexport.py +0 -0
  776. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_release_version.py +0 -0
  777. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_reward_node.py +0 -0
  778. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_rollout_branch.py +0 -0
  779. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_rollout_config_path_coercion.py +0 -0
  780. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_rollout_import_no_side_effects.py +0 -0
  781. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_rollout_probe_sandbox_health.py +0 -0
  782. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_runtime_live_sandbox.py +0 -0
  783. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  784. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_sandbox_multi_service.py +0 -0
  785. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_sandbox_setup.py +0 -0
  786. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_scene.py +0 -0
  787. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_scene_result_aggregation.py +0 -0
  788. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_self_gen_cli.py +0 -0
  789. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_self_gen_export_failures.py +0 -0
  790. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_self_gen_orchestration.py +0 -0
  791. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_skill_invocation_artifacts.py +0 -0
  792. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_skills.py +0 -0
  793. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_skills_dir_agent_home_link.py +0 -0
  794. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_token_usage_normalization.py +0 -0
  795. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_trace_import_cli.py +0 -0
  796. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_traces_huggingface.py +0 -0
  797. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_trajectory_integration.py +0 -0
  798. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_trial_agent_timeout_verify.py +0 -0
  799. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_trial_litellm_runtime.py +0 -0
  800. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_usage_litellm.py +0 -0
  801. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_usage_required.py +0 -0
  802. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_usage_tracking.py +0 -0
  803. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_verifier_output_freshness.py +0 -0
  804. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/test_workflow_action_pinning.py +0 -0
  805. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/trajectories/__init__.py +0 -0
  806. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/trajectories/test_export.py +0 -0
  807. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/trajectories/test_export_nan_handling.py +0 -0
  808. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/trajectories/test_step_granularity.py +0 -0
  809. {benchflow-0.5.3.dev994 → benchflow-0.6.1}/tests/trajectories/test_tree.py +0 -0
@@ -0,0 +1,389 @@
1
+ # Changelog
2
+
3
+ ## [Unreleased]
4
+
5
+ ### Fixed
6
+ - `bench skills eval` now exits non-zero when any eval case errors (e.g. missing
7
+ credentials), matching `bench eval create`. A 100%-error run printed `0/1`
8
+ but exited `0`, so CI/scripts read a total failure as success.
9
+ - The "task.md already exists" migrate error now names both surfaces
10
+ (`--overwrite` for the CLI, `overwrite=True` for the Python API) instead of
11
+ only the API kwarg.
12
+ - `bench eval view <job-dir>` no longer shows a blank "No trajectory files
13
+ found" when given a job directory (the natural value from `eval create`'s
14
+ "Artifacts:" line) — it now indexes the rollout subdirectories to drill into.
15
+ - `bench hub env list` prints a footer (`Showing N…`) with how to refine
16
+ (`--search`/`--owner`/`--limit`/`--json`), so a small page of a large catalog
17
+ no longer reads as "the provider only has N environments".
18
+ - `bench tasks check --level publication-grade` errors for a missing verifier
19
+ package now include a remediation hint (author `verifier/verifier.md`; note
20
+ that `bench tasks migrate` does not generate it), instead of a dead-end.
21
+
22
+ ## 0.6.0 — 2026-06-13
23
+
24
+ ### Added
25
+
26
+ - **The `task.md` task standard** — a single-file unified task format (parser,
27
+ verifier planes, prompt sidecars, round-trip export with a machine-readable
28
+ loss report) plus the authoring CLI: `bench tasks init / check / migrate /
29
+ export`, with a layered `check --level` ladder up to a leaderboard-grade
30
+ acceptance gate. See [`docs/task-standard.md`](docs/task-standard.md) and the
31
+ [native authoring guide](docs/task-authoring-task-md.md).
32
+ - **`bench eval adopt` benchmark-adoption router** — `init` scaffolds a benchmark
33
+ conversion per [`benchmarks/CONVERT.md`](benchmarks/CONVERT.md), `convert` drives
34
+ the host `codex` CLI through the conversion workflow, and `verify` runs the
35
+ parity gate (deterministic per-criterion conversion parity plus the
36
+ agent-scale reward-distribution layer) and emits a confidence verdict, with a
37
+ drafted support issue on divergence. `bench eval adopt verify --rerun`
38
+ independently re-executes the benchmark's `parity_test.py` and scores its fresh
39
+ output (instead of trusting the recorded `parity_experiment.json`), failing
40
+ closed if the output is not scoreable; `bench eval adopt convert -c key=value`
41
+ passes codex config overrides through to the host codex driver (e.g. to work
42
+ around `~/.codex` drift). `bench tasks digest` recognizes native `task.md` tasks
43
+ as well as legacy `task.toml`.
44
+ - **ATIF and ADP trajectory artifacts** — every scored rollout now emits
45
+ `trainer/atif.json` and `trainer/adp.jsonl` (alongside the existing
46
+ `verifiers.jsonl`), with job-level ADP aggregation. One canonical raw
47
+ trajectory, multiple ecosystem formats out of the box.
48
+ - **OpenReward (ORS) reward-format interop** — export BenchFlow rewards in the
49
+ Open Reward Standard shape (`benchflow.adapters.ors`) and the `ors-episode`
50
+ verifier strategy is recognized. (The hosted-environment episode runner that
51
+ executes ORS environments end-to-end is in progress, not in this release.)
52
+ - **Daytona sandbox auto-reap** — orphaned sandboxes are cleaned at eval start
53
+ (TTL-tiered; failure states reaped sooner; an idle-activity guard protects
54
+ live runs), gated by `BENCHFLOW_DAYTONA_AUTO_REAP` (any of `0`/`false`/`no`/
55
+ `off`, case-insensitive, disables it).
56
+ - **Registry-pinned dataset runs** — `bench eval create -d name@version`
57
+ (e.g. `-d skillsbench@1.1`) resolves a dataset from a git-backed
58
+ `registry.json` (see skillsbench `docs/dataset-versioning.md`): tasks are
59
+ cloned at their pinned `git_commit_id` into `.cache/datasets` and every
60
+ task directory is verified against its sha256 content digest before
61
+ anything runs; the entry's `bench_version` range is checked against the
62
+ installed benchflow. `--registry` overrides the default (skillsbench)
63
+ registry. `result.json`/`config.json` are stamped with `dataset_name`,
64
+ `dataset_version`, and a per-task `task_digest` (`summary.json` carries
65
+ the name/version); `--tasks-dir` dev runs carry no dataset fields but
66
+ still stamp a live-computed `task_digest`, so every trajectory stays
67
+ attributable to exact task content. `bench tasks digest <dir>` prints
68
+ the digest for task authoring, and `check_results.py` audits the stamps.
69
+ See [`docs/running-benchmarks.md`](docs/running-benchmarks.md). (#689,
70
+ #690, #691; `packaging` promoted to a core dependency for the
71
+ `bench_version` check.)
72
+ - **`benchflow continue <run-folder>`** — resume a previous, unfinished
73
+ (timed-out) `openhands` run to completion. A standalone tool (it does not
74
+ touch the normal run path) that reconstructs the run's exact workspace and
75
+ agent memory from the recorded `llm_trajectory.jsonl` via record-replay,
76
+ then continues with the live model — no injected prompt — and writes a new
77
+ HF-compatible folder with `continued_from` provenance. See
78
+ [`docs/continue-runs.md`](docs/continue-runs.md).
79
+
80
+ ### Changed
81
+
82
+ - `bench metrics` → `bench eval metrics` and `bench view` → `bench eval view`
83
+ (the deprecated hidden top-level forms are gone; use the `eval` subgroup).
84
+ - Quickstart and CLI reference now match observed run behavior — the real jobs
85
+ directory layout and artifact map, the `<PROVIDER>_API_KEY` /
86
+ `<PROVIDER>_BASE_URL` convention, and exit-code semantics.
87
+ - Document the public vs internal preview install/upgrade command matrix,
88
+ including `uv tool` exact pins, internal preview upgrades, and the
89
+ `--force` path for replacing stale entrypoint scripts.
90
+
91
+ ### Renamed (aliased; old names removed in 0.7)
92
+ - Benchmark adoption is now `bench eval adopt {init,convert,verify}`. It lives
93
+ under `eval` because `eval` is the universal benchmark entry point (`eval
94
+ create` runs a benchmark; `eval adopt` makes a foreign one runnable). Two prior
95
+ spellings remain as hidden deprecated aliases, each printing a one-line stderr
96
+ notice pointing at `bench eval adopt`: the original `bench agent
97
+ create|run|verify`, and the 0.6-dev intermediate top-level `bench adopt`.
98
+ `bench agent` now means agent management only (`list` / `show`).
99
+ - The overloaded `bench environment` group was split and is now a hidden
100
+ **deprecated alias group** (removed in 0.7): the local sandbox lifecycle moved
101
+ to `bench sandbox {create,list,cleanup}`, and hosted-provider browsing to
102
+ `bench hub env {list,show,inspect}`. The old `bench environment
103
+ create|list|cleanup|show|inspect` (plus `list --provider`/`--hub`) still work,
104
+ each printing a one-line stderr deprecation notice. The hosted *run* path stays
105
+ on `bench eval create --source-env`.
106
+
107
+ ### Removed
108
+ - **Removed the unwired `OTelCollector`** (`benchflow.OTelCollector` /
109
+ `benchflow.trajectories.OTelCollector`) and its `trajectories/otel.py` module.
110
+ It was a designed-but-never-wired OTLP receiver from the v2 rewrite — never
111
+ instantiated, never tested, and not part of any run path (BenchFlow captures
112
+ trajectories via ACP session events and the LiteLLM callback path instead).
113
+ This drops it from the public `__all__`; re-add it (with a test + real wiring)
114
+ if OpenTelemetry-based capture is revived.
115
+ - Removed two unimplemented stub methods (`read_file`, `write_file`) from the
116
+ `@runtime_checkable` `Sandbox` Protocol. No backend implemented them (backends
117
+ expose the `upload_file`/`download_file` family) and there were no call sites,
118
+ so they were a latent `isinstance` trap on the contract surface.
119
+ - Dead-code purge, round 3 (no public-API impact; each symbol re-verified
120
+ zero-reference with class context): removed `TaskMetrics.audit_outcome`,
121
+ `OTelCollector.endpoint`, `ReplayRouter.cursor`, `RuntimeResult.to_run_result`
122
+ (legacy SDK-compat converter, unused), the never-read dataclass fields
123
+ `ToolCall.output` and `JudgeConfig.{reference, prompt_template}`, the write-only
124
+ `ReplayProxy._host`, the inert `AgentProtocolError.code` annotation, and an
125
+ unused `retry_if_exception_type` import + fallback in `sandbox/daytona.py`.
126
+ - Dead-code purge, round 2 (no public-API impact; each symbol adversarially
127
+ verified zero-reference with class context): removed seven unused `*_path`
128
+ `@property`s from `TaskPaths`/`RolloutPaths` (`readme_path`, `gitignore_path`,
129
+ `verifier_document_path`, `artifacts_manifest_path`, `result_path`,
130
+ `exception_message_path`, `log_path`), the vestigial `ModalSandbox.supports_gpus`
131
+ / `can_disable_internet` capability properties (not on the Sandbox Protocol),
132
+ an unused module-level `logger` in `cli/continue_cmd.py`, and the orphaned
133
+ `mcp_service_hooks_from_config` helper.
134
+ - Dead-code purge (no public-API impact unless noted): removed the unused
135
+ `job_config_from_yaml` helper, the nominal `TASK_REPOS` back-compat dict
136
+ (use `TASK_ALIASES`), the `_looks_like_verifier_dep_install_error` shim
137
+ (use `contains_verifier_dep_install_marker`), the unused `parse_binary_verdict`
138
+ reward helper (use `parse_verdict`), the dead `SandboxBackend` type alias,
139
+ an unused `StdioTransport._read_buffer` field, and 12 redundant `rollout`
140
+ package re-export aliases (submodule definitions unchanged).
141
+ - Removed the deprecated, hidden `benchflow skills install` CLI command. The
142
+ SDK function `benchflow.skills.install_skill` is unchanged.
143
+ - Retired the deprecated top-level legacy CLI (`cli/legacy.py`). The dead
144
+ 0.3-era `job`/`agents`/`eval` commands are removed; `metrics` and `view` are
145
+ promoted to first-class `bench eval metrics` / `bench eval view`; and the
146
+ redundant `cleanup` command is dropped in favor of the existing
147
+ `bench environment cleanup`.
148
+ - Removed the `experiments/` research/dev tooling tree (never shipped in the
149
+ wheel) and its 6 dependent test modules, completing the dev-tree cleanup
150
+ alongside the earlier `dashboard/` removal and `labs/` → `docs/labs`
151
+ migration. Benchmark result files were preserved out-of-tree, not deleted.
152
+
153
+ ### Fixed
154
+ - **CLI errors now go to stderr.** `print_error` (the single CLI error sink) wrote
155
+ to stdout, so a `bench … --json | jq` pipeline could get a non-JSON error line on
156
+ the JSON channel. All CLI errors (and the dataset bench-version remediation hint)
157
+ now route to stderr; exit codes are unchanged, so failures stay detectable.
158
+ - **`bench hub env list --json` now emits valid JSON at any width.** The raw
159
+ payload was printed through Rich's console, which soft-wrapped long strings and
160
+ injected literal newlines mid-value (unparseable JSON when piped). It is now
161
+ written verbatim.
162
+ - **No more raw tracebacks on bad input.** Hardened the unguarded front doors a
163
+ stress sweep surfaced: `eval create --source-repo` clone failures and
164
+ `--tasks-dir <file>`; `eval view` on corrupt/partial trajectory artifacts
165
+ (`prompts.json`, a bad `acp_trajectory.jsonl` line, `result.json`, a null
166
+ `session_id`); `sandbox create` with an unknown `--sandbox` backend or a missing
167
+ optional sandbox dependency; `tasks digest` on an unreadable file (single = clean
168
+ error, batch = warn-and-skip); and `hub check` with a malformed/missing
169
+ `--registry` (now a user-meaningful message, not a raw `JSONDecodeError`/`OSError`).
170
+ - **Markup-safe output.** User/author-controlled strings that look like Rich markup
171
+ no longer crash or silently garble output: `eval list` job names, `eval metrics`
172
+ title, `skills list` cells, and `tasks init`'s reported path are now escaped.
173
+ - **`skills eval` schema errors** no longer leak pydantic internals (private model
174
+ name, `[type=…]` tags, the pydantic.dev URL) — just the actionable per-field text.
175
+ - **`bench environment` deprecation notice** now fires exactly once (one line,
176
+ once per process) instead of doubling up with Typer's generic
177
+ `DeprecationWarning`, and its aliased verbs are hidden from `--help`, matching the
178
+ `agent` / `eval adopt` alias families.
179
+ - `benchmarks/CONVERT.md` now references the canonical `bench eval adopt verify`
180
+ (was the deprecated `bench agent verify`) in the conversion prompt.
181
+ - `bench tasks migrate` emits minimal, canonical (`schema_version`) front
182
+ matter instead of a full defaults dump.
183
+ - Verifier `timeout_sec` is validated as a positive, finite budget
184
+ (fail-closed at parse time; omission inherits the documented default).
185
+ - Docker `compose up` retries on the daemon network create/attach race.
186
+ - Console error messages truncate at word boundaries instead of mid-token.
187
+ - Recorded sandbox-setup timeouts and trajectory artifacts are consistent
188
+ across the Docker and Daytona backends.
189
+ - The `task.md` init scaffold is agent-neutral, so `--agent oracle` works on a
190
+ freshly scaffolded task.
191
+ - `gemini/`-prefixed judge/simulated-user models now resolve to the Google
192
+ backend instead of passing the slashed name through and 404-ing.
193
+ - Model-backed judges raise a clear error naming the provider and pointing at
194
+ `pip install benchflow[judge]` when the judge SDK is missing, instead of the
195
+ misleading "Missing OPENAI_API_KEY" fall-through.
196
+ - `bench tasks check` recognizes a rubric-backed `llm-judge` verifier as a valid
197
+ entrypoint and no longer demands a `test.sh`.
198
+ - Pre-verifier disk reclaim is workspace-aware and symlink-safe: it rejects
199
+ symlinked cache candidates and realpath-guards every deletion against the
200
+ workspace and `/logs`, so an agent-planted `~/.cache` symlink cannot steer the
201
+ reclaim into workspace or output state (#601).
202
+ - Bedrock Claude 4.8+ routes fail closed when LiteLLM's adaptive-thinking patch
203
+ is inactive, instead of silently sending a request the proxy cannot satisfy
204
+ (#602).
205
+
206
+ ## 0.5.2 — 2026-06-05
207
+
208
+ ### Changed
209
+
210
+ - **PyPI project README badge** — replace the dynamic PyPI version badge with
211
+ a stable package badge so the rendered project description cannot show a
212
+ stale external version image after a public release.
213
+ - **Release documentation refresh** — update public install snippets,
214
+ release-channel docs, examples, and citation metadata to `0.5.2`.
215
+
216
+ ## 0.5.1 — 2026-06-05
217
+
218
+ ### Added
219
+
220
+ - **Daytona usage telemetry by default** — Daytona runs now start a sandbox-local provider usage proxy so token/cost telemetry works without an external tunnel; use `--usage-tracking off` to bypass proxying when needed.
221
+ - **Azure AI Foundry providers** — new `azure-foundry-openai/` and `azure-foundry-anthropic/` prefixes routing through Foundry's unified resource. Export `AZURE_API_KEY` plus `AZURE_API_ENDPOINT` (e.g. `https://<resource>.openai.azure.com/`); benchflow derives the resource name from the endpoint host, builds the per-surface base URL, and maps the key onto the agent-native auth env automatically. Missing/unrecognized endpoints and unsupported agent/provider protocol pairings fail fast with clear errors instead of falling through to the wrong endpoint.
222
+ - **Azure Foundry auth guidance** — agent discovery output and docs now call out that provider-prefixed models can use provider-specific credentials instead of the agent's native/default API key.
223
+
224
+ ### Changed
225
+
226
+ - **PyPI project documentation refresh** — the public package README, install snippets, release-channel docs, examples, and citation metadata now point at `0.5.1`.
227
+
228
+ ### Fixed
229
+
230
+ - Inherit `BENCHFLOW_PROVIDER_BASE_URL` / `BENCHFLOW_PROVIDER_API_KEY` from the host environment so self-hosted / OpenAI-compatible endpoints route correctly instead of falling back to `api.openai.com`; empty or whitespace-only host values are skipped so they cannot shadow the resolved provider URL (benchflow-ai/skillsbench#817).
231
+
232
+ ## 0.5.0 — 2026-06-04
233
+
234
+ ### Added
235
+
236
+ - **Public/internal preview release channels** — tag-driven public releases publish stable PyPI packages and GitHub Releases; merges to `main` publish internal preview `.devN` packages after CI passes.
237
+ - **v0.5 integration evidence** — release validation docs now cover urgent blocker closure, SkillsBench infra-fix validation, adapter evidence, trace-to-task evidence, hosted env compatibility, and diagnostic fields.
238
+ - **Release automation guardrails** — public release tags must point at commits contained in `main`, version tags must match `pyproject.toml`, and PyPI publishing uses Trusted Publishing/OIDC instead of stored tokens.
239
+
240
+ ### Changed
241
+
242
+ - `main` now tracks the next public version as `0.5.1.dev0`; the published public SDK is `0.5.0`, and internal previews are emitted as `0.5.1.dev<N>`.
243
+ - Documentation now directs downstream users to depend on public PyPI releases by default and use prerelease-enabled internal previews only for validation before the next public cut.
244
+
245
+ ### Fixed
246
+
247
+ - Closed the v0.5 release blocker set covering structured sandbox/verifier diagnostics, Daytona startup/export retries, verifier dependency classification, CTRF path consistency, and SkillsBench task compatibility evidence.
248
+
249
+ ## 0.3.3 — 2026-05-15
250
+
251
+ ### Added
252
+
253
+ - **Harvey LAB benchmark** — converter, agent shim, and parity validation for 1,251 legal AI tasks (#239).
254
+ - **Harvey LAB Claude Sonnet judge** — switched verifier from Gemini to `claude-sonnet-4-6`, matching the original benchmark default (#264).
255
+ - **ProgramBench integration** — new benchmark adapter; TB2 removed; `.ref/` migrated to `benchmarks/` (#237).
256
+ - **CLI progress output** — `bench eval create` / `bench run` now show progress messages by default (#264).
257
+ - **Skill nudge** — optional prompt injection for skill-enhanced agent runs (#207).
258
+ - **Self-generated skill mode** for Codex agent (#233).
259
+ - **Integration test suite** for ENG-6 + `OPENAI_BASE_URL` inheritance fix (#255).
260
+ - **Modal backend support** — Dockerfile compatibility for Modal environments.
261
+ - **CITATION.cff** (#246).
262
+ - **`AGENTS.md`** — canonical contributor guide; `CLAUDE.md` deprecated (#258).
263
+
264
+ ### Changed
265
+
266
+ - **Two-field source pattern** for dataset sourcing (#252).
267
+ - **Docs overhaul** — synced from www.benchflow.ai; Mintlify config added then orphaned config removed (#259, #257, #226).
268
+ - **`uv sync`** for package management (#232).
269
+
270
+ ### Fixed
271
+
272
+ - Prevent `TypeError` in `metrics.collect_metrics` when reward is `None` (#243).
273
+ - Copy eval `requirements.txt` into Docker build context (#245).
274
+ - Resolve agent aliases in `bench agent show` and display aliases in `bench agent list` (#251).
275
+ - Guard ACP transports against JSON scalar logs (#236).
276
+ - Agent timeout reward fallback for Codex (#234).
277
+ - Isolate JS agent runtime installs (#231).
278
+ - Route Codex ACP through responses API (#224).
279
+ - Deploy skills and forward `solution.env` for oracle runs (#223).
280
+ - Honor no-internet tasks for agent runs; disable web tools without prompt mutation (#215).
281
+ - Propagate `OPENAI_API_KEY` for vllm provider (#3).
282
+ - Preserve arrival order of thought/message within flush windows (#214).
283
+ - Record user messages and per-turn agent text in ACP trajectory (#745).
284
+ - Chown skill-link parent dirs so sandbox user can write into them.
285
+ - Dynamic `--rootdir` in `PYTEST_ADDOPTS` based on task workspace.
286
+ - Unique env-file path in `DaytonaPtyProcess` to avoid race conditions (#200).
287
+
288
+ ## 0.2.3 — 2026-04-15
289
+
290
+ ### Added
291
+
292
+ - `benchmarks/tb2_multiturn-claude-haiku45.yaml` — shipped config for the README's TB2 multi-turn Claude result.
293
+ - Daytona resource clamping via `BENCHFLOW_DAYTONA_MAX_CPUS` / `MAX_MEMORY_MB`.
294
+
295
+ ### Changed
296
+
297
+ - Renamed `skillsbench-claude-glm5.yaml` → `skillsbench-claude-glm51.yaml` to match the model ID.
298
+ - `codex --login` correction in `docs/getting-started.md`.
299
+ - Restricted sdist build to `src/`, `tests/`, and metadata.
300
+
301
+ ### Fixed
302
+
303
+ - Verifier sandbox hardening follow-ups across several base-image and tooling edge cases.
304
+ - Preserve trusted verifier path entries and workspace answer files.
305
+ - Redirect oracle output to container log.
306
+ - Align YAML path resolution to config file location.
307
+
308
+ ## 0.2.2 — 2026-04-13
309
+
310
+ ### Added
311
+
312
+ - **Sandbox hardening tiers 1–3** — layered defense (env scrubbing, path lockdown, workspace
313
+ freeze, wider snapshot, oracle privilege drop) blocking F1–F6 red-team findings.
314
+ - **`labs/reward-hack-matrix`** — per-trial timeout support and 0.2.2 sweep handoff scripts.
315
+
316
+ ### Fixed
317
+
318
+ - Multiple sandbox bypass vectors identified in red-team testing.
319
+
320
+ ## 0.2.1 — 2026-04-12
321
+
322
+ ### Added
323
+
324
+ - **Sandbox hardening on by default** — `sandbox_user` now defaults to `"agent"` (was `None`/root). Blocks conftest-hook and answer-lookup exploit patterns.
325
+ - **Path lockdown** — new `sandbox_locked_paths` parameter makes `/solution` and `/tests` read-only before the verifier runs, blocking `.pth`-injection and similar pre-verify tampering.
326
+ - **Verifier failure isolation** — agent errors and verifier errors are now stored separately; a crashing verifier no longer masks the agent result.
327
+ - **`labs/benchjack-sandbox-hardening`** — cookbook demonstrating three exploit patterns (P1 conftest-hook, P2 answer-lookup, P7 `.pth`-injection) and their defenses.
328
+
329
+ ### Fixed
330
+
331
+ - **Oracle runs as `sandbox_user`** — oracle agent now respects path lockdown instead of running as root and bypassing it.
332
+ - **Multi-endpoint provider routing** — providers with multiple endpoints now route by the agent's native API protocol.
333
+ - **Stale API key shadowing subscription auth** — emits a warning when `ANTHROPIC_API_KEY` env var is present alongside `claude login` credentials.
334
+ - **pytest `ini`-injection bypass** — closed a verifier hardening edge case.
335
+
336
+ ### Changed
337
+
338
+ - Version is now single-sourced via `importlib.metadata`; no more duplicate version string in `__init__.py`.
339
+ - **User-facing docs** — new `docs/` directory with getting-started guide, CLI reference, architecture overview, task-authoring guide, and labs index. README trimmed; detailed content moved to `docs/`.
340
+
341
+ ## 0.2.0 — 2026-04-09
342
+
343
+ **First public release.** A near-complete rearchitecture from the 0.1.x era. API surface has changed — assume breaking changes. Future releases will maintain compatibility within the 0.2.x line. 0.1.x users should treat this as a fresh install; see `.dev-docs/sdk-reference.md` for the new SDK.
344
+
345
+ ### Added
346
+
347
+ - **Multi-agent, multi-provider, multi-auth matrix** — one YAML config, any supported agent × model × provider × auth combination.
348
+ - **Subscription auth support** — use `claude login`, `codex --login`, `gemini` OAuth credentials directly. No API keys required for host-based agent workflows.
349
+ - **Vertex AI support** — ADC auth for `google-vertex/`, `anthropic-vertex/`, `vertex-zai/` prefixed models.
350
+ - **Provider registry** — add a new LLM endpoint via a dict entry in `providers.py`, no code changes.
351
+ - **`benchmarks/` directory** with reusable YAML configs and runner scripts for TB2 and SkillsBench.
352
+ - **Auto task download** — YAML configs reference datasets as `org/repo/path` (e.g. `harbor-framework/terminal-bench-2`). Repos are cloned on first use and cached under `.cache/datasets/`.
353
+ - **`benchflow tasks init`** — scaffold new tasks.
354
+ - **`benchflow tasks check`** — validate task structure.
355
+ - **`benchflow cleanup`** — delete old sandboxes with `--max-age` filtering (default 24h).
356
+ - **Oracle agent support** — run `solution/solve.sh` directly for task validation.
357
+ - **Hello-world-task example** for sanity-testing the agent pipeline.
358
+ - **Model generation params** via env vars (`BENCHFLOW_TEMPERATURE`, `BENCHFLOW_TOP_P`, `BENCHFLOW_MAX_TOKENS`).
359
+ - **OpenClaw ACP shim** with trajectory parsing and skills support.
360
+ - **ACP trajectory capture** — full multi-turn agent trajectories via ACP protocol.
361
+
362
+ ### Changed
363
+
364
+ - **Skill loading** — agent-targeted with proper precedence; auto-distributed from `task.toml` `skills_dir`.
365
+ - **`openclaw-gemini` merged** into `openclaw` — provider mode selected at runtime via `BENCHFLOW_PROVIDER_NAME`.
366
+
367
+ ### Fixed
368
+
369
+ - **API keys leaking in `ps aux`** — env vars now written inside the container instead of passed via Docker exec `-e`.
370
+ - **Subscription auth skipped without `-m`** — `benchflow run` without `--model` now checks correctly.
371
+ - **ADC credentials break with `sandbox_user`** (#111) — credentials written to sandbox user's home instead of `/root/`.
372
+ - **Daytona sandboxes not cleaned up** (#102) — auto-delete after max age.
373
+ - **`benchflow cleanup` ignoring `--max-age`** — was deleting everything regardless of age.
374
+ - **readline buffer overflow crashes trial** (#98).
375
+ - **OpenClaw ACP shim loses tool command text** (#96).
376
+ - **OpenClaw ACP shim hardcodes `anthropic/` prefix** (#95) — now routes correctly for Gemini/GLM models.
377
+ - **Oracle agent `PermissionError`** writing `agent/oracle.txt` (#91).
378
+ - **Oracle path skips `pre_agent_hooks`** (#92) — services now start before oracle runs.
379
+ - **Trial data parity with Harbor** (#90) — richer `result.json`, agent logs, per-phase timing.
380
+ - **`SDK.run()` `PermissionError`** — `jobs_dir` subdirectories created as root (#88).
381
+ - **Partial trajectory lost on timeout** — saved before timeout raises.
382
+ - **Redundant `--version` binary check** removed — was wasting 30s per trial.
383
+ - **Trajectory fallback** — scrapes agent-native files when ACP `session/update` is empty (#94).
384
+ - **`litellm` upgraded to 1.83.0** for CVE-2026-35030; transitive dep security alerts resolved (13 Dependabot alerts closed).
385
+
386
+ ### Deprecated
387
+
388
+ - `BaseAgent` re-export — planned removal in 0.3.0
389
+ - `Trial` re-export — planned removal in 0.3.0
@@ -0,0 +1,230 @@
1
+ Metadata-Version: 2.4
2
+ Name: benchflow
3
+ Version: 0.6.1
4
+ Summary: Multi-turn agent benchmarking with ACP — run any agent, any model, any provider.
5
+ Project-URL: Homepage, https://github.com/benchflow-ai/benchflow
6
+ Project-URL: Repository, https://github.com/benchflow-ai/benchflow
7
+ Project-URL: Issues, https://github.com/benchflow-ai/benchflow/issues
8
+ Project-URL: Discord, https://discord.gg/mZ9Rc8q8W3
9
+ Project-URL: Changelog, https://github.com/benchflow-ai/benchflow/blob/main/CHANGELOG.md
10
+ Author-email: Xiangyi Li <xiangyi@benchflow.ai>, Kyoung Whan Choe <choe.kyoung@gmail.com>
11
+ Maintainer-email: Xiangyi Li <xiangyi@benchflow.ai>, Kyoung Whan Choe <choe.kyoung@gmail.com>
12
+ License: Apache-2.0
13
+ License-File: LICENSE
14
+ Keywords: acp,agent-evaluation,benchmark,llm-agents,multi-turn,skillsbench
15
+ Classifier: License :: OSI Approved :: Apache Software License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.12
21
+ Requires-Dist: agent-client-protocol>=0.10
22
+ Requires-Dist: anyio>=4.0
23
+ Requires-Dist: httpx>=0.27.0
24
+ Requires-Dist: litellm[proxy]==1.89.0
25
+ Requires-Dist: packaging>=24
26
+ Requires-Dist: pydantic>=2.7
27
+ Requires-Dist: pyyaml>=6.0
28
+ Requires-Dist: rich>=13.0
29
+ Requires-Dist: tomli-w>=1.0
30
+ Requires-Dist: typer>=0.9
31
+ Provides-Extra: bedrock
32
+ Requires-Dist: boto3>=1.40; extra == 'bedrock'
33
+ Provides-Extra: deepagents
34
+ Requires-Dist: deepagents>=0.6; extra == 'deepagents'
35
+ Requires-Dist: langchain-openai>=0.2; extra == 'deepagents'
36
+ Provides-Extra: dev
37
+ Requires-Dist: pre-commit>=3.7; extra == 'dev'
38
+ Requires-Dist: pytest-asyncio>=0.24.0; extra == 'dev'
39
+ Requires-Dist: pytest>=9.0.3; extra == 'dev'
40
+ Requires-Dist: ruff>=0.7.0; extra == 'dev'
41
+ Requires-Dist: ty>=0.0.1a1; extra == 'dev'
42
+ Provides-Extra: judge
43
+ Requires-Dist: anthropic>=0.40; extra == 'judge'
44
+ Requires-Dist: google-genai>=1.0; extra == 'judge'
45
+ Requires-Dist: openai>=1.40; extra == 'judge'
46
+ Provides-Extra: sandbox-daytona
47
+ Requires-Dist: daytona>=0.184.0; extra == 'sandbox-daytona'
48
+ Requires-Dist: tenacity>=8.0; extra == 'sandbox-daytona'
49
+ Provides-Extra: sandbox-modal
50
+ Requires-Dist: modal>=0.73; extra == 'sandbox-modal'
51
+ Requires-Dist: tenacity>=8.0; extra == 'sandbox-modal'
52
+ Description-Content-Type: text/markdown
53
+
54
+ <div align="center">
55
+ <h1>BenchFlow</h1>
56
+ <p>The universal environment framework — a benchmark is just a frozen environment.</p>
57
+ <a href="https://pypi.org/project/benchflow/" target="_blank">
58
+ <img src="https://img.shields.io/badge/PyPI-benchflow-3775A9?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI package">
59
+ </a>
60
+ <a href="https://discord.gg/mZ9Rc8q8W3" target="_blank">
61
+ <img src="https://img.shields.io/badge/Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" alt="Discord">
62
+ </a>
63
+ </div>
64
+
65
+ ## What
66
+
67
+ BenchFlow is a universal environment framework: it runs AI agents against task environments and scores them through one hardened contract. **A benchmark is just a frozen environment** — point BenchFlow at any of them, drive it with *any* ACP agent, and run single-agent, multi-agent, or multi-round patterns over the same Scene-based lifecycle.
68
+
69
+ - **Run any benchmark** — three-layer routing runs supported frameworks natively, translates unknown formats and proves equivalence with a parity gate, or runs a bespoke harness as-is; every layer emits one scored-trajectory contract. See [Run any benchmark](./docs/running-any-benchmark.md)
70
+ - **Any ACP agent** — Gemini CLI, Claude Code, Codex, OpenCode, OpenHands, Pi, or your own
71
+ - **Single + multi + progressive** — single-agent / multi-agent (coder + reviewer, simulated user) / multi-round with a Python `BaseUser` callback
72
+ - **Loop strategies** — wrap any agent in a `--loop-strategy` (`verify-retry`, `self-review`); every rollout captures a per-iteration reward + token trajectory, so you can plot capability against cost (can a cheap model + loops match an expensive one at equal token spend?)
73
+ - **`task.md` tasks** — one file (YAML frontmatter + prompt body) replaces the split `task.toml` + `instruction.md` layout; author with `bench tasks init` / `check` / `migrate` / `export`
74
+ - **Hosted environments** — run external PrimeIntellect / Verifiers environments through `--source-env`, without converting them to BenchFlow tasks
75
+ - **Sandboxes** — Docker locally, Daytona for parallel cloud runs (orphaned sandboxes auto-reaped at eval start), Modal for serverless/GPU-backed task environments
76
+ - **Hardened verifier** — defaults block BenchJack/Meerkat-style reward-hacking; tasks opt out per-feature
77
+ - **Training-ready output** — every scored rollout emits ATIF (`trainer/atif.json`) and ADP (`trainer/adp.jsonl`) trajectory records next to the Verifiers/ORS (OpenReward) reward record
78
+
79
+ ## Quickstart
80
+
81
+ ```bash
82
+ # Install benchflow 0.6.0 from PyPI
83
+ uv tool install --prerelease allow benchflow
84
+
85
+ # Run a benchmark: any task source, any ACP agent, any sandbox
86
+ export GEMINI_API_KEY=... # or claude login / codex --login for subscription auth
87
+ bench eval create \
88
+ --source-repo benchflow-ai/skillsbench --source-path tasks \
89
+ --agent gemini --model gemini-3.1-flash-lite-preview \
90
+ --sandbox daytona --concurrency 64
91
+ ```
92
+
93
+ Each run writes a per-task `result.json` (rewards + trajectory + token usage) and a job `summary.json` (pass-rate, cost, and — for looped runs — a pass@iteration convergence curve). New here? Start with [Getting started](./docs/getting-started.md), or paste the [agent quickstart prompt](./docs/agent-quickstart.md) into Claude Code / Codex / Gemini CLI and let it drive the whole thing.
94
+
95
+ ## Install
96
+
97
+ `0.6.0` is on PyPI. Install (or upgrade) with uv or pip:
98
+
99
+ ```bash
100
+ uv tool install --prerelease allow benchflow # add --upgrade to refresh an existing install
101
+ pip install --pre --upgrade benchflow # pip equivalent
102
+ ```
103
+
104
+ - `--prerelease allow` (uv) / `--pre` (pip) is required for BenchFlow's pinned LiteLLM release-candidate dependency, not for benchflow itself (`0.6.0` is a final release). Confirm with `bench --version`.
105
+ - If you see `Executables already exist: bench, benchflow`, re-run with `--force` to replace stale entrypoints from an older install.
106
+
107
+ Internal users wanting the newest preview from `main` install the [internal preview channel](./docs/release.md) (`uv tool install --prerelease allow --upgrade benchflow`).
108
+
109
+ **Requirements & auth.** Python 3.12+ and [uv](https://docs.astral.sh/uv/). Set `DAYTONA_API_KEY` for Daytona or configure Modal auth for Modal; export an agent API key (`GEMINI_API_KEY`, `ANTHROPIC_API_KEY`, …) or use subscription auth (`claude login` / `codex --login`). Provider-prefixed models may need provider-specific credentials; Azure Foundry uses `AZURE_API_KEY` + `AZURE_API_ENDPOINT`.
110
+
111
+ ## Documentation
112
+
113
+ Start with [Getting started](./docs/getting-started.md), then [Concepts](./docs/concepts.md) for the mental model. Prefer to have an AI coding agent run the whole quickstart for you? Paste the [agent quickstart prompt](./docs/agent-quickstart.md) into Claude Code, Codex CLI, or Gemini CLI. Then by goal:
114
+
115
+ | If you want to… | Read |
116
+ |------------------|------|
117
+ | Run an eval on an existing task | [Getting started](./docs/getting-started.md) |
118
+ | Understand how BenchFlow runs *any* benchmark (the three-layer model) | [Run any benchmark](./docs/running-any-benchmark.md) |
119
+ | Have an AI agent install + run the quickstart end to end | [Agent quickstart prompt](./docs/agent-quickstart.md) |
120
+ | Understand Rollout / Scene / Role / Verifier | [Concepts](./docs/concepts.md) |
121
+ | Author a new task | [Task authoring](./docs/task-authoring.md) |
122
+ | Author a task in the native `task.md` format | [Native task.md authoring](./docs/task-authoring-task-md.md) |
123
+ | Adopt an upstream benchmark into BenchFlow | [Benchmark adoption](./docs/benchmark-adoption.md) |
124
+ | Run a hosted PrimeIntellect / Verifiers environment | [CLI reference](./docs/reference/cli.md) |
125
+ | Multi-agent: coder + reviewer, simulated user, BYOS, stateful envs | [Use cases](./docs/use-cases.md) |
126
+ | Multi-round single-agent (progressive disclosure, oracle access) | [Progressive disclosure](./docs/progressive-disclosure.md) |
127
+ | Skill evaluation (when the artifact is a skill, not a workspace) | [Skill eval](./docs/skill-eval.md) |
128
+ | Understand the security model | [Sandbox hardening](./docs/sandbox-hardening.md) |
129
+ | Use public vs internal preview SDK releases | [Release channels](./docs/release.md) |
130
+ | CLI flags + commands | [CLI reference](./docs/reference/cli.md) |
131
+ | Python API surface | [Python API reference](./docs/reference/python-api.md) |
132
+
133
+ Notebooks and runnable example scripts live under [`docs/examples/`](./docs/examples/) so examples stay versioned with the docs that explain them.
134
+
135
+ > **`bench agent` vs `bench eval adopt`.** `bench agent list` / `bench agent show`
136
+ > inspect **registered AI agents** (the solver programs like Claude Code or
137
+ > Gemini CLI). Onboarding a third-party benchmark into `benchmarks/<name>/` is a
138
+ > separate workflow — `bench eval adopt init` → `convert` → `verify`. (The legacy
139
+ > `bench agent create|run|verify` still work as deprecated aliases through 0.6.)
140
+ > See the [CLI reference](./docs/reference/cli.md#bench-eval-adopt) for details.
141
+
142
+ ## Benchmark task sources
143
+
144
+ Benchmark datasets live in external Git repos and are referenced with two fields:
145
+
146
+ ```yaml
147
+ # benchmarks/harvey-lab/harvey-lab-gemini-flash-lite.yaml
148
+ source:
149
+ repo: benchflow-ai/benchmarks # GitHub org/repo
150
+ path: datasets/harvey-lab/tasks # optional subpath within repo
151
+ ref: main # optional branch/tag
152
+ agent: gemini
153
+ model: gemini/gemini-3.1-flash-lite-preview
154
+ ```
155
+
156
+ Run any benchmark via the CLI:
157
+
158
+ ```bash
159
+ # From a YAML config (shipped with the repo)
160
+ bench eval create --config benchmarks/harvey-lab/harvey-lab-gemini-flash-lite.yaml
161
+
162
+ # Inline — mirrors the YAML source fields
163
+ bench eval create \
164
+ --source-repo benchflow-ai/skillsbench --source-path tasks \
165
+ --agent gemini --model gemini-3.1-flash-lite-preview --sandbox daytona --concurrency 64
166
+ ```
167
+
168
+ Repos are cloned and cached locally under `.cache/datasets/` on first use.
169
+
170
+ Hosted environments are another source type. Instead of a repo, pass
171
+ `--source-env` to run an external PrimeIntellect / Verifiers environment on its
172
+ own native harness — BenchFlow preserves the hosted identity (`env_uid`,
173
+ `hub_url`) and still writes the shared rollout output contract:
174
+
175
+ ```bash
176
+ bench eval create \
177
+ --source-env primeintellect/general-agent \
178
+ --source-env-version 0.1.1 \
179
+ --model google/gemini-2.5-flash-lite
180
+ ```
181
+
182
+ Downstream projects should depend on the public PyPI release by default. For
183
+ internal validation before the next public release, install or lock the internal
184
+ preview channel with prereleases enabled; see [Release channels](./docs/release.md).
185
+
186
+ ## Authoring tasks
187
+
188
+ A task is one `task.md` (YAML frontmatter for config + a markdown prompt body)
189
+ plus `environment/` and `verifier/` sidecars. The `bench tasks` commands cover
190
+ the authoring lifecycle:
191
+
192
+ ```bash
193
+ bench tasks init my-task # scaffold a task.md package under tasks/
194
+ bench tasks check tasks/my-task # validate (default --level structural)
195
+ bench tasks migrate legacy-task/ # convert task.toml + instruction.md → task.md
196
+ bench tasks export tasks/my-task out/ # write a Harbor/Pier split layout + loss report
197
+ ```
198
+
199
+ See [Native task.md authoring](./docs/task-authoring-task-md.md) and the
200
+ [task standard](./docs/task-standard.md).
201
+
202
+ ## Featured
203
+
204
+ - **Progressive disclosure on SWE-bench Pro** — the `BaseUser` abstraction drives a multi-round rollout: terse round-0 prompt → failing-test hints → full spec. 5/5 oracle on Daytona, runnable demo at [`docs/examples/swebench_pro_progressive_disclosure.ipynb`](./docs/examples/swebench_pro_progressive_disclosure.ipynb). See [Progressive disclosure](./docs/progressive-disclosure.md).
205
+
206
+ ## Research artifacts
207
+
208
+ Two runnable labs validate the security story (historical, 0.2.x-era — archived under [`docs/labs/`](./docs/labs/)):
209
+
210
+ - [`docs/labs/benchjack-sandbox-hardening/`](./docs/labs/benchjack-sandbox-hardening/) — end-to-end demo that 0.2.1+ blocks three [BenchJack](https://rdi.berkeley.edu/blog/trustworthy-benchmarks-cont/) exploits that flip 0.2.0's reward from 0.0 to 1.0.
211
+ - [`docs/labs/reward-hack-matrix/`](./docs/labs/reward-hack-matrix/) — full reward-hack sweep across real benchmarks comparing 0.2.0 vs 0.2.2.
212
+
213
+ ## Audience
214
+
215
+ - **Eval researchers / paper writers** → [Getting started](./docs/getting-started.md) → [Concepts](./docs/concepts.md) → [Use cases](./docs/use-cases.md)
216
+ - **Task authors** → [Task authoring](./docs/task-authoring.md) → [Sandbox hardening](./docs/sandbox-hardening.md)
217
+ - **Agent builders integrating with benchflow** → [Concepts](./docs/concepts.md) → [Python API reference](./docs/reference/python-api.md) → [`benchflow.agents.registry`](./src/benchflow/agents/registry.py)
218
+ - **External benchmark adapters** → [Task authoring](./docs/task-authoring.md) → [Progressive disclosure](./docs/progressive-disclosure.md#comparison-with-multi-agent-simulated-user)
219
+
220
+ ## Contributing
221
+
222
+ PRs welcome. Open against `main`. CI runs ruff + tests on every PR; please run `ruff check .` and `pytest tests/` locally first.
223
+
224
+ Release channels are documented in [Release channels](./docs/release.md). In
225
+ short: merges to `main` publish an internal preview after CI passes, while a
226
+ matching `v<version>` tag publishes the public release.
227
+
228
+ ## License
229
+
230
+ Apache-2.0.