benchflow 0.6.7.dev1826__tar.gz → 0.6.7.dev1829__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 (702) hide show
  1. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/PKG-INFO +1 -1
  2. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/pyproject.toml +1 -1
  3. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/benchmark_repos.py +16 -3
  4. benchflow-0.6.7.dev1829/src/benchflow/_utils/live_activity.py +82 -0
  5. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/session.py +18 -6
  6. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/_live_progress.py +56 -3
  7. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/_shared.py +57 -4
  8. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/main.py +6 -2
  9. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/evaluation.py +44 -5
  10. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/__init__.py +33 -1
  11. benchflow-0.6.7.dev1829/tests/test_cli_live_progress.py +444 -0
  12. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_console_progress.py +22 -0
  13. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_job.py +36 -0
  14. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_download.py +16 -4
  15. benchflow-0.6.7.dev1826/tests/test_cli_live_progress.py +0 -180
  16. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/.gitignore +0 -0
  17. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/CHANGELOG.md +0 -0
  18. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/LICENSE +0 -0
  19. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/README.md +0 -0
  20. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/__init__.py +0 -0
  21. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_dotenv.py +0 -0
  22. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_paths.py +0 -0
  23. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_run.py +0 -0
  24. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_types.py +0 -0
  25. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/__init__.py +0 -0
  26. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/build_context_stage.py +0 -0
  27. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/config.py +0 -0
  28. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/config_override.py +0 -0
  29. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/content_address.py +0 -0
  30. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/dataset_registry.py +0 -0
  31. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/env_registry.py +0 -0
  32. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/evaluation_results.py +0 -0
  33. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/hf_datasets.py +0 -0
  34. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/json_safe.py +0 -0
  35. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/learner_memory.py +0 -0
  36. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/result_metadata.py +0 -0
  37. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/reward_events.py +0 -0
  38. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/scoring.py +0 -0
  39. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/source_provenance.py +0 -0
  40. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  41. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  42. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  43. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  44. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  45. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/text.py +0 -0
  46. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/_utils/yaml_loader.py +0 -0
  47. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/__init__.py +0 -0
  48. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/client.py +0 -0
  49. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/container_transport.py +0 -0
  50. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/runtime.py +0 -0
  51. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/selection.py +0 -0
  52. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/transport.py +0 -0
  53. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/acp/types.py +0 -0
  54. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/__init__.py +0 -0
  55. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/_toolathlon.py +0 -0
  56. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  57. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  58. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  59. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  60. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/harbor.py +0 -0
  61. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/inbound.py +0 -0
  62. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/inspect_ai.py +0 -0
  63. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/ors.py +0 -0
  64. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/resources/__init__.py +0 -0
  65. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  66. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  67. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/adapters/source.py +0 -0
  68. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agent_router.py +0 -0
  69. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agent_router_guide.py +0 -0
  70. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agent_router_parity.py +0 -0
  71. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agent_router_scaffold.py +0 -0
  72. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/__init__.py +0 -0
  73. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/codex_config.py +0 -0
  74. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/credentials.py +0 -0
  75. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  76. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/env.py +0 -0
  77. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/errors.py +0 -0
  78. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  79. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/install.py +0 -0
  80. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/manifest.py +0 -0
  81. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  82. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  83. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/protocol.py +0 -0
  84. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/providers.py +0 -0
  85. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/registry.py +0 -0
  86. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/agents/remote_manifests.py +0 -0
  87. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/branch.py +0 -0
  88. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/__init__.py +0 -0
  89. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/_hosted_env.py +0 -0
  90. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/_options.py +0 -0
  91. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/adopt.py +0 -0
  92. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/agent.py +0 -0
  93. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/continue_cmd.py +0 -0
  94. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/environment.py +0 -0
  95. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/eval_artifacts.py +0 -0
  96. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/eval_lift.py +0 -0
  97. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/hub.py +0 -0
  98. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/monitor.py +0 -0
  99. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/review.py +0 -0
  100. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/sandbox.py +0 -0
  101. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/skills.py +0 -0
  102. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/tasks.py +0 -0
  103. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/trace_import.py +0 -0
  104. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/cli/train.py +0 -0
  105. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/__init__.py +0 -0
  106. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/batch.py +0 -0
  107. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/orchestrator.py +0 -0
  108. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/replay_proxy.py +0 -0
  109. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/run_folder.py +0 -0
  110. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  111. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/contracts/__init__.py +0 -0
  112. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/contracts/planes.py +0 -0
  113. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/contracts/user.py +0 -0
  114. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  115. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/demo_task/instruction.md +0 -0
  116. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/demo_task/task.md +0 -0
  117. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/demo_task/task.toml +0 -0
  118. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/demo_task/tests/test.sh +0 -0
  119. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/diagnostics.py +0 -0
  120. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/environment/__init__.py +0 -0
  121. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/environment/manifest.py +0 -0
  122. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/environment/manifest_env.py +0 -0
  123. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/environment/protocol.py +0 -0
  124. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/environment/readiness.py +0 -0
  125. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/eval_artifacts.py +0 -0
  126. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/eval_lift.py +0 -0
  127. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/eval_plan.py +0 -0
  128. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/eval_sharding.py +0 -0
  129. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/eval_worker.py +0 -0
  130. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/experimental/__init__.py +0 -0
  131. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/experimental/mcp/__init__.py +0 -0
  132. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/experimental/mcp/hooks.py +0 -0
  133. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  134. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/hosted_env.py +0 -0
  135. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/hub/__init__.py +0 -0
  136. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/hub/harbor_registry.py +0 -0
  137. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/integrations/__init__.py +0 -0
  138. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/integrations/trl/__init__.py +0 -0
  139. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/integrations/trl/spec.py +0 -0
  140. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/learner_skills.py +0 -0
  141. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/learner_store.py +0 -0
  142. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/loop_strategies.py +0 -0
  143. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/loop_sweep.py +0 -0
  144. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/metrics.py +0 -0
  145. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/models.py +0 -0
  146. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/monitor.py +0 -0
  147. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/__init__.py +0 -0
  148. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  149. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  150. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/litellm_config.py +0 -0
  151. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/litellm_logging.py +0 -0
  152. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/litellm_runtime.py +0 -0
  153. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/providers/runtime.py +0 -0
  154. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/publish/__init__.py +0 -0
  155. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/publish/huggingface.py +0 -0
  156. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/py.typed +0 -0
  157. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/__init__.py +0 -0
  158. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/config.py +0 -0
  159. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/default-rubric.json +0 -0
  160. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/prompts.py +0 -0
  161. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/runner.py +0 -0
  162. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/review/wrapper.py +0 -0
  163. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/README.md +0 -0
  164. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/__init__.py +0 -0
  165. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/builtins.py +0 -0
  166. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/events.py +0 -0
  167. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/file_readers.py +0 -0
  168. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/llm.py +0 -0
  169. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/memory_scorer.py +0 -0
  170. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/node.py +0 -0
  171. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/protocol.py +0 -0
  172. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/rubric.py +0 -0
  173. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/rubric_config.py +0 -0
  174. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rewards/validation.py +0 -0
  175. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_config.py +0 -0
  176. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_deadline.py +0 -0
  177. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_results.py +0 -0
  178. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_setup.py +0 -0
  179. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_skills.py +0 -0
  180. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_usage.py +0 -0
  181. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/_user_loop.py +0 -0
  182. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  183. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout/task_runtime.py +0 -0
  184. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout_branch.py +0 -0
  185. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/rollout_planes.py +0 -0
  186. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/runtime.py +0 -0
  187. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/__init__.py +0 -0
  188. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_base.py +0 -0
  189. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  190. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_compose.py +0 -0
  191. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  192. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  193. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  194. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  195. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  196. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore.py +0 -0
  197. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  198. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore_image.py +0 -0
  199. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  200. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  201. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  202. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/apple_container.py +0 -0
  203. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/daytona.py +0 -0
  204. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/daytona_dind.py +0 -0
  205. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/daytona_pty.py +0 -0
  206. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  207. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  208. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/docker.py +0 -0
  209. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/lockdown.py +0 -0
  210. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/metadata.py +0 -0
  211. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/modal_impl.py +0 -0
  212. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/__init__.py +0 -0
  213. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/_base.py +0 -0
  214. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/agentcore.py +0 -0
  215. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/apple.py +0 -0
  216. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/daytona.py +0 -0
  217. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/process/docker.py +0 -0
  218. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/protocol.py +0 -0
  219. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/providers.py +0 -0
  220. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/services.py +0 -0
  221. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/setup.py +0 -0
  222. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/snapshot.py +0 -0
  223. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sandbox/user.py +0 -0
  224. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/scenes.py +0 -0
  225. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/sdk.py +0 -0
  226. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/self_gen.py +0 -0
  227. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skill_eval/__init__.py +0 -0
  228. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skill_eval/_core.py +0 -0
  229. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skill_eval/gepa_export.py +0 -0
  230. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skill_eval/schema.py +0 -0
  231. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skill_policy.py +0 -0
  232. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/skills.py +0 -0
  233. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/__init__.py +0 -0
  234. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/_document_evidence.py +0 -0
  235. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/_document_normalize.py +0 -0
  236. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/_document_parse.py +0 -0
  237. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/_document_profiles.py +0 -0
  238. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/acceptance_live.py +0 -0
  239. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/acceptance_live_model.py +0 -0
  240. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/acceptance_live_report.py +0 -0
  241. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/acceptance_live_validation.py +0 -0
  242. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/config.py +0 -0
  243. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/discovery.py +0 -0
  244. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/document.py +0 -0
  245. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/env.py +0 -0
  246. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/export.py +0 -0
  247. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/imports.py +0 -0
  248. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/output_format.py +0 -0
  249. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/package.py +0 -0
  250. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/paths.py +0 -0
  251. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/prompts.py +0 -0
  252. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/runtime_capabilities.py +0 -0
  253. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/runtime_view.py +0 -0
  254. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/task.py +0 -0
  255. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier.py +0 -0
  256. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_core.py +0 -0
  257. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_document.py +0 -0
  258. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_errors.py +0 -0
  259. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  260. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_ors_episode.py +0 -0
  261. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_reward_kit.py +0 -0
  262. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_scan.py +0 -0
  263. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/task/verifier_script_strategy.py +0 -0
  264. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/templates/__init__.py +0 -0
  265. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/templates/judge.py.tmpl +0 -0
  266. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/templates/test.sh.tmpl +0 -0
  267. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/__init__.py +0 -0
  268. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/huggingface.py +0 -0
  269. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/local.py +0 -0
  270. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/models.py +0 -0
  271. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/parsers.py +0 -0
  272. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/traces/task_gen.py +0 -0
  273. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/training/__init__.py +0 -0
  274. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/training/backends/__init__.py +0 -0
  275. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/training/backends/prime_rl.py +0 -0
  276. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/training/run_manifest.py +0 -0
  277. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/__init__.py +0 -0
  278. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/_capture.py +0 -0
  279. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/_export_common.py +0 -0
  280. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/_llm_capture.py +0 -0
  281. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/call_purpose.py +0 -0
  282. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/export.py +0 -0
  283. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/export_adp.py +0 -0
  284. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/export_atif.py +0 -0
  285. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  286. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  287. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/metrics.py +0 -0
  288. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/results.py +0 -0
  289. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/tree.py +0 -0
  290. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  291. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/types.py +0 -0
  292. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/trajectories/viewer.py +0 -0
  293. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/src/benchflow/usage_tracking.py +0 -0
  294. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/__init__.py +0 -0
  295. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/acceptance_live_harness.py +0 -0
  296. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/__init__.py +0 -0
  297. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_manifest_dirscan.py +0 -0
  298. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_manifest_loader.py +0 -0
  299. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_manifest_parity.py +0 -0
  300. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_manifest_wiring.py +0 -0
  301. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_namespace_shorthand.py +0 -0
  302. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_plugin_entry_points.py +0 -0
  303. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_protocol.py +0 -0
  304. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/agents/test_remote_manifest_autoload.py +0 -0
  305. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/README.md +0 -0
  306. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  307. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  308. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  309. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/instruction.md +0 -0
  310. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  311. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/task.md +0 -0
  312. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/task.toml +0 -0
  313. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  314. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/conformance-results.json +0 -0
  315. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/proof_multi_agent.py +0 -0
  316. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/proof_snapshot.py +0 -0
  317. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/run_conformance.py +0 -0
  318. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  319. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/conftest.py +0 -0
  320. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/__init__.py +0 -0
  321. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/_helpers.py +0 -0
  322. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/test_batch.py +0 -0
  323. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/test_orchestrator.py +0 -0
  324. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/test_replay_proxy.py +0 -0
  325. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/continue_run/test_run_folder.py +0 -0
  326. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/__init__.py +0 -0
  327. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_chibench_manifest.py +0 -0
  328. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_clawsbench_manifest.py +0 -0
  329. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_manifest.py +0 -0
  330. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_manifest_env.py +0 -0
  331. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_protocol.py +0 -0
  332. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/environment/test_readiness.py +0 -0
  333. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  334. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/instruction.md +0 -0
  335. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  336. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/task.md +0 -0
  337. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/task.toml +0 -0
  338. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/hello-world-task/tests/test.sh +0 -0
  339. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/test_claude.sh +0 -0
  340. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/test_codex.sh +0 -0
  341. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/test_codex_custom_provider.sh +0 -0
  342. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/test_gemini.sh +0 -0
  343. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/test_openclaw.sh +0 -0
  344. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/traces/minimal-claude.jsonl +0 -0
  345. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  346. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/README.md +0 -0
  347. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  348. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  349. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  350. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  351. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  352. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  353. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  354. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/beta-task/task.toml +0 -0
  355. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  356. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/mock_acp_agent.py +0 -0
  357. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  358. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  359. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/mock_openai_responses_server.py +0 -0
  360. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  361. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  362. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  363. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  364. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  365. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  366. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  367. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  368. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  369. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  370. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  371. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  372. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  373. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  374. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  375. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  376. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  377. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  378. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  379. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  380. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  381. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  382. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  383. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  384. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  385. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  386. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  387. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  388. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  389. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  390. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  391. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  392. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  393. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  394. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  395. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  396. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  397. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  398. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  399. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  400. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  401. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  402. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  403. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  404. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  405. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  406. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  407. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  408. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  409. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  410. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  411. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  412. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  413. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  414. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  415. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  416. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  417. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  418. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  419. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  420. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/_consistency.py +0 -0
  421. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/agent_judge.py +0 -0
  422. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/check_adapter_evidence.py +0 -0
  423. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/check_hosted_env_evidence.py +0 -0
  424. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/check_results.py +0 -0
  425. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  426. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/check_trace_to_task_evidence.py +0 -0
  427. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  428. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/codex-acp.yaml +0 -0
  429. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/gemini.yaml +0 -0
  430. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  431. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/mimo.yaml +0 -0
  432. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/openclaw.yaml +0 -0
  433. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/opencode.yaml +0 -0
  434. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/openhands.yaml +0 -0
  435. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/configs/pi-acp.yaml +0 -0
  436. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/deepagents_harness.py +0 -0
  437. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/rubric_checks.py +0 -0
  438. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/run.sh +0 -0
  439. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/run_suite.py +0 -0
  440. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/scenarios.py +0 -0
  441. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/integration/suites/release.yaml +0 -0
  442. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acceptance_evidence.py +0 -0
  443. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acceptance_live.py +0 -0
  444. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acceptance_live_execution.py +0 -0
  445. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp.py +0 -0
  446. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp_capability_advertising.py +0 -0
  447. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp_mcp_servers.py +0 -0
  448. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp_model_config_dispatch.py +0 -0
  449. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp_pinned_protocol_guard.py +0 -0
  450. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_acp_setup_failure_propagation.py +0 -0
  451. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_adapter_scripts.py +0 -0
  452. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_adapters.py +0 -0
  453. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_cli.py +0 -0
  454. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_env_resolution.py +0 -0
  455. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_gemini_defaults.py +0 -0
  456. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_idle_timeout_cli.py +0 -0
  457. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_model_decouple.py +0 -0
  458. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_registry.py +0 -0
  459. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_router.py +0 -0
  460. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_router_cli_e2e.py +0 -0
  461. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_router_scaffold.py +0 -0
  462. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_setup.py +0 -0
  463. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agent_spec.py +0 -0
  464. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agentcore_builder.py +0 -0
  465. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agentcore_parallel.py +0 -0
  466. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agentcore_reaper.py +0 -0
  467. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agentcore_sandbox.py +0 -0
  468. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_agentcore_transport.py +0 -0
  469. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_api_error_capture.py +0 -0
  470. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_apple_container_sandbox.py +0 -0
  471. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_bare_model_provider.py +0 -0
  472. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_base_install_imports.py +0 -0
  473. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_bedrock_thinking.py +0 -0
  474. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_benchflow_experiment_review_validator.py +0 -0
  475. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  476. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_branch.py +0 -0
  477. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_build_context_stage.py +0 -0
  478. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_build_review_pack.py +0 -0
  479. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_capture_trajectory.py +0 -0
  480. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  481. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_clawsbench_slice.py +0 -0
  482. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_adopt_aliases.py +0 -0
  483. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_arg_validation.py +0 -0
  484. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_daytona.py +0 -0
  485. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_docs_drift.py +0 -0
  486. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_edge_case_hardening.py +0 -0
  487. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_hub_env.py +0 -0
  488. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_cli_misc.py +0 -0
  489. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_codex_review.py +0 -0
  490. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_codex_self_write_auth.py +0 -0
  491. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_config_override.py +0 -0
  492. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_config_redaction.py +0 -0
  493. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_connect_as_env.py +0 -0
  494. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_console_error_truncation.py +0 -0
  495. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_continuallearningbench_adapter.py +0 -0
  496. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_dataset_registry.py +0 -0
  497. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_command_polling.py +0 -0
  498. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_dind_compose_up.py +0 -0
  499. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_download.py +0 -0
  500. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_litellm_runtime.py +0 -0
  501. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_poll_deadline.py +0 -0
  502. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_daytona_reap.py +0 -0
  503. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_deepagents_agent.py +0 -0
  504. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_docker_prune_scoping.py +0 -0
  505. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_docker_uploads.py +0 -0
  506. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_docs_examples.py +0 -0
  507. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eng50_capabilities.py +0 -0
  508. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_env_registry.py +0 -0
  509. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_env_setup.py +0 -0
  510. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_environment_manifest_controls.py +0 -0
  511. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_artifact_cli.py +0 -0
  512. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_filters_applied.py +0 -0
  513. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_lift.py +0 -0
  514. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_sharding.py +0 -0
  515. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_single_task_summary.py +0 -0
  516. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_source_provenance.py +0 -0
  517. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_worker_retry.py +0 -0
  518. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_eval_zero_task_guard.py +0 -0
  519. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_evaluation_environment_manifest.py +0 -0
  520. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_exclude_tasks.py +0 -0
  521. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_filter_credentialed_cells.py +0 -0
  522. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_harvey_lab_shim.py +0 -0
  523. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_hilbench_adapter.py +0 -0
  524. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_hosted_env.py +0 -0
  525. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_hosted_env_rollout_contract.py +0 -0
  526. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_hub_harbor_registry.py +0 -0
  527. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_inbound_adapter_manifest.py +0 -0
  528. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_inbound_adapters.py +0 -0
  529. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_agent_judge.py +0 -0
  530. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_check_results.py +0 -0
  531. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_consistency.py +0 -0
  532. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_matrix.py +0 -0
  533. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_provider_selection.py +0 -0
  534. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_run_suite.py +0 -0
  535. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_integration_suite.py +0 -0
  536. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_internet_policy.py +0 -0
  537. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_job_sequential_shared.py +0 -0
  538. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_job_sequential_shared_resume.py +0 -0
  539. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_judge_robustness.py +0 -0
  540. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_judge_symlink_ingestion.py +0 -0
  541. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_learner_skills.py +0 -0
  542. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_learner_skills_traversal.py +0 -0
  543. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_learner_store.py +0 -0
  544. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_learner_store_persistence.py +0 -0
  545. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_config.py +0 -0
  546. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_hardening.py +0 -0
  547. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_logging.py +0 -0
  548. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_model_via_env_generic.py +0 -0
  549. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_reasoning_passthrough.py +0 -0
  550. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_runtime.py +0 -0
  551. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_litellm_smoke.py +0 -0
  552. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_live_llm_trajectory.py +0 -0
  553. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_llm_judge.py +0 -0
  554. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_llm_judge_event_tags.py +0 -0
  555. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_llm_judge_verifier.py +0 -0
  556. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_loop_strategies.py +0 -0
  557. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_loop_summary.py +0 -0
  558. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_loop_sweep.py +0 -0
  559. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_memory_scorer.py +0 -0
  560. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_metrics.py +0 -0
  561. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_mle_bench_adapter.py +0 -0
  562. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_mock_openai_responses_server.py +0 -0
  563. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_monitor_scaffold.py +0 -0
  564. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_native_acp_usage.py +0 -0
  565. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_no_cross_provider_fallback.py +0 -0
  566. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_notification_order_real.py +0 -0
  567. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_opencode_family_proxy_tracking.py +0 -0
  568. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_oracle.py +0 -0
  569. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_oracle_chokepoint.py +0 -0
  570. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_paths_safe.py +0 -0
  571. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_paths_symlink_helpers.py +0 -0
  572. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_pi_acp_launcher.py +0 -0
  573. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_pi_acp_proxy_routing.py +0 -0
  574. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_process.py +0 -0
  575. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_project_skills_layout.py +0 -0
  576. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_provider_auth_detection.py +0 -0
  577. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_providers.py +0 -0
  578. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_reexport.py +0 -0
  579. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_registry_invariants.py +0 -0
  580. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_release_hardening_r5.py +0 -0
  581. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_release_version.py +0 -0
  582. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_release_workflow_wiring.py +0 -0
  583. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_resolve_env_helpers.py +0 -0
  584. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_review_boundaries.py +0 -0
  585. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_review_rubric.py +0 -0
  586. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_review_runtime.py +0 -0
  587. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_reward_lenient.py +0 -0
  588. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_reward_node.py +0 -0
  589. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_reward_range.py +0 -0
  590. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_reward_unified_contract.py +0 -0
  591. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rewards.py +0 -0
  592. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rewards_jsonl.py +0 -0
  593. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_architecture.py +0 -0
  594. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_branch.py +0 -0
  595. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_config_path_coercion.py +0 -0
  596. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_environment.py +0 -0
  597. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_hard_deadline.py +0 -0
  598. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_import_no_side_effects.py +0 -0
  599. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  600. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_planes_contract.py +0 -0
  601. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_probe_sandbox_health.py +0 -0
  602. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_session_factory_dispatch.py +0 -0
  603. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_setup_commands.py +0 -0
  604. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rollout_upload.py +0 -0
  605. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rubric_checks.py +0 -0
  606. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_rubric_config.py +0 -0
  607. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_runtime.py +0 -0
  608. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_runtime_capabilities.py +0 -0
  609. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_runtime_config_wired.py +0 -0
  610. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_runtime_live_sandbox.py +0 -0
  611. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox.py +0 -0
  612. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_exec_secret_handling.py +0 -0
  613. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_hardening.py +0 -0
  614. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  615. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_live_process.py +0 -0
  616. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_multi_service.py +0 -0
  617. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_prebuilt_validation.py +0 -0
  618. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_protocol.py +0 -0
  619. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_provider_registry_drift.py +0 -0
  620. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_setup.py +0 -0
  621. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_snapshot_contract.py +0 -0
  622. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_upload_symlink.py +0 -0
  623. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sandbox_verifier_workspace.py +0 -0
  624. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_scene.py +0 -0
  625. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_scene_outbox_trial.py +0 -0
  626. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_scene_parallel_group.py +0 -0
  627. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_scene_result_aggregation.py +0 -0
  628. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_scoring.py +0 -0
  629. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sdk_internals.py +0 -0
  630. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sdk_lockdown.py +0 -0
  631. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sdk_run_alias.py +0 -0
  632. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_sealed_channel_container.py +0 -0
  633. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_self_gen_cli.py +0 -0
  634. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_self_gen_export_error_channel.py +0 -0
  635. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_self_gen_export_failures.py +0 -0
  636. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_self_gen_orchestration.py +0 -0
  637. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_session_factory_runtime.py +0 -0
  638. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_session_request_permission_dispatch.py +0 -0
  639. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_eval.py +0 -0
  640. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_eval_dryrun.py +0 -0
  641. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_eval_integration.py +0 -0
  642. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_eval_sweep.py +0 -0
  643. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_eval_traversal.py +0 -0
  644. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_invocation_artifacts.py +0 -0
  645. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skill_policy.py +0 -0
  646. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skills.py +0 -0
  647. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skills_dir_agent_home_link.py +0 -0
  648. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skillsbench_conversion_conformance.py +0 -0
  649. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  650. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_smoke.py +0 -0
  651. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_smoke_wiring.py +0 -0
  652. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_source_adapters.py +0 -0
  653. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_subscription_auth.py +0 -0
  654. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_check_eval_consistency.py +0 -0
  655. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_config.py +0 -0
  656. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_digest.py +0 -0
  657. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_document.py +0 -0
  658. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_export.py +0 -0
  659. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_output_format.py +0 -0
  660. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_package.py +0 -0
  661. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_task_runtime_primitive.py +0 -0
  662. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_tasks.py +0 -0
  663. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_token_usage_normalization.py +0 -0
  664. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trace_import_cli.py +0 -0
  665. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trace_task_gen_traversal.py +0 -0
  666. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trace_to_task_evidence.py +0 -0
  667. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_traces_huggingface.py +0 -0
  668. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_traces_parsers.py +0 -0
  669. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_traces_task_gen.py +0 -0
  670. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_train_cli.py +0 -0
  671. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_train_mode_artifact_emission.py +0 -0
  672. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_train_trl_cli.py +0 -0
  673. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trajectory_integration.py +0 -0
  674. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trajectory_streaming.py +0 -0
  675. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trial_agent_timeout_verify.py +0 -0
  676. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trial_install_agent_timeout.py +0 -0
  677. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trial_litellm_runtime.py +0 -0
  678. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_trl_integration.py +0 -0
  679. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_usage_litellm.py +0 -0
  680. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_usage_required.py +0 -0
  681. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_usage_tracking.py +0 -0
  682. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_user.py +0 -0
  683. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_v06_guard_ports.py +0 -0
  684. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_document.py +0 -0
  685. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_multi_container.py +0 -0
  686. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_output.py +0 -0
  687. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_output_freshness.py +0 -0
  688. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_strategies.py +0 -0
  689. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verifier_wedge_retry.py +0 -0
  690. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_verify.py +0 -0
  691. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_workflow_action_pinning.py +0 -0
  692. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/test_yaml_config.py +0 -0
  693. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/__init__.py +0 -0
  694. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export.py +0 -0
  695. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export_adp.py +0 -0
  696. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export_atif.py +0 -0
  697. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export_common.py +0 -0
  698. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export_nan_handling.py +0 -0
  699. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_export_prime_sft.py +0 -0
  700. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_redaction.py +0 -0
  701. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_step_granularity.py +0 -0
  702. {benchflow-0.6.7.dev1826 → benchflow-0.6.7.dev1829}/tests/trajectories/test_tree.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: benchflow
