benchflow 0.6.7.dev1831__tar.gz → 0.6.7.dev1835__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.dev1831 → benchflow-0.6.7.dev1835}/PKG-INFO +1 -1
  2. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/pyproject.toml +1 -1
  3. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/evaluation_results.py +1 -0
  4. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/scoring.py +21 -0
  5. benchflow-0.6.7.dev1835/src/benchflow/cli/_failure_evidence.py +122 -0
  6. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/_shared.py +53 -19
  7. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/evaluation.py +30 -2
  8. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_live_progress.py +242 -2
  9. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_job.py +55 -0
  10. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_scoring.py +35 -0
  11. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/.gitignore +0 -0
  12. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/CHANGELOG.md +0 -0
  13. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/LICENSE +0 -0
  14. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/README.md +0 -0
  15. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/__init__.py +0 -0
  16. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_dotenv.py +0 -0
  17. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_paths.py +0 -0
  18. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_run.py +0 -0
  19. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_types.py +0 -0
  20. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/__init__.py +0 -0
  21. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/benchmark_repos.py +0 -0
  22. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/build_context_stage.py +0 -0
  23. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/config.py +0 -0
  24. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/config_override.py +0 -0
  25. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/content_address.py +0 -0
  26. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/dataset_registry.py +0 -0
  27. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/env_registry.py +0 -0
  28. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/hf_datasets.py +0 -0
  29. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/json_safe.py +0 -0
  30. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/learner_memory.py +0 -0
  31. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/live_activity.py +0 -0
  32. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/result_metadata.py +0 -0
  33. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/reward_events.py +0 -0
  34. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/source_provenance.py +0 -0
  35. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
  36. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
  37. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
  38. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
  39. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
  40. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/text.py +0 -0
  41. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/_utils/yaml_loader.py +0 -0
  42. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/__init__.py +0 -0
  43. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/client.py +0 -0
  44. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/container_transport.py +0 -0
  45. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/runtime.py +0 -0
  46. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/selection.py +0 -0
  47. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/session.py +0 -0
  48. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/transport.py +0 -0
  49. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/acp/types.py +0 -0
  50. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/__init__.py +0 -0
  51. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/_toolathlon.py +0 -0
  52. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/_toolathlon_container.py +0 -0
  53. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
  54. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
  55. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/_toolathlon_services.py +0 -0
  56. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/harbor.py +0 -0
  57. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/inbound.py +0 -0
  58. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/inspect_ai.py +0 -0
  59. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/ors.py +0 -0
  60. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/resources/__init__.py +0 -0
  61. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
  62. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
  63. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/adapters/source.py +0 -0
  64. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agent_router.py +0 -0
  65. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agent_router_guide.py +0 -0
  66. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agent_router_parity.py +0 -0
  67. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agent_router_scaffold.py +0 -0
  68. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/__init__.py +0 -0
  69. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/codex_config.py +0 -0
  70. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/credentials.py +0 -0
  71. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
  72. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/env.py +0 -0
  73. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/errors.py +0 -0
  74. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
  75. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/install.py +0 -0
  76. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/manifest.py +0 -0
  77. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
  78. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/pi_acp_launcher.py +0 -0
  79. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/protocol.py +0 -0
  80. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/providers.py +0 -0
  81. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/registry.py +0 -0
  82. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/agents/remote_manifests.py +0 -0
  83. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/branch.py +0 -0
  84. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/__init__.py +0 -0
  85. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/_hosted_env.py +0 -0
  86. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/_live_progress.py +0 -0
  87. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/_options.py +0 -0
  88. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/adopt.py +0 -0
  89. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/agent.py +0 -0
  90. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/continue_cmd.py +0 -0
  91. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/environment.py +0 -0
  92. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/eval_artifacts.py +0 -0
  93. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/eval_lift.py +0 -0
  94. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/hub.py +0 -0
  95. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/main.py +0 -0
  96. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/monitor.py +0 -0
  97. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/review.py +0 -0
  98. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/sandbox.py +0 -0
  99. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/skills.py +0 -0
  100. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/tasks.py +0 -0
  101. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/trace_import.py +0 -0
  102. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/cli/train.py +0 -0
  103. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/__init__.py +0 -0
  104. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/batch.py +0 -0
  105. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/orchestrator.py +0 -0
  106. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/replay_proxy.py +0 -0
  107. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/run_folder.py +0 -0
  108. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
  109. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/contracts/__init__.py +0 -0
  110. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/contracts/planes.py +0 -0
  111. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/contracts/user.py +0 -0
  112. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/demo_task/environment/Dockerfile +0 -0
  113. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/demo_task/instruction.md +0 -0
  114. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/demo_task/task.md +0 -0
  115. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/demo_task/task.toml +0 -0
  116. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/demo_task/tests/test.sh +0 -0
  117. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/diagnostics.py +0 -0
  118. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/environment/__init__.py +0 -0
  119. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/environment/manifest.py +0 -0
  120. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/environment/manifest_env.py +0 -0
  121. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/environment/protocol.py +0 -0
  122. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/environment/readiness.py +0 -0
  123. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/eval_artifacts.py +0 -0
  124. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/eval_lift.py +0 -0
  125. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/eval_plan.py +0 -0
  126. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/eval_sharding.py +0 -0
  127. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/eval_worker.py +0 -0
  128. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/experimental/__init__.py +0 -0
  129. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/experimental/mcp/__init__.py +0 -0
  130. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/experimental/mcp/hooks.py +0 -0
  131. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
  132. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/hosted_env.py +0 -0
  133. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/hub/__init__.py +0 -0
  134. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/hub/harbor_registry.py +0 -0
  135. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/integrations/__init__.py +0 -0
  136. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/integrations/trl/__init__.py +0 -0
  137. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/integrations/trl/spec.py +0 -0
  138. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/learner_skills.py +0 -0
  139. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/learner_store.py +0 -0
  140. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/loop_strategies.py +0 -0
  141. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/loop_sweep.py +0 -0
  142. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/metrics.py +0 -0
  143. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/models.py +0 -0
  144. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/monitor.py +0 -0
  145. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/__init__.py +0 -0
  146. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
  147. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
  148. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/litellm_config.py +0 -0
  149. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/litellm_logging.py +0 -0
  150. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/litellm_runtime.py +0 -0
  151. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/providers/runtime.py +0 -0
  152. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/publish/__init__.py +0 -0
  153. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/publish/huggingface.py +0 -0
  154. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/py.typed +0 -0
  155. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/__init__.py +0 -0
  156. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/config.py +0 -0
  157. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/default-rubric.json +0 -0
  158. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/prompts.py +0 -0
  159. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/runner.py +0 -0
  160. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/review/wrapper.py +0 -0
  161. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/README.md +0 -0
  162. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/__init__.py +0 -0
  163. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/builtins.py +0 -0
  164. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/events.py +0 -0
  165. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/file_readers.py +0 -0
  166. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/llm.py +0 -0
  167. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/memory_scorer.py +0 -0
  168. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/node.py +0 -0
  169. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/protocol.py +0 -0
  170. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/rubric.py +0 -0
  171. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/rubric_config.py +0 -0
  172. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rewards/validation.py +0 -0
  173. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/__init__.py +0 -0
  174. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_config.py +0 -0
  175. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_deadline.py +0 -0
  176. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_results.py +0 -0
  177. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_setup.py +0 -0
  178. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_skills.py +0 -0
  179. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_usage.py +0 -0
  180. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/_user_loop.py +0 -0
  181. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/session_factory_runtime.py +0 -0
  182. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout/task_runtime.py +0 -0
  183. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout_branch.py +0 -0
  184. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/rollout_planes.py +0 -0
  185. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/runtime.py +0 -0
  186. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/__init__.py +0 -0
  187. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_base.py +0 -0
  188. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_cache_reclaim.py +0 -0
  189. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_compose.py +0 -0
  190. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
  191. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
  192. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
  193. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
  194. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/_sdk_ops.py +0 -0
  195. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore.py +0 -0
  196. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore_builder.py +0 -0
  197. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore_image.py +0 -0
  198. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
  199. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
  200. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
  201. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/apple_container.py +0 -0
  202. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/daytona.py +0 -0
  203. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/daytona_dind.py +0 -0
  204. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/daytona_pty.py +0 -0
  205. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/daytona_reaper.py +0 -0
  206. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/daytona_strategies.py +0 -0
  207. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/docker.py +0 -0
  208. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/lockdown.py +0 -0
  209. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/metadata.py +0 -0
  210. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/modal_impl.py +0 -0
  211. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/__init__.py +0 -0
  212. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/_base.py +0 -0
  213. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/agentcore.py +0 -0
  214. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/apple.py +0 -0
  215. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/daytona.py +0 -0
  216. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/process/docker.py +0 -0
  217. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/protocol.py +0 -0
  218. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/providers.py +0 -0
  219. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/services.py +0 -0
  220. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/setup.py +0 -0
  221. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/snapshot.py +0 -0
  222. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sandbox/user.py +0 -0
  223. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/scenes.py +0 -0
  224. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/sdk.py +0 -0
  225. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/self_gen.py +0 -0
  226. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skill_eval/__init__.py +0 -0
  227. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skill_eval/_core.py +0 -0
  228. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skill_eval/gepa_export.py +0 -0
  229. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skill_eval/schema.py +0 -0
  230. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skill_policy.py +0 -0
  231. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/skills.py +0 -0
  232. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/__init__.py +0 -0
  233. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/_document_evidence.py +0 -0
  234. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/_document_normalize.py +0 -0
  235. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/_document_parse.py +0 -0
  236. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/_document_profiles.py +0 -0
  237. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/acceptance_live.py +0 -0
  238. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/acceptance_live_model.py +0 -0
  239. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/acceptance_live_report.py +0 -0
  240. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/acceptance_live_validation.py +0 -0
  241. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/config.py +0 -0
  242. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/discovery.py +0 -0
  243. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/document.py +0 -0
  244. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/env.py +0 -0
  245. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/export.py +0 -0
  246. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/imports.py +0 -0
  247. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/output_format.py +0 -0
  248. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/package.py +0 -0
  249. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/paths.py +0 -0
  250. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/prompts.py +0 -0
  251. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/runtime_capabilities.py +0 -0
  252. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/runtime_view.py +0 -0
  253. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/task.py +0 -0
  254. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier.py +0 -0
  255. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_core.py +0 -0
  256. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_document.py +0 -0
  257. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_errors.py +0 -0
  258. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_judge_inputs.py +0 -0
  259. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_ors_episode.py +0 -0
  260. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_reward_kit.py +0 -0
  261. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_scan.py +0 -0
  262. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/task/verifier_script_strategy.py +0 -0
  263. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/templates/__init__.py +0 -0
  264. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/templates/judge.py.tmpl +0 -0
  265. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/templates/test.sh.tmpl +0 -0
  266. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/__init__.py +0 -0
  267. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/huggingface.py +0 -0
  268. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/local.py +0 -0
  269. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/models.py +0 -0
  270. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/parsers.py +0 -0
  271. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/traces/task_gen.py +0 -0
  272. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/training/__init__.py +0 -0
  273. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/training/backends/__init__.py +0 -0
  274. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/training/backends/prime_rl.py +0 -0
  275. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/training/run_manifest.py +0 -0
  276. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/__init__.py +0 -0
  277. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/_capture.py +0 -0
  278. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/_export_common.py +0 -0
  279. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/_llm_capture.py +0 -0
  280. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/call_purpose.py +0 -0
  281. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/export.py +0 -0
  282. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/export_adp.py +0 -0
  283. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/export_atif.py +0 -0
  284. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/export_prime_sft.py +0 -0
  285. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/export_trl_sft.py +0 -0
  286. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/metrics.py +0 -0
  287. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/results.py +0 -0
  288. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/tree.py +0 -0
  289. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
  290. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/types.py +0 -0
  291. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/trajectories/viewer.py +0 -0
  292. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/src/benchflow/usage_tracking.py +0 -0
  293. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/__init__.py +0 -0
  294. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/acceptance_live_harness.py +0 -0
  295. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/__init__.py +0 -0
  296. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_manifest_dirscan.py +0 -0
  297. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_manifest_loader.py +0 -0
  298. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_manifest_parity.py +0 -0
  299. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_manifest_wiring.py +0 -0
  300. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_namespace_shorthand.py +0 -0
  301. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_plugin_entry_points.py +0 -0
  302. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_protocol.py +0 -0
  303. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/agents/test_remote_manifest_autoload.py +0 -0
  304. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/README.md +0 -0
  305. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
  306. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
  307. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
  308. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/instruction.md +0 -0
  309. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
  310. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/task.md +0 -0
  311. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/task.toml +0 -0
  312. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/acp_smoke/tests/test.sh +0 -0
  313. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/conformance-results.json +0 -0
  314. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/proof_multi_agent.py +0 -0
  315. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/proof_snapshot.py +0 -0
  316. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/run_conformance.py +0 -0
  317. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
  318. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/conftest.py +0 -0
  319. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/__init__.py +0 -0
  320. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/_helpers.py +0 -0
  321. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/test_batch.py +0 -0
  322. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/test_orchestrator.py +0 -0
  323. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/test_replay_proxy.py +0 -0
  324. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/continue_run/test_run_folder.py +0 -0
  325. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/__init__.py +0 -0
  326. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_chibench_manifest.py +0 -0
  327. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_clawsbench_manifest.py +0 -0
  328. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_manifest.py +0 -0
  329. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_manifest_env.py +0 -0
  330. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_protocol.py +0 -0
  331. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/environment/test_readiness.py +0 -0
  332. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
  333. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/instruction.md +0 -0
  334. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/solution/solve.sh +0 -0
  335. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/task.md +0 -0
  336. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/task.toml +0 -0
  337. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/hello-world-task/tests/test.sh +0 -0
  338. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/test_claude.sh +0 -0
  339. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/test_codex.sh +0 -0
  340. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/test_codex_custom_provider.sh +0 -0
  341. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/test_gemini.sh +0 -0
  342. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/test_openclaw.sh +0 -0
  343. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/traces/minimal-claude.jsonl +0 -0
  344. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
  345. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/README.md +0 -0
  346. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
  347. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
  348. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/alpha-task/task.toml +0 -0
  349. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
  350. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
  351. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
  352. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/beta-task/instruction.md +0 -0
  353. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/beta-task/task.toml +0 -0
  354. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
  355. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/mock_acp_agent.py +0 -0
  356. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
  357. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
  358. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/mock_openai_responses_server.py +0 -0
  359. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
  360. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
  361. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
  362. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
  363. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
  364. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
  365. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
  366. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
  367. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
  368. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
  369. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
  370. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
  371. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
  372. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
  373. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
  374. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
  375. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
  376. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
  377. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
  378. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
  379. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
  380. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
  381. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
  382. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
  383. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
  384. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
  385. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
  386. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
  387. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
  388. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
  389. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
  390. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
  391. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
  392. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
  393. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
  394. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
  395. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
  396. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
  397. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
  398. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
  399. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
  400. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
  401. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
  402. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
  403. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
  404. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
  405. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
  406. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
  407. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
  408. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
  409. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
  410. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
  411. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
  412. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
  413. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
  414. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
  415. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
  416. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
  417. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
  418. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
  419. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/_consistency.py +0 -0
  420. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/agent_judge.py +0 -0
  421. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/check_adapter_evidence.py +0 -0
  422. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/check_hosted_env_evidence.py +0 -0
  423. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/check_results.py +0 -0
  424. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
  425. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/check_trace_to_task_evidence.py +0 -0
  426. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/claude-agent-acp.yaml +0 -0
  427. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/codex-acp.yaml +0 -0
  428. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/gemini.yaml +0 -0
  429. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
  430. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/mimo.yaml +0 -0
  431. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/openclaw.yaml +0 -0
  432. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/opencode.yaml +0 -0
  433. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/openhands.yaml +0 -0
  434. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/configs/pi-acp.yaml +0 -0
  435. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/deepagents_harness.py +0 -0
  436. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/rubric_checks.py +0 -0
  437. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/run.sh +0 -0
  438. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/run_suite.py +0 -0
  439. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/scenarios.py +0 -0
  440. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/integration/suites/release.yaml +0 -0
  441. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acceptance_evidence.py +0 -0
  442. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acceptance_live.py +0 -0
  443. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acceptance_live_execution.py +0 -0
  444. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp.py +0 -0
  445. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp_capability_advertising.py +0 -0
  446. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp_mcp_servers.py +0 -0
  447. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp_model_config_dispatch.py +0 -0
  448. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp_pinned_protocol_guard.py +0 -0
  449. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_acp_setup_failure_propagation.py +0 -0
  450. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_adapter_scripts.py +0 -0
  451. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_adapters.py +0 -0
  452. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_cli.py +0 -0
  453. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_env_resolution.py +0 -0
  454. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_gemini_defaults.py +0 -0
  455. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_idle_timeout_cli.py +0 -0
  456. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_model_decouple.py +0 -0
  457. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_registry.py +0 -0
  458. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_router.py +0 -0
  459. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_router_cli_e2e.py +0 -0
  460. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_router_scaffold.py +0 -0
  461. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_setup.py +0 -0
  462. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agent_spec.py +0 -0
  463. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agentcore_builder.py +0 -0
  464. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agentcore_parallel.py +0 -0
  465. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agentcore_reaper.py +0 -0
  466. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agentcore_sandbox.py +0 -0
  467. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_agentcore_transport.py +0 -0
  468. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_api_error_capture.py +0 -0
  469. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_apple_container_sandbox.py +0 -0
  470. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_bare_model_provider.py +0 -0
  471. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_base_install_imports.py +0 -0
  472. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_bedrock_thinking.py +0 -0
  473. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_benchflow_experiment_review_validator.py +0 -0
  474. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
  475. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_branch.py +0 -0
  476. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_build_context_stage.py +0 -0
  477. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_build_review_pack.py +0 -0
  478. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_capture_trajectory.py +0 -0
  479. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_check_skillsbench_harbor_parity.py +0 -0
  480. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_clawsbench_slice.py +0 -0
  481. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_adopt_aliases.py +0 -0
  482. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_arg_validation.py +0 -0
  483. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_daytona.py +0 -0
  484. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_docs_drift.py +0 -0
  485. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_edge_case_hardening.py +0 -0
  486. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_hub_env.py +0 -0
  487. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_cli_misc.py +0 -0
  488. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_codex_review.py +0 -0
  489. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_codex_self_write_auth.py +0 -0
  490. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_config_override.py +0 -0
  491. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_config_redaction.py +0 -0
  492. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_connect_as_env.py +0 -0
  493. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_console_error_truncation.py +0 -0
  494. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_console_progress.py +0 -0
  495. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_continuallearningbench_adapter.py +0 -0
  496. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_dataset_registry.py +0 -0
  497. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_command_polling.py +0 -0
  498. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_dind_compose_up.py +0 -0
  499. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_download.py +0 -0
  500. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_litellm_runtime.py +0 -0
  501. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_poll_deadline.py +0 -0
  502. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_daytona_reap.py +0 -0
  503. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_deepagents_agent.py +0 -0
  504. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_docker_prune_scoping.py +0 -0
  505. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_docker_uploads.py +0 -0
  506. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_docs_examples.py +0 -0
  507. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eng50_capabilities.py +0 -0
  508. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_env_registry.py +0 -0
  509. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_env_setup.py +0 -0
  510. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_environment_manifest_controls.py +0 -0
  511. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_artifact_cli.py +0 -0
  512. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_filters_applied.py +0 -0
  513. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_lift.py +0 -0
  514. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_sharding.py +0 -0
  515. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_single_task_summary.py +0 -0
  516. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_source_provenance.py +0 -0
  517. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_worker_retry.py +0 -0
  518. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_eval_zero_task_guard.py +0 -0
  519. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_evaluation_environment_manifest.py +0 -0
  520. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_exclude_tasks.py +0 -0
  521. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_filter_credentialed_cells.py +0 -0
  522. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_harvey_lab_shim.py +0 -0
  523. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_hilbench_adapter.py +0 -0
  524. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_hosted_env.py +0 -0
  525. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_hosted_env_rollout_contract.py +0 -0
  526. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_hub_harbor_registry.py +0 -0
  527. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_inbound_adapter_manifest.py +0 -0
  528. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_inbound_adapters.py +0 -0
  529. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_agent_judge.py +0 -0
  530. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_check_results.py +0 -0
  531. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_consistency.py +0 -0
  532. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_matrix.py +0 -0
  533. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_provider_selection.py +0 -0
  534. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_run_suite.py +0 -0
  535. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_integration_suite.py +0 -0
  536. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_internet_policy.py +0 -0
  537. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_job_sequential_shared.py +0 -0
  538. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_job_sequential_shared_resume.py +0 -0
  539. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_judge_robustness.py +0 -0
  540. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_judge_symlink_ingestion.py +0 -0
  541. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_learner_skills.py +0 -0
  542. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_learner_skills_traversal.py +0 -0
  543. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_learner_store.py +0 -0
  544. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_learner_store_persistence.py +0 -0
  545. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_config.py +0 -0
  546. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_hardening.py +0 -0
  547. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_logging.py +0 -0
  548. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_model_via_env_generic.py +0 -0
  549. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_reasoning_passthrough.py +0 -0
  550. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_runtime.py +0 -0
  551. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_litellm_smoke.py +0 -0
  552. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_live_llm_trajectory.py +0 -0
  553. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_llm_judge.py +0 -0
  554. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_llm_judge_event_tags.py +0 -0
  555. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_llm_judge_verifier.py +0 -0
  556. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_loop_strategies.py +0 -0
  557. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_loop_summary.py +0 -0
  558. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_loop_sweep.py +0 -0
  559. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_memory_scorer.py +0 -0
  560. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_metrics.py +0 -0
  561. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_mle_bench_adapter.py +0 -0
  562. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_mock_openai_responses_server.py +0 -0
  563. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_monitor_scaffold.py +0 -0
  564. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_native_acp_usage.py +0 -0
  565. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_no_cross_provider_fallback.py +0 -0
  566. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_notification_order_real.py +0 -0
  567. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_opencode_family_proxy_tracking.py +0 -0
  568. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_oracle.py +0 -0
  569. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_oracle_chokepoint.py +0 -0
  570. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_paths_safe.py +0 -0
  571. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_paths_symlink_helpers.py +0 -0
  572. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_pi_acp_launcher.py +0 -0
  573. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_pi_acp_proxy_routing.py +0 -0
  574. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_process.py +0 -0
  575. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_project_skills_layout.py +0 -0
  576. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_provider_auth_detection.py +0 -0
  577. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_providers.py +0 -0
  578. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_reexport.py +0 -0
  579. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_registry_invariants.py +0 -0
  580. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_release_hardening_r5.py +0 -0
  581. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_release_version.py +0 -0
  582. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_release_workflow_wiring.py +0 -0
  583. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_resolve_env_helpers.py +0 -0
  584. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_review_boundaries.py +0 -0
  585. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_review_rubric.py +0 -0
  586. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_review_runtime.py +0 -0
  587. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_reward_lenient.py +0 -0
  588. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_reward_node.py +0 -0
  589. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_reward_range.py +0 -0
  590. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_reward_unified_contract.py +0 -0
  591. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rewards.py +0 -0
  592. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rewards_jsonl.py +0 -0
  593. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_architecture.py +0 -0
  594. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_branch.py +0 -0
  595. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_config_path_coercion.py +0 -0
  596. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_environment.py +0 -0
  597. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_hard_deadline.py +0 -0
  598. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_import_no_side_effects.py +0 -0
  599. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_on_ask_user_wiring.py +0 -0
  600. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_planes_contract.py +0 -0
  601. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_probe_sandbox_health.py +0 -0
  602. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_session_factory_dispatch.py +0 -0
  603. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_setup_commands.py +0 -0
  604. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rollout_upload.py +0 -0
  605. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rubric_checks.py +0 -0
  606. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_rubric_config.py +0 -0
  607. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_runtime.py +0 -0
  608. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_runtime_capabilities.py +0 -0
  609. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_runtime_config_wired.py +0 -0
  610. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_runtime_live_sandbox.py +0 -0
  611. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox.py +0 -0
  612. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_exec_secret_handling.py +0 -0
  613. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_hardening.py +0 -0
  614. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
  615. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_live_process.py +0 -0
  616. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_multi_service.py +0 -0
  617. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_prebuilt_validation.py +0 -0
  618. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_protocol.py +0 -0
  619. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_provider_registry_drift.py +0 -0
  620. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_setup.py +0 -0
  621. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_snapshot_contract.py +0 -0
  622. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_upload_symlink.py +0 -0
  623. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sandbox_verifier_workspace.py +0 -0
  624. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_scene.py +0 -0
  625. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_scene_outbox_trial.py +0 -0
  626. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_scene_parallel_group.py +0 -0
  627. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_scene_result_aggregation.py +0 -0
  628. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sdk_internals.py +0 -0
  629. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sdk_lockdown.py +0 -0
  630. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sdk_run_alias.py +0 -0
  631. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_sealed_channel_container.py +0 -0
  632. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_self_gen_cli.py +0 -0
  633. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_self_gen_export_error_channel.py +0 -0
  634. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_self_gen_export_failures.py +0 -0
  635. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_self_gen_orchestration.py +0 -0
  636. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_session_factory_runtime.py +0 -0
  637. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_session_request_permission_dispatch.py +0 -0
  638. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_eval.py +0 -0
  639. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_eval_dryrun.py +0 -0
  640. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_eval_integration.py +0 -0
  641. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_eval_sweep.py +0 -0
  642. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_eval_traversal.py +0 -0
  643. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_invocation_artifacts.py +0 -0
  644. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skill_policy.py +0 -0
  645. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skills.py +0 -0
  646. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skills_dir_agent_home_link.py +0 -0
  647. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skillsbench_conversion_conformance.py +0 -0
  648. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_skillsbench_harbor_run_suite.py +0 -0
  649. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_smoke.py +0 -0
  650. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_smoke_wiring.py +0 -0
  651. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_source_adapters.py +0 -0
  652. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_subscription_auth.py +0 -0
  653. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_check_eval_consistency.py +0 -0
  654. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_config.py +0 -0
  655. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_digest.py +0 -0
  656. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_document.py +0 -0
  657. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_download.py +0 -0
  658. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_export.py +0 -0
  659. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_output_format.py +0 -0
  660. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_package.py +0 -0
  661. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_task_runtime_primitive.py +0 -0
  662. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_tasks.py +0 -0
  663. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_token_usage_normalization.py +0 -0
  664. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trace_import_cli.py +0 -0
  665. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trace_task_gen_traversal.py +0 -0
  666. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trace_to_task_evidence.py +0 -0
  667. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_traces_huggingface.py +0 -0
  668. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_traces_parsers.py +0 -0
  669. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_traces_task_gen.py +0 -0
  670. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_train_cli.py +0 -0
  671. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_train_mode_artifact_emission.py +0 -0
  672. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_train_trl_cli.py +0 -0
  673. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trajectory_integration.py +0 -0
  674. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trajectory_streaming.py +0 -0
  675. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trial_agent_timeout_verify.py +0 -0
  676. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trial_install_agent_timeout.py +0 -0
  677. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trial_litellm_runtime.py +0 -0
  678. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_trl_integration.py +0 -0
  679. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_usage_litellm.py +0 -0
  680. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_usage_required.py +0 -0
  681. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_usage_tracking.py +0 -0
  682. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_user.py +0 -0
  683. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_v06_guard_ports.py +0 -0
  684. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_document.py +0 -0
  685. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_multi_container.py +0 -0
  686. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_output.py +0 -0
  687. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_output_freshness.py +0 -0
  688. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_strategies.py +0 -0
  689. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verifier_wedge_retry.py +0 -0
  690. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_verify.py +0 -0
  691. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_workflow_action_pinning.py +0 -0
  692. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/test_yaml_config.py +0 -0
  693. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/__init__.py +0 -0
  694. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export.py +0 -0
  695. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export_adp.py +0 -0
  696. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export_atif.py +0 -0
  697. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export_common.py +0 -0
  698. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export_nan_handling.py +0 -0
  699. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_export_prime_sft.py +0 -0
  700. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_redaction.py +0 -0
  701. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/tests/trajectories/test_step_granularity.py +0 -0
  702. {benchflow-0.6.7.dev1831 → benchflow-0.6.7.dev1835}/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.dev1831
