benchflow 0.6.7.dev1845__tar.gz → 0.6.8.dev1861__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 (706) hide show
  1. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/CHANGELOG.md +106 -1
  2. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/PKG-INFO +2 -2
  3. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/pyproject.toml +1 -1
  4. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/config_override.py +3 -2
  5. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/scoring.py +12 -1
  6. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/scaffolding.py +2 -2
  7. benchflow-0.6.8.dev1861/src/benchflow/_utils/text.py +86 -0
  8. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/runtime.py +1 -1
  9. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon.py +1 -1
  10. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/harbor.py +8 -6
  11. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/source.py +1 -1
  12. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/registry.py +4 -2
  13. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_live_progress.py +9 -1
  14. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/orchestrator.py +2 -1
  15. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/task.md +1 -1
  16. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/diagnostics.py +29 -0
  17. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/_registry/env0@outage.toml +7 -8
  18. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/_registry/env0@prod.toml +10 -14
  19. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/reviewer_server.py +1 -1
  20. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_runtime.py +207 -20
  21. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/wrapper.py +1 -1
  22. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/__init__.py +28 -7
  23. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_setup.py +4 -4
  24. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/apple_container.py +1 -1
  25. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona.py +31 -27
  26. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_pty.py +68 -0
  27. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_strategies.py +3 -0
  28. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/setup.py +3 -3
  29. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/_core.py +7 -8
  30. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_policy.py +2 -2
  31. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/__init__.py +2 -2
  32. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_normalize.py +3 -3
  33. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_parse.py +81 -6
  34. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_profiles.py +2 -2
  35. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_validation.py +2 -2
  36. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/config.py +144 -29
  37. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/document.py +1 -0
  38. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/export.py +22 -2
  39. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/imports.py +5 -2
  40. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/runtime_capabilities.py +15 -15
  41. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/task_gen.py +1 -1
  42. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/acceptance_live_harness.py +1 -1
  43. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/task.md +1 -1
  44. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/task.md +1 -1
  45. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_mcp_servers.py +2 -2
  46. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_sandbox.py +1 -3
  47. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_live_progress.py +69 -0
  48. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_config_override.py +4 -3
  49. benchflow-0.6.8.dev1861/tests/test_diagnostics.py +151 -0
  50. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_env_setup.py +3 -3
  51. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_environment_manifest_controls.py +4 -4
  52. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_inbound_adapters.py +2 -2
  53. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_internet_policy.py +8 -8
  54. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job.py +17 -0
  55. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_runtime.py +41 -0
  56. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_live_llm_trajectory.py +226 -2
  57. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_mle_bench_adapter.py +1 -1
  58. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_workflow_wiring.py +24 -1
  59. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_setup_commands.py +3 -3
  60. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_upload.py +9 -9
  61. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_capabilities.py +9 -9
  62. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval.py +3 -4
  63. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_integration.py +1 -1
  64. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_sweep.py +4 -4
  65. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_policy.py +1 -1
  66. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_source_adapters.py +27 -29
  67. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_config.py +133 -19
  68. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_document.py +157 -24
  69. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_export.py +62 -8
  70. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_package.py +6 -6
  71. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_task_gen.py +2 -2
  72. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_document.py +2 -2
  73. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verify.py +1 -1
  74. benchflow-0.6.7.dev1845/src/benchflow/_utils/text.py +0 -37
  75. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/.gitignore +0 -0
  76. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/LICENSE +0 -0
  77. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/README.md +0 -0
  78. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/__init__.py +0 -0
  79. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_dotenv.py +0 -0
  80. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_paths.py +0 -0
  81. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_run.py +0 -0
  82. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_types.py +0 -0
  83. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/__init__.py +0 -0
  84. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/benchmark_repos.py +0 -0
  85. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/build_context_stage.py +0 -0
  86. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/config.py +0 -0
  87. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/content_address.py +0 -0
  88. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/dataset_registry.py +0 -0
  89. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/env_registry.py +0 -0
  90. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/evaluation_results.py +0 -0
  91. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/hf_datasets.py +0 -0
  92. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/json_safe.py +0 -0
  93. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/learner_memory.py +0 -0
  94. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/live_activity.py +0 -0
  95. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/result_metadata.py +0 -0
  96. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/reward_events.py +0 -0
  97. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/source_provenance.py +0 -0
  98. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  99. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  100. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  101. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  102. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/_utils/yaml_loader.py +0 -0
  103. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/__init__.py +0 -0
  104. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/client.py +0 -0
  105. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/container_transport.py +0 -0
  106. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/selection.py +0 -0
  107. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/session.py +0 -0
  108. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/transport.py +0 -0
  109. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/acp/types.py +0 -0
  110. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/__init__.py +0 -0
  111. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  112. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  113. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  114. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  115. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/inbound.py +0 -0
  116. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/inspect_ai.py +0 -0
  117. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/ors.py +0 -0
  118. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/__init__.py +0 -0
  119. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  120. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  121. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router.py +0 -0
  122. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_guide.py +0 -0
  123. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_parity.py +0 -0
  124. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agent_router_scaffold.py +0 -0
  125. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/__init__.py +0 -0
  126. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/codex_config.py +0 -0
  127. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/credentials.py +0 -0
  128. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  129. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/env.py +0 -0
  130. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/errors.py +0 -0
  131. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  132. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/install.py +0 -0
  133. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/manifest.py +0 -0
  134. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  135. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  136. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/protocol.py +0 -0
  137. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/providers.py +0 -0
  138. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/agents/remote_manifests.py +0 -0
  139. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/branch.py +0 -0
  140. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/__init__.py +0 -0
  141. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_failure_evidence.py +0 -0
  142. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_hosted_env.py +0 -0
  143. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_options.py +0 -0
  144. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/_shared.py +0 -0
  145. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/adopt.py +0 -0
  146. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/agent.py +0 -0
  147. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/continue_cmd.py +0 -0
  148. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/environment.py +0 -0
  149. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/eval_artifacts.py +0 -0
  150. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/eval_lift.py +0 -0
  151. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/hub.py +0 -0
  152. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/main.py +0 -0
  153. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/monitor.py +0 -0
  154. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/review.py +0 -0
  155. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/sandbox.py +0 -0
  156. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/skills.py +0 -0
  157. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/tasks.py +0 -0
  158. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/trace_import.py +0 -0
  159. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/cli/train.py +0 -0
  160. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/__init__.py +0 -0
  161. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/batch.py +0 -0
  162. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/replay_proxy.py +0 -0
  163. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/run_folder.py +0 -0
  164. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  165. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/__init__.py +0 -0
  166. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/planes.py +0 -0
  167. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/contracts/user.py +0 -0
  168. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  169. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/instruction.md +0 -0
  170. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/task.toml +0 -0
  171. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/demo_task/tests/test.sh +0 -0
  172. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/__init__.py +0 -0
  173. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/manifest.py +0 -0
  174. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/manifest_env.py +0 -0
  175. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/protocol.py +0 -0
  176. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/environment/readiness.py +0 -0
  177. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_artifacts.py +0 -0
  178. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_lift.py +0 -0
  179. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_plan.py +0 -0
  180. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_sharding.py +0 -0
  181. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/eval_worker.py +0 -0
  182. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/evaluation.py +0 -0
  183. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/__init__.py +0 -0
  184. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/__init__.py +0 -0
  185. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/experimental/mcp/hooks.py +0 -0
  186. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hosted_env.py +0 -0
  187. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hub/__init__.py +0 -0
  188. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/hub/harbor_registry.py +0 -0
  189. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/__init__.py +0 -0
  190. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/trl/__init__.py +0 -0
  191. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/integrations/trl/spec.py +0 -0
  192. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/learner_skills.py +0 -0
  193. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/learner_store.py +0 -0
  194. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/loop_strategies.py +0 -0
  195. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/loop_sweep.py +0 -0
  196. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/metrics.py +0 -0
  197. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/models.py +0 -0
  198. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/monitor.py +0 -0
  199. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/__init__.py +0 -0
  200. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  201. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  202. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_config.py +0 -0
  203. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/litellm_logging.py +0 -0
  204. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/providers/runtime.py +0 -0
  205. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/publish/__init__.py +0 -0
  206. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/publish/huggingface.py +0 -0
  207. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/py.typed +0 -0
  208. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/__init__.py +0 -0
  209. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/config.py +0 -0
  210. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/default-rubric.json +0 -0
  211. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/prompts.py +0 -0
  212. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/review/runner.py +0 -0
  213. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/README.md +0 -0
  214. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/__init__.py +0 -0
  215. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/builtins.py +0 -0
  216. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/events.py +0 -0
  217. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/file_readers.py +0 -0
  218. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/llm.py +0 -0
  219. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/memory_scorer.py +0 -0
  220. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/node.py +0 -0
  221. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/protocol.py +0 -0
  222. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/rubric.py +0 -0
  223. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/rubric_config.py +0 -0
  224. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rewards/validation.py +0 -0
  225. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_config.py +0 -0
  226. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_deadline.py +0 -0
  227. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_results.py +0 -0
  228. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_skills.py +0 -0
  229. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_usage.py +0 -0
  230. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/_user_loop.py +0 -0
  231. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  232. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout/task_runtime.py +0 -0
  233. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout_branch.py +0 -0
  234. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/rollout_planes.py +0 -0
  235. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/runtime.py +0 -0
  236. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/__init__.py +0 -0
  237. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_base.py +0 -0
  238. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  239. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose.py +0 -0
  240. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  241. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  242. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  243. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  244. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  245. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore.py +0 -0
  246. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  247. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_image.py +0 -0
  248. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  249. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  250. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  251. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_dind.py +0 -0
  252. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  253. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/docker.py +0 -0
  254. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/lockdown.py +0 -0
  255. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/metadata.py +0 -0
  256. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/modal_impl.py +0 -0
  257. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/__init__.py +0 -0
  258. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/_base.py +0 -0
  259. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/agentcore.py +0 -0
  260. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/apple.py +0 -0
  261. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/daytona.py +0 -0
  262. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/process/docker.py +0 -0
  263. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/protocol.py +0 -0
  264. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/providers.py +0 -0
  265. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/services.py +0 -0
  266. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/snapshot.py +0 -0
  267. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sandbox/user.py +0 -0
  268. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/scenes.py +0 -0
  269. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/sdk.py +0 -0
  270. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/self_gen.py +0 -0
  271. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/__init__.py +0 -0
  272. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/gepa_export.py +0 -0
  273. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skill_eval/schema.py +0 -0
  274. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/skills.py +0 -0
  275. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/_document_evidence.py +0 -0
  276. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live.py +0 -0
  277. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_model.py +0 -0
  278. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/acceptance_live_report.py +0 -0
  279. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/discovery.py +0 -0
  280. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/env.py +0 -0
  281. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/output_format.py +0 -0
  282. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/package.py +0 -0
  283. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/paths.py +0 -0
  284. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/prompts.py +0 -0
  285. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/runtime_view.py +0 -0
  286. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/task.py +0 -0
  287. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier.py +0 -0
  288. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_core.py +0 -0
  289. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_document.py +0 -0
  290. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_errors.py +0 -0
  291. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  292. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_ors_episode.py +0 -0
  293. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_reward_kit.py +0 -0
  294. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_scan.py +0 -0
  295. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/task/verifier_script_strategy.py +0 -0
  296. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/__init__.py +0 -0
  297. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/judge.py.tmpl +0 -0
  298. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/templates/test.sh.tmpl +0 -0
  299. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/__init__.py +0 -0
  300. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/huggingface.py +0 -0
  301. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/local.py +0 -0
  302. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/models.py +0 -0
  303. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/traces/parsers.py +0 -0
  304. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/__init__.py +0 -0
  305. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/backends/__init__.py +0 -0
  306. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/backends/prime_rl.py +0 -0
  307. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/training/run_manifest.py +0 -0
  308. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/__init__.py +0 -0
  309. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_capture.py +0 -0
  310. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_export_common.py +0 -0
  311. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/_llm_capture.py +0 -0
  312. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/call_purpose.py +0 -0
  313. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export.py +0 -0
  314. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_adp.py +0 -0
  315. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_atif.py +0 -0
  316. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  317. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  318. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/metrics.py +0 -0
  319. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/results.py +0 -0
  320. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/tree.py +0 -0
  321. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  322. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/types.py +0 -0
  323. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/trajectories/viewer.py +0 -0
  324. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/src/benchflow/usage_tracking.py +0 -0
  325. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/__init__.py +0 -0
  326. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/__init__.py +0 -0
  327. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_dirscan.py +0 -0
  328. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_loader.py +0 -0
  329. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_parity.py +0 -0
  330. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_manifest_wiring.py +0 -0
  331. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_namespace_shorthand.py +0 -0
  332. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_plugin_entry_points.py +0 -0
  333. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_protocol.py +0 -0
  334. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/agents/test_remote_manifest_autoload.py +0 -0
  335. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/README.md +0 -0
  336. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  337. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  338. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  339. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/instruction.md +0 -0
  340. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  341. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/task.toml +0 -0
  342. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  343. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/conformance-results.json +0 -0
  344. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/proof_multi_agent.py +0 -0
  345. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/proof_snapshot.py +0 -0
  346. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/run_conformance.py +0 -0
  347. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  348. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/conftest.py +0 -0
  349. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/__init__.py +0 -0
  350. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/_helpers.py +0 -0
  351. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_batch.py +0 -0
  352. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_orchestrator.py +0 -0
  353. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_replay_proxy.py +0 -0
  354. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/continue_run/test_run_folder.py +0 -0
  355. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/__init__.py +0 -0
  356. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_chibench_manifest.py +0 -0
  357. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_clawsbench_manifest.py +0 -0
  358. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_manifest.py +0 -0
  359. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_manifest_env.py +0 -0
  360. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_protocol.py +0 -0
  361. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/environment/test_readiness.py +0 -0
  362. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  363. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/instruction.md +0 -0
  364. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  365. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/task.toml +0 -0
  366. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/hello-world-task/tests/test.sh +0 -0
  367. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_claude.sh +0 -0
  368. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_codex.sh +0 -0
  369. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_codex_custom_provider.sh +0 -0
  370. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_gemini.sh +0 -0
  371. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/test_openclaw.sh +0 -0
  372. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/traces/minimal-claude.jsonl +0 -0
  373. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  374. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/README.md +0 -0
  375. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  376. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  377. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  378. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  379. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  380. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  381. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  382. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/beta-task/task.toml +0 -0
  383. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  384. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent.py +0 -0
  385. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  386. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  387. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/mock_openai_responses_server.py +0 -0
  388. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  389. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  390. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  391. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  392. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  393. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  394. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  395. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  396. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  397. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  398. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  399. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  400. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  401. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  402. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  403. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  404. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  405. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  406. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  407. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  408. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  409. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  410. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  411. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  412. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  413. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  414. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  415. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  416. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  417. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  418. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  419. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  420. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  421. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  422. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  423. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  424. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  425. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  426. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  427. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  428. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  429. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  430. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  431. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  432. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  433. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  434. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  435. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  436. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  437. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  438. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  439. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  440. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  441. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  442. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  443. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  444. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  445. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  446. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  447. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  448. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/_consistency.py +0 -0
  449. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/agent_judge.py +0 -0
  450. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_adapter_evidence.py +0 -0
  451. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_hosted_env_evidence.py +0 -0
  452. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_results.py +0 -0
  453. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  454. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/check_trace_to_task_evidence.py +0 -0
  455. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  456. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/codex-acp.yaml +0 -0
  457. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/gemini.yaml +0 -0
  458. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  459. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/mimo.yaml +0 -0
  460. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/openclaw.yaml +0 -0
  461. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/opencode.yaml +0 -0
  462. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/openhands.yaml +0 -0
  463. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/configs/pi-acp.yaml +0 -0
  464. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/deepagents_harness.py +0 -0
  465. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/rubric_checks.py +0 -0
  466. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/run.sh +0 -0
  467. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/run_suite.py +0 -0
  468. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/scenarios.py +0 -0
  469. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/integration/suites/release.yaml +0 -0
  470. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_evidence.py +0 -0
  471. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_live.py +0 -0
  472. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acceptance_live_execution.py +0 -0
  473. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp.py +0 -0
  474. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_capability_advertising.py +0 -0
  475. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_model_config_dispatch.py +0 -0
  476. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_pinned_protocol_guard.py +0 -0
  477. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_acp_setup_failure_propagation.py +0 -0
  478. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_adapter_scripts.py +0 -0
  479. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_adapters.py +0 -0
  480. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_cli.py +0 -0
  481. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_env_resolution.py +0 -0
  482. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_gemini_defaults.py +0 -0
  483. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_idle_timeout_cli.py +0 -0
  484. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_model_decouple.py +0 -0
  485. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_registry.py +0 -0
  486. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router.py +0 -0
  487. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router_cli_e2e.py +0 -0
  488. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_router_scaffold.py +0 -0
  489. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_setup.py +0 -0
  490. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agent_spec.py +0 -0
  491. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_builder.py +0 -0
  492. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_parallel.py +0 -0
  493. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_reaper.py +0 -0
  494. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_agentcore_transport.py +0 -0
  495. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_api_error_capture.py +0 -0
  496. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_apple_container_sandbox.py +0 -0
  497. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_bare_model_provider.py +0 -0
  498. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_base_install_imports.py +0 -0
  499. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_bedrock_thinking.py +0 -0
  500. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_benchflow_experiment_review_validator.py +0 -0
  501. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  502. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_branch.py +0 -0
  503. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_build_context_stage.py +0 -0
  504. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_build_review_pack.py +0 -0
  505. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_capture_trajectory.py +0 -0
  506. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  507. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_clawsbench_slice.py +0 -0
  508. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_adopt_aliases.py +0 -0
  509. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_arg_validation.py +0 -0
  510. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_daytona.py +0 -0
  511. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_docs_drift.py +0 -0
  512. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_edge_case_hardening.py +0 -0
  513. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_hub_env.py +0 -0
  514. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_cli_misc.py +0 -0
  515. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_codex_review.py +0 -0
  516. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_codex_self_write_auth.py +0 -0
  517. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_config_redaction.py +0 -0
  518. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_connect_as_env.py +0 -0
  519. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_console_error_truncation.py +0 -0
  520. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_console_progress.py +0 -0
  521. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_continuallearningbench_adapter.py +0 -0
  522. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_dataset_registry.py +0 -0
  523. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_command_polling.py +0 -0
  524. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_dind_compose_up.py +0 -0
  525. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_download.py +0 -0
  526. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_litellm_runtime.py +0 -0
  527. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_poll_deadline.py +0 -0
  528. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_daytona_reap.py +0 -0
  529. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_deepagents_agent.py +0 -0
  530. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docker_prune_scoping.py +0 -0
  531. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docker_uploads.py +0 -0
  532. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_docs_examples.py +0 -0
  533. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eng50_capabilities.py +0 -0
  534. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_env_registry.py +0 -0
  535. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_artifact_cli.py +0 -0
  536. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_filters_applied.py +0 -0
  537. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_lift.py +0 -0
  538. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_sharding.py +0 -0
  539. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_single_task_summary.py +0 -0
  540. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_source_provenance.py +0 -0
  541. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_worker_retry.py +0 -0
  542. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_eval_zero_task_guard.py +0 -0
  543. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_evaluation_environment_manifest.py +0 -0
  544. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_exclude_tasks.py +0 -0
  545. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_filter_credentialed_cells.py +0 -0
  546. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_harvey_lab_shim.py +0 -0
  547. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hilbench_adapter.py +0 -0
  548. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hosted_env.py +0 -0
  549. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hosted_env_rollout_contract.py +0 -0
  550. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_hub_harbor_registry.py +0 -0
  551. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_inbound_adapter_manifest.py +0 -0
  552. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_agent_judge.py +0 -0
  553. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_check_results.py +0 -0
  554. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_consistency.py +0 -0
  555. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_matrix.py +0 -0
  556. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_provider_selection.py +0 -0
  557. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_run_suite.py +0 -0
  558. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_integration_suite.py +0 -0
  559. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job_sequential_shared.py +0 -0
  560. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_job_sequential_shared_resume.py +0 -0
  561. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_judge_robustness.py +0 -0
  562. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_judge_symlink_ingestion.py +0 -0
  563. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_skills.py +0 -0
  564. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_skills_traversal.py +0 -0
  565. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_store.py +0 -0
  566. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_learner_store_persistence.py +0 -0
  567. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_config.py +0 -0
  568. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_hardening.py +0 -0
  569. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_logging.py +0 -0
  570. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_model_via_env_generic.py +0 -0
  571. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_reasoning_passthrough.py +0 -0
  572. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_litellm_smoke.py +0 -0
  573. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge.py +0 -0
  574. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge_event_tags.py +0 -0
  575. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_llm_judge_verifier.py +0 -0
  576. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_strategies.py +0 -0
  577. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_summary.py +0 -0
  578. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_loop_sweep.py +0 -0
  579. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_memory_scorer.py +0 -0
  580. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_metrics.py +0 -0
  581. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_mock_openai_responses_server.py +0 -0
  582. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_monitor_scaffold.py +0 -0
  583. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_native_acp_usage.py +0 -0
  584. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_no_cross_provider_fallback.py +0 -0
  585. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_notification_order_real.py +0 -0
  586. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_opencode_family_proxy_tracking.py +0 -0
  587. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_oracle.py +0 -0
  588. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_oracle_chokepoint.py +0 -0
  589. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_paths_safe.py +0 -0
  590. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_paths_symlink_helpers.py +0 -0
  591. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_pi_acp_launcher.py +0 -0
  592. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_pi_acp_proxy_routing.py +0 -0
  593. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_process.py +0 -0
  594. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_project_skills_layout.py +0 -0
  595. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_provider_auth_detection.py +0 -0
  596. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_providers.py +0 -0
  597. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reexport.py +0 -0
  598. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_registry_invariants.py +0 -0
  599. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_hardening_r5.py +0 -0
  600. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_release_version.py +0 -0
  601. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_resolve_env_helpers.py +0 -0
  602. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_boundaries.py +0 -0
  603. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_rubric.py +0 -0
  604. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_review_runtime.py +0 -0
  605. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_lenient.py +0 -0
  606. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_node.py +0 -0
  607. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_range.py +0 -0
  608. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_reward_unified_contract.py +0 -0
  609. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rewards.py +0 -0
  610. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rewards_jsonl.py +0 -0
  611. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_architecture.py +0 -0
  612. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_branch.py +0 -0
  613. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_config_path_coercion.py +0 -0
  614. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_environment.py +0 -0
  615. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_hard_deadline.py +0 -0
  616. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_import_no_side_effects.py +0 -0
  617. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  618. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_planes_contract.py +0 -0
  619. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_probe_sandbox_health.py +0 -0
  620. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rollout_session_factory_dispatch.py +0 -0
  621. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rubric_checks.py +0 -0
  622. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_rubric_config.py +0 -0
  623. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime.py +0 -0
  624. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_config_wired.py +0 -0
  625. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_runtime_live_sandbox.py +0 -0
  626. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox.py +0 -0
  627. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_exec_secret_handling.py +0 -0
  628. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_hardening.py +0 -0
  629. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  630. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_live_process.py +0 -0
  631. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_multi_service.py +0 -0
  632. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_prebuilt_validation.py +0 -0
  633. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_protocol.py +0 -0
  634. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_provider_registry_drift.py +0 -0
  635. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_setup.py +0 -0
  636. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_snapshot_contract.py +0 -0
  637. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_upload_symlink.py +0 -0
  638. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sandbox_verifier_workspace.py +0 -0
  639. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene.py +0 -0
  640. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_outbox_trial.py +0 -0
  641. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_parallel_group.py +0 -0
  642. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scene_result_aggregation.py +0 -0
  643. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_scoring.py +0 -0
  644. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_internals.py +0 -0
  645. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_lockdown.py +0 -0
  646. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sdk_run_alias.py +0 -0
  647. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_sealed_channel_container.py +0 -0
  648. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_cli.py +0 -0
  649. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_export_error_channel.py +0 -0
  650. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_export_failures.py +0 -0
  651. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_self_gen_orchestration.py +0 -0
  652. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_session_factory_runtime.py +0 -0
  653. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_session_request_permission_dispatch.py +0 -0
  654. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_dryrun.py +0 -0
  655. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_eval_traversal.py +0 -0
  656. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skill_invocation_artifacts.py +0 -0
  657. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skills.py +0 -0
  658. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skills_dir_agent_home_link.py +0 -0
  659. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skillsbench_conversion_conformance.py +0 -0
  660. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  661. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_smoke.py +0 -0
  662. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_smoke_wiring.py +0 -0
  663. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_subscription_auth.py +0 -0
  664. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_check_eval_consistency.py +0 -0
  665. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_digest.py +0 -0
  666. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_download.py +0 -0
  667. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_output_format.py +0 -0
  668. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_task_runtime_primitive.py +0 -0
  669. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_tasks.py +0 -0
  670. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_token_usage_normalization.py +0 -0
  671. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_import_cli.py +0 -0
  672. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_task_gen_traversal.py +0 -0
  673. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trace_to_task_evidence.py +0 -0
  674. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_huggingface.py +0 -0
  675. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_traces_parsers.py +0 -0
  676. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_cli.py +0 -0
  677. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_mode_artifact_emission.py +0 -0
  678. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_train_trl_cli.py +0 -0
  679. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trajectory_integration.py +0 -0
  680. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trajectory_streaming.py +0 -0
  681. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_agent_timeout_verify.py +0 -0
  682. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_install_agent_timeout.py +0 -0
  683. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trial_litellm_runtime.py +0 -0
  684. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_trl_integration.py +0 -0
  685. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_litellm.py +0 -0
  686. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_required.py +0 -0
  687. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_usage_tracking.py +0 -0
  688. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_user.py +0 -0
  689. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_v06_guard_ports.py +0 -0
  690. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_multi_container.py +0 -0
  691. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_output.py +0 -0
  692. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_output_freshness.py +0 -0
  693. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_strategies.py +0 -0
  694. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_verifier_wedge_retry.py +0 -0
  695. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_workflow_action_pinning.py +0 -0
  696. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/test_yaml_config.py +0 -0
  697. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/__init__.py +0 -0
  698. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export.py +0 -0
  699. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_adp.py +0 -0
  700. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_atif.py +0 -0
  701. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_common.py +0 -0
  702. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_nan_handling.py +0 -0
  703. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_export_prime_sft.py +0 -0
  704. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_redaction.py +0 -0
  705. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_step_granularity.py +0 -0
  706. {benchflow-0.6.7.dev1845 → benchflow-0.6.8.dev1861}/tests/trajectories/test_tree.py +0 -0