3
- Version: 0.6.7.dev1826
3
+ Version: 0.6.7.dev1829
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.dev1826"
3
+ version = "0.6.7.dev1829"
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"
@@ -95,11 +95,21 @@ def _looks_like_commit_sha(ref: str) -> bool:
95
95
 
96
96
  def _checkout_fetched_ref(repo_root: Path, ref: str) -> None:
97
97
  subprocess.run(
98
- ["git", "-C", str(repo_root), "fetch", "--depth", "1", "origin", ref],
98
+ [
99
+ "git",
100
+ "-C",
101
+ str(repo_root),
102
+ "fetch",
103
+ "--quiet",
104
+ "--depth",
105
+ "1",
106
+ "origin",
107
+ ref,
108
+ ],
99
109
  check=True,
100
110
  )
101
111
  subprocess.run(
102
- ["git", "-C", str(repo_root), "checkout", "--detach", "FETCH_HEAD"],
112
+ ["git", "-C", str(repo_root), "checkout", "--quiet", "--detach", "FETCH_HEAD"],
103
113
  check=True,
104
114
  )
105
115
 
@@ -155,7 +165,10 @@ def _clone_repo_unlocked(org: str, repo: str, ref: str | None = None) -> Path:
155
165
  try:
156
166
  if clone_tmp.exists():