3
+ Version: 0.6.7.dev1835
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.dev1831"
3
+ version = "0.6.7.dev1835"
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"
@@ -73,6 +73,7 @@ def rollout_result_payload(
73
73
  )
74
74
  return {
75
75
  "task_name": result.task_name,
76
+ "rollout_name": result.rollout_name,
76
77
  "rewards": result.rewards,
77
78
  "error": result.error,
78
79
  "error_category": result.error_category,
@@ -1,5 +1,6 @@
1
1
  """Pure scoring and classification helpers — no external dependencies."""
2
2
 
3
+ import math
3
4
  from collections.abc import Iterable, Mapping
4
5
  from typing import Any, Literal
5
6
 
@@ -343,6 +344,26 @@ def count_result_outcomes(results: Iterable[Mapping[str, Any]]) -> dict[str, int
343
344
  return count_audit_outcomes(results)
344
345
 
345
346
 
347
+ def mean_scored_reward(results: Iterable[Mapping[str, Any]]) -> float | None:
348
+ """Mean reward over scored rollouts, or None when nothing scored.
349
+
350
+ A rollout is scored when ``rewards.reward`` is a finite numeric value.
351
+ Bools are excluded — ``classify_result`` treats a persisted ``true`` as a
352
+ pass (``True == 1``), but a bool is not a reward magnitude — and so are
353
+ non-finite values, which the resume path can feed in unvalidated (Python's
354
+ ``json`` round-trips NaN). Errored rollouts (reward None) are excluded,
355
+ not zeroed: a mean diluted by infra errors would misread as capability.
356
+ """
357
+ scored = [
358
+ rw
359
+ for r in results
360
+ if isinstance(rw := extract_reward(r), (int, float))
361
+ and not isinstance(rw, bool)
362
+ and math.isfinite(rw)
363
+ ]
364
+ return sum(scored) / len(scored) if scored else None
365
+
366
+
346
367
  def pass_rate(*, passed: int, total: int) -> float:
347
368
  """Pass rate over all tasks."""
348
369
  return passed / total if total > 0 else 0.0
@@ -0,0 +1,122 @@
1
+ """Verifier-artifact mining for the eval report's failure lines.
2
+
3
+ The one file-touching corner of the CLI's final report block: when a failed
4
+ task's reason would otherwise be the bare ``reward X`` fallback, mine the
5
+ rollout's verifier artifacts for a one-line explanation. Lives in its own
6
+ module so ``cli/_shared.py`` stays the side-effect-free display helpers it
7
+ advertises.
8
+
9
+ Contract (the engine stays file-free — these reads are CLI-side, report-time
10
+ only):
11
+
12
+ - The rollout dir is resolved exactly, from the ``rollout_name`` the engine
13
+ records on every result — never guessed from globs.
14
+ - Evidence sources are tried in order (CTRF report, then test-stdout tail);
15
+ the first that yields a line wins.
16
+ - Every read is bounded (``_ARTIFACT_READ_BYTES`` per file) and nothing here
17
+ raises — any surprise degrades to ``None``, i.e. the bare reward reason.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import json
23
+ import re
24
+ from typing import TYPE_CHECKING
25
+
26
+ if TYPE_CHECKING:
27
+ from collections.abc import Callable
28
+ from pathlib import Path
29
+
30
+ # Never read more than this many bytes per file, and evidence is only mined
31
+ # for the <= _MAX_FAILURE_LINES tasks the report block displays.
32
+ _ARTIFACT_READ_BYTES = 64 * 1024
33
+ # Pytest final summary, decoration stripped: "1 failed, 2 passed in 40.86s".
34
+ _PYTEST_SUMMARY_RE = re.compile(r"\d+ failed\b")
35
+
36
+
37
+ def _ctrf_failure_line(ctrf_path: Path) -> str | None:
38
+ """``<test> failed[: <assertion>]`` from the first failed CTRF test.
39
+
40
+ The verifier's pytest run writes a CTRF report (``pytest --ctrf``, see the
41
+ standard path in ``task_authoring/structural_checks.py``). Per test the
42
+ useful failure evidence is the ``E …`` assertion line inside ``trace``;
43
+ ``message`` is only a generic phase description, so it is the fallback.
44
+ """
45
+ if ctrf_path.stat().st_size > _ARTIFACT_READ_BYTES:
46
+ # JSON only parses whole — an oversized report is skipped (not
47
+ # truncated) and the next evidence source gets its turn.
48
+ return None
49
+ data = json.loads(ctrf_path.read_text(encoding="utf-8", errors="replace"))
50
+ tests = (data.get("results") or {}).get("tests") or []
51
+ for test in tests:
52
+ if not isinstance(test, dict) or test.get("status") != "failed":
53
+ continue
54
+ # Full pytest node ids ("tests/test_x.py::test_build") waste the
55
+ # 100-char line budget; keep the test function name.
56
+ name = str(test.get("name") or "test").rsplit("::", 1)[-1]
57
+ trace = test.get("trace")
58
+ if isinstance(trace, str):
59
+ for line in trace.splitlines():
60
+ stripped = line.strip()
61
+ if stripped.startswith("E "):
62
+ assertion = stripped[2:].strip()
63
+ # "<test> failed:" already says it's an assertion — drop
64
+ # the prefix to reclaim line budget for the message.
65
+ assertion = assertion.removeprefix("AssertionError: ")
66
+ return f"{name} failed: {assertion}"
67
+ message = test.get("message")
68
+ if isinstance(message, str) and message.strip():
69
+ return f"{name} failed: {' '.join(message.split())}"
70
+ return f"{name} failed"
71
+ return None
72
+
73
+
74
+ def _stdout_tail_failure_line(stdout_path: Path) -> str | None:
75
+ """Last pytest summary ("N failed, M passed …") — else last ``FAILED …``
76
+ line — from a bounded tail of the verifier's test-stdout capture."""
77
+ with stdout_path.open("rb") as fh:
78
+ fh.seek(0, 2) # SEEK_END
79
+ fh.seek(max(0, fh.tell() - _ARTIFACT_READ_BYTES))
80
+ tail = fh.read(_ARTIFACT_READ_BYTES).decode("utf-8", errors="replace")
81
+ last_failed: str | None = None
82
+ for line in reversed(tail.splitlines()):
83
+ bare = line.strip().strip("=").strip()
84
+ if _PYTEST_SUMMARY_RE.match(bare):
85
+ return bare
86
+ if last_failed is None and line.strip().startswith("FAILED "):
87
+ last_failed = line.strip()
88
+ return last_failed
89
+
90
+
91
+ def artifact_failure_evidence(
92
+ job_dir: Path, rollout_name: str
93
+ ) -> tuple[str, Path] | None:
94
+ """One-liner mined from the rollout's verifier artifacts, or ``None``.
95
+
96
+ Returns the one-liner plus the verifier dir it came from (for the report
97
+ block's single ``(details: …)`` pointer line). Never raises.
98
+ """
99
+ # Local import: RolloutPaths pulls in the task package, which the CLI
100
+ # shouldn't pay for until a failure actually needs artifact evidence.
101
+ from benchflow.task.paths import RolloutPaths
102
+
103
+ rollout_paths = RolloutPaths(rollout_dir=job_dir / rollout_name)
104
+ verifier_dir = rollout_paths.verifier_dir
105
+ attempts: list[tuple[Path, Callable[[Path], str | None]]] = [
106
+ # ctrf.json has no RolloutPaths property — the verifier recovers it by
107
+ # literal name (verifier_core.py, `_recover_main_verifier_outputs`).
108
+ (verifier_dir / "ctrf.json", _ctrf_failure_line),
109
+ (rollout_paths.test_stdout_path, _stdout_tail_failure_line),
110
+ ]
111
+ for path, extract in attempts:
112
+ try:
113
+ if not path.is_file():
114
+ continue
115
+ detail = extract(path)
116
+ except Exception:
117
+ # Unreadable file, bad JSON, permissions … try the next source;
118
+ # the report must never crash over evidence mining.
119
+ continue
120
+ if detail is not None:
121
+ return detail, verifier_dir
122
+ return None
@@ -3,7 +3,9 @@
3
3
  These are the cross-cutting, side-effect-free helpers that several CLI command
4
4
  groups (``cli/main.py`` and the ``cli/<group>.py`` modules) need in common: the
5
5
  shared Rich :data:`console`, the evaluation-result summary/exit helpers, and the
6
- agent ``Requires`` rendering used by ``agents``/``agent`` listings.
6
+ agent ``Requires`` rendering used by ``agents``/``agent`` listings. The one
7
+ file-reading step of the eval report (mining verifier artifacts for failure
8
+ evidence) is delegated to :mod:`._failure_evidence` to keep that claim true.
7
9
 
8
10
  Keeping them here lets each command group import one stable surface instead of
9
11
  re-deriving the formatting, and lets ``cli/main.py`` stay a thin app + eval
@@ -19,6 +21,7 @@ from rich.console import Console
19
21
  from rich.markup import escape
20
22
 
21
23
  from benchflow._utils.text import truncate_end
24
+ from benchflow.cli._failure_evidence import artifact_failure_evidence
22
25
 
23
26
  if TYPE_CHECKING:
24
27
  from pathlib import Path
@@ -109,17 +112,24 @@ _FAILURE_LINE_LIMIT = 100
109
112
  _FAILURE_REASON_METRICS = 3
110
113
 
111
114
 
112
- def _failure_reason(failure: TaskFailure) -> str:
115
+ def _failure_reason(
116
+ failure: TaskFailure, job_dir: Path | None = None
117
+ ) -> tuple[str, Path | None]:
113
118
  """One cheap line explaining why a FAILED (scored, reward != 1) task
114
- failed, from evidence already on the result no file reads.
119
+ failed, plus the verifier dir when artifacts supplied the evidence.
115
120
 
116
121
  Priority: the verifier's own error if set; else the reward plus a compact
117
122
  breakdown of the named metrics in the reward dict (zero/failed metrics
118
- first — they explain the miss); else just the reward.
123
+ first — they explain the miss); else the reward plus a one-liner mined
124
+ from the rollout's verifier artifacts (bounded CLI-side reads resolved via
125
+ the ``rollout_name`` the engine records — the engine stays file-free);
126
+ else just the reward. The returned path is non-``None`` only for the
127
+ artifact tier, so the caller can print one ``(details: …)`` pointer per
128
+ report block.
119
129
  """
120
130
  if failure.verifier_error:
121
131
  # Collapse whitespace: verifier errors are routinely multi-line.
122
- return " ".join(failure.verifier_error.split())
132
+ return " ".join(failure.verifier_error.split()), None
123
133
  rewards = failure.rewards or {}
124
134
  reward = rewards.get("reward")
125
135
  metrics = [
@@ -127,15 +137,22 @@ def _failure_reason(failure: TaskFailure) -> str:
127
137
  for name, value in rewards.items()
128
138
  if name != "reward" and isinstance(value, (bool, int, float))
129
139
  ]
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}"
140
+ if metrics:
141
+ # Zero/failed metrics first (stable within each group), capped so one
142
+ # metric-happy verifier can't flood the line.
143
+ metrics.sort(key=lambda kv: kv[1] != 0)
144
+ shown = ", ".join(
145
+ f"{name} {value}" for name, value in metrics[:_FAILURE_REASON_METRICS]
146
+ )
147
+ return f"reward {reward} — {shown}", None
148
+ # No rollout_name (pre-#957-follow-up result.json, sharded aggregation):
149
+ # nothing to resolve — the bare reward is as honest as it gets.
150
+ if job_dir is not None and failure.rollout_name:
151
+ evidence = artifact_failure_evidence(job_dir, failure.rollout_name)
152
+ if evidence is not None:
153
+ detail, verifier_dir = evidence
154
+ return f"reward {reward} — {detail}", verifier_dir
155
+ return f"reward {reward}", None
139
156
 
