coder-eval 0.12.3__tar.gz → 0.12.5__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.
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/harness-candidates.md +13 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/agents.md +128 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/contracts.md +66 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/orchestration.md +19 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/persistence.md +88 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/reporting.md +19 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.env.example +40 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/pages-stub/index.html +2 -2
- coder_eval-0.12.5/.github/scripts/diagnose_delegate_token_claims.py +55 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/pr-checks.yml +321 -8
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.pre-commit-config.yaml +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/CHANGELOG.md +60 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/PKG-INFO +5 -4
- {coder_eval-0.12.3 → coder_eval-0.12.5}/README.md +1 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/action.yml +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/EXTENDING.md +2 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/REPORT_SCHEMA.md +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/TASK_DEFINITION_GUIDE.md +62 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/USER_GUIDE.md +2 -1
- coder_eval-0.12.5/docs/agents/DELEGATE.md +192 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/HARNESS_PARITY.md +31 -24
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/comparison.md +2 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/index.md +1 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/llms.txt +1 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/harness-badge.tsx +9 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/default.yaml +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/mkdocs.yml +4 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/criteria.md +30 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/pyproject.toml +8 -4
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/__init__.py +11 -2
- coder_eval-0.12.5/src/coder_eval/agents/delegate/.gitignore +2 -0
- coder_eval-0.12.5/src/coder_eval/agents/delegate/delegate_host.mjs +175 -0
- coder_eval-0.12.5/src/coder_eval/agents/delegate/package.json +9 -0
- coder_eval-0.12.5/src/coder_eval/agents/delegate_agent.py +1041 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/execute_command.py +28 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_command.py +94 -16
- coder_eval-0.12.5/src/coder_eval/criteria/system_one_judge.py +193 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_context.py +2 -1
- coder_eval-0.12.5/src/coder_eval/evaluation/judge_system_one.py +112 -0
- coder_eval-0.12.5/src/coder_eval/evaluation/system_one_scoring.py +199 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/agent.py +17 -8
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_emit.py +15 -11
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/packager.py +23 -16
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/portability.py +5 -3
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/isolation/docker_runner.py +1 -3
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/logging_config.py +18 -5
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/__init__.py +25 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/agent_config.py +57 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/criteria.py +181 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/enums.py +1 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/judge_defaults.py +9 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/results.py +5 -3
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/sandbox.py +4 -0
- coder_eval-0.12.5/src/coder_eval/models/system_one.py +196 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/tasks.py +2 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/batch.py +52 -13
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/config.py +77 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/experiment.py +6 -5
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/regrade.py +27 -15
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestrator.py +31 -9
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/path_utils.py +71 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/pricing.py +28 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/html.py +2 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/sandbox.py +20 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/README.md +6 -1
- coder_eval-0.12.5/tasks/delegate/fizzbuzz_delegate.yaml +24 -0
- coder_eval-0.12.5/tasks/delegate/hello_date_delegate.yaml +32 -0
- coder_eval-0.12.5/tasks/smoke_system_one_judge.yaml +105 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/task.toml +5 -0
- coder_eval-0.12.5/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +37 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/agent_roster_parity.py +4 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_golden_master.py +4 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_emit.py +52 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cleanup_preservation_guard.py +57 -9
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_telemetry.py +2 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_custom_lint.py +2 -2
- coder_eval-0.12.5/tests/test_delegate_agent.py +580 -0
- coder_eval-0.12.5/tests/test_delegate_agent_config.py +68 -0
- coder_eval-0.12.5/tests/test_delegate_agent_live.py +141 -0
- coder_eval-0.12.5/tests/test_delegate_agent_registration.py +65 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_detached_grading_boundaries.py +29 -2
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_agent.py +19 -4
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_packager.py +53 -5
- coder_eval-0.12.5/tests/test_judge_system_one.py +185 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_models.py +3 -0
- coder_eval-0.12.5/tests/test_parallel.py +463 -0
- coder_eval-0.12.5/tests/test_path_utils.py +305 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_preservation_mode.py +14 -6
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_models.py +15 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_command_junit.py +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_success_criterion_union.py +4 -0
- coder_eval-0.12.5/tests/test_system_one_judge.py +435 -0
- coder_eval-0.12.5/tests/test_system_one_judge_live.py +81 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_identity_contract.py +40 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/uv.lock +9 -8
- coder_eval-0.12.3/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -32
- coder_eval-0.12.3/tests/test_parallel.py +0 -267
- coder_eval-0.12.3/tests/test_path_utils.py +0 -131
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/code_review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.gitignore +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/.python-version +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/ADOPTERS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/CLAUDE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/LICENSE +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/Makefile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/NOTICE +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/SECURITY.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/comparison.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/package.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/osv-scanner.toml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/conftest.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_durations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_resume.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_routing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_tags.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_visible_turn_cap.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_yaml_migration.py +0 -0
|
@@ -1009,3 +1009,16 @@ re-derive from scratch.
|
|
|
1009
1009
|
f-string placeholders are `Path`s) that an AST-only rule does not have, and the existing
|
|
1010
1010
|
CLI has many pre-existing unescaped lines a literal rule would flag at once. Caught in:
|
|
1011
1011
|
Phase 5 quality review.
|
|
1012
|
+
- [ ] **A subprocess-driven agent must force-kill before dropping its process handle on
|
|
1013
|
+
EVERY dead-or-dying exit path, not just the obvious ones.** `DelegateAgent`'s
|
|
1014
|
+
`_drain_stdout` signals EOF (posts `None`) on a genuine pipe close AND on a buffer-limit
|
|
1015
|
+
overrun AND on its own unexpected exception — only the first guarantees the host already
|
|
1016
|
+
exited. Two review passes (independently) caught `communicate()`'s EOF/`fatal` branches
|
|
1017
|
+
and `_read_until`'s EOF branch clearing `self._process = None` without confirming the host
|
|
1018
|
+
was dead first, which orphans a still-alive Node host (and its interop child) rather than
|
|
1019
|
+
respawning cleanly. Fixed in all three sites; `kill_sync()` also now clears the handle.
|
|
1020
|
+
Deferred as a lint rule because the pattern ("this branch sets `self._X = None`; was a kill
|
|
1021
|
+
awaited on this path first?") needs control-flow reasoning an AST-only CE0xx rule doesn't
|
|
1022
|
+
have, and it is a recurring class ONLY within one file so far — worth promoting to a rule
|
|
1023
|
+
if a second subprocess-driven agent repeats it. Caught in: final cross-phase review,
|
|
1024
|
+
delegate agent port.
|
|
@@ -742,3 +742,131 @@ drop per-message accounting.
|
|
|
742
742
|
The classification is kept from failing open as the SDK grows: a test asserts EVERY field on
|
|
743
743
|
the SDK's options type is classified, either typed-mirrored or framework-owned, so a new SDK
|
|
744
744
|
release adding an unclassified field fails loudly instead of silently passing through.
|
|
745
|
+
|
|
746
|
+
## Delegate agent
|
|
747
|
+
|
|
748
|
+
`DelegateAgent` drives UiPath Autopilot's Delegate agent — reasoning in the UiPath backend,
|
|
749
|
+
tools executing locally through the SDK's bundled interop process. Unlike every other CLI-driven
|
|
750
|
+
agent in this file, there is no vendor-provided stdio protocol host to spawn: `@uipath/delegate-stdio`,
|
|
751
|
+
the internal package a UiPath-only sibling plugin (`coder_eval_uipath`) drives, is not public. Only
|
|
752
|
+
`@uipath/delegate-sdk` (a programmatic library exposing a `DelegateAgent` class with
|
|
753
|
+
`initialize()`/`onEvent()`/`sendMessage()`/`destroy()`) and `@uipath/delegate-cli` (a terminal wrapper
|
|
754
|
+
around it) are. So this agent ships its own first-party Node host, `agents/delegate/delegate_host.mjs`,
|
|
755
|
+
which wraps the SDK class in a newline-JSON stdio protocol this framework designed, not one it had to
|
|
756
|
+
reverse-engineer — verified live against a real `@uipath/delegate-sdk@0.1.12` install with no token,
|
|
757
|
+
confirming both the plain-public-install story and that the SDK's own event vocabulary
|
|
758
|
+
(`session_start`/`thinking`/`message`/`tool_call`/`tool_result`/`error`/`done`/`step`) substantially
|
|
759
|
+
matches the internal sibling's protocol.
|
|
760
|
+
|
|
761
|
+
**No multi-generation transcript splitting.** The internal sibling reconstructs one `AssistantMessage`
|
|
762
|
+
per backend round-trip from an `isStepStart` flag and a `turnUsages` array on the host's terminal
|
|
763
|
+
message. Neither is present on `DelegateAgent.onEvent`'s payloads (confirmed absent by grepping the
|
|
764
|
+
installed SDK bundle's string literals), so there is no reliable per-round-trip boundary signal at this
|
|
765
|
+
API layer. `DelegateAgent` builds exactly ONE `AssistantMessage` per `communicate()` call instead — a
|
|
766
|
+
deliberate simplification, not an oversight; richer segmentation can be added once a real boundary
|
|
767
|
+
signal is confirmed against a live backend. `timing.close_window` still opens that one window from the
|
|
768
|
+
turn's own start (there is nothing to tile from), so the head and tail both measure ~0.
|
|
769
|
+
|
|
770
|
+
**Deferred, not ported speculatively.** The internal sibling's module docstring documents several
|
|
771
|
+
hard-won failure-signature-specific recoveries: a Cloudflare WAF-block-page rewrite, an SSE-connect-
|
|
772
|
+
timeout rewrite, session-conflict fresh-host recovery, and first-response stall-timeout+resend. None
|
|
773
|
+
are ported here — porting a marker tuned to the internal sibling's own observed failures risks matching
|
|
774
|
+
nothing (or the wrong thing) against the public SDK/backend's actual error surface. A crash still ends
|
|
775
|
+
the turn correctly as a retryable `AgentCrashError`; it is just not specially diagnosed. Port these once
|
|
776
|
+
the same failures are actually observed running this agent for real.
|
|
777
|
+
|
|
778
|
+
**The process handle must be cleared on every path that leaves the host dead or dying** — EOF, a host
|
|
779
|
+
`fatal` message, a timeout (both the top-of-loop pre-check AND a timeout elapsing while blocked inside
|
|
780
|
+
`asyncio.wait_for`), cooperative stop, and `max_turns` exhaustion. A real bug shipped once during this
|
|
781
|
+
agent's own development: a timeout elapsing mid-read fell through to the generic crash path instead of
|
|
782
|
+
`TurnTimeoutError`, and left the process handle set, so the NEXT `communicate()` call reused a host with
|
|
783
|
+
a `"send"` still nominally in flight instead of respawning — risking a stale response being consumed as
|
|
784
|
+
the new turn's. `tests/test_delegate_agent.py`'s `test_timeout_elapsing_mid_read_still_raises_turn_timeout_error`
|
|
785
|
+
pins the fix.
|
|
786
|
+
|
|
787
|
+
**Skills mapping is deliberately NOT the shared `agents/_skills.py` resolver.** That resolver enumerates
|
|
788
|
+
individual skill directories for a repeated `--skill <dir>`-style CLI argument (OpenCode/Pi's shape).
|
|
789
|
+
The Delegate SDK's `bundledSkillsPath` wants exactly ONE parent directory whose children are skill
|
|
790
|
+
folders — a genuinely different shape — so `_resolve_bundled_skills_path` mirrors the internal sibling's
|
|
791
|
+
own mapping (`<plugin.path>/skills`, first plugin wins) instead of force-fitting the shared helper.
|
|
792
|
+
|
|
793
|
+
**Registered unconditionally**, exactly like `codex`/`antigravity` — there is no conditional-registration
|
|
794
|
+
gate keyed on an optional-dependency extra anywhere in this codebase; `opencode`/`pi` declare an EMPTY
|
|
795
|
+
extra purely as packaging-metadata documentation, and `delegate` follows that same shape (no new pip
|
|
796
|
+
package — Node/`@uipath/delegate-sdk` is the real prerequisite, resolved lazily in `start()`).
|
|
797
|
+
|
|
798
|
+
**`environment` resolution needs org/tenant SLUGS, not just IDs — confirmed by reading the installed
|
|
799
|
+
SDK's own bundle, not by guessing from its error message.** When `DELEGATE_BACKEND_URL` is absent and
|
|
800
|
+
`DELEGATE_ENV` (-> `environment` init option) is used instead, the SDK resolves the backend URL from
|
|
801
|
+
`organizationName`/`orgLogicalName` and `tenantName` fields on the `auth` object passed to
|
|
802
|
+
`initialize()` — NOT from `ORG_SLUG`/`TENANT_SLUG` read off `process.env` directly, despite that being
|
|
803
|
+
exactly what the SDK's own thrown error suggests ("set ORG_SLUG and TENANT_SLUG env vars alongside
|
|
804
|
+
ORG_ID/TENANT_ID"). That advice describes the separate `@uipath/delegate-cli`/`delegate-stdio` wrapper's
|
|
805
|
+
own env-var-driven bootstrapping, not the `DelegateAgent` class itself, which we drive directly. So
|
|
806
|
+
`_build_init_options` forwards `ORG_SLUG`/`TENANT_SLUG` (when set) into `auth.organizationName`/
|
|
807
|
+
`auth.tenantName` itself — confirmed against `node_modules/@uipath/delegate-sdk/dist/index.mjs`'s own
|
|
808
|
+
`yie()` resolver function live in CI (`pyright`/tests can't catch this class of bug; it only surfaces
|
|
809
|
+
against a real backend). `tests/test_delegate_agent.py::TestStart::test_org_and_tenant_slug_forwarded_into_auth`
|
|
810
|
+
pins it. Passing `DELEGATE_BACKEND_URL` directly instead of `DELEGATE_ENV` skips this whole path.
|
|
811
|
+
|
|
812
|
+
**Token usage comes from two getters called after `sendMessage()` resolves, not from any event or the
|
|
813
|
+
resolved value itself — confirmed by reading the installed SDK's bundle, not by guessing.** A first
|
|
814
|
+
pass guessed at a flat `usage` dict carried on the resolved `sendMessage()` value or on a forwarded
|
|
815
|
+
event, tried several plausible snake_case/camelCase bucket-name spellings, and silently returned zero
|
|
816
|
+
tokens every turn against a real backend (`tests/test_delegate_agent_live.py::test_delegate_live_token_usage_populated`
|
|
817
|
+
failed live: `record.crashed is False`, real text/tool output, `token_usage=None`). Reading
|
|
818
|
+
`node_modules/@uipath/delegate-sdk/dist/index.mjs` directly settled it: `sendMessage()` always resolves
|
|
819
|
+
to a plain string (never an object), and no event this host forwards via `agent.onEvent()` ever carries
|
|
820
|
+
a `usage` field — the SDK's own internal event vocabulary has no `"usage"` member (that name IS used
|
|
821
|
+
internally, but only inside the SDK's own Zustand store reducer that updates its "Token usage" UI
|
|
822
|
+
panel, never re-emitted through the public `onEvent` bus). The only way to reach it is
|
|
823
|
+
`DelegateAgent.getLastTurnUsage(sessionId?)` (defaults to the just-used session), so
|
|
824
|
+
`delegate_host.mjs`'s `handleSend` calls it — and `getSessionId()` — right after `sendMessage()`
|
|
825
|
+
resolves, and attaches both to the `send_ok` message itself. That getter's shape, read straight off the
|
|
826
|
+
SDK's own `setUsage` store action, is `{promptTokens, completionTokens, promptTokensCached,
|
|
827
|
+
cacheCreationTokens, turnTokenUnits, contextBreakdown}` — `promptTokens` is the TOTAL input token count
|
|
828
|
+
(OpenAI-style, cached + uncached), `promptTokensCached` the cache-READ subset of it, so
|
|
829
|
+
`_parse_usage` computes `uncached_input_tokens = promptTokens - promptTokensCached`. This is now
|
|
830
|
+
CONFIRMED, not a guess, so `_parse_usage`'s docstring no longer marks it `# UNVERIFIED`.
|
|
831
|
+
|
|
832
|
+
### Delegate agent pricing
|
|
833
|
+
|
|
834
|
+
Delegate-served models are keyed under the SDK's own hyphenated ids (e.g. `gpt-5-6-terra`) in
|
|
835
|
+
`pricing.py`'s `_PRICING` — DISTINCT keys from the dotted ids (`gpt-5.6-terra`) the claude-code/codex
|
|
836
|
+
harnesses use for the same physical models, because the Delegate backend echoes underscored ids
|
|
837
|
+
(`_` -> `-` only, never `.` -> `-`) and nothing normalizes one id family to the other. A model reachable
|
|
838
|
+
only through Delegate needs its own row here or `total_cost_usd` silently reports `None`. Several of
|
|
839
|
+
these models implicitly cache prefixes (no separate cache-write fee), so their `cache_write_per_mtok` is
|
|
840
|
+
`0.0` rather than mirroring input like most rows above them. Rates copied from the UiPath-only sibling
|
|
841
|
+
plugin's own `pricing.py`, whose own module docstring documents the same rationale.
|
|
842
|
+
|
|
843
|
+
Two things in `_DELEGATE_PRICING` look like copy errors on a skim and are not — a code review flagged
|
|
844
|
+
both before this line existed to point at.
|
|
845
|
+
|
|
846
|
+
`gpt-5-4` / `gpt-5-5` set `cache_write_per_mtok` equal to their OUTPUT rate (15.0 / 30.0), not a fraction
|
|
847
|
+
of input like every other row in the block. That is a real, documented OpenAI billing fact for these two
|
|
848
|
+
generations — cache writes billed at the full output rate — and their dotted twins in the main `_PRICING`
|
|
849
|
+
table (`gpt-5.4`, `gpt-5.5`) use the identical convention, so this is internally consistent; the numbers
|
|
850
|
+
are simply large. Only `gpt-5-6` introduced the cheaper 1.25x-input write convention this file's other
|
|
851
|
+
`gpt-5-6-*` rows use.
|
|
852
|
+
|
|
853
|
+
`gpt-5-6-sol` (5.0/30.0 here) genuinely differs from its dotted twin `gpt-5.6-sol` (4.0/20.0 in the main
|
|
854
|
+
table): a 2026-07-30 price cut was applied to the framework's dotted table for `terra`/`luna` and never
|
|
855
|
+
mirrored back into this hyphenated one (the UiPath-only sibling's own `pricing.py` carries the identical
|
|
856
|
+
un-mirrored gap, with the same caveat comment). The two tables can price the SAME physical model
|
|
857
|
+
differently until someone reconciles them — a known, pre-existing state, not something this port
|
|
858
|
+
introduced or should silently "fix" by picking one number over the other.
|
|
859
|
+
|
|
860
|
+
### Delegate agent golden-master and timing-identity coverage
|
|
861
|
+
|
|
862
|
+
`AgentKind.DELEGATE` is excluded from `tests/test_agent_golden_master.py`'s `_NO_GOLDEN_COVERAGE`
|
|
863
|
+
allowlist rather than given fixture scenarios: a golden snapshot pins a byte-identical `TurnRecord`
|
|
864
|
+
for a scripted event stream, and every event field name below the confirmed `type`/`content`/
|
|
865
|
+
`toolName`/`sessionId`/`model`/`usage` set is a guess (see this file's own "Delegate agent" section
|
|
866
|
+
above and `delegate_agent.py`'s module docstring). Snapshotting a guess would make it look verified.
|
|
867
|
+
Add real scenarios once the fields are confirmed against a live backend.
|
|
868
|
+
|
|
869
|
+
This does NOT extend to `tests/test_timing_identity_contract.py::test_delegate_buckets_tile_the_turn`,
|
|
870
|
+
which IS a real, unexempted case: the ms-exact four-bucket identity depends only on this agent's own
|
|
871
|
+
`close_window`/`_finalize_turn` code (a single window per turn, opened at `_TurnState.__init__` and
|
|
872
|
+
closed at finalize), never on the SDK's field names, so there is nothing unverified for it to guess at.
|
|
@@ -391,3 +391,69 @@ with a plain synchronous call, because offloading a single fast syscall only wid
|
|
|
391
391
|
cancellation window. The cleanup itself is deliberately synchronous: a bare `await` inside
|
|
392
392
|
`finally` is cancellable, and cancelling as that line is reached would skip cleanup and leak
|
|
393
393
|
the copy with no reaper.
|
|
394
|
+
|
|
395
|
+
## System One rubric scoring
|
|
396
|
+
|
|
397
|
+
A System One model (TypeSafe's `jev`) does not generate text. It reads one state and answers
|
|
398
|
+
a map of typed questions — `noul` (P(yes)), `choice` (a distribution over options), `score` (a
|
|
399
|
+
distribution over ordered levels) — with calibrated probabilities. That inverts what a judge
|
|
400
|
+
criterion has to defend against. There is no prose to parse, so the whole `submit_verdict`
|
|
401
|
+
tool channel has no counterpart here: the response schema is fixed by the questions that were
|
|
402
|
+
asked, and a model that answers off-schema is a wire fault, not a grading fault. It also means
|
|
403
|
+
there is no system prompt to hold an identity, so the transcript's system-prompt slot carries
|
|
404
|
+
the rubric as sent — that, not a persona, is what a reviewer needs to replay a grade.
|
|
405
|
+
|
|
406
|
+
### The score is ours, not the model's
|
|
407
|
+
|
|
408
|
+
The model reports a distribution; the grade is arithmetic we do on it. Each question resolves
|
|
409
|
+
to a value in [0.0, 1.0] through the author's own `expected` / `values`, and the criterion
|
|
410
|
+
score is their weighted mean. Keeping that reduction on our side buys three things a text
|
|
411
|
+
judge cannot have: the same answers always produce the same grade, the arithmetic is printable
|
|
412
|
+
(`findings` carries one line per question, with the value and the weight), and a rubric can be
|
|
413
|
+
re-scored from an archived transcript without another call.
|
|
414
|
+
|
|
415
|
+
`scoring: expected` weights every outcome by its probability, so a model that is genuinely
|
|
416
|
+
torn lands mid-scale instead of being rounded into a confident-looking verdict — the point of
|
|
417
|
+
a calibrated model. `argmax` exists for the case where partial credit is misleading rather
|
|
418
|
+
than informative: a gate. The default is `expected` because discarding the confidence is the
|
|
419
|
+
lossy choice and should be the one you ask for.
|
|
420
|
+
|
|
421
|
+
A distribution that is absent, non-numeric or sums to zero falls back to the point answer
|
|
422
|
+
(`choice` / `score` / `noul`) rather than grading as 0.0 — a broken `probabilities` block is a
|
|
423
|
+
provider fault, and the point answer is still a real answer. A question that is *unanswered*,
|
|
424
|
+
or answered with the wrong primitive, is the opposite case: it scores 0.0 at its full weight
|
|
425
|
+
and names itself in `findings`, because the rubric asked something the grade depends on and
|
|
426
|
+
dropping it would quietly inflate the mean.
|
|
427
|
+
|
|
428
|
+
### What it does not share with `llm_judge`
|
|
429
|
+
|
|
430
|
+
It does not read `checker_context.api_route`. The eval route resolves a TEXT judge model, and
|
|
431
|
+
substituting one for a System One model is not a fallback, it is a different API. The
|
|
432
|
+
credential comes from the env var *named* by `api_key_env`, so only the name is ever stored on
|
|
433
|
+
the criterion or persisted into a run record. A transport failure raises
|
|
434
|
+
`JudgeInfrastructureError` and escalates the row, rather than following `llm_judge`'s
|
|
435
|
+
unconfigured-transport arm into a scored 0.0 — an ungraded row must not read as a failed one.
|
|
436
|
+
|
|
437
|
+
A 200 response whose body carries no usable `answers` map is the same class of fault. Reducing
|
|
438
|
+
it would score every question "no answer returned" and finalize the row as a graded 0.0, which
|
|
439
|
+
reads as a failure the agent earned; it escalates instead.
|
|
440
|
+
|
|
441
|
+
### Non-finite values fail CLOSED
|
|
442
|
+
|
|
443
|
+
`json.loads` accepts the `NaN` and `Infinity` tokens, so a non-finite float arrives through an
|
|
444
|
+
ordinary 200 — and `base_url` may point at any gateway. NaN is unordered, so the obvious clamp
|
|
445
|
+
`max(0.0, min(1.0, x))` returns **1.0** for it: the naive reading of a malformed answer is FULL
|
|
446
|
+
credit. Every wire value is therefore checked with `math.isfinite` before it is used (`_is_number`),
|
|
447
|
+
`_clamp` maps a non-finite input to 0.0, and a question's `weight` is bounded and rejects inf/NaN
|
|
448
|
+
so the weighted mean cannot become `inf/inf`. The rule is that an unusable answer never earns
|
|
449
|
+
credit; it scores 0.0 and says so in `findings`.
|
|
450
|
+
|
|
451
|
+
`argmax` uses a strict `> 0.5` for `noul`. At exactly 0.5 the agreement is 0.5 whichever way
|
|
452
|
+
`expected` points, so `>=` passed a maximally uncertain answer in *both* directions.
|
|
453
|
+
|
|
454
|
+
### The reference scrub runs before serialization
|
|
455
|
+
|
|
456
|
+
`system_one_judge` persists its state as `json.dumps(state)`, which escapes newlines and tabs.
|
|
457
|
+
`scrub_reference` matches raw file text, so scrubbing the *rendered* JSON silently misses every
|
|
458
|
+
multi-line reference. The state's strings are scrubbed first, then serialized — a leak shipped
|
|
459
|
+
exactly this way, so the leak-canary test uses a multi-line, quoted reference on purpose.
|
|
@@ -759,6 +759,25 @@ It RAISES rather than guessing when neither is conclusive. Guessing is worse tha
|
|
|
759
759
|
grading the wrong directory makes every path-relative criterion fail as a locating
|
|
760
760
|
artifact rather than as a verdict, and reports that as an ordinary score.
|
|
761
761
|
|
|
762
|
+
A resolved `artifacts_dir_template` is passed in as a SECOND TRUSTED ROOT and preferred as
|
|
763
|
+
the candidate, since that template may place artifacts outside `run_dir` entirely. Note the
|
|
764
|
+
direction: the roots were WIDENED, never the check relaxed — roots stay operator-supplied,
|
|
765
|
+
candidates stay untrusted. Without it, `--resume` over a decoupled layout failed the
|
|
766
|
+
containment check, fell through to a `run_dir/artifacts` that did not exist, and raised
|
|
767
|
+
`RegradeError`. An artifacts dir that exists outranks the recorded `sandbox_path`, which is
|
|
768
|
+
merely what the run claimed.
|
|
769
|
+
|
|
770
|
+
Only `--resume` (`run_command.py`'s `_grade_resumed_tasks`) passes the resolved
|
|
771
|
+
`artifacts_dir` — it has the run's own `BatchRunConfig` in hand, so `resolve_artifacts_dir`
|
|
772
|
+
needs no new state. Detached `coder-eval evaluate <run_dir>` does not: it has no
|
|
773
|
+
`BatchRunConfig` to resolve a template from, only the untrusted `task.json` it's grading, and
|
|
774
|
+
trusting THAT to widen its own containment root would defeat the check the widening exists
|
|
775
|
+
to keep intact. A run made with a non-default `artifacts_dir_template` therefore still needs
|
|
776
|
+
`--workspace` passed explicitly to `evaluate` — the same escape hatch `RegradeError` already
|
|
777
|
+
names. Not a regression: `evaluate` never auto-located such a workspace before this template
|
|
778
|
+
existed either, and the alternative (trusting the recorded path) reopens the class of bug the
|
|
779
|
+
previous paragraph describes.
|
|
780
|
+
|
|
762
781
|
**Every return goes through the containment check, rooted at the RUN DIRECTORY.** Both
|
|
763
782
|
`sandbox_path` and `task_id` are unvalidated strings out of the run's own `task.json`, so
|
|
764
783
|
`"../../../../home/victim"` joins to a real directory `is_dir()` happily confirms. The
|
|
@@ -69,6 +69,94 @@ trajectory log the run had already paid for. `grade.docker.log` exists for the s
|
|
|
69
69
|
one layer down: on the `run --resume` path `docker.log` is already the executed
|
|
70
70
|
container's log.
|
|
71
71
|
|
|
72
|
+
## The run layout as two directory templates
|
|
73
|
+
|
|
74
|
+
`logging_dir_template` and `artifacts_dir_template` (`BatchRunConfig`, resolved by
|
|
75
|
+
`path_utils.resolve_dir_template`) describe where a task's bookkeeping and its artifacts
|
|
76
|
+
go. They are resolved LATE — per task, which is the only point where `${variant}`,
|
|
77
|
+
`${task}` and `${repeat}` exist at all — and they are INDEPENDENT: artifacts nesting under
|
|
78
|
+
the logging dir is a default, not a law.
|
|
79
|
+
|
|
80
|
+
That independence is the point. Harbor puts logs in its own agent logs dir and artifacts at
|
|
81
|
+
the container's WORKDIR, two unrelated parts of the filesystem, and because artifacts were
|
|
82
|
+
never a child of the logging dir there is nothing to copy and nothing lands twice. The
|
|
83
|
+
previous design reached the same end state with a `--workspace-dir`/`--artifacts-dir` pair
|
|
84
|
+
that had to be passed the SAME path so an equality check could infer "don't copy"; a
|
|
85
|
+
coincidence standing in for an intention.
|
|
86
|
+
|
|
87
|
+
An override needs no special-casing anywhere, because substituting a template that contains
|
|
88
|
+
no placeholders is the identity function: `/work/output` in, `/work/output` out, down the
|
|
89
|
+
same code path as the default. The defaults spell out the historical layout, so an
|
|
90
|
+
unspecified run writes byte-identical paths — asserted in `test_path_utils.py` against the
|
|
91
|
+
literal old layout rather than against `build_task_run_dir`, which now calls the resolver
|
|
92
|
+
and would make the test vacuous.
|
|
93
|
+
|
|
94
|
+
Two implementation constraints, both load-bearing:
|
|
95
|
+
|
|
96
|
+
- **`string.Template`, never `re.sub`.** `re.sub` interprets backslashes in the
|
|
97
|
+
REPLACEMENT, so a Windows `run_dir` of `C:\runs\2026` comes out mangled.
|
|
98
|
+
- **`${task}` may contain a separator.** A dataset-expanded `task_id` is
|
|
99
|
+
`"<task>/<row>"` (`expand_dataset`, whose row ids are validated precisely because they
|
|
100
|
+
become directories), so it nests — on Windows too, where `pathlib` splits on both
|
|
101
|
+
separators.
|
|
102
|
+
|
|
103
|
+
`${task}` appears twice in the artifacts default (`.../${task}/${repeat}/artifacts/${task}`)
|
|
104
|
+
because that IS the layout on disk: the per-task run dir carries it, and
|
|
105
|
+
`preserve_to`/`capture_to`/DIRECT_WRITE each appended it again. Kept for compatibility, and
|
|
106
|
+
now one string to change rather than five call sites. The `*_as` variants
|
|
107
|
+
(`preserve_as`/`capture_as`) exist so a caller-supplied artifacts dir is used as the FINAL
|
|
108
|
+
path instead of having `task_id` appended to it a second time; `preserve_to`/`capture_to`
|
|
109
|
+
remain as the parent-relative wrappers.
|
|
110
|
+
|
|
111
|
+
### What run_dir still owns
|
|
112
|
+
|
|
113
|
+
`${run_dir}` is only a placeholder VALUE. But run-LEVEL files — `run.json`, `run.md`,
|
|
114
|
+
`experiment.*`, `resume_fingerprint.json` — still follow `--run-dir`, and its default is
|
|
115
|
+
CWD-RELATIVE (`runs/<timestamp>`, `config.py`). Omitting `--run-dir` therefore does not
|
|
116
|
+
leave those files harmlessly uncollected; when cwd is the agent's WORKDIR it writes them
|
|
117
|
+
INSIDE the workspace, polluting the very directory `artifacts_dir_template` names.
|
|
118
|
+
Confirmed live: `artifacts/work/runs/<timestamp>/run.json` in a collected Harbor trial.
|
|
119
|
+
Harbor consequently passes `--run-dir /tmp/coder-eval-run`, a throwaway path outside the
|
|
120
|
+
workspace.
|
|
121
|
+
|
|
122
|
+
Anything that used to DISCOVER per-task files by walking `run_dir` had to be given the
|
|
123
|
+
resolved logging dirs instead, because they need not live under `run_dir` at all and the
|
|
124
|
+
walk silently finds nothing: `atif_emit.emit_trajectories_for_run` (which would emit no
|
|
125
|
+
trajectory, leaving Harbor's token/cost totals empty) and
|
|
126
|
+
`logging_config.aggregate_task_logs` (which would write an empty `experiment.log`).
|
|
127
|
+
|
|
128
|
+
### A static template is single-task only
|
|
129
|
+
|
|
130
|
+
A placeholder-free template is the identity function, so every task in a multi-task
|
|
131
|
+
`run`/`execute` would resolve `--logging-dir`/`--artifacts-dir` to the SAME directory and
|
|
132
|
+
overwrite each other's `task.json`/artifacts. `run_batch` refuses this loud
|
|
133
|
+
(`ValueError`) when `len(resolved_tasks) > 1` and either template has no `${...}`
|
|
134
|
+
placeholders (`path_utils.dir_template_is_static`), mirroring the pre-existing
|
|
135
|
+
`--workspace-dir` + multi-task rejection. Static paths exist for exactly the single-task
|
|
136
|
+
case below.
|
|
137
|
+
|
|
138
|
+
### A flat run_dir needs no special case in run_batch
|
|
139
|
+
|
|
140
|
+
Harbor's single-task, static-template mode writes `task.json`/`task.html`/`task.log`/
|
|
141
|
+
artifacts flat at the top-level `run_dir` instead of the usual
|
|
142
|
+
`<variant>/<task_id>/<NN>` nesting -- the multi-task guard above already guarantees
|
|
143
|
+
exactly one resolved task here, so that nesting only exists to disambiguate siblings that
|
|
144
|
+
can't occur. A flat `run_dir` also means `trajectory.json` (`emit_trajectories_for_run`'s
|
|
145
|
+
sibling write) lands at a fixed, predictable path instead of requiring a recursive glob.
|
|
146
|
+
`run_batch`'s `run_single` needs no `workspace_dir` special case for this: `rt.run_dir` IS
|
|
147
|
+
the resolved `logging_dir_template`, so "flat" is simply what a static template resolves
|
|
148
|
+
to, not a mode this seam has to detect.
|
|
149
|
+
|
|
150
|
+
### CoderEvalAgent passes both templates as static paths
|
|
151
|
+
|
|
152
|
+
`harbor/agent.py`'s `CoderEvalAgent.run()` passes `--logging-dir`/`--artifacts-dir` as two
|
|
153
|
+
STATIC paths (Harbor's own agent logs dir, and the container's WORKDIR via `$(pwd)`) rather
|
|
154
|
+
than templates with placeholders — the case the identity-function property above exists for.
|
|
155
|
+
Because artifacts are no longer a child of the logging dir, nothing lands twice; because the
|
|
156
|
+
artifacts destination IS the workspace, `capture_as`'s self-referential guard makes the copy
|
|
157
|
+
a no-op. `--run-dir` still points at `_THROWAWAY_RUN_DIR` (`/tmp/coder-eval-run`), never
|
|
158
|
+
substituted into either template, for the reason in "What run_dir still owns" above.
|
|
159
|
+
|
|
72
160
|
## Judge persistence
|
|
73
161
|
|
|
74
162
|
A judge transcript — tool calls, raw verdict, rendered prompt, system prompt — runs 10-100
|
|
@@ -453,6 +453,25 @@ container, never where the verifier looks. Confirmed live — the agent's output
|
|
|
453
453
|
every criterion scored 0 as "file does not exist". `$(pwd)` is resolved by the container's
|
|
454
454
|
shell at exec time and equals the WORKDIR because the exec is given no explicit cwd.
|
|
455
455
|
|
|
456
|
+
### The artifacts default is CONTAINER_WORK_DIR, not a required field
|
|
457
|
+
|
|
458
|
+
Harbor's own artifact collection runs after the agent phase but before the verifier and
|
|
459
|
+
container teardown, snapshotting `task.toml`'s `artifacts` source to
|
|
460
|
+
`<trial>/artifacts/<source stripped of its leading slash>/` on the host.
|
|
461
|
+
`CoderEvalAgent`'s `--workspace-dir "$(pwd)"` runs the agent in-place at the container's
|
|
462
|
+
WORKDIR and skips coder-eval's own copy-out, so without an `artifacts` entry nothing the
|
|
463
|
+
agent produced would ever be visible on the host.
|
|
464
|
+
|
|
465
|
+
Defaults to `CONTAINER_WORK_DIR` (`/work`, coder-eval's own image WORKDIR) rather than
|
|
466
|
+
requiring every task/experiment to restate it — a package exported by coder-eval needs
|
|
467
|
+
coder-eval installed in the image, which in practice means derived from
|
|
468
|
+
`coder-eval-agent` (a mismatch already warns; see `_MISSING_CODER_EVAL_WARNING`). Unlike
|
|
469
|
+
`[environment].workdir` above — deliberately left unset so the container's own WORKDIR
|
|
470
|
+
decides `docker exec -w` — guessing wrong here is not fatal: a nonexistent source is a
|
|
471
|
+
best-effort collection miss recorded in the artifact manifest, not an exit 127. Declared
|
|
472
|
+
as a plain string, not an `ArtifactConfig` table, because Harbor normalizes
|
|
473
|
+
`artifacts = ["/x"]` to `ArtifactConfig(source="/x")` itself.
|
|
474
|
+
|
|
456
475
|
### What the export carries, and what it refuses to carry
|
|
457
476
|
|
|
458
477
|
No Dockerfile is written unless the task sets `sandbox.docker.dockerfile_path` — only
|
|
@@ -31,6 +31,14 @@ LOG_TO_FILE=false # Set to true to enable file logging
|
|
|
31
31
|
# BEDROCK_MODEL="eu.anthropic.claude-sonnet-4-5-20250929-v1:0"
|
|
32
32
|
# BEDROCK_SMALL_MODEL="eu.anthropic.claude-haiku-4-5"
|
|
33
33
|
|
|
34
|
+
# TypeSafe System One (the system_one_judge criterion, model `jev`). NOT routed
|
|
35
|
+
# through API_BACKEND — a System One model answers typed questions with
|
|
36
|
+
# probabilities rather than text, so it is its own endpoint and its own key.
|
|
37
|
+
# The criterion stores only this variable's NAME (api_key_env), never the token.
|
|
38
|
+
# Unlike llm_judge, a missing key escalates the row to ERROR instead of scoring
|
|
39
|
+
# it 0.0: an ungraded row must not read as a failed one.
|
|
40
|
+
# TYPESAFE_API_KEY="<your_typesafe_api_key_here>"
|
|
41
|
+
|
|
34
42
|
# Codex agent settings (requires the [codex] extra: `uv sync --extra codex`).
|
|
35
43
|
# Only CODEX_API_KEY is read for auth (sent as a Bearer token). CODEX_BASE_URL
|
|
36
44
|
# routes to a custom OpenAI-/responses-compatible endpoint; unset = standard
|
|
@@ -80,6 +88,38 @@ LOG_TO_FILE=false # Set to true to enable file logging
|
|
|
80
88
|
# Off by default. Do NOT enable on developer workstations.
|
|
81
89
|
# CODER_EVAL_REMEDIATE_HOME_PLUGINS=0
|
|
82
90
|
|
|
91
|
+
# Delegate agent settings (UiPath Autopilot's Delegate agent, requires Node.js
|
|
92
|
+
# on PATH plus `npm install @uipath/delegate-sdk` — a genuinely public package,
|
|
93
|
+
# no token needed). See docs/agents/DELEGATE.md.
|
|
94
|
+
#
|
|
95
|
+
# DELEGATE_SDK_NODE_MODULES / DELEGATE_SDK_PATH — override the auto-located
|
|
96
|
+
# install (ancestor-walk from cwd, plus home); set at most one.
|
|
97
|
+
# DELEGATE_SDK_NODE_MODULES="/path/to/install/root"
|
|
98
|
+
# DELEGATE_SDK_PATH="/path/to/node_modules/@uipath/delegate-sdk/dist/index.mjs"
|
|
99
|
+
#
|
|
100
|
+
# DELEGATE_ENV — cloud environment slug (alpha/staging/production/localhost),
|
|
101
|
+
# used to derive the backend URL from the auth record's org/tenant slugs.
|
|
102
|
+
# DELEGATE_ENV="alpha"
|
|
103
|
+
#
|
|
104
|
+
# DELEGATE_BACKEND_URL — pin the full agent-service URL directly instead
|
|
105
|
+
# (wins over DELEGATE_ENV when both are set).
|
|
106
|
+
# DELEGATE_BACKEND_URL="https://cloud.uipath.com/<org>/<tenant>/delegate_"
|
|
107
|
+
#
|
|
108
|
+
# Auth: either the token set below, or a prior `delegate-sdk`/`delegate-cli`
|
|
109
|
+
# login that wrote ~/.aria/sdk-auth.json (read by the Node host itself, not
|
|
110
|
+
# by coder_eval). Each var also accepts a DELEGATE_-namespaced spelling
|
|
111
|
+
# (DELEGATE_AUTH_TOKEN, DELEGATE_TENANT_ID, ...), checked first -- prefer that
|
|
112
|
+
# spelling in a shared environment, since the bare names collide with what
|
|
113
|
+
# other tooling (npm, Vault, Terraform) commonly exports.
|
|
114
|
+
# AUTH_TOKEN="..."
|
|
115
|
+
# TENANT_ID="..."
|
|
116
|
+
# ORG_ID="..."
|
|
117
|
+
# With DELEGATE_ENV (not DELEGATE_BACKEND_URL) also set these two -- the
|
|
118
|
+
# human-readable org/tenant names, not the GUIDs above -- or init fails with
|
|
119
|
+
# "--env alpha needs org/tenant slugs". See docs/agents/DELEGATE.md.
|
|
120
|
+
# ORG_SLUG="..."
|
|
121
|
+
# TENANT_SLUG="..."
|
|
122
|
+
|
|
83
123
|
# Usage Telemetry (anonymous; on by default).
|
|
84
124
|
# Disable entirely:
|
|
85
125
|
# TELEMETRY_ENABLED=false
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
-->
|
|
13
13
|
<meta
|
|
14
14
|
name="description"
|
|
15
|
-
content="Coder Eval is Playwright for coding agents: an open-source, agent-agnostic framework for evaluating and benchmarking AI coding agents and their skills — sandboxed runs of Claude Code, Codex, Antigravity (Gemini), OpenCode, or
|
|
15
|
+
content="Coder Eval is Playwright for coding agents: an open-source, agent-agnostic framework for evaluating and benchmarking AI coding agents and their skills — sandboxed runs of Claude Code, Codex, Antigravity (Gemini), OpenCode, Pi, or Delegate against declarative YAML tasks, with weighted scoring and CI gates. Documentation: coder-eval.com/docs"
|
|
16
16
|
/>
|
|
17
17
|
|
|
18
18
|
<!--
|
|
@@ -227,7 +227,7 @@
|
|
|
227
227
|
<p class="lead">
|
|
228
228
|
<strong>Playwright for coding agents.</strong> An open-source, agent-agnostic framework for
|
|
229
229
|
evaluating and benchmarking AI coding agents and their skills: it runs a real agent — Claude
|
|
230
|
-
Code, Codex, Antigravity (Gemini), OpenCode, or
|
|
230
|
+
Code, Codex, Antigravity (Gemini), OpenCode, Pi, or Delegate — in a sandbox against declarative YAML
|
|
231
231
|
tasks, then scores the files and commands the agent actually produced.
|
|
232
232
|
</p>
|
|
233
233
|
<p class="notice">
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Print MATCH/NO MATCH verdicts for a ROPC-minted Delegate token's org/tenant claims.
|
|
2
|
+
|
|
3
|
+
Used by the `delegate-live-tests` job in ../workflows/pr-checks.yml. Takes the
|
|
4
|
+
token's base64url-encoded JWT payload (argv[1]; never the full token) and
|
|
5
|
+
compares its account/org and tenant claims against the DELEGATE_ORG_ID /
|
|
6
|
+
DELEGATE_TENANT_ID secrets (read from the environment, never printed
|
|
7
|
+
directly -- GitHub Actions auto-masks any exact secret value in log output,
|
|
8
|
+
so a raw side-by-side print would be unreliable for a human to eyeball).
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import base64
|
|
14
|
+
import json
|
|
15
|
+
import os
|
|
16
|
+
import sys
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
ORG_CANDIDATES = ["account_id", "accountId", "organizationId", "organization_id"]
|
|
20
|
+
TENANT_CANDIDATES = ["prt_id", "tenant_id", "tenantId"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _decode_claims(payload: str) -> dict[str, object]:
|
|
24
|
+
padded = payload + "=" * (-len(payload) % 4)
|
|
25
|
+
decoded = json.loads(base64.urlsafe_b64decode(padded))
|
|
26
|
+
if not isinstance(decoded, dict):
|
|
27
|
+
raise SystemExit(f"token payload is {type(decoded).__name__}, not a JSON object")
|
|
28
|
+
return decoded
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _print_verdict(claims: dict[str, object], candidates: list[str], expected: str, label: str) -> None:
|
|
32
|
+
found = {k: claims[k] for k in candidates if k in claims}
|
|
33
|
+
if not found:
|
|
34
|
+
print(f"{label}: token carries none of {candidates} -- cannot verify")
|
|
35
|
+
return
|
|
36
|
+
for key, value in found.items():
|
|
37
|
+
verdict = "MATCH" if value == expected else "NO MATCH"
|
|
38
|
+
print(f"{label} claim {key}: {verdict} against DELEGATE_{label}_ID")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def main() -> None:
|
|
42
|
+
claims = _decode_claims(sys.argv[1])
|
|
43
|
+
_print_verdict(claims, ORG_CANDIDATES, os.environ["EXPECTED_ORG_ID"], "ORG")
|
|
44
|
+
_print_verdict(claims, TENANT_CANDIDATES, os.environ["EXPECTED_TENANT_ID"], "TENANT")
|
|
45
|
+
print(f"All claim keys present on token (names only, no values): {sorted(claims.keys())}")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if __name__ == "__main__":
|
|
49
|
+
# Advisory only: never let a diagnostic failure (a malformed argv, a
|
|
50
|
+
# missing EXPECTED_* var) gate the real `coder-eval run` this step exists
|
|
51
|
+
# to help explain, rather than mask.
|
|
52
|
+
try:
|
|
53
|
+
main()
|
|
54
|
+
except Exception as exc:
|
|
55
|
+
print(f"claims diagnostic unavailable: {exc}")
|