157
167
  shutil.rmtree(clone_tmp)
158
- cmd = ["git", "clone", "--depth", "1"]
168
+ # --quiet: raw clone progress ("remote: Counting objects: …") on the
169
+ # console pre-dashboard is noise; the "Cloning …" log line above is
170
+ # the one-line summary. Errors still print (git keeps stderr on fail).
171
+ cmd = ["git", "clone", "--quiet", "--depth", "1"]
159
172
  if ref and not _looks_like_commit_sha(ref):
160
173
  cmd.extend(["--branch", ref])
161
174
  cmd.extend([url, str(clone_tmp)])
@@ -0,0 +1,82 @@
1
+ """Process-global registry of live rollouts for the eval dashboard.
2
+
3
+ The Rich dashboard (``cli/_live_progress.py``) renders in the same process as
4
+ the engine's rollouts, so surfacing per-task activity needs no new event
5
+ plumbing: the engine registers each live Rollout under its task name and the
6
+ dashboard polls the rollout's ACP session counters — the exact ones the
7
+ console heartbeat (``ACPSession._maybe_log_progress``) logs — at render time.
8
+ Best-effort by contract: every reader failure degrades to "no activity",
9
+ never to a render error.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import threading
15
+ from typing import Any, NamedTuple
16
+
17
+
18
+ class SessionCounters(NamedTuple):
19
+ """The live ACP session counters the console heartbeat logs.
20
+
21
+ ``total_tokens`` is None until the session has a usage snapshot (i.e.
22
+ after a completed prompt).
23
+ """
24
+
25
+ tool_calls: int
26
+ last_tool: str
27
+ total_tokens: int | None
28
+
29
+
30
+ class ActivitySnapshot(NamedTuple):
31
+ """One dashboard poll of a live rollout.
32
+
33
+ ``phase`` is the rollout's lifecycle phase (``Rollout._phase``) and is
34
+ always present, so the activity cell can label the long non-agent
35
+ stretches — sandbox create, agent install, verify — instead of blanking
36
+ in a way that is indistinguishable from a hang. ``counters`` is None
37
+ until the agent session exists (session-factory agents never grow one).
38
+ """
39
+
40
+ phase: str
41
+ counters: SessionCounters | None
42
+
43
+
44
+ _lock = threading.Lock()
45
+ # Task name -> live Rollout. Task basenames are unique keys by engine-wide
46
+ # invariant: the whole run pipeline (resume filtering, result keying — see
47
+ # Evaluation's `d.name not in completed` plan filter) is keyed by basename,
48
+ # so each name is scheduled at most once at a time.
49
+ _live: dict[str, Any] = {}
50
+
51
+
52
+ def register(task_name: str, rollout: Any) -> None:
53
+ """Expose a live rollout to the dashboard under its task name."""
54
+ with _lock:
55
+ _live[task_name] = rollout
56
+
57
+
58
+ def unregister(task_name: str) -> None:
59
+ with _lock:
60
+ _live.pop(task_name, None)
61
+
62
+
63
+ def activity(task_name: str) -> ActivitySnapshot | None:
64
+ """The :class:`ActivitySnapshot` for a running task, or None when the
65
+ rollout isn't registered (pre-create, between retries, teardown).
66
+
67
+ ``counters`` inside the snapshot is None until the task's agent session
68
+ exists — including non-ACP (session-factory) agents, which never grow an
69
+ ACP client — but ``phase`` is always present. The dig into
70
+ client/session state lives on ``Rollout.activity_snapshot()`` (typed,
71
+ owner-side); the except here only guards renders racing rollout teardown.
72
+ """
73
+ with _lock:
74
+ rollout = _live.get(task_name)
75
+ if rollout is None:
76
+ return None
77
+ try:
78
+ return rollout.activity_snapshot()
79
+ except Exception:
80
+ # Dashboard reads race a live rollout; degrading to "no activity" is
81
+ # always preferable to perturbing the render.
82
+ return None
@@ -221,6 +221,20 @@ class ACPSession:
221
221
  # which is otherwise easy to miss in a 64-concurrency log.
222
222
  logger.error(f"ACPSession on_change callback failed: {e}")
223
223
 
224
+ def progress_snapshot(self) -> tuple[int, str]:
225
+ """(tool-call count, last tool title) — the console heartbeat's
226
+ counters, also polled by the live eval dashboard's activity cell.
227
+
228
+ The title is the raw first line (untruncated — display width belongs
229
+ to each render site); ``split`` not ``splitlines`` so a whitespace-only
230
+ title strips to ``""`` instead of raising on an empty line list.
231
+ """
232
+ title = ""
233
+ if self.tool_calls:
234
+ last = self.tool_calls[-1]
235
+ title = (last.title or last.kind or "").strip().split("\n", 1)[0]
236
+ return len(self.tool_calls), title
237
+
224
238
  def _maybe_log_progress(self) -> None:
225
239
  if not self._progress_enabled or self._prompt_started_at is None:
226
240
  return
@@ -229,12 +243,10 @@ class ACPSession:
229
243
  return
230
244
  self._last_progress_at = now
231
245
  elapsed_min = (now - self._prompt_started_at) / 60.0
232
- line = f" … {elapsed_min:.1f}min, {len(self.tool_calls)} tool calls"
233
- if self.tool_calls:
234
- last = self.tool_calls[-1]
235
- title = (last.title or last.kind or "").strip().splitlines()[0][:60]
236
- if title:
237
- line += f" (last: {title})"
246
+ calls, title = self.progress_snapshot()
247
+ line = f" … {elapsed_min:.1f}min, {calls} tool calls"
248
+ if title:
249
+ line += f" (last: {title[:60]})"
238
250
  logger.info(line)
239
251
 
240
252
  def record_user_prompt(self, text: str) -> None:
@@ -27,6 +27,7 @@ from rich.markup import escape
27
27
  from rich.table import Table
28
28
  from rich.text import Text
29
29
 
30
+ from benchflow._utils import live_activity
30
31
  from benchflow.cli._shared import console
31
32
  from benchflow.usage_tracking import is_trusted_usage_source
32
33
 
@@ -127,6 +128,52 @@ def _fmt_tokens(n: int) -> str:
127
128
  return str(n)
128
129
 
129
130
 
131
+ # Rollout lifecycle phase (Rollout._phase — the completed phase, except
132
+ # "verifying" which verify() marks at entry) -> what is running now. Shown
133
+ # while the session counters are unavailable — before the agent session
134
+ # exists and after it is torn down — so sandbox create, agent install, and
135
+ # the verifier read as work, not as a hang.
136
+ _PHASE_LABELS = {
137
+ "created": "creating sandbox…",
138
+ "setup": "creating sandbox…",
139
+ "started": "installing agent…",
140
+ "installed": "running agent…",
141
+ "connected": "running agent…",
142
+ "executed": "verifying…",
143
+ "verifying": "verifying…",
144
+ "verified": "cleaning up…",
145
+ "cleaned": "cleaning up…",
146
+ }
147
+ # Unknown phases (e.g. "branched") and pre-register/teardown races: still
148
+ # never blank — a blank cell on a live row reads as a hang.
149
+ _PHASE_FALLBACK = "starting…"
150
+
151
+
152
+ def _activity_cell(name: str) -> str:
153
+ """Per-task activity for the "running now" table, e.g.
154
+ ``38 calls · last: file_editor``.
155
+
156
+ Polls the live rollout's ACP session counters — the same ones the console
157
+ heartbeat logs, which the Live display otherwise mutes — via the
158
+ live-activity registry. Until the agent session exists (and after it is
159
+ closed for the verifier) the cell shows the rollout's lifecycle phase as a
160
+ label instead, so the row is never blank. Tokens appear only once the
161
+ session has a usage snapshot (i.e. after a completed prompt).
162
+ """
163
+ snap = live_activity.activity(name)
164
+ if snap is None:
165
+ return _PHASE_FALLBACK
166
+ counters = snap.counters
167
+ if counters is None:
168
+ return _PHASE_LABELS.get(snap.phase, _PHASE_FALLBACK)
169
+ cell = f"{counters.tool_calls} calls"
170
+ if counters.total_tokens:
171
+ cell += f" · {_fmt_tokens(counters.total_tokens)} tok"
172
+ if counters.last_tool:
173
+ cell += f" · last: {counters.last_tool[:30]}"
174
+ return cell
175
+
176
+
130
177
  class LiveEvalProgress:
131
178
  """A live ``Live``-rendered dashboard, driven by the engine's progress hooks.
