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