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