132
179
 
@@ -295,17 +342,23 @@ class LiveEvalProgress:
295
342
  )
296
343
  tbl.add_column("running now", no_wrap=True)
297
344
  tbl.add_column("elapsed", justify="right")
345
+ tbl.add_column("activity", no_wrap=True)
298
346
  now = time.monotonic()
299
347
  for name in sorted(running, key=lambda n: running[n])[:_MAX_RUNNING_ROWS]:
300
348
  # Text() so a task name containing Rich markup (`[` is legal in
301
349
  # SkillsBench dir names) is rendered literally, not parsed as
302
350
  # markup — a MarkupError here escapes __rich__ and aborts the
303
351
  # CLI on live-context exit, violating this module's "a render
304
- # bug can never perturb a run" contract.
305
- tbl.add_row(Text(name), _fmt_dur(now - running[name]))
352
+ # bug can never perturb a run" contract. Same for the activity
353
+ # cell, which carries agent-authored tool titles.
354
+ tbl.add_row(
355
+ Text(name),
356
+ _fmt_dur(now - running[name]),
357
+ Text(_activity_cell(name), style="dim"),
358
+ )
306
359
  extra = len(running) - _MAX_RUNNING_ROWS
307
360
  if extra > 0:
308
- tbl.add_row(f"… {extra} more", "")
361
+ tbl.add_row(f"… {extra} more", "", "")
309
362
  parts.append(tbl)
