benchflow 0.7.10.dev2406__tar.gz → 0.7.11__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.7.10.dev2406 → benchflow-0.7.11}/CHANGELOG.md +81 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/PKG-INFO +1 -1
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/pyproject.toml +1 -1
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/scoring.py +4 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/yaml_loader.py +2 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/main.py +43 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/eval_plan.py +4 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/eval_sharding.py +2 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/eval_worker.py +2 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/evaluation.py +10 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/evidence.py +28 -6
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/__init__.py +57 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_config.py +10 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_results.py +5 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_review.py +82 -3
- benchflow-0.7.11/src/benchflow/rollout/_separate_verifier.py +651 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/task_runtime.py +4 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/runtime.py +6 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_cache_reclaim.py +2 -4
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/lockdown.py +26 -14
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sdk.py +5 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/runtime_capabilities.py +44 -15
- benchflow-0.7.11/src/benchflow/task/verifier_sandbox.py +241 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_evidence.py +49 -0
- benchflow-0.7.11/tests/test_root_helpers_isolated.py +175 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_hardening.py +13 -10
- benchflow-0.7.11/tests/test_separate_verifier.py +1121 -0
- benchflow-0.7.11/tests/test_verifier_user_config.py +94 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/.gitignore +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/LICENSE +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/README.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_dotenv.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_paths.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_run.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_types.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/benchmark_repos.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/build_context_stage.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/config_override.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/config_redaction.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/content_address.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/dataset_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/env_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/evaluation_results.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/hf_datasets.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/json_safe.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/learner_memory.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/live_activity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/result_metadata.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/result_paths.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/reward_events.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/source_provenance.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/task_authoring/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/task_authoring/_evidence_paths.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/task_authoring/acceptance_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/task_authoring/scaffolding.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/task_authoring/structural_checks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/_utils/text.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/client.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/container_transport.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/selection.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/session.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/timeout_cleanup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/transport.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/types.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/acp/watchdog.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/_toolathlon.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/_toolathlon_container.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/_toolathlon_fake_mail.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/_toolathlon_poste_users.tsv +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/_toolathlon_services.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/harbor.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/inbound.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/inspect_ai.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/ors.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/resources/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/resources/mcp_atlas_bridge.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/resources/mcp_atlas_judge.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/adapters/source.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agent_router.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agent_router_guide.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agent_router_parity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agent_router_scaffold.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/antigravity_acp_shim.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/antigravity_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/codex_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/credentials.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/deepagents_acp_shim.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/errors.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/harvey_lab_acp_shim.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/install.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/openclaw_acp_shim.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/pi_acp_launcher.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/providers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/agents/remote_manifests.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/branch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_failure_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_hosted_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_live_progress.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_options.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_shared.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_traj_tui.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/_traj_upload_ui.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/adopt.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/agent.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/continue_cmd.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/environment.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/eval_artifacts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/eval_lift.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/hub.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/monitor.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/rescore.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/review.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/reviewer_options.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/sandbox.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/tasks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/trace_import.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/train.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/cli/traj.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/batch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/orchestrator.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/replay_proxy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/run_folder.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/continue_run/sandbox_proxy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/contracts/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/contracts/planes.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/contracts/user.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/demo_task/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/demo_task/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/demo_task/task.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/demo_task/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/demo_task/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/diagnostics.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/_registry/env0@outage.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/_registry/env0@prod.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/manifest_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/environment/readiness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/eval_artifacts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/eval_lift.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/experimental/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/experimental/mcp/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/experimental/mcp/hooks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/experimental/mcp/reviewer_server.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/hosted_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/hub/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/hub/harbor_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/integrations/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/integrations/skillevaluator.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/integrations/trl/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/integrations/trl/spec.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/learner_skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/learner_store.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/loop_strategies.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/loop_sweep.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/metrics.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/models.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/monitor.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_bedrock_patch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_bedrock_preflight.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_gemini_passthrough_patch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_logging.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/litellm_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/providers/runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/_progress.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/azure_blob.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/broker.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/huggingface.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/redact.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/traj_capture.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/publish/traj_report.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/py.typed +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/automatic.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/default-rubric.json +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/evidence_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/options.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/outcome.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/persistence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/preflight.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/prompts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/resume.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/runner.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/scoring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/review/wrapper.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/README.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/builtins.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/events.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/file_readers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/llm.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/memory_scorer.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/node.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/rubric.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/rubric_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rewards/validation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_deadline.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_setup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_usage.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/_user_loop.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout/session_factory_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout_branch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/rollout_planes.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_base.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose_files/docker-compose-base.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose_files/docker-compose-build.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose_files/docker-compose-net-admin.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose_files/docker-compose-no-network.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_compose_files/docker-compose-prebuilt.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_egress_denylist_proxy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/_sdk_ops.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore_builder.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore_image.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore_provisioning.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore_reaper.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/agentcore_sealed.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/apple_container.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/daytona.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/daytona_dind.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/daytona_pty.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/daytona_reaper.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/daytona_strategies.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/docker.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/egress_denylist.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/metadata.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/modal_impl.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/_base.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/agentcore.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/apple.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/daytona.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/process/docker.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/providers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/services.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/setup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/snapshot.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/sandbox/user.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/scenes.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/self_gen.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skill_eval/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skill_eval/_core.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skill_eval/gepa_export.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skill_eval/schema.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skill_policy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/_document_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/_document_normalize.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/_document_parse.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/_document_profiles.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/acceptance_live.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/acceptance_live_model.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/acceptance_live_report.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/acceptance_live_validation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/discovery.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/document.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/export.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/imports.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/output_format.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/package.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/paths.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/prompts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/runtime_view.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/task.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_core.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_document.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_errors.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_judge_inputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_ors_episode.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_reward_kit.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_scan.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/task/verifier_script_strategy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/templates/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/templates/judge.py.tmpl +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/templates/test.sh.tmpl +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/huggingface.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/local.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/models.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/parsers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/traces/task_gen.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/training/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/training/backends/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/training/backends/prime_rl.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/training/run_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/_capture.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/_export_common.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/_llm_capture.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/_snapshot.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/call_purpose.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/export.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/export_adp.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/export_atif.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/export_prime_sft.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/export_trl_sft.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/metrics.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/results.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/sessions.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/tree.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/trl_sft_tokenization.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/types.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/__main__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/boot.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/catalog.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/detail.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/fonts/OFL-google-sans-code.txt +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/fonts/google-sans-code-400-latin.woff2 +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/fonts/google-sans-code-600-latin.woff2 +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/template.html +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/theme.css +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/theme.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/vendor/LICENSE.highlight.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/vendor/highlight.min.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/viewer.css +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/assets/viewer.js +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/catalog.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/legacy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/models.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/payload.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/render.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/server.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/trajectories/viewer/sources.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/src/benchflow/usage_tracking.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/acceptance_live_harness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_codex_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_manifest_dirscan.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_manifest_loader.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_manifest_parity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_manifest_wiring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_namespace_shorthand.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_plugin_entry_points.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/agents/test_remote_manifest_autoload.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/README.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/environment/docker-compose.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/environment/skills/conformance-writer/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/task.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/acp_smoke/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/conformance-results.json +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/proof_multi_agent.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/proof_snapshot.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/run_conformance.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conformance/self_gen_smoke_skills/skill-creator/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/conftest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/_helpers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/test_batch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/test_orchestrator.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/test_replay_proxy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/continue_run/test_run_folder.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_chibench_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_clawsbench_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_manifest_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/environment/test_readiness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/task.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/hello-world-task/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_antigravity.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_claude.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_codex.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_codex_custom_provider.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_gemini.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/test_openclaw.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/traces/minimal-claude.jsonl +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/examples/traces/minimal-opentraces.jsonl +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/README.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/alpha-task/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/alpha-task/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/alpha-task/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/alpha-task/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/beta-task/data/empty.bin +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/beta-task/data/unicode.txt +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/beta-task/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/beta-task/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/digest/not-a-task/notes.txt +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/mock_acp_agent.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/mock_acp_agent_interleaved.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/mock_acp_agent_multi_turn.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/mock_openai_responses_server.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/data/michigan_stations.txt +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/flood-detection/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/nws-flood-thresholds/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/environment/skills/usgs-data-download/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/flood-risk-analysis/tests/test_outputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/climate.csv +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/hydrology.csv +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/land_cover.csv +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/data/water_temperature.csv +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/contribution-analysis/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/meteorology-driver-classification/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/pca-decomposition/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/environment/skills/trend-analysis/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/lake-warming-attribution/tests/test_outputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/manifest.json +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/r2r_simulator.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/finite-horizon-lqr/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/integral-action-design/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/mpc-horizon-tuning/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/skills/state-space-linearization/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/environment/system_config.json +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/r2r-mpc-control/tests/test_outputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/generate_training_pcaps.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/local.rules +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/pcap-triage-tshark/scripts/summarize_http_requests.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-offline-evejson/scripts/run_suricata_offline.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/skills/suricata-rules-basics/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/environment/suricata.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/suricata-custom-exfil/tests/test_outputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/Dockerfile +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syz-extract-constants/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzkaller-build-loop/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/environment/skills/syzlang-ioctl-basics/SKILL.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/instruction.md +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/solution/solve.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/task.toml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/fixtures/skillsbench_slice/syzkaller-ppdev-syzlang/tests/test_outputs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/_consistency.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/agent_judge.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/check_adapter_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/check_hosted_env_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/check_results.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/check_trace_to_task_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/antigravity.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/claude-agent-acp.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/codex-acp.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/gemini.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/harvey-lab-harness.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/mimo.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/openclaw.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/opencode.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/openhands.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/configs/pi-acp.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/deepagents_harness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/rubric_checks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/run.sh +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/run_suite.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/scenarios.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/integration/suites/release.yaml +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acceptance_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acceptance_live.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acceptance_live_execution.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_buffered_timeout.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_capability_advertising.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_mcp_servers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_model_config_dispatch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_pinned_protocol_guard.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_setup_failure_propagation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_acp_timeout_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_adapter_scripts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_adapters.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_antigravity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_egress_firewall.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_env_resolution.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_gemini_defaults.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_idle_timeout_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_model_decouple.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_router.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_router_cli_e2e.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_router_scaffold.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_setup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agent_spec.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agentcore_builder.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agentcore_parallel.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agentcore_reaper.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agentcore_sandbox.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_agentcore_transport.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_api_error_capture.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_apple_container_sandbox.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_automatic_review_scoring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_bare_model_provider.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_base_install_imports.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_bedrock_thinking.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_benchflow_experiment_review_validator.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_benchmark_repos_resolve_repo_path.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_branch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_build_context_stage.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_build_review_pack.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_capture_trajectory.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_check_skillsbench_harbor_parity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_clawsbench_slice.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_adopt_aliases.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_arg_validation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_daytona.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_docs_drift.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_edge_case_hardening.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_hub_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_live_progress.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_cli_misc.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_codex_bare_model_id.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_codex_review.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_codex_self_write_auth.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_config_override.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_config_redaction.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_connect_as_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_console_error_truncation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_console_progress.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_continuallearningbench_adapter.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_dataset_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_command_polling.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_dind_compose_up.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_download.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_litellm_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_poll_deadline.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_daytona_reap.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_deepagents_agent.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_diagnostics.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_docker_prune_scoping.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_docker_uploads.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_docs_examples.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_egress_connect_authority.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_egress_denylist.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_egress_denylist_integration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_egress_dynamic_certs.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_egress_model_gateway.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eng50_capabilities.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_env_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_env_setup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_environment_manifest_controls.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_artifact_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_filters_applied.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_lift.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_sharding.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_single_task_summary.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_source_provenance.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_worker_retry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_eval_zero_task_guard.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_evaluation_environment_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_exclude_tasks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_filter_credentialed_cells.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_harvey_lab_shim.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_hilbench_adapter.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_hosted_env.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_hosted_env_rollout_contract.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_hosted_search_policy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_hub_harbor_registry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_inbound_adapter_manifest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_inbound_adapters.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_agent_judge.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_check_results.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_consistency.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_matrix.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_provider_selection.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_run_suite.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_integration_suite.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_internet_policy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_job.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_job_sequential_shared.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_job_sequential_shared_resume.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_judge_robustness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_judge_symlink_ingestion.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_learner_skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_learner_skills_traversal.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_learner_store.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_learner_store_persistence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_gemini_passthrough_patch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_hardening.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_logging.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_model_via_env_generic.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_reasoning_passthrough.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_litellm_smoke.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_live_llm_trajectory.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_llm_judge.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_llm_judge_event_tags.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_llm_judge_verifier.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_loop_strategies.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_loop_summary.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_loop_sweep.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_memory_scorer.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_metrics.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_mle_bench_adapter.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_mock_openai_responses_server.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_monitor_scaffold.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_native_acp_usage.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_network_denylist_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_no_cross_provider_fallback.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_notification_order_real.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_opencode_family_proxy_tracking.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_oracle.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_oracle_chokepoint.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_paths_safe.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_paths_symlink_helpers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_pi_acp_launcher.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_pi_acp_proxy_routing.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_process.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_project_skills_layout.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_provider_auth_detection.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_providers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_publish_azure_blob.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_publish_huggingface.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_redacted_snapshot.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reexport.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_registry_invariants.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_release_hardening_r5.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_release_version.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_release_workflow_wiring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_resolve_env_helpers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_automatic.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_boundaries.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_evidence_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_lifecycle.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_resume.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_rubric.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_runtime_automatic.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_review_snapshot.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reviewer_options.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reward_lenient.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reward_node.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reward_range.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_reward_unified_contract.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rewards.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rewards_jsonl.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_architecture.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_branch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_config_path_coercion.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_environment.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_hard_deadline.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_import_no_side_effects.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_on_ask_user_wiring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_planes_contract.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_probe_sandbox_health.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_session_factory_dispatch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_setup_commands.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rollout_upload.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rubric_checks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_rubric_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_runtime_capabilities.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_runtime_config_wired.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_runtime_live_sandbox.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_exec_secret_handling.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_isolation_copy_traversal.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_live_process.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_multi_service.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_prebuilt_validation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_protocol.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_provider_registry_drift.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_setup.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_snapshot_contract.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_upload_symlink.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sandbox_verifier_workspace.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_scene.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_scene_outbox_trial.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_scene_parallel_group.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_scene_result_aggregation.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_scoring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sdk_internals.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sdk_lockdown.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sdk_run_alias.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_sealed_channel_container.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_self_gen_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_self_gen_export_error_channel.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_self_gen_export_failures.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_self_gen_orchestration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_session_factory_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_session_request_permission_dispatch.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_eval.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_eval_dryrun.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_eval_integration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_eval_sweep.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_eval_traversal.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_invocation_artifacts.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skill_policy.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skillevaluator_integration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skills.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skills_dir_agent_home_link.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skillsbench_conversion_conformance.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_skillsbench_harbor_run_suite.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_smoke.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_smoke_wiring.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_source_adapters.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_subscription_auth.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_check_eval_consistency.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_digest.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_document.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_download.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_export.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_output_format.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_package.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_task_runtime_primitive.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_tasks.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_token_usage_normalization.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_tool_call_raw_io.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trace_import_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trace_task_gen_traversal.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trace_to_task_evidence.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traces_huggingface.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traces_parsers.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traces_task_gen.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_train_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_train_mode_artifact_emission.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_train_trl_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_report.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_staging_phases.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_tui.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_upload_cli.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_upload_skill.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_traj_workspace.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trajectory_integration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trajectory_streaming.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trajectory_upload_layout.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trajectory_upload_service.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trial_agent_timeout_verify.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trial_install_agent_timeout.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trial_litellm_runtime.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_trl_integration.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_usage_litellm.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_usage_required.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_usage_tracking.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_user.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_v06_guard_ports.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_document.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_multi_container.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_output.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_output_freshness.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_strategies.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verifier_wedge_retry.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_verify.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_viewer_confirm.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_workflow_action_pinning.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/test_yaml_config.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/__init__.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export_adp.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export_atif.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export_common.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export_nan_handling.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_export_prime_sft.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_redaction.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_step_granularity.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_tree.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_viewer_acp_renderer.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_viewer_browser.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_viewer_rubric.py +0 -0
- {benchflow-0.7.10.dev2406 → benchflow-0.7.11}/tests/trajectories/test_viewer_theme.py +0 -0
|
@@ -2,6 +2,87 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## 0.7.11 — 2026-10-16
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **`--separate-verifier-include PATH` carries outputs outside the workspace
|
|
10
|
+
into a separate verifier sandbox.** Only the workspace (`sandbox.workdir`,
|
|
11
|
+
else the image's `WORKDIR`) crossed, so a task whose agent writes graded
|
|
12
|
+
files elsewhere scored 0 with no error: FrontierPhysics
|
|
13
|
+
`kinked-ladder-polymer-scattering` (workspace `/app`, outputs in `/root`)
|
|
14
|
+
went from 19/19 in shared mode to 0/19 with `--separate-verifier`, and 14
|
|
15
|
+
of its 56 tasks grade files outside the workspace. Each include path
|
|
16
|
+
(repeatable; SDK and config `separate_verifier_include`) is captured beside
|
|
17
|
+
the workspace into `evidence/artifacts/`, hash-checked, and laid over the
|
|
18
|
+
verifier image's copy at the same path; pseudo filesystems and roots such as
|
|
19
|
+
`/`, `/usr` and `/home` are refused before any sandbox starts.
|
|
20
|
+
`config.json` records `verifier_include`, and the transfer inventory lists
|
|
21
|
+
each path as captured, missing or already in the workspace.
|
|
22
|
+
- **A separate verifier lists files the agent left outside everything that
|
|
23
|
+
crosses.** When the workspace is frozen, the regular files written during
|
|
24
|
+
the agent phase outside the workspace and include paths (skipping system,
|
|
25
|
+
scratch and provider trees, package caches and the agent's home) are logged
|
|
26
|
+
as a warning with a count per directory and examples, and recorded under
|
|
27
|
+
`outside_workspace_writes` in `verifier-sandbox/verifier-sandbox.json`.
|
|
28
|
+
Advisory: it never fails a rollout.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- **The verifier ignores pip's and git's per-user config under `/root`.**
|
|
33
|
+
The verifier runs as root with `HOME=/root`, the agent's workspace in many
|
|
34
|
+
tasks, so `~/.config/pip/pip.conf` or `~/.gitconfig` there were whatever the
|
|
35
|
+
agent left, in both modes (a separate verifier receives the `/root`
|
|
36
|
+
workspace too). `VERIFIER_ENV` now sets `PIP_CONFIG_FILE=/dev/null` and
|
|
37
|
+
`GIT_CONFIG_GLOBAL=/dev/null` (git 2.32+; `/etc/gitconfig` still applies),
|
|
38
|
+
and drops `PIP_NO_USER_CONFIG`, which is not a pip option and did nothing.
|
|
39
|
+
A task that needs either config back sets it in its verifier `env`.
|
|
40
|
+
- **Package-manager caches stay out of workspace evidence.** `.cache/pip`,
|
|
41
|
+
`.cache/uv` and npm's `_cacache`, `_npx` and `_logs` below a captured root
|
|
42
|
+
are recorded as `package_cache` exclusions instead of captured. With a
|
|
43
|
+
`/root` workspace the harness's own installs fill them as root before the
|
|
44
|
+
agent starts: on a FrontierPhysics ion-trap-design run they were 97% of the
|
|
45
|
+
745 MB the separate verifier received, and of the rubric review's upload.
|
|
46
|
+
- **`mcp` 1.30.0 in `uv.lock`** for CVE-2026-59951 (was 1.28.1), which failed
|
|
47
|
+
the `pip-audit` job and, through it, `main`'s release gate.
|
|
48
|
+
|
|
49
|
+
## 0.7.10 — 2026-10-16
|
|
50
|
+
|
|
51
|
+
### Added
|
|
52
|
+
|
|
53
|
+
- **Separate verifier sandboxes run on Docker and Daytona.** A task that sets
|
|
54
|
+
`[verifier] sandbox_mode = "separate"` (Harbor `environment_mode`) or
|
|
55
|
+
declares `[verifier.sandbox]` was refused with "separate verifier
|
|
56
|
+
sandboxes are parsed but not executed". It now runs: after the agent stops,
|
|
57
|
+
the workspace is frozen into `evidence/`, and a fresh sandbox built from
|
|
58
|
+
the verifier image (`[verifier.sandbox].docker_image`, `[sandbox]
|
|
59
|
+
.docker_image`, `tests/Dockerfile`, then the task's own
|
|
60
|
+
`environment/Dockerfile`) receives only those hash-checked bytes before the
|
|
61
|
+
normal hardening and `test.sh` run there. Nothing else from the agent's
|
|
62
|
+
sandbox reaches the verifier. `bench eval run --separate-verifier` (SDK and
|
|
63
|
+
config `separate_verifier`) forces the mode for every task of a run without
|
|
64
|
+
editing them, so task digests do not change. A transfer or sandbox failure
|
|
65
|
+
is a verifier infrastructure error, never a score;
|
|
66
|
+
`verifier-sandbox/verifier-sandbox.json` records the image source, sandbox
|
|
67
|
+
id, transfer inventory and timing, and `config.json` records
|
|
68
|
+
`verifier_sandbox_mode`. Ported from release/0.8's separate verifier,
|
|
69
|
+
without its declared-artifact and `/logs/artifacts` transfer, which main
|
|
70
|
+
does not have.
|
|
71
|
+
|
|
72
|
+
### Fixed
|
|
73
|
+
|
|
74
|
+
- **Root helpers no longer import modules from the agent's workspace.** The
|
|
75
|
+
helpers BenchFlow runs as root after the agent stops (disk reclaim, the
|
|
76
|
+
verifier PATH check, pytest-plugin discovery, the external-symlink purge,
|
|
77
|
+
the workspace-restore fallback, workspace evidence capture and its
|
|
78
|
+
reviewer-side admission) ran plain `python3 -c` from the sandbox's default
|
|
79
|
+
working directory, which is the agent's workspace, so a `json.py` or
|
|
80
|
+
`glob.py` left there was imported as root before the verifier. They now run
|
|
81
|
+
`python3 -I`; the `.pth`/`sitecustomize.py` purge keeps its environment
|
|
82
|
+
but runs from `/`. Pytest-plugin discovery therefore scans only the
|
|
83
|
+
interpreter's site-packages: declare a plugin installed elsewhere in
|
|
84
|
+
`verifier.pytest_plugins`.
|
|
85
|
+
|
|
5
86
|
## 0.7.9 — 2026-10-14
|
|
6
87
|
|
|
7
88
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: benchflow
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.11
|
|
4
4
|
Summary: Multi-turn agent benchmarking with ACP — run any agent, any model, any provider.
|
|
5
5
|
Project-URL: Homepage, https://github.com/benchflow-ai/benchflow
|
|
6
6
|
Project-URL: Repository, https://github.com/benchflow-ai/benchflow
|
|
@@ -225,6 +225,10 @@ def classify_verifier_error(verifier_error: str | None) -> str | None:
|
|
|
225
225
|
if not verifier_error:
|
|
226
226
|
return None
|
|
227
227
|
lower = verifier_error.lower()
|
|
228
|
+
if lower.startswith("separate verifier "):
|
|
229
|
+
# The verifier sandbox never received the agent's outputs (or never
|
|
230
|
+
# started): nothing was assessed.
|
|
231
|
+
return VERIFIER_INFRA
|
|
228
232
|
if "verifier crashed" in verifier_error:
|
|
229
233
|
if contains_verifier_dep_install_marker(lower):
|
|
230
234
|
return VERIFIER_DEP_INSTALL
|
|
@@ -125,6 +125,8 @@ def rollout_config_from_dict(
|
|
|
125
125
|
),
|
|
126
126
|
context_root=raw.get("context_root"),
|
|
127
127
|
base_image_override=raw.get("base_image_override"),
|
|
128
|
+
separate_verifier=bool(raw.get("separate_verifier", False)),
|
|
129
|
+
separate_verifier_include=tuple(raw.get("separate_verifier_include") or ()),
|
|
128
130
|
agent=raw.get("agent", "claude-agent-acp"),
|
|
129
131
|
model=raw.get("model"),
|
|
130
132
|
reasoning_effort=raw.get("reasoning_effort"),
|
|
@@ -75,6 +75,7 @@ from benchflow.eval_plan import EvalCreateRequest, EvalPlanError, build_eval_pla
|
|
|
75
75
|
from benchflow.evaluation import DEFAULT_AGENT, effective_model
|
|
76
76
|
from benchflow.sandbox.providers import providers_phrase
|
|
77
77
|
from benchflow.skill_policy import SKILL_MODE_NO_SKILL
|
|
78
|
+
from benchflow.task.verifier_sandbox import normalize_include_paths
|
|
78
79
|
|
|
79
80
|
if TYPE_CHECKING:
|
|
80
81
|
from benchflow.eval_plan import EvalPlan
|
|
@@ -446,6 +447,29 @@ def eval_run(
|
|
|
446
447
|
),
|
|
447
448
|
),
|
|
448
449
|
] = None,
|
|
450
|
+
separate_verifier: Annotated[
|
|
451
|
+
bool,
|
|
452
|
+
typer.Option(
|
|
453
|
+
"--separate-verifier",
|
|
454
|
+
help=(
|
|
455
|
+
"Run each verifier in a fresh sandbox built from the task image "
|
|
456
|
+
"that receives only the frozen workspace, as if every task set "
|
|
457
|
+
"\\[verifier].sandbox_mode = 'separate'. Docker and Daytona only."
|
|
458
|
+
),
|
|
459
|
+
),
|
|
460
|
+
] = False,
|
|
461
|
+
separate_verifier_include: Annotated[
|
|
462
|
+
list[str] | None,
|
|
463
|
+
typer.Option(
|
|
464
|
+
"--separate-verifier-include",
|
|
465
|
+
help=(
|
|
466
|
+
"A path outside the workspace that a separate verifier sandbox "
|
|
467
|
+
"receives too, at the same path, for tasks whose agent writes "
|
|
468
|
+
"graded files there (e.g. /root when the workspace is /app). "
|
|
469
|
+
"Repeatable."
|
|
470
|
+
),
|
|
471
|
+
),
|
|
472
|
+
] = None,
|
|
449
473
|
skills_dir: Annotated[
|
|
450
474
|
Path | None,
|
|
451
475
|
typer.Option("--skills-dir", help="Skills directory to deploy"),
|
|
@@ -652,6 +676,12 @@ def eval_run(
|
|
|
652
676
|
# the TTY Rich dashboard (see cli._live_progress.progress_enabled).
|
|
653
677
|
os.environ["BENCHFLOW_NO_PROGRESS"] = "1"
|
|
654
678
|
|
|
679
|
+
try:
|
|
680
|
+
include_paths = normalize_include_paths(separate_verifier_include or ())
|
|
681
|
+
except ValueError as exc:
|
|
682
|
+
print_error(f"{exc}")
|
|
683
|
+
raise typer.Exit(1) from None
|
|
684
|
+
|
|
655
685
|
request = EvalCreateRequest(
|
|
656
686
|
config_file=config_file,
|
|
657
687
|
tasks_dir=tasks_dir,
|
|
@@ -677,6 +707,8 @@ def eval_run(
|
|
|
677
707
|
sandbox_setup_timeout=sandbox_setup_timeout,
|
|
678
708
|
context_root=context_root,
|
|
679
709
|
base_image_override=base_image_override,
|
|
710
|
+
separate_verifier=separate_verifier,
|
|
711
|
+
separate_verifier_include=include_paths,
|
|
680
712
|
skills_dir=skills_dir,
|
|
681
713
|
skill_mode=skill_mode,
|
|
682
714
|
skill_creator_dir=skill_creator_dir,
|
|
@@ -1019,6 +1051,17 @@ def _run_config_file_eval(plan: "EvalPlan") -> None:
|
|
|
1019
1051
|
# run-config file was a no-op.
|
|
1020
1052
|
if plan.eval_config_override is not None:
|
|
1021
1053
|
j._config.config_override = plan.eval_config_override
|
|
1054
|
+
# --separate-verifier only ever strengthens isolation, so it wins over
|
|
1055
|
+
# a config file that leaves it off.
|
|
1056
|
+
if plan.request.separate_verifier:
|
|
1057
|
+
j._config.separate_verifier = True
|
|
1058
|
+
if plan.request.separate_verifier_include:
|
|
1059
|
+
j._config.separate_verifier_include = normalize_include_paths(
|
|
1060
|
+
[
|
|
1061
|
+
*j._config.separate_verifier_include,
|
|
1062
|
+
*plan.request.separate_verifier_include,
|
|
1063
|
+
]
|
|
1064
|
+
)
|
|
1022
1065
|
except subprocess.CalledProcessError as e:
|
|
1023
1066
|
# A source.repo clone/fetch failure (git exits non-zero) otherwise escapes
|
|
1024
1067
|
# as a raw traceback — it is not a config-parse error, so give it its own
|
|
@@ -103,6 +103,8 @@ class EvalCreateRequest:
|
|
|
103
103
|
sandbox_setup_timeout: int = 120
|
|
104
104
|
context_root: Path | None = None
|
|
105
105
|
base_image_override: str | None = None
|
|
106
|
+
separate_verifier: bool = False
|
|
107
|
+
separate_verifier_include: tuple[str, ...] = ()
|
|
106
108
|
skills_dir: Path | None = None
|
|
107
109
|
skill_mode: str = SKILL_MODE_NO_SKILL
|
|
108
110
|
skill_creator_dir: Path | None = None
|
|
@@ -201,6 +203,8 @@ class EvalPlan:
|
|
|
201
203
|
sandbox_setup_timeout=req.sandbox_setup_timeout,
|
|
202
204
|
context_root=str(req.context_root) if req.context_root else None,
|
|
203
205
|
base_image_override=req.base_image_override,
|
|
206
|
+
separate_verifier=req.separate_verifier,
|
|
207
|
+
separate_verifier_include=req.separate_verifier_include,
|
|
204
208
|
skills_dir=str(req.skills_dir) if req.skills_dir else None,
|
|
205
209
|
skill_mode=req.skill_mode,
|
|
206
210
|
skill_creator_dir=(
|
|
@@ -134,6 +134,8 @@ def _config_payload(
|
|
|
134
134
|
"agent_idle_timeout": config.agent_idle_timeout,
|
|
135
135
|
"context_root": config.context_root,
|
|
136
136
|
"base_image_override": config.base_image_override,
|
|
137
|
+
"separate_verifier": config.separate_verifier,
|
|
138
|
+
"separate_verifier_include": list(config.separate_verifier_include),
|
|
137
139
|
"exclude_tasks": sorted(config.exclude_tasks),
|
|
138
140
|
"include_tasks": sorted(shard.task_names),
|
|
139
141
|
"skill_mode": config.skill_mode,
|
|
@@ -69,6 +69,8 @@ def _evaluation_config(raw: dict[str, Any]) -> EvaluationConfig:
|
|
|
69
69
|
agent_idle_timeout=raw.get("agent_idle_timeout"),
|
|
70
70
|
context_root=raw.get("context_root"),
|
|
71
71
|
base_image_override=raw.get("base_image_override"),
|
|
72
|
+
separate_verifier=bool(raw.get("separate_verifier", False)),
|
|
73
|
+
separate_verifier_include=tuple(raw.get("separate_verifier_include") or ()),
|
|
72
74
|
exclude_tasks=set(raw.get("exclude_tasks") or []),
|
|
73
75
|
include_tasks=set(raw.get("include_tasks") or []),
|
|
74
76
|
skill_mode=raw.get("skill_mode") or SKILL_MODE_NO_SKILL,
|
|
@@ -501,6 +501,8 @@ class EvaluationConfig:
|
|
|
501
501
|
agent_idle_timeout: int | None = 600
|
|
502
502
|
context_root: str | None = None
|
|
503
503
|
base_image_override: str | None = None
|
|
504
|
+
separate_verifier: bool = False
|
|
505
|
+
separate_verifier_include: tuple[str, ...] = ()
|
|
504
506
|
exclude_tasks: set[str] = field(default_factory=set)
|
|
505
507
|
include_tasks: set[str] = field(default_factory=set)
|
|
506
508
|
skill_mode: str = SKILL_MODE_NO_SKILL
|
|
@@ -910,6 +912,8 @@ class Evaluation:
|
|
|
910
912
|
),
|
|
911
913
|
context_root=raw.get("context_root"),
|
|
912
914
|
base_image_override=raw.get("base_image_override"),
|
|
915
|
+
separate_verifier=bool(raw.get("separate_verifier", False)),
|
|
916
|
+
separate_verifier_include=tuple(raw.get("separate_verifier_include") or ()),
|
|
913
917
|
exclude_tasks=exclude,
|
|
914
918
|
include_tasks=include,
|
|
915
919
|
skill_mode=raw.get("skill_mode", SKILL_MODE_NO_SKILL),
|
|
@@ -1007,6 +1011,8 @@ class Evaluation:
|
|
|
1007
1011
|
),
|
|
1008
1012
|
context_root=raw.get("context_root"),
|
|
1009
1013
|
base_image_override=raw.get("base_image_override"),
|
|
1014
|
+
separate_verifier=bool(raw.get("separate_verifier", False)),
|
|
1015
|
+
separate_verifier_include=tuple(raw.get("separate_verifier_include") or ()),
|
|
1010
1016
|
include_tasks=include,
|
|
1011
1017
|
exclude_tasks=exclude,
|
|
1012
1018
|
skill_mode=raw.get("skill_mode", SKILL_MODE_NO_SKILL),
|
|
@@ -1284,6 +1290,8 @@ class Evaluation:
|
|
|
1284
1290
|
agent_idle_timeout=cfg.agent_idle_timeout,
|
|
1285
1291
|
context_root=cfg.context_root,
|
|
1286
1292
|
base_image_override=cfg.base_image_override,
|
|
1293
|
+
separate_verifier=cfg.separate_verifier,
|
|
1294
|
+
separate_verifier_include=cfg.separate_verifier_include,
|
|
1287
1295
|
skill_mode=skill_mode,
|
|
1288
1296
|
skill_creator_dir=cfg.skill_creator_dir,
|
|
1289
1297
|
self_gen_no_internet=cfg.self_gen_no_internet,
|
|
@@ -1345,6 +1353,8 @@ class Evaluation:
|
|
|
1345
1353
|
agent_idle_timeout=cfg.agent_idle_timeout,
|
|
1346
1354
|
context_root=cfg.context_root,
|
|
1347
1355
|
base_image_override=cfg.base_image_override,
|
|
1356
|
+
separate_verifier=cfg.separate_verifier,
|
|
1357
|
+
separate_verifier_include=cfg.separate_verifier_include,
|
|
1348
1358
|
skill_mode=cfg.skill_mode,
|
|
1349
1359
|
skill_creator_dir=cfg.skill_creator_dir,
|
|
1350
1360
|
self_gen_no_internet=cfg.self_gen_no_internet,
|
|
@@ -30,6 +30,19 @@ from benchflow.task.config import ArtifactConfig
|
|
|
30
30
|
|
|
31
31
|
logger = logging.getLogger(__name__)
|
|
32
32
|
|
|
33
|
+
# Package-manager caches, matched as path components below a captured root.
|
|
34
|
+
# With a /root workspace, the harness's own installs (codex-acp through npm,
|
|
35
|
+
# tools through uv) fill these as root before the agent starts, and they can
|
|
36
|
+
# be most of the workspace's bytes. A cache is never an output: the review and
|
|
37
|
+
# the separate verifier sandbox both do without it.
|
|
38
|
+
PACKAGE_CACHE_PATHS = (
|
|
39
|
+
".cache/pip",
|
|
40
|
+
".cache/uv",
|
|
41
|
+
".npm/_cacache",
|
|
42
|
+
".npm/_logs",
|
|
43
|
+
".npm/_npx",
|
|
44
|
+
)
|
|
45
|
+
|
|
33
46
|
|
|
34
47
|
class EvidenceError(RuntimeError):
|
|
35
48
|
"""Required evidence could not be captured or verified completely."""
|
|
@@ -51,7 +64,9 @@ class EvidenceExclusion(BaseModel):
|
|
|
51
64
|
model_config = ConfigDict(extra="forbid", frozen=True)
|
|
52
65
|
|
|
53
66
|
original_path: str
|
|
54
|
-
reason: Literal[
|
|
67
|
+
reason: Literal[
|
|
68
|
+
"credential", "sandbox_runtime", "package_cache", "special_file", "task_exclude"
|
|
69
|
+
]
|
|
55
70
|
|
|
56
71
|
|
|
57
72
|
class ArtifactEvidence(BaseModel):
|
|
@@ -125,6 +140,8 @@ def excluded(path):
|
|
|
125
140
|
# but a root that itself lies under such a directory is still captured.
|
|
126
141
|
if reason is None and any(component("/" + relative, rule) for rule in rules["sandbox_runtime"]):
|
|
127
142
|
reason = "sandbox_runtime"
|
|
143
|
+
if reason is None and any(component("/" + relative, rule) for rule in rules["package_cache"]):
|
|
144
|
+
reason = "package_cache"
|
|
128
145
|
if reason is None and any(fnmatch.fnmatchcase(relative, rule) or fnmatch.fnmatchcase(path.name, rule) for rule in rules["exclude"]):
|
|
129
146
|
reason = "task_exclude"
|
|
130
147
|
if reason:
|
|
@@ -346,9 +363,9 @@ async def capture_workspace(
|
|
|
346
363
|
``destination`` must not exist. It receives ``workspace/`` and
|
|
347
364
|
``manifest.json`` together after successful validation. Capture limits are
|
|
348
365
|
hard errors: this API never labels a truncated tree complete. Credential
|
|
349
|
-
files, provider runtime state (``SANDBOX_RUNTIME_STATE_PATHS``)
|
|
350
|
-
sockets, FIFOs or device
|
|
351
|
-
``manifest.exclusions``.
|
|
366
|
+
files, provider runtime state (``SANDBOX_RUNTIME_STATE_PATHS``), package
|
|
367
|
+
manager caches (``PACKAGE_CACHE_PATHS``) and sockets, FIFOs or device
|
|
368
|
+
nodes stay out of the bundle, each recorded in ``manifest.exclusions``.
|
|
352
369
|
"""
|
|
353
370
|
if destination.exists() or destination.is_symlink():
|
|
354
371
|
raise EvidenceError(f"Evidence destination already exists: {destination}")
|
|
@@ -361,6 +378,7 @@ async def capture_workspace(
|
|
|
361
378
|
{
|
|
362
379
|
"credentials": CREDENTIAL_EVIDENCE_PATHS,
|
|
363
380
|
"sandbox_runtime": SANDBOX_RUNTIME_STATE_PATHS,
|
|
381
|
+
"package_cache": PACKAGE_CACHE_PATHS,
|
|
364
382
|
"exclude": list(exclude),
|
|
365
383
|
"paths": list(excluded_paths),
|
|
366
384
|
}
|
|
@@ -368,6 +386,7 @@ async def capture_workspace(
|
|
|
368
386
|
command = shlex.join(
|
|
369
387
|
[
|
|
370
388
|
"python3",
|
|
389
|
+
"-I",
|
|
371
390
|
"-c",
|
|
372
391
|
_CAPTURE_SCRIPT,
|
|
373
392
|
workspace,
|
|
@@ -475,7 +494,9 @@ async def validate_uploaded_workspace(
|
|
|
475
494
|
env: Sandbox, workspace: str, manifest_path: str, *, timeout_sec: int = 600
|
|
476
495
|
) -> None:
|
|
477
496
|
"""Reject missing or changed files in the reviewer sandbox after upload."""
|
|
478
|
-
command = shlex.join(
|
|
497
|
+
command = shlex.join(
|
|
498
|
+
["python3", "-I", "-c", _ADMISSION_SCRIPT, workspace, manifest_path]
|
|
499
|
+
)
|
|
479
500
|
result = await env.exec(command, user="root", timeout_sec=timeout_sec)
|
|
480
501
|
if result.return_code:
|
|
481
502
|
raise EvidenceError(
|
|
@@ -574,7 +595,7 @@ async def install_uploaded_workspace(
|
|
|
574
595
|
The destination must be fresh; a failed installation is never admissible.
|
|
575
596
|
"""
|
|
576
597
|
command = shlex.join(
|
|
577
|
-
["python3", "-c", _UNPACK_SCRIPT, archive_path, workspace, manifest_path]
|
|
598
|
+
["python3", "-I", "-c", _UNPACK_SCRIPT, archive_path, workspace, manifest_path]
|
|
578
599
|
)
|
|
579
600
|
result = await env.exec(command, user="root", timeout_sec=timeout_sec)
|
|
580
601
|
if result.return_code:
|
|
@@ -646,6 +667,7 @@ async def capture_task_evidence(
|
|
|
646
667
|
command = shlex.join(
|
|
647
668
|
[
|
|
648
669
|
"python3",
|
|
670
|
+
"-I",
|
|
649
671
|
"-c",
|
|
650
672
|
_ARTIFACT_PROBE_SCRIPT,
|
|
651
673
|
manifest.workspace,
|
|
@@ -124,8 +124,10 @@ from benchflow.rollout._results import (
|
|
|
124
124
|
from benchflow.rollout._review import (
|
|
125
125
|
capture_terminal_workspace,
|
|
126
126
|
finish_terminal_review,
|
|
127
|
+
mark_agent_phase_start,
|
|
127
128
|
prepare_terminal_review,
|
|
128
129
|
)
|
|
130
|
+
from benchflow.rollout._separate_verifier import run_separate_verifier
|
|
129
131
|
from benchflow.rollout._setup import (
|
|
130
132
|
_agent_launch_with_web_policy as _agent_launch_with_web_policy,
|
|
131
133
|
)
|
|
@@ -219,6 +221,10 @@ from benchflow.skill_policy import (
|
|
|
219
221
|
task_bundled_skills_dir,
|
|
220
222
|
)
|
|
221
223
|
from benchflow.skill_policy import SKILL_MODE_WITH_SKILL as SKILL_MODE_WITH_SKILL
|
|
224
|
+
from benchflow.task.verifier_sandbox import (
|
|
225
|
+
apply_separate_verifier_flag,
|
|
226
|
+
separate_verifier_requested,
|
|
227
|
+
)
|
|
222
228
|
from benchflow.trajectories._capture import (
|
|
223
229
|
TrajectoryWriter,
|
|
224
230
|
_capture_session_trajectory,
|
|
@@ -770,6 +776,10 @@ class Rollout:
|
|
|
770
776
|
# an export-time infra failure ("connection lost") as the agent's own
|
|
771
777
|
# infra_failure category in dashboards.
|
|
772
778
|
self._export_error: str | None = None
|
|
779
|
+
# Separate verifier only: the sandbox clock as the agent phase began,
|
|
780
|
+
# and the files written outside everything that crosses since then.
|
|
781
|
+
self._agent_phase_started: float | None = None
|
|
782
|
+
self._outside_workspace_writes: dict | None = None
|
|
773
783
|
# Single bag for the four parallel diagnostic fields the old code
|
|
774
784
|
# carried as separate attrs (issue #503). Each callsite that used
|
|
775
785
|
# to assign to one of those slots now calls ``self._diagnostics.set(...)``
|
|
@@ -967,6 +977,23 @@ class Rollout:
|
|
|
967
977
|
self._task.config, cfg.config_override
|
|
968
978
|
)
|
|
969
979
|
|
|
980
|
+
if cfg.separate_verifier:
|
|
981
|
+
# --separate-verifier: this run's verifier gets its own sandbox,
|
|
982
|
+
# the task's files (and digest) stay as they are. Refused here,
|
|
983
|
+
# before any sandbox exists, where that sandbox cannot run.
|
|
984
|
+
self._task.config = apply_separate_verifier_flag(
|
|
985
|
+
self._task.config, sandbox=cfg.environment, task_dir=cfg.task_path
|
|
986
|
+
)
|
|
987
|
+
|
|
988
|
+
if cfg.separate_verifier_include and not separate_verifier_requested(
|
|
989
|
+
self._task.config
|
|
990
|
+
):
|
|
991
|
+
logger.warning(
|
|
992
|
+
"--separate-verifier-include has no effect for %s: its verifier "
|
|
993
|
+
"runs in the agent's sandbox",
|
|
994
|
+
self._task.name,
|
|
995
|
+
)
|
|
996
|
+
|
|
970
997
|
prepare_terminal_review(self)
|
|
971
998
|
|
|
972
999
|
self._disallow_web_tools = (
|
|
@@ -1106,6 +1133,16 @@ class Rollout:
|
|
|
1106
1133
|
started_at=self._started_at,
|
|
1107
1134
|
agent_env=self._agent_env,
|
|
1108
1135
|
base_image_override=cfg.base_image_override,
|
|
1136
|
+
verifier_sandbox_mode=(
|
|
1137
|
+
"separate"
|
|
1138
|
+
if separate_verifier_requested(getattr(self._task, "config", None))
|
|
1139
|
+
else "shared"
|
|
1140
|
+
),
|
|
1141
|
+
verifier_include=(
|
|
1142
|
+
cfg.separate_verifier_include
|
|
1143
|
+
if separate_verifier_requested(getattr(self._task, "config", None))
|
|
1144
|
+
else ()
|
|
1145
|
+
),
|
|
1109
1146
|
usage_tracking=cfg.usage_tracking.with_env_defaults(),
|
|
1110
1147
|
concurrency=cfg.concurrency,
|
|
1111
1148
|
agent_idle_timeout=cfg.agent_idle_timeout,
|
|
@@ -1224,6 +1261,7 @@ class Rollout:
|
|
|
1224
1261
|
self._env, cfg.generated_skills_root, cfg.sandbox_user
|
|
1225
1262
|
)
|
|
1226
1263
|
await self._planes.lockdown_paths(self._env, self._effective_locked)
|
|
1264
|
+
await mark_agent_phase_start(self)
|
|
1227
1265
|
self._phase = "installed"
|
|
1228
1266
|
return
|
|
1229
1267
|
|
|
@@ -1291,6 +1329,7 @@ class Rollout:
|
|
|
1291
1329
|
self._env, cfg.generated_skills_root, cfg.sandbox_user
|
|
1292
1330
|
)
|
|
1293
1331
|
await self._planes.lockdown_paths(self._env, self._effective_locked)
|
|
1332
|
+
await mark_agent_phase_start(self)
|
|
1294
1333
|
|
|
1295
1334
|
self._phase = "installed"
|
|
1296
1335
|
|
|
@@ -1899,6 +1938,13 @@ class Rollout:
|
|
|
1899
1938
|
f"Using scraped trajectory ({len(scraped)} events) — UNTRUSTED"
|
|
1900
1939
|
)
|
|
1901
1940
|
|
|
1941
|
+
if separate_verifier_requested(getattr(self._task, "config", None)):
|
|
1942
|
+
# The verifier never runs in the agent's sandbox: a fresh one gets
|
|
1943
|
+
# only the frozen workspace.
|
|
1944
|
+
self._rewards, self._verifier_error = await run_separate_verifier(self)
|
|
1945
|
+
self._phase = "verified"
|
|
1946
|
+
return self._rewards
|
|
1947
|
+
|
|
1902
1948
|
await _publish_trajectory_for_verifier(
|
|
1903
1949
|
self._env, self._trajectory, self._rollout_paths.agent_dir
|
|
1904
1950
|
)
|
|
@@ -1933,6 +1979,14 @@ class Rollout:
|
|
|
1933
1979
|
Returns (rewards, verifier_output, verifier_error). The final
|
|
1934
1980
|
verify() still does full hardening.
|
|
1935
1981
|
"""
|
|
1982
|
+
if separate_verifier_requested(getattr(self._task, "config", None)):
|
|
1983
|
+
# Soft verification would upload tests/ into the agent's sandbox.
|
|
1984
|
+
return (
|
|
1985
|
+
None,
|
|
1986
|
+
None,
|
|
1987
|
+
"soft_verify is unavailable: the task uses a separate verifier "
|
|
1988
|
+
"sandbox, so tests never enter the agent's sandbox",
|
|
1989
|
+
)
|
|
1936
1990
|
self._rollout_paths.verifier_dir.mkdir(parents=True, exist_ok=True)
|
|
1937
1991
|
# Clean verifier output dir — chmod 777 so non-root verifier processes can write.
|
|
1938
1992
|
# Keep /app present for task/verifier paths that still use the legacy
|
|
@@ -2221,6 +2275,9 @@ class Rollout:
|
|
|
2221
2275
|
user="root",
|
|
2222
2276
|
timeout_sec=10,
|
|
2223
2277
|
)
|
|
2278
|
+
# That harness step writes /root/.gitconfig: restart the agent
|
|
2279
|
+
# phase clock so it is not listed as the solver's output.
|
|
2280
|
+
await mark_agent_phase_start(self)
|
|
2224
2281
|
self._trajectory, self._agent_name = await _run_oracle(
|
|
2225
2282
|
self._env, cfg.task_path, self._timeout, sandbox_user=None
|
|
2226
2283
|
)
|
|
@@ -166,6 +166,12 @@ class RolloutConfig:
|
|
|
166
166
|
generated_skills_root: str = GENERATED_SKILLS_ROOT
|
|
167
167
|
self_gen_no_internet: bool = False
|
|
168
168
|
skip_verify: bool = False
|
|
169
|
+
# Run the verifier in a fresh sandbox that receives only the frozen
|
|
170
|
+
# workspace, whatever the task declares (``--separate-verifier``).
|
|
171
|
+
separate_verifier: bool = False
|
|
172
|
+
# Paths outside the workspace that a separate verifier sandbox receives
|
|
173
|
+
# too, at the same path (``--separate-verifier-include``).
|
|
174
|
+
separate_verifier_include: tuple[str, ...] = ()
|
|
169
175
|
reviewer: ReviewerConfig = field(default_factory=ReviewerConfig)
|
|
170
176
|
purpose: Literal["task", "reviewer"] = "task"
|
|
171
177
|
parent_rollout: str | None = None
|
|
@@ -183,6 +189,7 @@ class RolloutConfig:
|
|
|
183
189
|
|
|
184
190
|
def __post_init__(self) -> None:
|
|
185
191
|
from benchflow._utils.config import normalize_agent_idle_timeout
|
|
192
|
+
from benchflow.task.verifier_sandbox import normalize_include_paths
|
|
186
193
|
|
|
187
194
|
if not isinstance(self.task_path, Path):
|
|
188
195
|
self.task_path = Path(self.task_path)
|
|
@@ -197,6 +204,9 @@ class RolloutConfig:
|
|
|
197
204
|
self.base_image_override = base_image
|
|
198
205
|
if self.skills_dir is not None and not isinstance(self.skills_dir, Path):
|
|
199
206
|
self.skills_dir = Path(self.skills_dir)
|
|
207
|
+
self.separate_verifier_include = normalize_include_paths(
|
|
208
|
+
self.separate_verifier_include or ()
|
|
209
|
+
)
|
|
200
210
|
self.skill_mode = normalize_skill_mode(self.skill_mode)
|
|
201
211
|
if self.artifact_skill_mode is not None:
|
|
202
212
|
self.artifact_skill_mode = normalize_skill_mode(self.artifact_skill_mode)
|
|
@@ -16,6 +16,7 @@ from __future__ import annotations
|
|
|
16
16
|
|
|
17
17
|
import json
|
|
18
18
|
import logging
|
|
19
|
+
from collections.abc import Sequence
|
|
19
20
|
from datetime import datetime
|
|
20
21
|
from pathlib import Path
|
|
21
22
|
from typing import Any, Literal
|
|
@@ -121,6 +122,8 @@ def _write_config(
|
|
|
121
122
|
started_at: datetime,
|
|
122
123
|
agent_env: dict[str, str],
|
|
123
124
|
base_image_override: str | None = None,
|
|
125
|
+
verifier_sandbox_mode: str = "shared",
|
|
126
|
+
verifier_include: Sequence[str] = (),
|
|
124
127
|
reasoning_effort: str | None = None,
|
|
125
128
|
usage_tracking: UsageTrackingConfig | None = None,
|
|
126
129
|
concurrency: int | None = None,
|
|
@@ -170,6 +173,8 @@ def _write_config(
|
|
|
170
173
|
else effective_install_timeout(agent, sandbox_setup_timeout),
|
|
171
174
|
"context_root": str(context_root) if context_root else None,
|
|
172
175
|
"base_image_override": base_image_override,
|
|
176
|
+
"verifier_sandbox_mode": verifier_sandbox_mode,
|
|
177
|
+
"verifier_include": list(verifier_include),
|
|
173
178
|
"timeout_sec": timeout,
|
|
174
179
|
"concurrency": concurrency,
|
|
175
180
|
"agent_idle_timeout_sec": agent_idle_timeout,
|