@@ -2,6 +2,32 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ### Changed
6
+ - **BREAKING (task.md): the `environment:` frontmatter key is renamed to
7
+ `sandbox:`.** The native task-config surface now accepts only `sandbox:`
8
+ (plus `verifier.sandbox:` for the verifier's separate sandbox spec and
9
+ `verifier.sandbox_mode:` for shared/separate selection); `environment:`,
10
+ `verifier.environment:`, and `verifier.environment_mode:` no longer
11
+ validate and fail with an actionable message naming the rename. **The
12
+ one-line fix for existing task.md files is renaming the key.**
13
+ Legacy/Harbor `task.toml` imports are unaffected: the toml loader
14
+ converts `[environment]`, `[verifier.environment]`, and
15
+ `environment_mode` to the `sandbox` spellings (declaring both spellings
16
+ in one file is an error), and `bench tasks export` emits the inverse —
17
+ a stock-Harbor `[environment]`-spelled `task.toml`. All native emitters
18
+ — `model_dump_toml`, `bench tasks migrate`, task scaffolding,
19
+ skill-eval/trace/adapter task generation, rubric-review wrappers — now
20
+ write `sandbox`. Python API: the compat property
21
+ `TaskConfig.environment` is removed (use `TaskConfig.sandbox`),
22
+ `VerifierConfig.environment`/`environment_mode` became
23
+ `sandbox`/`sandbox_mode`, and the `VerifierEnvironmentMode` enum is now
24
+ `VerifierSandboxMode`. The Environment plane
25
+ (`--environment-manifest`, `benchflow.environment.manifest`, the
26
+ eval-config `environment:` docker/daytona selector) is a different
27
+ subsystem and is unchanged.
28
+
29
+ ## 0.6.7 — 2026-08-09
30
+
5
31
  ### Added