310
363
 
311
364
  # Footer: pass-rate (excl errors) + token/cost economics. Show "—" (not
@@ -18,10 +18,12 @@ import typer
18
18
  from rich.console import Console
19
19
  from rich.markup import escape
20
20
 
21
+ from benchflow._utils.text import truncate_end
22
+
21
23
  if TYPE_CHECKING:
22
24
  from pathlib import Path
23
25
 
24
- from benchflow.evaluation import EvaluationResult
26
+ from benchflow.evaluation import EvaluationResult, TaskFailure
25
27
 
26
28
  console = Console()
27
29
 
@@ -100,14 +102,52 @@ def _exit_if_evaluation_had_errors(result: object) -> None:
100
102
  raise typer.Exit(1)
101
103
 
102
104
 
105
+ # Final-block failure lines: keep the block skimmable on big jobs and each
106
+ # line inside a typical terminal width.
107
+ _MAX_FAILURE_LINES = 5
108
+ _FAILURE_LINE_LIMIT = 100
109
+ _FAILURE_REASON_METRICS = 3
110
+
111
+
112
+ def _failure_reason(failure: TaskFailure) -> str:
113
+ """One cheap line explaining why a FAILED (scored, reward != 1) task
114
+ failed, from evidence already on the result — no file reads.
115
+
116
+ Priority: the verifier's own error if set; else the reward plus a compact
117
+ breakdown of the named metrics in the reward dict (zero/failed metrics
118
+ first — they explain the miss); else just the reward.
119
+ """
120
+ if failure.verifier_error:
121
+ # Collapse whitespace: verifier errors are routinely multi-line.
122
+ return " ".join(failure.verifier_error.split())
123
+ rewards = failure.rewards or {}
124
+ reward = rewards.get("reward")
125
+ metrics = [
126
+ (name, value)
127
+ for name, value in rewards.items()
128
+ if name != "reward" and isinstance(value, (bool, int, float))
129
+ ]
130
+ if not metrics:
131
+ return f"reward {reward}"
132
+ # Zero/failed metrics first (stable within each group), capped so one
133
+ # metric-happy verifier can't flood the line.
134
+ metrics.sort(key=lambda kv: kv[1] != 0)
135
+ shown = ", ".join(
136
+ f"{name} {value}" for name, value in metrics[:_FAILURE_REASON_METRICS]
137
+ )
138
+ return f"reward {reward} — {shown}"
139
+
140
+
103
141
  def _report_eval_result(result: EvaluationResult, job_dir: Path | None = None) -> None:
104
142
  """Print the Score/errors summary line, colored by outcome, plus artifacts.
105
143
 
106
144
  A clean pass and a total failure used to look identical (both bold white);
107
145
  now the line is green only on a full clean pass, red on a shutout, amber
108
- otherwise, and ``errors=N`` is red when non-zero. When ``job_dir`` is given,
109
- the result/summary paths are printed so testers know where to look (the
110
- guide repeatedly says "read summary.json" but the CLI never said where).
146
+ otherwise, and ``errors=N`` is red when non-zero. Each FAILED task gets one
147
+ dim ``✗ task: reason`` line (capped at ``_MAX_FAILURE_LINES``) so the "why"
148
+ doesn't require opening summary.json. When ``job_dir`` is given, the
149
+ result/summary paths are printed so testers know where to look (the guide
150
+ repeatedly says "read summary.json" but the CLI never said where).
111
151
  """
112
152
  errors = int(getattr(result, "errored", 0) or 0)
113
153
  verifier_errors = int(getattr(result, "verifier_errored", 0) or 0)
@@ -132,6 +172,19 @@ def _report_eval_result(result: EvaluationResult, job_dir: Path | None = None) -
132
172
  f"\n[{style}]{mark} Score: {result.passed}/{result.total} "
133
173
  f"({result.score:.1%})[/{style}]{err_part}"