140
157
 
141
158
  def _report_eval_result(result: EvaluationResult, job_dir: Path | None = None) -> None:
@@ -145,9 +162,13 @@ def _report_eval_result(result: EvaluationResult, job_dir: Path | None = None) -
145
162
  now the line is green only on a full clean pass, red on a shutout, amber
146
163
  otherwise, and ``errors=N`` is red when non-zero. Each FAILED task gets one
147
164
  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).
165
+ doesn't require opening summary.json; when ``job_dir`` is given, a reason
166
+ that would otherwise be a bare ``reward X`` is upgraded from the rollout's
167
+ verifier artifacts (bounded reads, displayed failures only), with a single
168
+ ``(details: …/verifier)`` pointer line for the block. When ``job_dir`` is
169
+ given, the result/summary paths are printed so testers know where to look
170
+ (the guide repeatedly says "read summary.json" but the CLI never said
171
+ where).
151
172
  """
152
173
  errors = int(getattr(result, "errored", 0) or 0)
153
174
  verifier_errors = int(getattr(result, "verifier_errored", 0) or 0)
@@ -168,23 +189,36 @@ def _report_eval_result(result: EvaluationResult, job_dir: Path | None = None) -
168
189
  err_part = f", [red]{detail}[/red]"
169
190
  else:
170
191
  err_part = ", errors=0"
192
+ # Mean reward alongside the binarized counts: pass/fail thresholds at
193
+ # reward==1, so "0/1" alone can't distinguish 0.3 partial credit from a
194
+ # flat 0. getattr(): sharded aggregation and older callers don't carry it.
195
+ mean_reward = getattr(result, "mean_reward", None)
196
+ mean_part = f", mean reward {mean_reward:.2f}" if mean_reward is not None else ""
171
197
  console.print(
172
198
  f"\n[{style}]{mark} Score: {result.passed}/{result.total} "
173
- f"({result.score:.1%})[/{style}]{err_part}"
199
+ f"({result.score:.1%})[/{style}]{mean_part}{err_part}"
174
200
  )
175
201
  # One dim reason line per FAILED task, so "0/1" doesn't force a dig into
176
202
  # summary.json to learn why. getattr(): sharded aggregation and older
177
203
  # SimpleNamespace-style callers don't carry task_failures.
178
204
  failures = getattr(result, "task_failures", None) or []
205
+ artifact_pointer: Path | None = None
179
206
  for failure in failures[:_MAX_FAILURE_LINES]:
207
+ reason, verifier_dir = _failure_reason(failure, job_dir)
208
+ if artifact_pointer is None and verifier_dir is not None:
209
+ artifact_pointer = verifier_dir
180
210
  line = truncate_end(
181
- f" ✗ {failure.task_name}: {_failure_reason(failure)}",
211
+ f" ✗ {failure.task_name}: {reason}",
182
212
  _FAILURE_LINE_LIMIT,
183
213
  )
184
214
  console.print(f"[dim]{escape(line)}[/dim]")
185
215
  extra = len(failures) - _MAX_FAILURE_LINES
186
216
  if extra > 0:
187
217
  console.print(f"[dim] … and {extra} more[/dim]")
218
+ # One pointer per block (not per line): the first artifact-backed reason's
219
+ # verifier dir, so "where do I look next" needs no summary.json dig either.
220
+ if artifact_pointer is not None:
221
+ console.print(f"[dim] (details: {escape(str(artifact_pointer))})[/dim]")
188
222
  if job_dir is not None:
189
223
  console.print(f"[dim]Artifacts:[/dim] {escape(str(job_dir))}")
190
224
  console.print(f"[dim]Summary: [/dim] {escape(str(job_dir))}/summary.json")
@@ -64,6 +64,7 @@ from benchflow._utils.scoring import (
64
64
  classify_verifier_error,
65
65
  count_audit_outcomes,
66
66
  count_score_outcomes,
67
+ mean_scored_reward,
67
68
  pass_rate,
68
69
  pass_rate_excl_errors,
69
70
  )
@@ -588,6 +589,10 @@ class TaskFailure:
588
589
  task_name: str
589
590
  rewards: dict[str, Any] | None
590
591
  verifier_error: str | None
592
+ # The task's rollout dir name under the job dir (``<task>__<uuid8>``), so
593
+ # the CLI can find the rollout's verifier artifacts without guessing.
594
+ # None on results persisted before the key existed.
595
+ rollout_name: str | None = None
591
596
 
592
597
 
593
598
  @dataclass
@@ -605,6 +610,10 @@ class EvaluationResult:
605
610
  memory_score: float | None = None
606
611
  memory_scores: dict[str, float] = field(default_factory=dict)
607
612
  task_failures: list[TaskFailure] = field(default_factory=list)
613
+ # Mean of rewards over scored rollouts (None when nothing scored). The
614
+ # pass/fail counts binarize at reward==1, which erases partial credit —
615
+ # a 0.3 rubric score and a flat 0 both print as FAIL without this.
616
+ mean_reward: float | None = None
608
617
 
609
618
  @property
610
619
  def score(self) -> float:
@@ -1387,7 +1396,16 @@ class Evaluation:
1387
1396
  status = "PASS" if reward == 1 else ("FAIL" if reward is not None else "ERR")
1388
1397
  err_msg = result.error or result.verifier_error
1389
1398
  err = f" ({truncate_end(err_msg, 50)})" if err_msg else ""
1390
- logger.info(f"[{status}] {td.name} (tools={result.n_tool_calls}){err}")
1399
+ # Show the fractional reward on scored lines: pass/fail binarizes at
1400
+ # reward==1, so without it a 0.3 rubric score reads as a flat 0.
1401
+ reward_part = (
1402
+ f"reward={reward:.2f}, "
1403
+ if isinstance(reward, (int, float)) and not isinstance(reward, bool)
1404
+ else ""
1405
+ )
1406
+ logger.info(
1407
+ f"[{status}] {td.name} ({reward_part}tools={result.n_tool_calls}){err}"
1408
+ )
1391
1409
  self._fire_progress(self._on_result, td.name, result)
1392
1410
 
1393
1411
  async def _run_parallel_independent(
@@ -1801,6 +1819,9 @@ class Evaluation:
1801
1819
  task_name=name,
1802
1820
  rewards=r.get("rewards"),
1803
1821
  verifier_error=r.get("verifier_error"),
1822
+ # `or None`: RolloutResult defaults rollout_name to "" — don't
1823
+ # let that masquerade as a resolvable rollout dir.
1824
+ rollout_name=r.get("rollout_name") or None,
1804
1825
  )
1805
1826
  for name, r in sorted(all_results.items())
1806
1827
  if classify_score_outcome(r) == "failed"
@@ -1821,6 +1842,7 @@ class Evaluation:
1821
1842
  memory_score=memory["avg_score"],
1822
1843
  memory_scores=memory_scores,
1823
1844
  task_failures=task_failures,
1845
+ mean_reward=mean_scored_reward(all_results.values()),
1824
1846
  )
1825
1847
 
1826
1848
  assert (
@@ -1878,6 +1900,7 @@ class Evaluation:
1878
1900
  "score_excl_errors_ratio": pass_rate_excl_errors(
1879
1901
  passed=audit_counts["passed"], failed=audit_counts["failed"]
1880
1902
  ),
1903
+ "mean_reward": job_result.mean_reward,
1881
1904
  "elapsed_sec": elapsed,
1882
1905
  "memory_score": job_result.memory_score,
1883
1906
  "memory_score_coverage": (
@@ -1977,9 +2000,14 @@ class Evaluation:
1977
2000
  "This likely indicates a systemic verifier bug, not agent failure."
1978
2001
  )
1979
2002
 
2003
+ mean_part = (
2004
+ f"mean_reward={job_result.mean_reward:.2f}, "
2005
+ if job_result.mean_reward is not None
2006
+ else ""
2007
+ )
1980
2008
  logger.info(
1981
2009
  f"Job complete: {job_result.passed}/{job_result.total} "
1982
- f"({job_result.score:.1%}), errors={job_result.errored}, "
2010
+ f"({job_result.score:.1%}), {mean_part}errors={job_result.errored}, "
1983
2011
  f"idle_timeouts={error_category_counts.get(IDLE_TIMEOUT, 0)}, "
1984
2012
  f"time={elapsed / 60:.1f}min"
1985
2013
  )