coder-eval 0.12.3__tar.gz → 0.12.4__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.4}/.claude/notes/orchestration.md +19 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/persistence.md +88 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/reporting.md +19 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/CHANGELOG.md +23 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/PKG-INFO +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/action.yml +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/pyproject.toml +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/execute_command.py +28 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/run_command.py +94 -16
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/agent.py +17 -8
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/atif_emit.py +15 -11
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/packager.py +23 -16
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/isolation/docker_runner.py +1 -3
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/logging_config.py +18 -5
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/batch.py +52 -13
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/config.py +77 -2
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/experiment.py +6 -5
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/regrade.py +20 -15
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestrator.py +31 -9
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/path_utils.py +71 -2
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/sandbox.py +20 -2
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/task.toml +3 -0
- coder_eval-0.12.4/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +37 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_atif_emit.py +52 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cleanup_preservation_guard.py +57 -9
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_telemetry.py +2 -2
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_detached_grading_boundaries.py +4 -2
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_agent.py +19 -4
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_packager.py +53 -5
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_models.py +3 -0
- coder_eval-0.12.4/tests/test_parallel.py +463 -0
- coder_eval-0.12.4/tests/test_path_utils.py +305 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_preservation_mode.py +14 -6
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_command_junit.py +1 -1
- {coder_eval-0.12.3 → coder_eval-0.12.4}/uv.lock +1 -1
- 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.4}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/agents.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.env.example +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/code_review.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/pr-checks.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.gitignore +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/.python-version +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/ADOPTERS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/CLAUDE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/LICENSE +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/Makefile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/NOTICE +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/SECURITY.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/comparison.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docker/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/TASK_DEFINITION_GUIDE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/HARNESS_PARITY.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/comparison.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/index.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/llms.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/package.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/default.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/litellm/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/mkdocs.yml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/osv-scanner.toml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/conftest.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_durations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_logging.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_registry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reports.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_resume.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_routing.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_stats.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_tags.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timing_identity_contract.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_utils.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_visible_turn_cap.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.3 → coder_eval-0.12.4}/tests/test_yaml_migration.py +0 -0
|
@@ -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
|
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.4 (2026-09-18)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **ci**: Silence bandit B108 on the throwaway Harbor run-dir path
|
|
10
|
+
([#189](https://github.com/UiPath/coder_eval/pull/189),
|
|
11
|
+
[`db7f27c`](https://github.com/UiPath/coder_eval/commit/db7f27c7137fdb173c71948af8ec0389becd84e9))
|
|
12
|
+
|
|
13
|
+
- **orchestration**: Close blockers from the dir-template review round 2
|
|
14
|
+
([#189](https://github.com/UiPath/coder_eval/pull/189),
|
|
15
|
+
[`db7f27c`](https://github.com/UiPath/coder_eval/commit/db7f27c7137fdb173c71948af8ec0389becd84e9))
|
|
16
|
+
|
|
17
|
+
- **orchestration**: Close code-review gaps in the dir-template split
|
|
18
|
+
([#189](https://github.com/UiPath/coder_eval/pull/189),
|
|
19
|
+
[`db7f27c`](https://github.com/UiPath/coder_eval/commit/db7f27c7137fdb173c71948af8ec0389becd84e9))
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
- **orchestration**: Describe the run layout as two independent directory templates
|
|
24
|
+
([#189](https://github.com/UiPath/coder_eval/pull/189),
|
|
25
|
+
[`db7f27c`](https://github.com/UiPath/coder_eval/commit/db7f27c7137fdb173c71948af8ec0389becd84e9))
|
|
26
|
+
|
|
27
|
+
|
|
5
28
|
## v0.12.3 (2026-09-17)
|
|
6
29
|
|
|
7
30
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: coder-eval
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.4
|
|
4
4
|
Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi) with sandboxed, reproducible YAML task suites.
|
|
5
5
|
Project-URL: Homepage, https://coder-eval.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/coder_eval
|
|
@@ -25,7 +25,7 @@ inputs:
|
|
|
25
25
|
version:
|
|
26
26
|
description: coder-eval version to install from PyPI, or "local" to install from the action checkout
|
|
27
27
|
required: false
|
|
28
|
-
default: "0.12.
|
|
28
|
+
default: "0.12.4" # <-- kept in sync with releases by release.yml
|
|
29
29
|
extras:
|
|
30
30
|
description: >-
|
|
31
31
|
Comma-separated coder-eval extras (`codex`, `antigravity,litellm`), composed
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "coder-eval",
|
|
4
4
|
"displayName": "Coder Eval",
|
|
5
|
-
"version": "0.12.
|
|
5
|
+
"version": "0.12.4",
|
|
6
6
|
"description": "Test whether your Claude Code skills actually trigger, and benchmark any coding agent — author, run, and analyze the eval suite that proves it, locally or as a CI gate.",
|
|
7
7
|
"author": { "name": "UiPath", "email": "coder-eval@uipath.com", "url": "https://github.com/UiPath/coder_eval" },
|
|
8
8
|
"homepage": "https://coder-eval.com",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "coder-eval"
|
|
3
|
-
version = "0.12.
|
|
3
|
+
version = "0.12.4"
|
|
4
4
|
description = "Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi) with sandboxed, reproducible YAML task suites."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -189,13 +189,38 @@ def execute_command(
|
|
|
189
189
|
"--workspace-dir",
|
|
190
190
|
help=(
|
|
191
191
|
"Run the single resolved task's agent in-place at this absolute path instead of the "
|
|
192
|
-
"standard
|
|
192
|
+
"standard artifacts workspace named by --artifacts-dir (copied out there at "
|
|
193
193
|
"cleanup). Requires exactly one resolved task; refused for sandbox.driver: docker "
|
|
194
194
|
"(the docker driver already aligns automatically via sandbox.docker.working_dir). "
|
|
195
195
|
"Meant for a Harbor `CoderEvalAgent` invocation, so the agent's writes land at the "
|
|
196
196
|
"container's own WORKDIR, where Harbor's verifier phase looks for them."
|
|
197
197
|
),
|
|
198
198
|
),
|
|
199
|
+
logging_dir: str | None = typer.Option(
|
|
200
|
+
None,
|
|
201
|
+
"--logging-dir",
|
|
202
|
+
help=(
|
|
203
|
+
"Where task.json/task.log go, as a path template. Placeholders: ${run_dir}, "
|
|
204
|
+
"${variant}, ${task}, ${repeat}. Default reproduces <run_dir>/<variant>/<task>/<NN>. "
|
|
205
|
+
"A static path (e.g. /logs/agent) resolves every task to itself, so it is only for a "
|
|
206
|
+
"single-task run (e.g. Harbor); refused for sandbox.driver: docker and for more than "
|
|
207
|
+
"one resolved task."
|
|
208
|
+
),
|
|
209
|
+
),
|
|
210
|
+
artifacts_dir: str | None = typer.Option(
|
|
211
|
+
None,
|
|
212
|
+
"--artifacts-dir",
|
|
213
|
+
help=(
|
|
214
|
+
"Where the agent's artifacts go -- the FINAL directory, same placeholders as "
|
|
215
|
+
"--logging-dir, and independent of it (Harbor puts logs at /logs/agent and "
|
|
216
|
+
"artifacts at the container's WORKDIR). When it already holds the workspace "
|
|
217
|
+
"there is nothing to copy. Default reproduces <run_dir>/<variant>/<task>/<NN>/"
|
|
218
|
+
"artifacts/<task>. A static path is only for a single-task run; refused for "
|
|
219
|
+
"sandbox.driver: docker (the in-container Orchestrator has no way to receive it) "
|
|
220
|
+
"and for more than one resolved task, and refused together with --resume (it would "
|
|
221
|
+
"clear an operator-supplied tree the harness did not create)."
|
|
222
|
+
),
|
|
223
|
+
),
|
|
199
224
|
) -> None:
|
|
200
225
|
"""Run evaluation tasks WITHOUT checking their success criteria.
|
|
201
226
|
|
|
@@ -250,4 +275,6 @@ def execute_command(
|
|
|
250
275
|
set_overrides=set_overrides,
|
|
251
276
|
format=format,
|
|
252
277
|
workspace_dir=workspace_dir,
|
|
278
|
+
logging_dir=logging_dir,
|
|
279
|
+
artifacts_dir=artifacts_dir,
|
|
253
280
|
)
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import logging
|
|
5
5
|
import os
|
|
6
|
-
import shutil
|
|
7
6
|
import sys
|
|
8
7
|
import urllib.error
|
|
9
8
|
import urllib.parse
|
|
@@ -365,13 +364,38 @@ def run_command(
|
|
|
365
364
|
"--workspace-dir",
|
|
366
365
|
help=(
|
|
367
366
|
"Run the single resolved task's agent in-place at this absolute path instead of the "
|
|
368
|
-
"standard
|
|
367
|
+
"standard artifacts workspace named by --artifacts-dir (copied out there at "
|
|
369
368
|
"cleanup). Requires exactly one resolved task; refused for sandbox.driver: docker "
|
|
370
369
|
"(the docker driver already aligns automatically via sandbox.docker.working_dir). "
|
|
371
370
|
"Meant for a Harbor `CoderEvalAgent` invocation, so the agent's writes land at the "
|
|
372
371
|
"container's own WORKDIR, where Harbor's verifier phase looks for them."
|
|
373
372
|
),
|
|
374
373
|
),
|
|
374
|
+
logging_dir: str | None = typer.Option(
|
|
375
|
+
None,
|
|
376
|
+
"--logging-dir",
|
|
377
|
+
help=(
|
|
378
|
+
"Where task.json/task.log go, as a path template. Placeholders: ${run_dir}, "
|
|
379
|
+
"${variant}, ${task}, ${repeat}. Default reproduces <run_dir>/<variant>/<task>/<NN>. "
|
|
380
|
+
"A static path (e.g. /logs/agent) resolves every task to itself, so it is only for a "
|
|
381
|
+
"single-task run (e.g. Harbor); refused for sandbox.driver: docker and for more than "
|
|
382
|
+
"one resolved task."
|
|
383
|
+
),
|
|
384
|
+
),
|
|
385
|
+
artifacts_dir: str | None = typer.Option(
|
|
386
|
+
None,
|
|
387
|
+
"--artifacts-dir",
|
|
388
|
+
help=(
|
|
389
|
+
"Where the agent's artifacts go -- the FINAL directory, same placeholders as "
|
|
390
|
+
"--logging-dir, and independent of it (Harbor puts logs at /logs/agent and "
|
|
391
|
+
"artifacts at the container's WORKDIR). When it already holds the workspace "
|
|
392
|
+
"there is nothing to copy. Default reproduces <run_dir>/<variant>/<task>/<NN>/"
|
|
393
|
+
"artifacts/<task>. A static path is only for a single-task run; refused for "
|
|
394
|
+
"sandbox.driver: docker (the in-container Orchestrator has no way to receive it) "
|
|
395
|
+
"and for more than one resolved task, and refused together with --resume (it would "
|
|
396
|
+
"clear an operator-supplied tree the harness did not create)."
|
|
397
|
+
),
|
|
398
|
+
),
|
|
375
399
|
) -> None:
|
|
376
400
|
"""Run evaluation tasks (optionally in parallel).
|
|
377
401
|
|
|
@@ -424,9 +448,25 @@ def run_command(
|
|
|
424
448
|
set_overrides=set_overrides,
|
|
425
449
|
format=format,
|
|
426
450
|
workspace_dir=workspace_dir,
|
|
451
|
+
logging_dir=logging_dir,
|
|
452
|
+
artifacts_dir=artifacts_dir,
|
|
427
453
|
)
|
|
428
454
|
|
|
429
455
|
|
|
456
|
+
def _dir_template_overrides(logging_dir: str | None, artifacts_dir: str | None) -> dict[str, str]:
|
|
457
|
+
"""Map the two CLI flags onto BatchRunConfig's template fields.
|
|
458
|
+
|
|
459
|
+
``None`` is omitted rather than forwarded, so an unpassed flag leaves the
|
|
460
|
+
model default (today's layout) authoritative in exactly one place.
|
|
461
|
+
"""
|
|
462
|
+
overrides: dict[str, str] = {}
|
|
463
|
+
if logging_dir is not None:
|
|
464
|
+
overrides["logging_dir_template"] = logging_dir
|
|
465
|
+
if artifacts_dir is not None:
|
|
466
|
+
overrides["artifacts_dir_template"] = artifacts_dir
|
|
467
|
+
return overrides
|
|
468
|
+
|
|
469
|
+
|
|
430
470
|
def run_pipeline(
|
|
431
471
|
*,
|
|
432
472
|
grade: bool,
|
|
@@ -454,6 +494,8 @@ def run_pipeline(
|
|
|
454
494
|
set_overrides: list[str],
|
|
455
495
|
format: str | None = None,
|
|
456
496
|
workspace_dir: Path | None = None,
|
|
497
|
+
logging_dir: str | None = None,
|
|
498
|
+
artifacts_dir: str | None = None,
|
|
457
499
|
) -> None:
|
|
458
500
|
"""The shared body of ``coder-eval run`` and ``coder-eval execute``.
|
|
459
501
|
|
|
@@ -474,6 +516,16 @@ def run_pipeline(
|
|
|
474
516
|
# resumed workspace-dir run would never recognize its own prior result.
|
|
475
517
|
if resume and workspace_dir is not None:
|
|
476
518
|
raise typer.BadParameter("--resume is not supported together with --workspace-dir.")
|
|
519
|
+
# clear_rerun_artifacts rmtree's whatever artifacts_dir_template resolves to for a
|
|
520
|
+
# re-running task. The default template is always a directory the harness itself
|
|
521
|
+
# created (run_dir/.../artifacts/<task>), which is what makes that safe -- an
|
|
522
|
+
# operator-supplied --artifacts-dir points at a pre-existing tree the harness did
|
|
523
|
+
# not create and has no way to prove it owns.
|
|
524
|
+
if resume and artifacts_dir is not None:
|
|
525
|
+
raise typer.BadParameter(
|
|
526
|
+
"--resume is not supported together with --artifacts-dir -- clearing a re-running "
|
|
527
|
+
+ "task's stale artifacts would rmtree an operator-supplied tree the harness didn't create."
|
|
528
|
+
)
|
|
477
529
|
# Without --resume this flag parsed, was accepted, and did nothing at all. Its
|
|
478
530
|
# sibling mode-scoped flag (`evaluate --workspace`) hard-errors on exactly this.
|
|
479
531
|
if allow_host_grading and not resume:
|
|
@@ -539,6 +591,8 @@ def run_pipeline(
|
|
|
539
591
|
grade=grade,
|
|
540
592
|
format=format,
|
|
541
593
|
workspace_dir=workspace_dir,
|
|
594
|
+
logging_dir=logging_dir,
|
|
595
|
+
artifacts_dir=artifacts_dir,
|
|
542
596
|
)
|
|
543
597
|
)
|
|
544
598
|
except KeyboardInterrupt:
|
|
@@ -568,6 +622,8 @@ async def _run_all_tasks(
|
|
|
568
622
|
grade: bool = True,
|
|
569
623
|
format: str | None = None,
|
|
570
624
|
workspace_dir: Path | None = None,
|
|
625
|
+
logging_dir: str | None = None,
|
|
626
|
+
artifacts_dir: str | None = None,
|
|
571
627
|
) -> None:
|
|
572
628
|
"""Async entry point for running all tasks (optionally in parallel).
|
|
573
629
|
|
|
@@ -590,6 +646,7 @@ async def _run_all_tasks(
|
|
|
590
646
|
promotes it to `<run_dir>/trajectory.json` when the run wrote exactly one
|
|
591
647
|
(a multi-task run is left nested; there is nothing to promote)
|
|
592
648
|
workspace_dir: Run the agent here instead of run_dir/artifacts
|
|
649
|
+
logging_dir / artifacts_dir: path templates for the run layout (see run_command options)
|
|
593
650
|
"""
|
|
594
651
|
# Prepare run directory
|
|
595
652
|
run_dir = prepare_run_directory(run_dir)
|
|
@@ -617,6 +674,7 @@ async def _run_all_tasks(
|
|
|
617
674
|
include_skipped=include_skipped,
|
|
618
675
|
grade=grade,
|
|
619
676
|
workspace_dir=workspace_dir,
|
|
677
|
+
**_dir_template_overrides(logging_dir, artifacts_dir),
|
|
620
678
|
)
|
|
621
679
|
|
|
622
680
|
from ..telemetry import flush_telemetry, track_event
|
|
@@ -657,20 +715,32 @@ async def _run_all_tasks(
|
|
|
657
715
|
)
|
|
658
716
|
|
|
659
717
|
# Aggregate task logs into run.log
|
|
718
|
+
|
|
719
|
+
# Over the resolved logging dirs, not a run_dir walk: an overridden
|
|
720
|
+
# logging_dir_template need not live under run_dir, and the walk would
|
|
721
|
+
# silently aggregate nothing (empty experiment.log, no error).
|
|
722
|
+
# summary.task_results rows are plain dicts (RunSummary persists them
|
|
723
|
+
# that way), carrying the same variant/task/replicate the logging dir was
|
|
724
|
+
# built from.
|
|
725
|
+
task_dirs = [
|
|
726
|
+
config.resolve_logging_dir(
|
|
727
|
+
row.get("variant_id") or "default",
|
|
728
|
+
row["task_id"],
|
|
729
|
+
row.get("replicate_index") or 0,
|
|
730
|
+
)
|
|
731
|
+
for row in summary.task_results
|
|
732
|
+
if row.get("task_id")
|
|
733
|
+
]
|
|
734
|
+
|
|
660
735
|
from ..logging_config import aggregate_task_logs
|
|
661
736
|
|
|
662
|
-
aggregate_task_logs(run_dir)
|
|
737
|
+
aggregate_task_logs(run_dir, task_dirs=task_dirs)
|
|
663
738
|
|
|
664
739
|
if format == "harbor":
|
|
665
740
|
from ..harbor.atif_emit import emit_trajectories_for_run
|
|
666
741
|
|
|
667
|
-
written = emit_trajectories_for_run(
|
|
668
|
-
console.print(f"[dim]Wrote {len(written)} trajectory.json (ATIF) file(s)
|
|
669
|
-
|
|
670
|
-
flat_trajectory_path = run_dir / "trajectory.json"
|
|
671
|
-
if len(written) == 1 and written[0] != flat_trajectory_path:
|
|
672
|
-
await asyncio.to_thread(shutil.copy2, written[0], flat_trajectory_path)
|
|
673
|
-
console.print(f"[dim]Copied the single trajectory to {flat_trajectory_path}[/dim]")
|
|
742
|
+
written = emit_trajectories_for_run(task_dirs)
|
|
743
|
+
console.print(f"[dim]Wrote {len(written)} trajectory.json (ATIF) file(s)[/dim]")
|
|
674
744
|
|
|
675
745
|
# Print execution summary
|
|
676
746
|
print_execution_summary(run_dir, summary)
|
|
@@ -764,7 +834,7 @@ def _unreadable_row_placeholder(rt: ResolvedTask, error: Exception) -> Evaluatio
|
|
|
764
834
|
|
|
765
835
|
|
|
766
836
|
async def _grade_resumed_tasks(
|
|
767
|
-
to_grade: list[ResolvedTask], *, allow_host_grading: bool = False
|
|
837
|
+
to_grade: list[ResolvedTask], *, config: BatchRunConfig, allow_host_grading: bool = False
|
|
768
838
|
) -> list[tuple[ResolvedTask, TaskResult]]:
|
|
769
839
|
"""Grade the rows ``coder-eval execute`` left NOT_GRADED, in place.
|
|
770
840
|
|
|
@@ -799,7 +869,15 @@ async def _grade_resumed_tasks(
|
|
|
799
869
|
prior = load_prior_result(rt.run_dir)
|
|
800
870
|
# The reference check lives inside regrade_in_place, so a caller
|
|
801
871
|
# cannot forget it.
|
|
802
|
-
|
|
872
|
+
# The same template the run wrote with, so a workspace the template
|
|
873
|
+
# placed OUTSIDE run_dir is a trusted root rather than a containment
|
|
874
|
+
# failure -- which is what previously made --resume unusable alongside
|
|
875
|
+
# an overridden artifacts dir.
|
|
876
|
+
workspace = default_workspace(
|
|
877
|
+
rt.run_dir,
|
|
878
|
+
prior,
|
|
879
|
+
artifacts_dir=config.resolve_artifacts_dir(rt.variant_id, rt.task.task_id, rt.replicate_index),
|
|
880
|
+
)
|
|
803
881
|
# Preserve the ungraded record BEFORE the orchestrator overwrites
|
|
804
882
|
# task.json in this same directory.
|
|
805
883
|
back_up_pre_grade_record(rt.run_dir)
|
|
@@ -860,7 +938,7 @@ async def _grade_resumed_tasks(
|
|
|
860
938
|
|
|
861
939
|
|
|
862
940
|
async def _apply_resume(
|
|
863
|
-
resolved: list[ResolvedTask], *, grade: bool, allow_host_grading: bool
|
|
941
|
+
resolved: list[ResolvedTask], *, config: BatchRunConfig, grade: bool, allow_host_grading: bool
|
|
864
942
|
) -> tuple[list[ResolvedTask], list[TaskResult], list[ResolvedTask]]:
|
|
865
943
|
"""Split a resumed run into what still needs running, and what is carried in.
|
|
866
944
|
|
|
@@ -879,7 +957,7 @@ async def _apply_resume(
|
|
|
879
957
|
# Leftover artifacts from a partial run could let a file-based criterion pass on
|
|
880
958
|
# the old output. to_grade is deliberately NOT cleared: its artifacts are what is
|
|
881
959
|
# being graded.
|
|
882
|
-
cleared = clear_rerun_artifacts(part.to_run)
|
|
960
|
+
cleared = clear_rerun_artifacts(part.to_run, config=config)
|
|
883
961
|
# Checked explicitly rather than left to regrade_in_place's own per-row guard,
|
|
884
962
|
# so the whole batch is refused up front instead of one row at a time.
|
|
885
963
|
# Rationale: .claude/notes/orchestration.md § Refusing a criteria-free task under grade
|
|
@@ -892,7 +970,7 @@ async def _apply_resume(
|
|
|
892
970
|
)
|
|
893
971
|
# Reusing the trajectory and workspace already on disk rather than paying for
|
|
894
972
|
# the agent twice. Folded in as prior_results so the summary covers them.
|
|
895
|
-
for rt, tr in await _grade_resumed_tasks(part.to_grade, allow_host_grading=allow_host_grading):
|
|
973
|
+
for rt, tr in await _grade_resumed_tasks(part.to_grade, config=config, allow_host_grading=allow_host_grading):
|
|
896
974
|
prior_results.append(tr)
|
|
897
975
|
prior_resolved.append(rt)
|
|
898
976
|
return part.to_run, prior_results, prior_resolved
|
|
@@ -1051,7 +1129,7 @@ async def _run_with_experiment(
|
|
|
1051
1129
|
prior_resolved: list[ResolvedTask] = []
|
|
1052
1130
|
if resume:
|
|
1053
1131
|
to_run, prior_results, prior_resolved = await _apply_resume(
|
|
1054
|
-
resolved, grade=grade, allow_host_grading=allow_host_grading
|
|
1132
|
+
resolved, config=config, grade=grade, allow_host_grading=allow_host_grading
|
|
1055
1133
|
)
|
|
1056
1134
|
|
|
1057
1135
|
# Against `to_run`, not `resolved`: an already-finalized row is never re-graded,
|
|
@@ -45,6 +45,13 @@ except ImportError: # pragma: no cover - defensive; coder_eval always defines t
|
|
|
45
45
|
__version__ = "0.0.0"
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
# Run-level bookkeeping goes here and is discarded with the container. Anywhere
|
|
49
|
+
# outside the WORKDIR would do; /tmp is the one path guaranteed writable in every
|
|
50
|
+
# task image. NOT a bare "/tmp": a dedicated subdirectory keeps run.json/run.md/
|
|
51
|
+
# experiment.* from littering a directory tasks themselves use.
|
|
52
|
+
_THROWAWAY_RUN_DIR = "/tmp/coder-eval-run" # nosec B108 -- predictable path is fine: single-use, single-tenant container, no other process/user shares /tmp to race or symlink-plant it
|
|
53
|
+
|
|
54
|
+
|
|
48
55
|
class CoderEvalAgent(BaseInstalledAgent):
|
|
49
56
|
"""Runs coder-eval's own agent loop as a Harbor agent.
|
|
50
57
|
|
|
@@ -76,20 +83,22 @@ class CoderEvalAgent(BaseInstalledAgent):
|
|
|
76
83
|
async def run(self, instruction: str, environment: BaseEnvironment, context: AgentContext) -> None:
|
|
77
84
|
"""Run ``coder-eval execute --format harbor`` inside the environment.
|
|
78
85
|
|
|
79
|
-
``instruction`` is NOT forwarded: the agent-phase task.yaml already carries
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
``--
|
|
84
|
-
|
|
86
|
+
``instruction`` is NOT forwarded: the agent-phase task.yaml already carries the
|
|
87
|
+
identical resolved prompt. Token and cost totals are filled in afterward by
|
|
88
|
+
``populate_context_post_run``. ``--workspace-dir "$(pwd)"`` is load-bearing --
|
|
89
|
+
without it the tempdir sandbox writes the agent's workspace somewhere Harbor's
|
|
90
|
+
verifier never looks. ``--logging-dir``/``--artifacts-dir`` are static paths, not
|
|
91
|
+
templates; ``--run-dir`` is a throwaway path outside the workspace.
|
|
85
92
|
|
|
86
|
-
Rationale: .claude/notes/
|
|
93
|
+
Rationale: .claude/notes/persistence.md § CoderEvalAgent passes both templates as static paths
|
|
87
94
|
"""
|
|
88
95
|
del instruction, context # nothing to forward; context is populated post-run
|
|
89
96
|
run_dir = self.environment_logs_dir.as_posix()
|
|
90
97
|
command = (
|
|
91
98
|
f"coder-eval execute {shlex.quote(AGENT_TASK_YAML_PATH)} --format harbor "
|
|
92
|
-
f
|
|
99
|
+
f"--run-dir {_THROWAWAY_RUN_DIR} "
|
|
100
|
+
f'--workspace-dir "$(pwd)" '
|
|
101
|
+
f'--logging-dir {shlex.quote(run_dir)} --artifacts-dir "$(pwd)"'
|
|
93
102
|
)
|
|
94
103
|
await self._exec(environment, command)
|
|
95
104
|
|
|
@@ -17,6 +17,7 @@ Rationale: .claude/notes/reporting.md § Emitting
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
19
|
import logging
|
|
20
|
+
from collections.abc import Iterable
|
|
20
21
|
from pathlib import Path
|
|
21
22
|
from typing import Any
|
|
22
23
|
|
|
@@ -385,21 +386,24 @@ def write_trajectory_json(result: EvaluationResult, path: Path) -> Path | None:
|
|
|
385
386
|
return None
|
|
386
387
|
|
|
387
388
|
|
|
388
|
-
def emit_trajectories_for_run(
|
|
389
|
-
"""Write a ``trajectory.json`` sibling for every ``task.json``
|
|
389
|
+
def emit_trajectories_for_run(task_dirs: Iterable[Path]) -> list[Path]:
|
|
390
|
+
"""Write a ``trajectory.json`` sibling for every ``task.json`` in ``task_dirs``.
|
|
390
391
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
to orchestrator internals, only the ``task.json`` files a run already
|
|
398
|
-
wrote. Per-task failures are logged and skipped (see
|
|
392
|
+
``task_dirs`` are the per-task logging directories, resolved from the same
|
|
393
|
+
``logging_dir_template`` the run wrote ``task.json`` with -- taken as an argument
|
|
394
|
+
rather than discovered by walking a run directory, since an overridden logging dir
|
|
395
|
+
need not live under ``run_dir`` at all. The ``--format harbor`` post-pass for
|
|
396
|
+
``coder-eval execute``; opt-in, so a plain ``run``/``execute`` never gains a new
|
|
397
|
+
output file. Per-task failures are logged and skipped (see
|
|
399
398
|
:func:`write_trajectory_json`), never aborting the rest of the run's export.
|
|
399
|
+
|
|
400
|
+
Rationale: .claude/notes/persistence.md § What run_dir still owns
|
|
400
401
|
"""
|
|
401
402
|
written: list[Path] = []
|
|
402
|
-
for task_json in sorted(
|
|
403
|
+
for task_json in sorted({d / TASK_JSON_FILENAME for d in task_dirs}):
|
|
404
|
+
if not task_json.is_file():
|
|
405
|
+
logger.warning("No %s at %s — skipping ATIF emission", TASK_JSON_FILENAME, task_json)
|
|
406
|
+
continue
|
|
403
407
|
try:
|
|
404
408
|
result = EvaluationResult.model_validate_json(task_json.read_text(encoding="utf-8"))
|
|
405
409
|
except (OSError, ValueError):
|