134
174
  )
175
+ # One dim reason line per FAILED task, so "0/1" doesn't force a dig into
176
+ # summary.json to learn why. getattr(): sharded aggregation and older
177
+ # SimpleNamespace-style callers don't carry task_failures.
178
+ failures = getattr(result, "task_failures", None) or []
179
+ for failure in failures[:_MAX_FAILURE_LINES]:
180
+ line = truncate_end(
181
+ f" ✗ {failure.task_name}: {_failure_reason(failure)}",
182
+ _FAILURE_LINE_LIMIT,
183
+ )
184
+ console.print(f"[dim]{escape(line)}[/dim]")
185
+ extra = len(failures) - _MAX_FAILURE_LINES
186
+ if extra > 0:
187
+ console.print(f"[dim] … and {extra} more[/dim]")
135
188
  if job_dir is not None:
136
189
  console.print(f"[dim]Artifacts:[/dim] {escape(str(job_dir))}")
137
190
  console.print(f"[dim]Summary: [/dim] {escape(str(job_dir))}/summary.json")
@@ -389,8 +389,9 @@ def eval_run(
389
389
  typer.Option(
390
390
  "--quiet",
391
391
  help=(
392
- "Suppress the per-run console progress heartbeat (the "
393
- "'… Nmin, K tool calls' lines during agent execution)."
392
+ "Suppress live progress output: the Rich dashboard on a TTY "
393
+ "and the per-run console progress heartbeat (the '… Nmin, K "
394
+ "tool calls' lines during agent execution)."
394
395
  ),
395
396
  ),
396
397
  ] = False,
