coder-eval 0.11.2__tar.gz → 0.11.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.11.2 → coder_eval-0.11.4}/.github/CODEOWNERS +6 -6
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/claude-pr-review.yml +1 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/pr-checks.yml +11 -8
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/release.yml +9 -2
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.gitignore +3 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/CHANGELOG.md +99 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/PKG-INFO +3 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/action.yml +1 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docker/Dockerfile +13 -9
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/AB_EXPERIMENTS.md +1 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/DIALOG_MODE.md +5 -3
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/TASK_DEFINITION_GUIDE.md +37 -1
- coder_eval-0.11.4/evalboard/app/_components/col-help.tsx +10 -0
- coder_eval-0.11.4/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +80 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +38 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/__tests__/harness-series.test.ts +6 -4
- coder_eval-0.11.4/evalboard/app/_overview/efficiency-charts.tsx +104 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/harness-legend.tsx +28 -15
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/harness-series.ts +7 -3
- coder_eval-0.11.4/evalboard/app/_overview/wall-clock-chart.tsx +138 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/page.tsx +8 -19
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/trends/trends-view.tsx +75 -36
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +1 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/watchlist/watchlist-view.tsx +39 -0
- coder_eval-0.11.4/evalboard/vitest.setup.ts +22 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/criteria.md +1 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/pyproject.toml +14 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/claude_code_agent.py +26 -5
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/base.py +6 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/llm_judge.py +38 -9
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/checker.py +2 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_bedrock.py +12 -3
- coder_eval-0.11.4/src/coder_eval/evaluation/judge_litellm.py +148 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_usage.py +42 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/verdict_tool.py +45 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/__init__.py +4 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/criteria.py +6 -3
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/experiment.py +16 -0
- coder_eval-0.11.4/src/coder_eval/models/routing.py +385 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/tasks.py +71 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/experiment.py +47 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestrator.py +100 -12
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_config_precedence.py +0 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_bedrock.py +8 -1
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_burn_in_live.py +1 -1
- coder_eval-0.11.4/tests/test_judge_litellm.py +209 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_litellm_cost.py +3 -3
- coder_eval-0.11.4/tests/test_litellm_judge_live.py +69 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_litellm_route.py +261 -31
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_llm_judge_criterion.py +89 -10
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_models.py +6 -2
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_orchestrator.py +81 -6
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_route_seam_exhaustiveness.py +7 -3
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_routing.py +32 -15
- {coder_eval-0.11.2 → coder_eval-0.11.4}/uv.lock +401 -2
- coder_eval-0.11.2/evalboard/app/_components/col-help.tsx +0 -131
- coder_eval-0.11.2/evalboard/vitest.setup.ts +0 -1
- coder_eval-0.11.2/src/coder_eval/models/routing.py +0 -225
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/shared/axes.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.env.example +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/actionlint.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/code_review.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/dependabot.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/.python-version +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/ADOPTERS.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/CLAUDE.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/CONTRIBUTING.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/LICENSE +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/Makefile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/NOTICE +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/SECURITY.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/comparison.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/CI_GATE.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/DATASETS.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/EXTENDING.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/PLUGIN.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/agents/HARNESS_PARITY.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/assets/hero.gif +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/comparison.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/index.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/llms.txt +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/docs/tutorials/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/.gitignore +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/globals.css +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/icon.png +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/package.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/default.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/litellm/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/litellm/cost_logger.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/mkdocs.yml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/osv-scanner.toml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/aggregate_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/reports.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/reports_experiment.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/reports_html.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/reports_junit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/reports_stats.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tasks/token_check.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/_path_helpers.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/conftest.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/generated.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce023_no_proxy_shim_import.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/runner.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/violation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_agentless.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_aggregate.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_classification_match.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_command_executed.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_early_stop.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_error_handling.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_evaluator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_event_collector.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_file_check.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_formatting.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_integration.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_json_check.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_logging.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_mutations.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_parallel.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_path_utils.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_plan_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_plugins.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_post_run.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_pre_run.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reference_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_registry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_release_notes.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_report_command.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports_experiment.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports_html.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports_stats.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_reports_stats_nonfinite.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_resume.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_scorers.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_summaries.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_tags.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_telemetry.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_token_usage.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_utils.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_visible_turn_cap.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_watchdog.py +0 -0
- {coder_eval-0.11.2 → coder_eval-0.11.4}/tests/test_yaml_migration.py +0 -0
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
# dedicated GitHub team (e.g. @UiPath/coder-eval-maintainers) once one exists.
|
|
8
8
|
|
|
9
9
|
# Default owners for everything in the repo.
|
|
10
|
-
* @akshaylive @tmatup @uipreliga @bai-uipath
|
|
10
|
+
* @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
11
11
|
|
|
12
12
|
# Community-health, license, and security files warrant extra scrutiny.
|
|
13
|
-
/LICENSE @akshaylive @tmatup @uipreliga @bai-uipath
|
|
14
|
-
/NOTICE @akshaylive @tmatup @uipreliga @bai-uipath
|
|
15
|
-
/SECURITY.md @akshaylive @tmatup @uipreliga @bai-uipath
|
|
16
|
-
/CODE_OF_CONDUCT.md @akshaylive @tmatup @uipreliga @bai-uipath
|
|
17
|
-
/.github/ @akshaylive @tmatup @uipreliga @bai-uipath
|
|
13
|
+
/LICENSE @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
14
|
+
/NOTICE @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
15
|
+
/SECURITY.md @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
16
|
+
/CODE_OF_CONDUCT.md @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
17
|
+
/.github/ @akshaylive @tmatup @uipreliga @bai-uipath @CarlesUIPath
|
|
@@ -118,7 +118,7 @@ jobs:
|
|
|
118
118
|
# so this stacks on the tool allowlist below, it does not replace it.
|
|
119
119
|
# Keep this list in sync with the global CODEOWNERS maintainers
|
|
120
120
|
# (.github/CODEOWNERS `*` line).
|
|
121
|
-
include_comments_by_actor: "akshaylive,tmatup,uipreliga,bai-uipath"
|
|
121
|
+
include_comments_by_actor: "akshaylive,tmatup,uipreliga,bai-uipath,CarlesUIPath"
|
|
122
122
|
# Drop all bot comments (dependabot, renovate, etc.). Exclusion wins
|
|
123
123
|
# over the include list if an actor somehow matches both.
|
|
124
124
|
exclude_comments_by_actor: "*[bot]"
|
|
@@ -80,7 +80,7 @@ jobs:
|
|
|
80
80
|
pip install uv
|
|
81
81
|
|
|
82
82
|
- name: Install project dependencies (hash-verified from uv.lock)
|
|
83
|
-
run: uv sync --frozen --extra dev --extra uipath --extra codex
|
|
83
|
+
run: uv sync --frozen --extra dev --extra uipath --extra codex --extra litellm
|
|
84
84
|
|
|
85
85
|
# PHASE 1: Fast checks (fail early)
|
|
86
86
|
- name: Check code formatting (ruff format)
|
|
@@ -385,7 +385,7 @@ jobs:
|
|
|
385
385
|
pip install uv
|
|
386
386
|
|
|
387
387
|
- name: Install project dependencies (hash-verified from uv.lock)
|
|
388
|
-
run: uv sync --frozen --extra dev --extra uipath --extra codex
|
|
388
|
+
run: uv sync --frozen --extra dev --extra uipath --extra codex --extra litellm
|
|
389
389
|
|
|
390
390
|
- name: Check code formatting (ruff format)
|
|
391
391
|
run: .venv/Scripts/ruff format --check src/ tests/
|
|
@@ -843,8 +843,8 @@ jobs:
|
|
|
843
843
|
python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
|
|
844
844
|
pip install uv
|
|
845
845
|
|
|
846
|
-
- name: Install project dependencies (with codex
|
|
847
|
-
run: uv sync --frozen --extra dev --extra uipath --extra codex
|
|
846
|
+
- name: Install project dependencies (with codex + litellm extras)
|
|
847
|
+
run: uv sync --frozen --extra dev --extra uipath --extra codex --extra litellm
|
|
848
848
|
|
|
849
849
|
- name: Verify required secrets are present
|
|
850
850
|
run: |
|
|
@@ -854,14 +854,17 @@ jobs:
|
|
|
854
854
|
fi
|
|
855
855
|
echo "CODEX_API_KEY present."
|
|
856
856
|
|
|
857
|
-
- name: Run Codex live tests
|
|
857
|
+
- name: Run Codex + litellm-judge live tests
|
|
858
858
|
run: |
|
|
859
859
|
mkdir -p tmp
|
|
860
860
|
# Run serially: `-n0` overrides the global `-n auto` (addopts).
|
|
861
861
|
# Parallel xdist workers share ~/.codex and race the Codex SQLite
|
|
862
862
|
# state migration (`duplicate column name: thread_id`); serial init
|
|
863
|
-
# migrates the fresh DB exactly once.
|
|
864
|
-
|
|
863
|
+
# migrates the fresh DB exactly once. test_litellm_judge_live.py
|
|
864
|
+
# reuses these same CODEX_* secrets to exercise
|
|
865
|
+
# checker_context.api_route.route: litellm end-to-end (PR #137
|
|
866
|
+
# review: "nothing in the repo exercises the feature").
|
|
867
|
+
.venv/bin/pytest tests/test_codex_agent_live.py tests/test_litellm_judge_live.py \
|
|
865
868
|
-m live -n0 -v --tb=short --strict-markers -ra \
|
|
866
869
|
--junit-xml=tmp/junit-codex-live.xml
|
|
867
870
|
|
|
@@ -878,7 +881,7 @@ jobs:
|
|
|
878
881
|
passed = total - skipped - errors - failures
|
|
879
882
|
print(f"codex-live passed={passed} skipped={skipped} errors={errors} failures={failures}")
|
|
880
883
|
if passed < 1:
|
|
881
|
-
sys.exit("
|
|
884
|
+
sys.exit("Live Codex/litellm-judge tests reported zero PASSED tests (missing API key / silent skip?)")
|
|
882
885
|
PY
|
|
883
886
|
|
|
884
887
|
- name: Upload Codex live-test artifacts on failure
|
|
@@ -140,7 +140,14 @@ jobs:
|
|
|
140
140
|
fi
|
|
141
141
|
|
|
142
142
|
- name: Install build + release tools
|
|
143
|
-
|
|
143
|
+
# Pinned: python-semantic-release declares gitpython~=3.0, so an
|
|
144
|
+
# unpinned install can resolve GitPython 3.1.60+, which removed
|
|
145
|
+
# git.Actor.name_email_regex and breaks semantic-release's `version`
|
|
146
|
+
# command outright ("type object 'Actor' has no attribute
|
|
147
|
+
# 'name_email_regex'"). Pin both explicitly until upstream adapts.
|
|
148
|
+
run: |
|
|
149
|
+
uv tool install python-semantic-release==10.6.1 --with gitpython==3.1.59
|
|
150
|
+
uv tool install twine
|
|
144
151
|
|
|
145
152
|
- name: Run semantic-release (bump + tag, no push yet)
|
|
146
153
|
id: release
|
|
@@ -157,7 +164,7 @@ jobs:
|
|
|
157
164
|
# version to pyproject.toml + __init__.py, tags it, and regenerates the
|
|
158
165
|
# changelog, but does not push yet (--no-push) so we can regenerate
|
|
159
166
|
# uv.lock and amend before sending.
|
|
160
|
-
PSR="uv tool run --from python-semantic-release semantic-release"
|
|
167
|
+
PSR="uv tool run --from python-semantic-release==10.6.1 --with gitpython==3.1.59 semantic-release"
|
|
161
168
|
$PSR version "--$BUMP" --no-vcs-release --no-push --changelog
|
|
162
169
|
# A dispatch always cuts a release; report the just-published version.
|
|
163
170
|
echo "version=$($PSR version --print)" >> "$GITHUB_OUTPUT"
|
|
@@ -2,6 +2,105 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.11.4 (2026-08-27)
|
|
6
|
+
|
|
7
|
+
### Chores
|
|
8
|
+
|
|
9
|
+
- Add @CarlesUIPath as a code owner ([#140](https://github.com/UiPath/coder_eval/pull/140),
|
|
10
|
+
[`8fff865`](https://github.com/UiPath/coder_eval/commit/8fff8651589b2e43922321c689a66bb3aa41330d))
|
|
11
|
+
|
|
12
|
+
- Sync PR-review comment allowlist with CODEOWNERS
|
|
13
|
+
([#140](https://github.com/UiPath/coder_eval/pull/140),
|
|
14
|
+
[`8fff865`](https://github.com/UiPath/coder_eval/commit/8fff8651589b2e43922321c689a66bb3aa41330d))
|
|
15
|
+
|
|
16
|
+
### Features
|
|
17
|
+
|
|
18
|
+
- **docker**: Bake litellm extra into the docker image
|
|
19
|
+
([#142](https://github.com/UiPath/coder_eval/pull/142),
|
|
20
|
+
[`3f4ae36`](https://github.com/UiPath/coder_eval/commit/3f4ae363b15024e2a033cf92ccda6befaef3a8b9))
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## v0.11.3 (2026-08-27)
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
- **checker-context**: Typed model, reject litellm+agent_judge/sim, live test
|
|
28
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
29
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
30
|
+
|
|
31
|
+
- **eval-routing**: Restore DEFAULT_JUDGE_MODEL floor + add litellm judge transport
|
|
32
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
33
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
34
|
+
|
|
35
|
+
- **evalboard**: Exclude carried-forward passes from the wall-clock aggregates
|
|
36
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
37
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
38
|
+
|
|
39
|
+
- **release**: Pin python-semantic-release + GitPython to unbreak version bump
|
|
40
|
+
([#139](https://github.com/UiPath/coder_eval/pull/139),
|
|
41
|
+
[`ef74014`](https://github.com/UiPath/coder_eval/commit/ef74014d3dd4b389f794e0cba743fc67ed430df8))
|
|
42
|
+
|
|
43
|
+
- **routing**: Make _resolve_backend_route's match exhaustive
|
|
44
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
45
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
46
|
+
|
|
47
|
+
### Continuous Integration
|
|
48
|
+
|
|
49
|
+
- Retrigger checks (GH Actions appeared stalled repo-wide)
|
|
50
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
51
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
52
|
+
|
|
53
|
+
- Retrigger checks (previous push did not trigger CI)
|
|
54
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
55
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
56
|
+
|
|
57
|
+
- **fix**: Install litellm extra for pyright, address CodeQL findings
|
|
58
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
59
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
60
|
+
|
|
61
|
+
### Documentation
|
|
62
|
+
|
|
63
|
+
- **timing**: Trim justification prose from the wall-clock comments
|
|
64
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
65
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
66
|
+
|
|
67
|
+
### Features
|
|
68
|
+
|
|
69
|
+
- **eval-routing**: Decouple judge/agent_judge backend+model from the agent's own route
|
|
70
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
71
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
72
|
+
|
|
73
|
+
- **eval-routing**: Decouple judge/agent_judge backend+model from the agent's route
|
|
74
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
75
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
76
|
+
|
|
77
|
+
- **evalboard**: Chart seconds per passed task on the overview
|
|
78
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
79
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
80
|
+
|
|
81
|
+
- **evalboard**: Read the time ratio without hovering
|
|
82
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
83
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
84
|
+
|
|
85
|
+
- **evalboard**: Replace the turn-budget signal with time per passed task
|
|
86
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
87
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
88
|
+
|
|
89
|
+
- **evalboard**: Run the wall-clock signal beside the turn budget, behind tabs
|
|
90
|
+
([#125](https://github.com/UiPath/coder_eval/pull/125),
|
|
91
|
+
[`dd918e6`](https://github.com/UiPath/coder_eval/commit/dd918e68a454f39c8254f74fe2e4f346cff3a16f))
|
|
92
|
+
|
|
93
|
+
- **litellm-judge**: Support arbitrary litellm kwargs via params/auth
|
|
94
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
95
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
96
|
+
|
|
97
|
+
### Refactoring
|
|
98
|
+
|
|
99
|
+
- **litellm-judge**: Drop settings coupling, rename auth to env_params
|
|
100
|
+
([#137](https://github.com/UiPath/coder_eval/pull/137),
|
|
101
|
+
[`727bb7b`](https://github.com/UiPath/coder_eval/commit/727bb7bee459b43c51af93067907687c5e04cfc8))
|
|
102
|
+
|
|
103
|
+
|
|
5
104
|
## v0.11.2 (2026-08-24)
|
|
6
105
|
|
|
7
106
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: coder-eval
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.4
|
|
4
4
|
Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity) 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
|
|
@@ -58,6 +58,8 @@ Requires-Dist: pytest-mock>=3.15.1; extra == 'dev'
|
|
|
58
58
|
Requires-Dist: pytest-xdist[psutil]>=3.0.0; extra == 'dev'
|
|
59
59
|
Requires-Dist: pytest>=9.0.2; extra == 'dev'
|
|
60
60
|
Requires-Dist: ruff>=0.15.7; extra == 'dev'
|
|
61
|
+
Provides-Extra: litellm
|
|
62
|
+
Requires-Dist: litellm<2.0.0,>=1.95.0; extra == 'litellm'
|
|
61
63
|
Provides-Extra: uipath
|
|
62
64
|
Requires-Dist: uipath>=2.10.31; extra == 'uipath'
|
|
63
65
|
Description-Content-Type: text/markdown
|
|
@@ -41,7 +41,7 @@ inputs:
|
|
|
41
41
|
version:
|
|
42
42
|
description: coder-eval version to install from PyPI, or "local" to install from the action checkout
|
|
43
43
|
required: false
|
|
44
|
-
default: "0.11.
|
|
44
|
+
default: "0.11.4" # <-- kept in sync with releases by release.yml
|
|
45
45
|
run-dir:
|
|
46
46
|
description: Run directory (--run-dir)
|
|
47
47
|
required: false
|
|
@@ -48,12 +48,16 @@ COPY src/ ./src/
|
|
|
48
48
|
# experiments/default.yaml is force-included by hatchling per pyproject.toml.
|
|
49
49
|
COPY experiments/default.yaml ./experiments/default.yaml
|
|
50
50
|
|
|
51
|
-
# Codex and
|
|
52
|
-
# claude-code agent installed above
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
#
|
|
56
|
-
#
|
|
51
|
+
# Codex, Antigravity, and litellm are always baked into the image -- codex/
|
|
52
|
+
# antigravity are peers to the claude-code agent installed above, so all
|
|
53
|
+
# built-in agents ship in every build; litellm backs the `checker_context.
|
|
54
|
+
# api_route.route: litellm` judge dispatch (see pyproject.toml's `litellm`
|
|
55
|
+
# extra), which every DockerRunner-isolated task needs available IN-container
|
|
56
|
+
# since the checker runs there too, not just on the host. `openai-codex`
|
|
57
|
+
# (+ its pinned cli-bin), `google-antigravity` (which bundles its
|
|
58
|
+
# `localharness` binary as a manylinux wheel), and `litellm` all come from
|
|
59
|
+
# public PyPI, so this needs no private-index credentials. The RUN below
|
|
60
|
+
# always passes `--extra codex --extra antigravity --extra litellm`.
|
|
57
61
|
#
|
|
58
62
|
# CODER_EVAL_UV_EXTRAS carries ADDITIONAL opt-in extras on top of those; it
|
|
59
63
|
# defaults to none. `make docker-image-full` passes `--extra uipath`, which
|
|
@@ -67,10 +71,10 @@ ARG CODER_EVAL_UV_EXTRAS=""
|
|
|
67
71
|
# newer than the gate window); callers may override.
|
|
68
72
|
ARG SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="openai-codex-cli-bin,openai-codex,google-antigravity"
|
|
69
73
|
|
|
70
|
-
# All extras (codex, antigravity, and the opt-in uipath) resolve from
|
|
71
|
-
# PyPI per uv.lock, so the build needs no private-index credentials.
|
|
74
|
+
# All extras (codex, antigravity, litellm, and the opt-in uipath) resolve from
|
|
75
|
+
# public PyPI per uv.lock, so the build needs no private-index credentials.
|
|
72
76
|
RUN export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="${SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS}" && \
|
|
73
|
-
uv export --frozen --extra codex --extra antigravity ${CODER_EVAL_UV_EXTRAS} | uv pip install --system -r /dev/stdin
|
|
77
|
+
uv export --frozen --extra codex --extra antigravity --extra litellm ${CODER_EVAL_UV_EXTRAS} | uv pip install --system -r /dev/stdin
|
|
74
78
|
|
|
75
79
|
# Sanity check: the in-container entrypoint subcommand must be wired up.
|
|
76
80
|
RUN coder-eval _run-task-internal --help > /dev/null
|
|
@@ -130,6 +130,7 @@ From `ExperimentVariant` (`coder_eval/models/experiment.py`):
|
|
|
130
130
|
| `initial_prompt_file` | str | Prompt replacement loaded from a file |
|
|
131
131
|
| `run_limits` | block | Per-key cap overrides (`max_turns`, `task_timeout`, token/USD budgets) |
|
|
132
132
|
| `driver` | `tempdir`/`docker` | Sandbox driver — enables tempdir-vs-docker arms |
|
|
133
|
+
| `checker_context` | dict | Backend/model override for the evaluation side (judge, simulator) — see [Checker Context](TASK_DEFINITION_GUIDE.md#checker-context); **not** currently `-D`-reachable |
|
|
133
134
|
|
|
134
135
|
The `agent` dict is the lever for most A/B tests. Anything on `AgentConfig` is
|
|
135
136
|
fair game: `model`, `permission_mode`, `allowed_tools`, `disallowed_tools`,
|
|
@@ -60,9 +60,11 @@ The mechanics:
|
|
|
60
60
|
- The simulator is a **tools-disabled Claude Code agent** with `allowed_tools: []`, an explicit
|
|
61
61
|
deny-list, and no plugins or settings sources. It is pure text-in / text-out, and it **cannot see
|
|
62
62
|
the sandbox** — no files, no terminal, no agent reasoning. Only what the agent writes in the chat.
|
|
63
|
-
- The simulator
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
- The simulator runs on the run's resolved *evaluation* `ApiRoute` — the coding agent's own route
|
|
64
|
+
(`--backend direct` / `--backend bedrock`) unless `checker_context.api_route.route` overrides it
|
|
65
|
+
(see [Checker Context](TASK_DEFINITION_GUIDE.md#checker-context)). The **model** is separately
|
|
66
|
+
pinned by `simulation.model` (see [Simulation](TASK_DEFINITION_GUIDE.md#simulation)), not inherited
|
|
67
|
+
from the route — so an A/B varying the subject model doesn't silently vary the simulated user too.
|
|
66
68
|
|
|
67
69
|
**Agent-kind constraint.** The *subject* agent can be any registered kind — the dialog driver only
|
|
68
70
|
calls the agent's `communicate()`, so Codex and plugin agents work. The *simulator*, however, is
|
|
@@ -35,6 +35,7 @@ Complete reference for defining evaluation tasks in Coder Eval.
|
|
|
35
35
|
- [llm_judge](#llm_judge)
|
|
36
36
|
- [agent_judge](#agent_judge)
|
|
37
37
|
- [skill_triggered](#skill_triggered)
|
|
38
|
+
- [Checker Context](#checker-context)
|
|
38
39
|
- [Reference Solutions](#reference-solutions)
|
|
39
40
|
- [Pre-Run Commands](#pre-run-commands)
|
|
40
41
|
- [Post-Run Commands](#post-run-commands)
|
|
@@ -63,6 +64,7 @@ reference: { ... } # Optional reference solution (a directory
|
|
|
63
64
|
pre_run: [ ... ] # Optional pre-run commands (before agent starts)
|
|
64
65
|
post_run: [ ... ] # Optional post-run commands
|
|
65
66
|
dataset: { ... } # Optional dataset fan-out (one task -> N row-tasks)
|
|
67
|
+
checker_context: { ... } # Optional: backend/model for the evaluation side (judge, simulator)
|
|
66
68
|
```
|
|
67
69
|
|
|
68
70
|
### `dataset`
|
|
@@ -1295,6 +1297,40 @@ Observed label is `"yes"` when either signal is found, else `"no"`. Expected lab
|
|
|
1295
1297
|
|
|
1296
1298
|
**Typical pattern.** Label each dataset row with its true skill (`expected_skill`, `""` for negatives) and stack one `skill_triggered` criterion per skill against the same dataset — each gets its own confusion matrix from the same agent traces. This is the natural companion to a skill A/B experiment (skill plugin on vs. off); see the [A/B Experiment Guide](AB_EXPERIMENTS.md#recipe-ab-a-skill).
|
|
1297
1299
|
|
|
1300
|
+
## Checker Context
|
|
1301
|
+
|
|
1302
|
+
`checker_context` carries task-authored config for the success-checking side, namespaced by reserved key. Currently the only recognized namespace is **`api_route`**:
|
|
1303
|
+
|
|
1304
|
+
```yaml
|
|
1305
|
+
success_criteria:
|
|
1306
|
+
- type: llm_judge
|
|
1307
|
+
prompt: "Grade the fix for correctness."
|
|
1308
|
+
|
|
1309
|
+
checker_context:
|
|
1310
|
+
api_route:
|
|
1311
|
+
route: bedrock # which backend the whole eval side (llm_judge/agent_judge/simulator) uses
|
|
1312
|
+
model: claude-haiku-4-5 # model override for that route
|
|
1313
|
+
```
|
|
1314
|
+
|
|
1315
|
+
- `route` selects which backend the WHOLE evaluation side calls (`llm_judge`, `agent_judge`, and the simulator all share one resolved eval route per run — this isn't per-criterion), **decoupled from the agent's own route** (a Claude agent can be graded by a differently-backed judge, or vice versa). This is a backend *name* (`direct` / `bedrock` / `litellm`), not a route object. For `direct`/`bedrock` credentials are never read from the task, always from the matching environment variables (`ANTHROPIC_API_KEY` for `direct`, `AWS_BEARER_TOKEN_BEDROCK`/`AWS_REGION` for `bedrock`). An unconfigured or unknown backend name raises at dispatch rather than silently falling back. **`route: litellm` dispatches `llm_judge` through the `litellm` library** (the `coder-eval[litellm]` extra, `litellm.acompletion`) rather than assuming one wire protocol — a gateway-routed judge model (e.g. an Azure AI `/openai/v1` deployment) rarely speaks Anthropic Messages, so this lets `model` carry its own provider hint (e.g. `azure/gpt-5.6-luna`) and get that provider's actual request/response shape handled by the library. Unlike the other two backends, `route: litellm` has NO implicit env-var fallback — see `params`/`env_params` below, which is how it's configured. `model` is required for `route: litellm` (there is no default open-weight/gateway model).
|
|
1316
|
+
- `model` overrides the model that resolved route uses for **`llm_judge` only** — when the criterion itself leaves `model:` unset (precedence: an explicit per-criterion `model:` always wins; below that, `checker_context.api_route.model`; below that, the built-in `DEFAULT_JUDGE_MODEL`). This floor is deliberate and never the agent's own model — an unpinned judge must grade identically regardless of which model the agent under test is using, so `resolve_evaluation_route` never lets the agent's env-configured model (e.g. `BEDROCK_MODEL`) leak into `route.model` on its own; `route.model` is set only when this override was actually given. This works because every `ApiRoute` (`DirectRoute`/`BedrockRoute`/`LiteLLMRoute`) carries its own `model` field; the orchestrator bakes the override into the resolved route's `model` before any criterion runs, so `llm_judge` just reads `context.route.model` — it never reads `checker_context` directly. **`agent_judge` and the simulator do not honor this override** — `agent_judge`'s sub-agent model comes from the criterion's own `agent:` block (defaulted to a fixed judge model), and the simulator's model is pinned by `SimulationConfig.model` (see [Simulation](#simulation) below) — both independent of `checker_context.api_route.model` by design, for the same "measuring instrument stays fixed" reason.
|
|
1317
|
+
- `params`/`env_params` (**`route: litellm` only**) are how the call is actually configured — there is no fallback to the agent's own `LITELLM_BASE_URL`/`LITELLM_AUTH_TOKEN` env vars, since a gateway-routed judge model rarely reuses the agent's own LiteLLM proxy/credential. They also cover any of the dozens of other provider-specific kwargs `litellm.acompletion` accepts (`aws_access_key_id`, `vertex_project`, `api_version`, ...), which have no dedicated field on `LiteLLMRoute`:
|
|
1318
|
+
```yaml
|
|
1319
|
+
checker_context:
|
|
1320
|
+
api_route:
|
|
1321
|
+
route: litellm
|
|
1322
|
+
model: azure/gpt-5.6-luna
|
|
1323
|
+
params: # arbitrary literal passthrough kwargs to litellm.acompletion
|
|
1324
|
+
api_version: "2024-05-01"
|
|
1325
|
+
env_params: # param name -> ENV VAR NAME (never the secret itself)
|
|
1326
|
+
api_base: LITELLM_BASE_URL
|
|
1327
|
+
api_key: LITELLM_AUTH_TOKEN
|
|
1328
|
+
```
|
|
1329
|
+
`params` is merged straight into the `litellm.acompletion(**kwargs)` call — litellm validates the param names itself, so there's no allowlist to keep in sync here. `env_params` maps a kwarg name to the *name* of an environment variable; the value is resolved right before the call, so no secret is ever written into task/experiment YAML — this is how an arbitrary provider's config, including secrets (IAM keys, an Azure AD token, a service-account path, ...), is representable without a dedicated field per provider. `env_params` is resolved after `params`, so it always wins for the same key. Rejected at task-load time if given without `route: litellm`. For an Azure deployment, pin `api_version` via `params` to whatever API version the agent side is actually configured for (e.g. Codex's `CODEX_API_VERSION`) — the judge has no way to inherit it, and a mismatched version can hit a different shape of the same endpoint.
|
|
1330
|
+
**`route: litellm` is `llm_judge`-only** — `agent_judge` and the simulator run as real Claude Code CLI subprocesses that speak the Anthropic Messages protocol, so pointing them at an arbitrary litellm-fronted gateway (which may speak an entirely different wire protocol) isn't representable. The orchestrator rejects the combination at resolution time (a clear error, not a silent misroute) if the task has an enabled `agent_judge` criterion or `simulation.enabled: true` alongside `route: litellm` — use `route: bedrock`/`direct` for those instead.
|
|
1331
|
+
|
|
1332
|
+
`checker_context` merges shallow-per-namespace across `default_experiment.defaults.checker_context` → `experiment.defaults.checker_context` → `task.checker_context` → `variant.checker_context` (same 4-layer precedence as `agent`/`simulation`). So a judge-model A/B, or a judge-backend A/B, is a variant-level config change, not an edit to every task YAML.
|
|
1333
|
+
|
|
1298
1334
|
## Reference Solutions
|
|
1299
1335
|
|
|
1300
1336
|
A reference solution is always a **directory**, given relative to the task YAML's own directory:
|
|
@@ -1577,7 +1613,7 @@ simulation:
|
|
|
1577
1613
|
| `check_criteria` | `end_of_dialog` | `end_of_dialog`, `every_turn`, or `both`. |
|
|
1578
1614
|
| `model` | `anthropic.claude-sonnet-4-6` | Model that plays the simulated user. Auto-translated to the run's backend (Bedrock inference profile / bare Anthropic alias), the same way [`llm_judge`](#llm_judge)'s `model` is. |
|
|
1579
1615
|
|
|
1580
|
-
The simulator runs as a tools-disabled Claude Code agent
|
|
1616
|
+
The simulator runs as a tools-disabled Claude Code agent on the run's resolved *evaluation* `ApiRoute` (the coding agent's own route unless [`checker_context.api_route.route`](#checker-context) overrides it), so temperature and sampling are resolved at the route level (same `-b` flag as the coding agent by default) and are not configured on this block. The **model is not**: it is pinned by `model` above. Inheriting it from the route meant `BEDROCK_MODEL` decided who the simulated user was, so an A/B varying the subject model silently varied its interlocutor too. Hold `model` fixed across variants for the same reason you hold a judge model fixed — the simulator is part of the measuring instrument, not the thing being measured.
|
|
1581
1617
|
|
|
1582
1618
|
**Semantics:**
|
|
1583
1619
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Column definitions, surfaced as native `title` tooltips on table headers.
|
|
2
|
+
// Shared by the run-page task grid and the task-page message timeline so the two
|
|
3
|
+
// describe the same number the same way. Wording is page-neutral (no "this task"
|
|
4
|
+
// / "this call") because both surfaces read the same string.
|
|
5
|
+
export const TOKEN_COLUMN_HELP = {
|
|
6
|
+
input: "Input tokens (uncached): fresh prompt input billed at the full input rate — the slice that was neither written to nor read from the prompt cache.",
|
|
7
|
+
output: "Output tokens: text, code, tool arguments and reasoning the model generated.",
|
|
8
|
+
cw: "Cache-write tokens: context newly written into the prompt cache (cache_creation_input_tokens).",
|
|
9
|
+
cr: "Cache-read tokens: cached input re-billed on every later call (cache_read_input_tokens). Usually the dominant cost line.",
|
|
10
|
+
} satisfies Record<string, string>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { fireEvent, render, screen } from "@testing-library/react";
|
|
3
|
+
import type { RunPoint } from "@/lib/overview";
|
|
4
|
+
import { EfficiencyCharts } from "../efficiency-charts";
|
|
5
|
+
|
|
6
|
+
function point(overrides: Partial<RunPoint> = {}): RunPoint {
|
|
7
|
+
return {
|
|
8
|
+
runId: "2026-08-18_04-51-58",
|
|
9
|
+
timestamp: Date.UTC(2026, 7, 18),
|
|
10
|
+
harness: "codex",
|
|
11
|
+
successRate: 96,
|
|
12
|
+
turnBudgetRate: 87,
|
|
13
|
+
withinExpectedTimeRate: 78,
|
|
14
|
+
timePerPassedTask: 192,
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function renderCharts(scoped = false) {
|
|
20
|
+
return render(
|
|
21
|
+
<EfficiencyCharts
|
|
22
|
+
data={[point()]}
|
|
23
|
+
harnesses={["codex"]}
|
|
24
|
+
windowStart={Date.UTC(2026, 7, 1)}
|
|
25
|
+
windowEnd={Date.UTC(2026, 7, 31)}
|
|
26
|
+
scoped={scoped}
|
|
27
|
+
/>,
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
describe("EfficiencyCharts", () => {
|
|
32
|
+
test("opens on the wall-clock metric", () => {
|
|
33
|
+
renderCharts();
|
|
34
|
+
expect(screen.getByRole("heading")).toHaveTextContent(
|
|
35
|
+
"Time per Passed Task",
|
|
36
|
+
);
|
|
37
|
+
expect(
|
|
38
|
+
screen.getByRole("tab", { name: "Time" }),
|
|
39
|
+
).toHaveAttribute("aria-selected", "true");
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test("the Turns tab still reaches the retired turn-budget chart", () => {
|
|
43
|
+
// The turn budget is kept visible while the derived expected-time line
|
|
44
|
+
// is being watched; retiring it is deleting this tab.
|
|
45
|
+
renderCharts();
|
|
46
|
+
fireEvent.click(screen.getByRole("tab", { name: "Turns" }));
|
|
47
|
+
expect(screen.getByRole("heading")).toHaveTextContent(
|
|
48
|
+
"Within Expected Turns (%)",
|
|
49
|
+
);
|
|
50
|
+
expect(screen.getByText(/1.5× their expected turns/)).toBeInTheDocument();
|
|
51
|
+
expect(
|
|
52
|
+
screen.getByRole("tab", { name: "Turns" }),
|
|
53
|
+
).toHaveAttribute("aria-selected", "true");
|
|
54
|
+
expect(screen.getByRole("tab", { name: "Time" })).toHaveAttribute(
|
|
55
|
+
"aria-selected",
|
|
56
|
+
"false",
|
|
57
|
+
);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test("switching back restores the wall-clock blurb", () => {
|
|
61
|
+
renderCharts();
|
|
62
|
+
fireEvent.click(screen.getByRole("tab", { name: "Turns" }));
|
|
63
|
+
fireEvent.click(screen.getByRole("tab", { name: "Time" }));
|
|
64
|
+
expect(
|
|
65
|
+
screen.getByText(/the number that passed/),
|
|
66
|
+
).toBeInTheDocument();
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
test("says so when the numbers are filter-scoped", () => {
|
|
70
|
+
renderCharts(true);
|
|
71
|
+
expect(
|
|
72
|
+
screen.getByText(/scoped to the active filter/),
|
|
73
|
+
).toBeInTheDocument();
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
test("no filter note when the window is unscoped", () => {
|
|
77
|
+
renderCharts();
|
|
78
|
+
expect(screen.queryByText(/scoped to the active filter/)).toBeNull();
|
|
79
|
+
});
|
|
80
|
+
});
|
{coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/__tests__/harness-legend.test.tsx
RENAMED
|
@@ -37,6 +37,44 @@ describe("HarnessLegend", () => {
|
|
|
37
37
|
describe("HarnessTooltip", () => {
|
|
38
38
|
const s = series("claude-code", "codex");
|
|
39
39
|
|
|
40
|
+
test("formats the value with the chart's own formatter", () => {
|
|
41
|
+
render(
|
|
42
|
+
<HarnessTooltip
|
|
43
|
+
active
|
|
44
|
+
label={1_700_000_000_000}
|
|
45
|
+
series={s}
|
|
46
|
+
suffix="per passed task"
|
|
47
|
+
emptyText="no passing tasks"
|
|
48
|
+
format={(v) => `${Math.round(v)}s`}
|
|
49
|
+
payload={[{ dataKey: s[1].dataKey, value: 192.3 }]}
|
|
50
|
+
/>,
|
|
51
|
+
);
|
|
52
|
+
expect(screen.getByText("192s per passed task")).toBeInTheDocument();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test("adds the secondary line for the hovered point only", () => {
|
|
56
|
+
// The within-expected rate belongs to one run, so it rides the hover on
|
|
57
|
+
// that run's point instead of being summarized over the whole chart.
|
|
58
|
+
render(
|
|
59
|
+
<HarnessTooltip
|
|
60
|
+
active
|
|
61
|
+
label={1_700_000_000_000}
|
|
62
|
+
series={s}
|
|
63
|
+
suffix="per passed task"
|
|
64
|
+
emptyText="no passing tasks"
|
|
65
|
+
secondary={(harness) =>
|
|
66
|
+
harness === "codex" ? "78% within 2× expected" : null
|
|
67
|
+
}
|
|
68
|
+
payload={[
|
|
69
|
+
{ dataKey: s[0].dataKey, value: 300 },
|
|
70
|
+
{ dataKey: s[1].dataKey, value: 192 },
|
|
71
|
+
]}
|
|
72
|
+
/>,
|
|
73
|
+
);
|
|
74
|
+
expect(screen.getByText("78% within 2× expected")).toBeInTheDocument();
|
|
75
|
+
expect(screen.queryAllByText(/within/)).toHaveLength(1);
|
|
76
|
+
});
|
|
77
|
+
|
|
40
78
|
test("shows only the harnesses that actually ran at the hovered x", () => {
|
|
41
79
|
// Recharts hands over every series, including the ones with no value
|
|
42
80
|
// here. Listing those would invent runs that never happened.
|
{coder_eval-0.11.2 → coder_eval-0.11.4}/evalboard/app/_overview/__tests__/harness-series.test.ts
RENAMED
|
@@ -12,14 +12,16 @@ function point(
|
|
|
12
12
|
harness: string,
|
|
13
13
|
timestamp: number,
|
|
14
14
|
successRate: number | null,
|
|
15
|
-
|
|
15
|
+
withinExpectedTimeRate: number | null = null,
|
|
16
16
|
): RunPoint {
|
|
17
17
|
return {
|
|
18
18
|
runId: `run-${timestamp}`,
|
|
19
19
|
timestamp,
|
|
20
20
|
harness,
|
|
21
21
|
successRate,
|
|
22
|
-
turnBudgetRate,
|
|
22
|
+
turnBudgetRate: null,
|
|
23
|
+
withinExpectedTimeRate,
|
|
24
|
+
timePerPassedTask: null,
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -99,7 +101,7 @@ describe("pivotByHarness", () => {
|
|
|
99
101
|
timestamp: 100,
|
|
100
102
|
[key]: 90,
|
|
101
103
|
});
|
|
102
|
-
expect(pivotByHarness(pts, ["codex"], "
|
|
104
|
+
expect(pivotByHarness(pts, ["codex"], "withinExpectedTimeRate").rows[0]).toEqual(
|
|
103
105
|
{ timestamp: 100, [key]: 40 },
|
|
104
106
|
);
|
|
105
107
|
});
|
|
@@ -111,7 +113,7 @@ describe("pivotByHarness", () => {
|
|
|
111
113
|
const { rows } = pivotByHarness(
|
|
112
114
|
[point("codex", 100, 90, null)],
|
|
113
115
|
["codex"],
|
|
114
|
-
"
|
|
116
|
+
"withinExpectedTimeRate",
|
|
115
117
|
);
|
|
116
118
|
expect(rows).toEqual([]);
|
|
117
119
|
});
|