6
32
  - **Built-in environment registry.** The committed env-axis pins
7
33
  (`env0@prod`, `env0@outage`) moved from `benchmarks/_environments/` into
@@ -10,13 +36,71 @@
10
36
  `pip install benchflow` with no checkout and no env vars.
11
37
  `$BENCHFLOW_ENV_REGISTRY`, when set, still wins entirely; resolution
12
38
  stays content-addressed (sha256 logged), and unknown names now error
13
- listing the available specs.
39
+ listing the available specs. (#961)
14
40
  - **Console progress heartbeat.** Single-concurrency eval runs print a
15
41
  throttled progress line (`… 6.2min, 12 tool calls (last: …)`) about every
16
42
  45 seconds while the agent works, so a long prompt is distinguishable from
17
43
  a hang. The heartbeat is auto-gated off for multi-concurrency jobs;
18
44
  `bench eval run --quiet` suppresses it, and `BENCHFLOW_PROGRESS=on`/`off`
19
45
  overrides the auto-gate. (#951)
46
+ - **Live per-task activity in the eval dashboard.** Under a TTY the
47
+ running-now table gains an activity column ("38 calls · last:
48
+ file_editor", plus tokens once a usage snapshot exists), polled from the
49
+ ACP session's existing heartbeat counters. The agents-manifest autoload
50
+ also clones quietly — one "Cloning …" summary line instead of raw git
51
+ progress. (#956)
52
+ - **Phase labels and per-task failure reasons.** The activity cell is never
53
+ blank while a row exists: sandbox create, agent install, and verify show
54
+ dim phase labels ("creating sandbox…", "installing agent…",
55
+ "verifying…"). The final block prints one dim "✗ task: reason" line per
56
+ failed task — verifier error first, else a compact reward/metric
57
+ breakdown, else the reward — capped at 5 lines. `--quiet` now silences
58
+ the dashboard as well as the heartbeat. (#957)
59
+ - **Failure reasons mined from verifier artifacts.** When a displayed
60
+ failure would read as a bare "reward X", the CLI reads a small bounded
61
+ artifact from the rollout's own verifier dir — the CTRF report (first
62
+ failed test plus its assertion line) or a tail of `test-stdout.txt` — and
63
+ a dim "(details: …/verifier)" pointer names the artifact directory.
64
+ Artifacts resolve by the recorded rollout name, never by glob. (#959)
65
+ - **Fractional rewards in console summaries.** Per-task lines carry the
66
+ scored reward (`✗ task (reward=0.30, tools=47)`), the Score line renders
67
+ ", mean reward 0.30" alongside the binarized counts, and
68
+ `EvaluationResult` / `summary.json` gain a `mean_reward` field (mean over
69
+ scored rollouts; errors excluded, not zeroed). (#960)
70
+ - **Full failure counts on per-task console lines.** A CTRF report with
71
+ more than one failed test rolls up as " (+N more failure(s); P/T checks
72
+ passed)" after the first failure — the count suffix is never truncated
73
+ away — and parametrized test names keep their `[param]` ids whenever the
74
+ report carries them. (#962)
75
+ - **Live token usage in the dashboard footer.** The footer sums completed
76
+ tasks' trusted telemetry plus every running rollout's live ACP session
77
+ usage, so spend is visible while the run executes (usage lands per
78
+ completed prompt; cost stays scoring-time from the gateway log).
79
+ Single-tool agents' activity cell drops the redundant "last:" suffix in
80
+ favor of "38 calls · 412.0k tok" once tokens are available. (#963)
81
+ - **env0-shaped failure breakdowns.** The failure-reason tiers understand
82
+ metrics nested one level under `metrics` / `details`, pair
83
+ `<name>_found` with `<name>_total` into fractions ("deadlines 1/5",
84
+ lowest-signal first), probe `verifier/reward.json` on disk between the
85
+ CTRF and stdout tiers, and every failure block with on-disk verifier
86
+ artifacts gets one "(details: …)" pointer. (#964)
87
+ - **Mid-prompt live token usage via the gateway's live capture.** The #963
88
+ live tokens stepped forward only when an ACP prompt completed, so a
89
+ single-prompt rollout showed "— tokens" for its whole agent phase. The
90
+ proxy runtime's existing live-capture loop (which already tails the
91
+ sandbox gateway's callback log every second) now also accumulates
92
+ provider tokens into an O(1) counter, and the dashboard reconciles the
93
+ two non-decreasing live signals as max(ACP, gateway) — display-only,
94
+ still replaced by the trusted scoring import at completion, and any
95
+ gateway-side failure degrades to the ACP-only behavior. (#965)
96
+
97
+ - **Compact flow-style arrays in emitted task.md frontmatter.** Short
98
+ scalar-only lists render on one line (`tags: [parsing, nlp]`) instead of
99
+ multiline bullets, so hand-written flow arrays survive `bench tasks
100
+ migrate` / normalize round-trips. The style predicate measures each list
101
+ with the real YAML emitter (so it can never disagree with PyYAML's own
102
+ quoting) and falls back to block style for long, nested, or multiline
103
+ items. Parsing is unchanged — both styles were always accepted. (#967)
20
104
 
21
105
  ### Changed
22
106
  - Migrated the clawsbench `archive-amazon-shipping` task to the native
@@ -51,6 +135,27 @@
51
135
  environment now fails loud when it declares services but none are startable
52
136
  in the image, instead of passing a vacuous readiness gate and dying at the
53
137
  verifier. (#954)
138
+ - Pointed the built-in `env0@prod` / `env0@outage` pins at the org-owned
139
+ `ghcr.io/benchflow-ai/env0:0.2.0` base image. The wheel-shipped pins named a
140
+ personal Docker Hub image while their own comments and the environment docs
141
+ declared the ghcr image authoritative; `base_image` is recorded as rollout
142
+ provenance, so every env0 result carried the wrong base. Verified on Daytona
143
+ (env0 `auth-least-privilege-summary`, 8/8 services ready, reward 1.0).
144
+ - Restored the `env0@outage` perturbation (gmail and slack removed relative
145
+ to `env0@prod`) that the #954 upstream sync had erased by mirroring the
146
+ full service list into both pins, and corrected the pin header's stale
147
+ slack port. (#955)
148
+ - **ACP protocol JSON glued to PTY shell noise now decodes.** On PTY
149
+ transports, an agent's initialize response could arrive on the same line
150
+ as the shell prompt (ANSI/OSC-prefixed), fail the strict whole-line JSON
151
+ parse, and get filed as noise — the handshake then "timed out" at any
152
+ window with the answer sitting in the agent log. The PTY-facing transport
153
+ now retries from the first `{` and once more after an ANSI scrub, but
154
+ only until the first successfully decoded protocol message per
155
+ connection; afterwards the strict contract rules, so log-echoed envelopes
156
+ cannot impersonate protocol traffic mid-session. The pre-prompt handshake
157
+ window is also env-configurable via `BENCHFLOW_ACP_HANDSHAKE_TIMEOUT`
158
+ (seconds; default 60). (#958)
54
159
 
55
160
  ## 0.6.6 — 2026-08-04
56
161
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: benchflow
3
- Version: 0.6.7.dev1845
3
+ Version: 0.6.8.dev1861
4
4
  Summary: Multi-turn agent benchmarking with ACP — run any agent, any model, any provider.
5
5
  Project-URL: Homepage, https://github.com/benchflow-ai/benchflow
6
6
  Project-URL: Repository, https://github.com/benchflow-ai/benchflow
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "benchflow"
3
- version = "0.6.7.dev1845"
3
+ version = "0.6.8.dev1861"
4
4
  description = "Multi-turn agent benchmarking with ACP — run any agent, any model, any provider."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -144,8 +144,9 @@ def apply_config_override(config: Any, overlay: dict[str, Any] | None) -> Any:
144
144
 
145
145
  # Merge against the FIELD-NAME dump (``by_alias=False``) so overlays use the
146
146
  # canonical field names (``agent``, ``sandbox``, …); ``populate_by_name`` lets
147
- # re-validation accept them. ``by_alias=True`` would force callers to write the
148
- # alias (e.g. ``environment`` for ``sandbox``) the bug this avoids.
147
+ # re-validation accept them. (``sandbox`` is now the only spelling the
148
+ # legacy ``environment`` alias was removed in the rename but ``oracle``
149
+ # still serializes via alias, so the field-name dump stays load-bearing.)
149
150
  merged = deep_merge(config.model_dump(by_alias=False), overlay)
150
151
  patched = TaskConfig.model_validate(merged)
151
152
  logger.debug(
@@ -4,7 +4,10 @@ import math
4
4
  from collections.abc import Iterable, Mapping
5
5
  from typing import Any, Literal
6
6
 
7
- from benchflow.diagnostics import DIAGNOSTIC_REASON_IDLE_TIMEOUT
7
+ from benchflow.diagnostics import (
8
+ DIAGNOSTIC_REASON_IDLE_TIMEOUT,
9
+ TRANSIENT_SANDBOX_TRANSPORT_MARKER,
10
+ )
8
11
 
9
12
  # Error category constants
10
13
  INSTALL_FAILED = "install_failure"
@@ -174,6 +177,14 @@ def _looks_like_infra_error(error: str) -> bool:
174
177
  "connection reset",
175
178
  "connection refused",
176
179
  "broken pipe",
180
+ # Stamped by TransientSandboxTransportError at the sandbox-SDK
181
+ # boundary, where the vendor exception type is still available to
182
+ # judge. One marker covers every provider call — exec, upload,
183
+ # download, stat — instead of one entry per vendor message
184
+ # prefix, which would be endless and silently incomplete.
185
+ TRANSIENT_SANDBOX_TRANSPORT_MARKER,
186
+ # Predates the marker above and is kept for strings rebuilt
187
+ # outside that boundary (e.g. a verifier error re-raised as text).
177
188
  "failed to get session command",
178
189
  "sandbox not found",
179
190
  "workspace not found",
@@ -333,7 +333,7 @@ timeout_sec = 300
333
333
  [verifier]
334
334
  timeout_sec = 120
335
335
 
336
- [environment]
336
+ [sandbox]
337
337
  cpus = 1
338
338
  memory_mb = 2048
339
339
  """)
@@ -412,7 +412,7 @@ agent:
412
412
  timeout_sec: 300
413
413
  verifier:
414
414
  timeout_sec: 120
415
- environment:
415
+ sandbox:
416
416
  cpus: 1
417
417
  memory_mb: 2048
418
418
  ---
@@ -0,0 +1,86 @@
1
+ """Plain-text rendering for console and log lines.
2
+
3
+ Two helpers live here: :func:`truncate_end`, which shortens a message
4
+ without letting a sliced token read as a whole word, and
5
+ :func:`describe_exception`, which renders an exception so the resulting
6
+ line is never detail-free.
7
+
8
+ The eval console renders one line per rollout, e.g.::
9
+
10
+ [ERR] my-task (tools=0) (Docker compose command failed ...)
11
+
12
+ Error messages routinely embed task names and paths, and a bare
13
+ ``msg[:n]`` slice can cut one of those tokens in half — ``environment
14
+ authored-task`` rendered as ``environment auth`` — which reads as a
15
+ different, complete name. ``truncate_end`` is the canonical fix: the cut
16
+ only ever removes the tail, backs up to a word boundary when one exists,
17
+ and is marked with an ellipsis so a shortened message can never
18
+ masquerade as a full one.
19
+ """
20
+
21
+ from __future__ import annotations
22
+
23
+
24
+ def truncate_end(message: str, limit: int) -> str:
25
+ """Shorten ``message`` to at most ``limit`` characters, ending in ``…``.
26
+
27
+ The kept text is always a verbatim prefix of the original (interior
28
+ words are never dropped), backed up to the previous word boundary so
29
+ a sliced token cannot read as a complete word. A single token longer
30
+ than the budget is still cut, with the ellipsis marking the cut.
31
+ Messages within budget are returned unchanged.
32
+ """
33
+ if len(message) <= limit:
34
+ return message
35
+ if limit <= 1:
36
+ return "…" if limit == 1 else ""
37
+ kept = message[: limit - 1]
38
+ if message[limit - 1] != " ":
39
+ head, sep, _partial = kept.rpartition(" ")
40
+ if sep:
41
+ kept = head
42
+ return kept.rstrip() + "…"
43
+
44
+
45
+ def describe_exception(exc: BaseException) -> str:
46
+ """Render ``exc`` as a one-line description that is never detail-free.
47
+
48
+ ``f"{exc}"`` keeps only ``str(exc)``, which for some SDK errors carries
49
+ no information at all. The Daytona SDK wraps every toolbox call as
50
+ ``"<prefix>: " + str(underlying)``, and httpx raises its timeout and
51
+ connection errors with an *empty* message — so a read timeout on
52
+ ``execute_session_command`` stringifies to the bare
53
+ ``"Failed to execute session command: "``, a message whose detail after
54
+ the colon is empty. The exception *class* (``DaytonaTimeoutError`` vs
55
+ ``DaytonaConnectionError``) is then the only surviving evidence of what
56
+ actually went wrong, and plain interpolation discards it.
57
+
58
+ Lead with the class name so "the exec timed out" can never again be
59
+ indistinguishable from "the connection dropped". The trailing
60
+ ``status_code``/``error_code`` fields serve the *other* shape of SDK
61
+ failure — an OpenAPI exception carrying an HTTP response — and are
62
+ absent by construction for the detail-free transport case above, which
63
+ never reaches a response at all.
64
+ """
65
+ name = type(exc).__name__
66
+ message = str(exc).strip()
67
+ # Approximation: this tests the whole message, not specifically the
68
+ # detail after a wrapper prefix — a message that legitimately ends in a
69
+ # colon is annotated too. That is harmless, and the alternative means
70
+ # knowing every vendor's prefix.
71
+ if message.endswith(":"):
72
+ message = f"{message} (no detail)"
73
+ described = f"{name}: {message}" if message else f"{name} (no message)"
74
+ details: list[str] = []
75
+ status_code = getattr(exc, "status_code", None)
76
+ # Both fields are "absent" when falsy, but only ``status_code`` has a
77
+ # meaningful zero-ish value to protect (no HTTP status is 0, yet an
78
+ # explicit 0 should still surface as evidence of a malformed response).
79
+ if status_code is not None:
80
+ details.append(f"status_code={status_code}")
81
+ error_code = getattr(exc, "error_code", None)
82
+ if error_code:
83
+ details.append(f"error_code={error_code}")
84
+ if details:
85
+ described = f"{described} [{', '.join(details)}]"
86
+ return described
@@ -549,7 +549,7 @@ async def connect_acp(
549
549
  dormant and the auto-approve policy ran unconditionally (#382 follow-up).
550
550
 
551
551
  ``mcp_servers`` are the task's configured MCP servers (mapped from
552
- ``[[environment.mcp_servers]]``); they are attached to the ACP session at
552
+ ``[[sandbox.mcp_servers]]``); they are attached to the ACP session at
553
553
  ``session/new`` so the agent can reach them. ``None`` attaches none.
554
554
 
555
555
  Retries with exponential backoff on ConnectionError (Daytona SSH storms).
@@ -508,7 +508,7 @@ def _toolathlon_task_toml(
508
508
  "metadata": metadata,
509
509
  "agent": {"timeout_sec": 1800.0},
510
510
  "verifier": {"timeout_sec": 900.0},
511
- "environment": environment,
511
+ "sandbox": environment,
512
512
  }
513
513
 
514
514
 
@@ -15,12 +15,14 @@ BenchFlow-native shape:
15
15
  └── tests/ # test.sh — the verifier
16
16
 
17
17
  This adapter is consequently a thin *normalizer*: it loads the foreign
18
- ``task.toml`` through the native :class:`TaskConfig` validator (which already
19
- handles Harbor's ``[environment]``-keyed sandbox section and the
20
- ``version`` -> ``schema_version`` rename), reads ``instruction.md``, and
21
- records the build/solution/test files under their native relative paths. No
22
- field remapping is needed Harbor *is* the native format, which is exactly
23
- what makes Terminal-Bench backward-compatible through this edge.
18
+ ``task.toml`` through :func:`~benchflow.task.imports.import_task_config_toml`,
19
+ whose toml import boundary translates Harbor's ``[environment]``-keyed
20
+ sandbox section to the native ``sandbox`` key and handles the ``version`` ->
21
+ ``schema_version`` rename before native :class:`TaskConfig` validation. It
22
+ then reads ``instruction.md`` and records the build/solution/test files under
23
+ their native relative paths. Beyond that spelling translation no field
24
+ remapping is needed — Harbor is structurally the native format, which is
25
+ exactly what makes Terminal-Bench backward-compatible through this edge.
24
26
  """
25
27
 
26
28
  from __future__ import annotations
@@ -243,7 +243,7 @@ def _materialize_mcp_atlas(ctx: _SourceContext, output_dir: Path) -> None:
243
243
  "MCP_ATLAS_JUDGE_MODEL": "${MCP_ATLAS_JUDGE_MODEL:-qwen/qwen-plus}",
244
244
  },
245
245
  },
246
- "environment": {
246
+ "sandbox": {
247
247
  "cpus": 4,
248
248
  "memory_mb": 8192,
249
249
  "storage_mb": 10240,
@@ -53,6 +53,8 @@ import shlex
53
53
  from dataclasses import dataclass, field
54
54
  from pathlib import Path
55
55
 
56
+ from benchflow._utils.text import describe_exception
57
+
56
58
 
57
59
  def _install_python_script(container_path: str, source: str) -> str:
58
60
  """Shell snippet that ensures python3 and writes `source` to container_path.
@@ -1469,7 +1471,7 @@ def _load_agent_plugin_packages() -> None:
1469
1471
  try:
1470
1472
  eps = entry_points(group="benchflow.agents")
1471
1473
  except Exception as exc: # pragma: no cover - metadata backend quirks
1472
- FAILED_AGENT_PLUGINS["<entry-point-scan>"] = f"{type(exc).__name__}: {exc}"
1474
+ FAILED_AGENT_PLUGINS["<entry-point-scan>"] = describe_exception(exc)
1473
1475
  logging.getLogger(__name__).warning(
1474
1476
  "benchflow.agents entry-point scan failed; ALL agent plugins are "
1475
1477
  "disabled: %s",
@@ -1483,7 +1485,7 @@ def _load_agent_plugin_packages() -> None:
1483
1485
  if callable(loaded):
1484
1486
  loaded()
1485
1487
  except Exception as exc:
1486
- FAILED_AGENT_PLUGINS[ep.name] = f"{type(exc).__name__}: {exc}"
1488
+ FAILED_AGENT_PLUGINS[ep.name] = describe_exception(exc)
1487
1489
  logging.getLogger(__name__).warning(
1488
1490
  "benchflow.agents plugin %r failed to load (some or all of its "
1489
1491
  "agents may be unavailable or partially registered): %s",
@@ -135,13 +135,21 @@ def _fmt_tokens(n: int) -> str:
135
135
  # while the session counters are unavailable — before the agent session
136
136
  # exists and after it is torn down — so sandbox create, agent install, and
137
137
  # the verifier read as work, not as a hang.
138
+ #
139
+ # The labels must be monotonic across a run: the row is a progress indicator,
140
+ # so stepping back to an earlier stage reads as the run having restarted.
141
+ # "executed" maps to the agent stage, not the verifier: since verify() marks
142
+ # "verifying" at its own entry, the only stretch that renders under "executed"
143
+ # is the inside of disconnect() (session already dropped, agent process being
144
+ # killed) — labelling that "verifying…" made the row show "verifying…", then
145
+ # "running agent…" (disconnect's "installed"), then "verifying…" again.
138
146
  _PHASE_LABELS = {
139
147
  "created": "creating sandbox…",
140
148
  "setup": "creating sandbox…",
141
149
  "started": "installing agent…",
142
150
  "installed": "running agent…",
143
151
  "connected": "running agent…",
144
- "executed": "verifying…",
152
+ "executed": "running agent…",
145
153
  "verifying": "verifying…",
146
154
  "verified": "cleaning up…",
147
155
  "cleaned": "cleaning up…",
@@ -30,6 +30,7 @@ from dataclasses import dataclass
30
30
  from pathlib import Path
31
31
  from typing import Any, cast
32
32
 
33
+ from benchflow._utils.text import describe_exception
33
34
  from benchflow.continue_run.replay_proxy import ReplayProxy, ReplayRouter
34
35
  from benchflow.continue_run.run_folder import RunFolder, RunFolderError, load_run_folder
35
36
  from benchflow.continue_run.sandbox_proxy import (
@@ -442,7 +443,7 @@ async def _safe_sandbox_continuation_teardown(
442
443
  try:
443
444
  await awaitable
444
445
  except Exception as exc:
445
- message = f"{label}: {exc}"
446
+ message = f"{label}: {describe_exception(exc)}"
446
447
  errors.append(message)
447
448
  logger.warning("Continuation teardown step failed: %s", message)
448
449
 
@@ -24,7 +24,7 @@ verifier:
24
24
  cleanup_conftests: true
25
25
  agent:
26
26
  timeout_sec: 120.0
27
- environment:
27
+ sandbox:
28
28
  network_mode: public
29
29
  build_timeout_sec: 600.0
30
30
  os: linux
@@ -477,6 +477,33 @@ class RolloutDiagnostics:
477
477
  return d if isinstance(d, TransportClosedDiagnostic) else None
478
478
 
479
479
 
480
+ TRANSIENT_SANDBOX_TRANSPORT_MARKER = "transient sandbox transport failure"
481
+
482
+
483
+ class TransientSandboxTransportError(ConnectionError):
484
+ """A sandbox-provider API call failed at the transport layer.
485
+
486
+ Raised at the SDK boundary, where the vendor exception *type* is still
487
+ alive, and carrying one stable marker so downstream classification never
488
+ has to keep a census of vendor message prefixes.
489
+
490
+ This exists because the vendor prefix is the wrong thing to match on.
491
+ The Daytona SDK stamps a different prefix per method — "Failed to
492
+ execute session command: ", "Failed to upload files: ", "Failed to get
493
+ file info: " — while the *failure* is identical in every case: an httpx
494
+ timeout or disconnect against the toolbox API, with an empty message.
495
+ Enumerating those prefixes in the classifier means one entry per vendor
496
+ method, silently incomplete the moment the SDK adds or renames one, and
497
+ it also over-matches: a permanent 401/400/409 shares the prefix but is
498
+ not transient. Deciding at the raise site, where
499
+ ``_is_daytona_transient_retry_error`` can inspect the real class, keeps
500
+ both halves honest.
501
+ """
502
+
503
+ def __init__(self, detail: str) -> None:
504
+ super().__init__(f"{TRANSIENT_SANDBOX_TRANSPORT_MARKER}: {detail}")
505
+
506
+
480
507
  # Summary / check_results helpers driven by the registry
481
508
 
482
509
 
@@ -514,6 +541,8 @@ __all__ = [
514
541
  "IdleTimeoutError",
515
542
  "TransportClosedError",
516
543
  "RolloutDiagnostics",
544
+ "TRANSIENT_SANDBOX_TRANSPORT_MARKER",
545
+ "TransientSandboxTransportError",
517
546
  "summary_warning",
518
547
  "format_issue_for_field",
519
548
  ]
@@ -9,10 +9,13 @@
9
9
  # resolves on a bare pip install with no $BENCHFLOW_ENV_REGISTRY set:
10
10
  #
11
11
  # bench eval create --tasks-dir <task> --environment-manifest env0@outage ...
12
+ #
13
+ # NOTE: ghcr.io/benchflow-ai/env0:0.2.0 is amd64-only — run env0 on Daytona
14
+ # (x86_64), not local Docker on Apple Silicon.
12
15
 
13
16
  [environment]
14
17
  name = "env-0"
15
- base_image = "xdotli/env0-base:latest"
18
+ base_image = "ghcr.io/benchflow-ai/env0:0.2.0"
16
19
  owns_lifecycle = false
17
20
  isolation = "per_task"
18
21
 
@@ -22,13 +25,9 @@ mechanism = "image"
22
25
  [environment.readiness]
23
26
  timeout_sec = 60
24
27
 
25
- # Services below are copied VERBATIM from the upstream env-0.toml pin
26
- # (2026-08-09 sync). The previous pin had drifted: bare CLI names
27
- # (auth/gmail/...) that do not exist in ghcr.io/benchflow-ai/env0:0.2.0
28
- # images (which ship mock-auth/mock-gmail/... console scripts), plus a
29
- # phantom slack service and shifted ports — so ManifestEnvironment
30
- # probed, found ZERO startable services, and readiness passed vacuously
31
- # while every rollout died at the verifier with connection-refused.
28
+ # Services below are copied VERBATIM from the upstream env-0.toml pin,
29
+ # minus this variant's deliberate outage (mock-gmail and mock-slack
30
+ # removed).
32
31
 
33
32
  [[environment.services]]
34
33
  name = "mock-auth"
@@ -1,7 +1,7 @@
1
1
  # env0@prod — pinned, content-addressed Environment-plane manifest for env-0.
2
2
  #
3
3
  # This is a built-in registry entry, shipped inside the benchflow wheel
4
- # (benchflow/environment/_registry/) so PR #790's env-axis pin resolves on a
4
+ # (benchflow/environment/_registry/) so the env-axis pin resolves on a
5
5
  # bare pip install — no checkout, no env vars:
6
6
  #
7
7
  # bench eval create --tasks-dir <env0 tasks> --environment-manifest env0@prod ...
@@ -9,16 +9,18 @@
9
9
  # Set $BENCHFLOW_ENV_REGISTRY to a local directory of name@version.toml files
10
10
  # to override the built-in registry entirely.
11
11
  #
12
- # Mirrors benchflow-ai/env0 tasks/_manifests/env-0.toml (the source of truth). env-0's per-task images build
13
- # FROM the shared base and bake seed data; benchflow's ManifestEnvironment
14
- # probes each service's CLI and starts only the ones installed in the per-task
15
- # image, gating the agent on each service's /health.
12
+ # Mirrors benchflow-ai/env0 tasks/_manifests/env-0.toml (the source of truth).
13
+ # env-0's per-task images build FROM the shared base and bake seed data;
14
+ # benchflow's ManifestEnvironment probes each service's CLI and starts only
15
+ # the ones installed in the per-task image, gating the agent on each
16
+ # service's /health.
16
17
  #
17
- # NOTE: xdotli/env0-base:latest is amd64-only — run env0 on Daytona (x86_64).
18
+ # NOTE: ghcr.io/benchflow-ai/env0:0.2.0 is amd64-only — run env0 on Daytona
19
+ # (x86_64), not local Docker on Apple Silicon.
18
20
 
19
21
  [environment]
20
22
  name = "env-0"
21
- base_image = "xdotli/env0-base:latest"
23
+ base_image = "ghcr.io/benchflow-ai/env0:0.2.0"
22
24
  owns_lifecycle = false
23
25
  isolation = "per_task"
24
26
 
@@ -28,13 +30,7 @@ mechanism = "image"
28
30
  [environment.readiness]
29
31
  timeout_sec = 60
30
32
 
31
- # Services below are copied VERBATIM from the upstream env-0.toml pin
32
- # (2026-08-09 sync). The previous pin had drifted: bare CLI names
33
- # (auth/gmail/...) that do not exist in ghcr.io/benchflow-ai/env0:0.2.0
34
- # images (which ship mock-auth/mock-gmail/... console scripts), plus a
35
- # phantom slack service and shifted ports — so ManifestEnvironment
36
- # probed, found ZERO startable services, and readiness passed vacuously
37
- # while every rollout died at the verifier with connection-refused.
33
+ # Services below are copied VERBATIM from the upstream env-0.toml pin.
38
34
 
39
35
  [[environment.services]]
40
36
  name = "mock-auth"
@@ -9,7 +9,7 @@ with a clean tool-call interface that prevents reward hacking (reviewer
9
9
  never has write access to /app/).
10
10
 
11
11
  Usage in task.toml:
12
- [[environment.mcp_servers]]
12
+ [[sandbox.mcp_servers]]
13
13
  name = "reviewer"
14
14
  transport = "streamable-http"
15
15
  url = "http://localhost:8100/mcp"