@@ -597,6 +598,9 @@ def eval_run(
597
598
  # Explicit off beats the session layer's auto-gate; see
598
599
  # benchflow.acp.session._console_progress_enabled.
599
600
  os.environ["BENCHFLOW_PROGRESS"] = "off"
601
+ # --quiet silences ALL live progress: the heartbeat lines above and
602
+ # the TTY Rich dashboard (see cli._live_progress.progress_enabled).
603
+ os.environ["BENCHFLOW_NO_PROGRESS"] = "1"
600
604
 
601
605
  request = EvalCreateRequest(
602
606
  config_file=config_file,
@@ -60,6 +60,7 @@ from benchflow._utils.scoring import (
60
60
  VERIFIER_TIMEOUT,
61
61
  api_error_is_transient,
62
62
  classify_error,
63
+ classify_score_outcome,
63
64
  classify_verifier_error,
64
65
  count_audit_outcomes,
65
66
  count_score_outcomes,
@@ -574,6 +575,21 @@ class EvaluationConfig:
574
575
  )
575
576
 
576
577
 
578
+ @dataclass(frozen=True)
579
+ class TaskFailure:
580
+ """Cheap failure evidence for one FAILED (scored, reward != 1) task.
581
+
582
+ Carried on :class:`EvaluationResult` so the CLI's final block can print a
583
+ one-line reason per failed task from data the engine already holds —
584
+ without re-reading result.json files. Errored tasks are excluded (they
585
+ already surface through the error counters and warning replay).
586
+ """
587
+
588
+ task_name: str
589
+ rewards: dict[str, Any] | None
590
+ verifier_error: str | None
591
+
592
+
577
593
  @dataclass
578
594
  class EvaluationResult:
579
595
  """Aggregated results for a job."""
@@ -588,6 +604,7 @@ class EvaluationResult:
588
604
  elapsed_sec: float = 0.0
589
605
  memory_score: float | None = None
590
606
  memory_scores: dict[str, float] = field(default_factory=dict)
607
+ task_failures: list[TaskFailure] = field(default_factory=list)
591
608
 
592
609
  @property
593
610
  def score(self) -> float:
@@ -1250,11 +1267,20 @@ class Evaluation:
1250
1267
 
1251
1268
  return await run_self_gen(rollout_config)
1252
1269
  rollout = await Rollout.create(rollout_config)
1253
- # Rollout.run() enforces its own host-side hard deadline against
1254
- # awaits wedged below the phase-level timeouts see
1255
- # benchflow.rollout._deadline. A trip surfaces here as a normal
1256
- # infra-retryable error result.
1257
- return await rollout.run()
1270
+ # Expose the live rollout to the eval dashboard's activity cell —
1271
+ # a same-process poll of the session's heartbeat counters, see
1272
+ # benchflow._utils.live_activity.
1273
+ from benchflow._utils import live_activity
1274
+
1275
+ live_activity.register(task_dir.name, rollout)
1276
+ try:
1277
+ # Rollout.run() enforces its own host-side hard deadline against
1278
+ # awaits wedged below the phase-level timeouts — see
1279
+ # benchflow.rollout._deadline. A trip surfaces here as a normal
1280
+ # infra-retryable error result.
1281
+ return await rollout.run()
1282
+ finally:
1283
+ live_activity.unregister(task_dir.name)
1258
1284
 
1259
1285
  async def _run_single_task_legacy(
1260
1286
  self, task_dir: Path, cfg: EvaluationConfig
@@ -1767,6 +1793,18 @@ class Evaluation:
1767
1793
  score_counts = count_score_outcomes(all_results.values())
1768
1794
  audit_counts = count_audit_outcomes(all_results.values())
1769
1795
  memory, memory_scores = memory_summary(all_results)
1796
+ # Per-task failure evidence for the CLI's final block — FAILED (scored,
1797
+ # reward != 1) tasks only, from data already in memory. Sorted by name
1798
+ # so the printed lines are deterministic across resume/concurrency.
1799
+ task_failures = [
1800
+ TaskFailure(
1801
+ task_name=name,
1802
+ rewards=r.get("rewards"),
1803
+ verifier_error=r.get("verifier_error"),
1804
+ )
1805
+ for name, r in sorted(all_results.items())
1806
+ if classify_score_outcome(r) == "failed"
1807
+ ]
1770
1808
  job_result = EvaluationResult(
1771
1809
  job_name=self._job_name,
1772
1810
  config=cfg,
@@ -1782,6 +1820,7 @@ class Evaluation:
1782
1820
  elapsed_sec=elapsed,
1783
1821
  memory_score=memory["avg_score"],
1784
1822
  memory_scores=memory_scores,
1823
+ task_failures=task_failures,
1785
1824
  )
1786
1825
 
1787
1826
  assert (
@@ -72,6 +72,7 @@ from benchflow._types import Role, Scene, Turn
72
72
  # / ``_capture_session_trajectory`` / ``default_rollout_planes`` keep affecting
73
73
  # the ``Rollout`` methods that call those names, because those methods stay
74
74
  # defined in this module.
75
+ from benchflow._utils.live_activity import ActivitySnapshot, SessionCounters
75
76
  from benchflow._utils.scoring import classify_error as classify_error
76
77
  from benchflow.acp.types import McpServerSpec
77
78
  from benchflow.agents.credentials import upload_credential
@@ -755,6 +756,27 @@ class Rollout:
755
756
  def acp_client(self) -> Any:
756
757
  return self._acp_client
757
758
 
759
+ def activity_snapshot(self) -> ActivitySnapshot:
760
+ """The eval dashboard's per-task :class:`ActivitySnapshot`: the
761
+ current lifecycle phase plus the live :class:`SessionCounters` (tool
762
+ calls, last tool title, total tokens). ``counters`` is None before
763
+ the agent session exists — the phase then carries the cell
764
+ ("creating sandbox…", "verifying…"), so a 90s sandbox create is not
765
+ indistinguishable from a hang.
766
+
767
+ Rollout owns the client/session dig so a rename breaks here — in
768
+ typed, tested code — instead of silently blanking the dashboard cell
769
+ (see benchflow._utils.live_activity). Session-factory agents have no
770
+ ACP client and always report counter-less snapshots.
771
+ """
772
+ session = self._acp_client.session if self._acp_client else None
773
+ if session is None:
774
+ return ActivitySnapshot(self._phase, None)
775
+ calls, last_title = session.progress_snapshot()
776
+ usage = session.latest_usage_totals()
777
+ tokens = usage.get("total_tokens") if usage else None
778
+ return ActivitySnapshot(self._phase, SessionCounters(calls, last_title, tokens))
779
+
758
780
  @property
759
781
  def trajectory(self) -> list[dict]:
760
782
  return self._trajectory
@@ -1720,6 +1742,12 @@ class Rollout:
1720
1742
  """Run the verifier and return rewards."""
1721
1743
  cfg = self._config
1722
1744
 
1745
+ # Mark the phase at entry (the other transitions mark completion):
1746
+ # the verifier can run for minutes after disconnect() reset the phase
1747
+ # to "installed", and the dashboard's activity cell reads _phase to
1748
+ # label that stretch "verifying…" instead of going blank.
1749
+ self._phase = "verifying"
1750
+
1723
1751
  if not self._trajectory and cfg.primary_agent != "oracle":
1724
1752
  scraped = await _scrape_agent_trajectory(
1725
1753
  self._env, cfg.primary_agent, cfg.sandbox_user
@@ -2401,7 +2429,11 @@ class Rollout:
2401
2429
  TrajectoryWriter(
2402
2430
  self._rollout_dir / "trajectory" / "acp_trajectory.jsonl"
2403
2431
  ).write_final(self._trajectory)
2404
- logger.warning(
2432
+ # info, not warning: trajectory repair is evidence-mutation an auditor
2433
+ # should find at default (non-TTY/CI) verbosity, but as a warning it
2434
+ # survived the live dashboard's WARNING+ replay and printed between
2435
+ # teardown and the score line (dogfood 2026-08-09).
2436
+ logger.info(
2405
2437
  "Repaired %d lossy ACP tool event(s) from trusted provider capture",
2406
2438
  repaired,
2407
2439
  )