coder-eval 0.12.9__tar.gz → 0.12.11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/agents.md +59 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/CHANGELOG.md +56 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/PKG-INFO +2 -2
- {coder_eval-0.12.9 → coder_eval-0.12.11}/action.yml +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/ANTIGRAVITY.md +26 -15
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/HARNESS_PARITY.md +4 -3
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/pyproject.toml +2 -2
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/antigravity_agent.py +129 -20
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/cli_called.py +6 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_antigravity_agent.py +293 -12
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_called_criterion.py +12 -1
- {coder_eval-0.12.9 → coder_eval-0.12.11}/uv.lock +20 -20
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.env.example +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/code_review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/pr-checks.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/.python-version +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/ADOPTERS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/CLAUDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/LICENSE +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/Makefile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/NOTICE +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/SECURITY.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/comparison.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docker/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/TASK_DEFINITION_GUIDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/DELEGATE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/comparison.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/index.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/llms.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/package.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/default.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/litellm/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/mkdocs.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/osv-scanner.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/delegate_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/conftest.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_delegate_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_delegate_agent_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_durations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_resume.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_routing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_tags.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timing_identity_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.11}/tests/test_yaml_migration.py +0 -0
|
@@ -434,7 +434,13 @@ agent had produced; bounding it only by a fixed cycle count disconnected from `t
|
|
|
434
434
|
path unreachable — the watchdog always wins, and the same spurious-orphan turn burns the
|
|
435
435
|
full turn timeout before crashing with zero criteria evaluated.
|
|
436
436
|
|
|
437
|
-
The cycle cap
|
|
437
|
+
The cycle cap (120 × 5 s) bounds the wait only when a task sets no timeout at all. With
|
|
438
|
+
one, the deadline alone bounds it, so a never-ending command (a dev server, an unanswered
|
|
439
|
+
prompt) can idle up to 80% of the turn, but a slow job gets the time the task author
|
|
440
|
+
budgeted for it. Applying the cap under a timeout as well force-closed real solvers and
|
|
441
|
+
simulations at 10 minutes: on the SkillsBench Gemini 4-arm campaign it ended 22 of 348
|
|
442
|
+
rows, 4 of which had passed with the deadline alone (an exam-scheduling MIP solve that
|
|
443
|
+
passed at 1211 s among them). It is deliberately not
|
|
438
444
|
"break after N consecutive empty polls": `receive_steps()` returns identically empty
|
|
439
445
|
whether a backgrounded job is still running or will never resolve, and there is no signal
|
|
440
446
|
that tells the two apart except waiting. A count small enough to matter would abort real
|
|
@@ -447,6 +453,58 @@ answer in a headless eval), CANCELED and UNKNOWN — none of which the closed se
|
|
|
447
453
|
done, and none of which the poll loop should wait out, since they will never become DONE
|
|
448
454
|
on their own.
|
|
449
455
|
|
|
456
|
+
It is also an allowlist on the TOOL: only a `run_command` can be backgrounded. Any other
|
|
457
|
+
tool left ACTIVE never resolved in practice: an `edit_file` on the read-only skill mount,
|
|
458
|
+
a `view_file` paged at a large `content_offset`, a `start_subagent`. In a 370-task
|
|
459
|
+
SkillSpec run, 12 of 21 turns that polled to the deadline were waiting on one of those,
|
|
460
|
+
after the model had already finished. `finalize` force-closes them as unresolved.
|
|
461
|
+
|
|
462
|
+
## Antigravity tool allowlist
|
|
463
|
+
|
|
464
|
+
`allowed_tools` / `disallowed_tools` map onto the harness's builtin toolset
|
|
465
|
+
(`CapabilitiesConfig.enabled_tools` / `disabled_tools`) through
|
|
466
|
+
`_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP`, so an experiment's allowlist confines Antigravity the
|
|
467
|
+
way it confines Claude Code. Without it Antigravity ran with every builtin, including
|
|
468
|
+
`start_subagent` and `search_web`, under a list that gave Claude Code neither. `Skill` and
|
|
469
|
+
`TodoWrite` have no builtin (skills load through `skills_paths`) and are skipped. `finish`
|
|
470
|
+
and `schedule` stay on under any allowlist: `finish` returns structured output, and
|
|
471
|
+
`schedule` is the timer the model sleeps on while a backgrounded `run_command` finishes.
|
|
472
|
+
Without `schedule`, Gemini re-checks the background task every few seconds and each check
|
|
473
|
+
is a model call against `max_turns`: on the SkillsBench Gemini 4-arm campaign mean turns
|
|
474
|
+
rose 36.8 → 50.2 and max-turn rows 4 → 16 on the same 110 rows, and the skill arms were hit
|
|
475
|
+
2-3x harder than baseline. With `schedule` on they came back to 35.4 and 1.
|
|
476
|
+
|
|
477
|
+
An allowlist only narrows the harness's default toolset (`BuiltinTools.default()`). `Glob`,
|
|
478
|
+
`Grep` and `LS` map to `find_file`, `search_directory` and `list_directory`, which the
|
|
479
|
+
harness ships off, so an allowlist naming them leaves them off. Turned on, Gemini used them
|
|
480
|
+
in place of shell scripts (1,429 calls in 333 of 348 SkillsBench rows, none before), often
|
|
481
|
+
one search per turn.
|
|
482
|
+
|
|
483
|
+
`start_subagent` also stays on under any allowlist, because the harness builds its system
|
|
484
|
+
prompt from the toolset: with `start_subagent` off it drops the whole subagents section
|
|
485
|
+
(4,801 → 2,783 characters), and with it the prompt's only "you do NOT need to poll ... you
|
|
486
|
+
will be notified" guidance. With it on, the system prompt is byte-identical to 0.12.9's.
|
|
487
|
+
The section alone does not stop Gemini polling a long job with status checks: in a 48-row
|
|
488
|
+
SkillsBench A/B it made 13.4 checks per row with the section and 13.7 without (8.5 on
|
|
489
|
+
0.12.9). The tool descriptions are identical either way, and
|
|
490
|
+
`enable_subagents` alone does not restore the section. Subagents the tool lists withhold
|
|
491
|
+
(no `Task`) are denied by policy at `invoke_subagent` instead, which covers both the
|
|
492
|
+
built-in `research` subagent and one the model defines with `define_subagent`; both get
|
|
493
|
+
`search_web` regardless of the parent's toolset, and a parent policy on `search_web` does
|
|
494
|
+
not reach a model-defined one. The SDK takes an allowlist OR a denylist, so with both set
|
|
495
|
+
the denied tools are removed from the allowlist, except the always-enabled ones.
|
|
496
|
+
|
|
497
|
+
## Antigravity non-interactive commands
|
|
498
|
+
|
|
499
|
+
`run_command` runs in a real terminal: a command that blocks becomes a background task the
|
|
500
|
+
model can check on and type into. A command that stops to ask (`npx` installing a missing
|
|
501
|
+
package, git credentials, an apt/pip confirmation, a pager) and that the model then leaves
|
|
502
|
+
behind keeps the turn waiting on a prompt no one answers. `_NONINTERACTIVE_ENV`
|
|
503
|
+
(`CI`, `npm_config_yes`, `GIT_TERMINAL_PROMPT=0`, `DEBIAN_FRONTEND`, `PIP_NO_INPUT`,
|
|
504
|
+
`PAGER`/`GIT_PAGER=cat`) rides the per-agent `env` seam, each variable only where the
|
|
505
|
+
environment does not already set it, so those commands answer themselves or fail fast. It
|
|
506
|
+
cannot close the terminal: a bare `read` or a server still runs until the poll deadline.
|
|
507
|
+
|
|
450
508
|
## The receive_steps re-entrancy window
|
|
451
509
|
|
|
452
510
|
`receive_steps()` is two nested async generators: the public one delegates to the
|
|
@@ -2,6 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.11 (2026-10-05)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **antigravity**: Bound the background poll by the deadline alone when a timeout is set
|
|
10
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
11
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
12
|
+
|
|
13
|
+
- **antigravity**: Keep a tool allowlist within the harness default toolset
|
|
14
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
15
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
16
|
+
|
|
17
|
+
- **antigravity**: Keep schedule enabled under a tool allowlist
|
|
18
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
19
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
20
|
+
|
|
21
|
+
- **antigravity**: Keep start_subagent on and deny withheld subagents by policy
|
|
22
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
23
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
24
|
+
|
|
25
|
+
- **antigravity**: Restore Gemini's background-job waiting under a tool allowlist
|
|
26
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
27
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
28
|
+
|
|
29
|
+
### Documentation
|
|
30
|
+
|
|
31
|
+
- **antigravity**: State what keeping start_subagent on does and does not fix
|
|
32
|
+
([#216](https://github.com/UiPath/coder_eval/pull/216),
|
|
33
|
+
[`de361f9`](https://github.com/UiPath/coder_eval/commit/de361f979657c68452286da6982d1d67a2fa98c7))
|
|
34
|
+
|
|
35
|
+
### Features
|
|
36
|
+
|
|
37
|
+
- **evalboard**: Treat .dmn as a deliverable kind
|
|
38
|
+
([#217](https://github.com/UiPath/coder_eval/pull/217),
|
|
39
|
+
[`7161fc8`](https://github.com/UiPath/coder_eval/commit/7161fc8a11624662fbf6e3f24d6b468fed99c453))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
## v0.12.10 (2026-10-03)
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
- **antigravity**: Enforce tool lists, non-interactive commands, bounded polling
|
|
47
|
+
([#215](https://github.com/UiPath/coder_eval/pull/215),
|
|
48
|
+
[`7a5a4d0`](https://github.com/UiPath/coder_eval/commit/7a5a4d03ff962b7e47a10c28051b0ca286e2a046))
|
|
49
|
+
|
|
50
|
+
- **cli-called**: Report a zero-match max_count: 0 guard as unproven
|
|
51
|
+
([#205](https://github.com/UiPath/coder_eval/pull/205),
|
|
52
|
+
[`33bc3d7`](https://github.com/UiPath/coder_eval/commit/33bc3d70bd988a522801d75900aeb53ef8400225))
|
|
53
|
+
|
|
54
|
+
### Chores
|
|
55
|
+
|
|
56
|
+
- **deps**: Bump urllib3 2.8.0 and virtualenv 21.14.2 to clear pip-audit
|
|
57
|
+
([#215](https://github.com/UiPath/coder_eval/pull/215),
|
|
58
|
+
[`7a5a4d0`](https://github.com/UiPath/coder_eval/commit/7a5a4d03ff962b7e47a10c28051b0ca286e2a046))
|
|
59
|
+
|
|
60
|
+
|
|
5
61
|
## v0.12.9 (2026-09-29)
|
|
6
62
|
|
|
7
63
|
### 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.11
|
|
4
4
|
Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) 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
|
|
@@ -43,7 +43,7 @@ Requires-Dist: tomli-w>=1.0.0
|
|
|
43
43
|
Requires-Dist: tqdm>=4.67.3
|
|
44
44
|
Requires-Dist: typer>=0.24.1
|
|
45
45
|
Provides-Extra: antigravity
|
|
46
|
-
Requires-Dist: google-antigravity==0.1.
|
|
46
|
+
Requires-Dist: google-antigravity==0.1.20; extra == 'antigravity'
|
|
47
47
|
Provides-Extra: codex
|
|
48
48
|
Requires-Dist: openai-codex>=0.155.1; extra == 'codex'
|
|
49
49
|
Provides-Extra: dev
|
|
@@ -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.11" # <-- 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
|
|
@@ -27,7 +27,7 @@ working directory — both required for an unattended eval.
|
|
|
27
27
|
pip install 'coder-eval[antigravity]'
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
This pulls in `google-antigravity` (pinned to `0.1.
|
|
30
|
+
This pulls in `google-antigravity` (pinned to `0.1.20`), whose wheel bundles the
|
|
31
31
|
platform `localharness` binary. As with the other agents the SDK is imported lazily
|
|
32
32
|
— a base install without the extra still runs end-to-end; Antigravity tasks fail at
|
|
33
33
|
dispatch with a clear hint to install the extra.
|
|
@@ -136,18 +136,30 @@ can't be resolved or if zero skills are discovered.
|
|
|
136
136
|
|
|
137
137
|
## Permissions & tools — important differences
|
|
138
138
|
|
|
139
|
-
**Antigravity ignores `permission_mode
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
**Antigravity ignores `permission_mode`.** The local harness runs in a single
|
|
140
|
+
unconditional mode: every tool call (including `run_command`) is approved via an
|
|
141
|
+
allow-all policy, and file tools are restricted to the configured `workspaces` (the
|
|
142
|
+
sandbox working directory plus any skill roots).
|
|
143
|
+
|
|
144
|
+
**`allowed_tools` / `disallowed_tools` are enforced** by mapping the Claude tool names
|
|
145
|
+
onto the harness's builtin tools (`Bash` → `run_command`, `Read` → `view_file`, `Write` →
|
|
146
|
+
`create_file`, `Edit` → `edit_file`, `Glob` → `find_file`, `Grep` → `search_directory`,
|
|
147
|
+
`Task` → `start_subagent`, `WebSearch` → `search_web`, `WebFetch` → `read_url_content`).
|
|
148
|
+
`Skill` has no builtin and is skipped. `finish`, `schedule` and `start_subagent` always
|
|
149
|
+
stay on, the last so the harness keeps its default system prompt; when the lists do not
|
|
150
|
+
allow `Task`, running a subagent (`invoke_subagent`) is denied by policy instead.
|
|
151
|
+
|
|
152
|
+
`run_command` also gets non-interactive environment variables (`CI=1`,
|
|
153
|
+
`npm_config_yes=true`, `GIT_TERMINAL_PROMPT=0`, `DEBIAN_FRONTEND=noninteractive`,
|
|
154
|
+
`PIP_NO_INPUT=1`, `PAGER=cat`), each only where the environment does not already set it.
|
|
143
155
|
|
|
144
156
|
The trust boundary for an Antigravity run is therefore the **sandbox**, not the
|
|
145
157
|
agent config. Run untrusted tasks under the [Docker driver](../DOCKER_ISOLATION.md);
|
|
146
158
|
the `tempdir` driver is not a security boundary. This mirrors the reality that the
|
|
147
159
|
`bypassPermissions`-equivalent behavior is always on for this backend.
|
|
148
160
|
|
|
149
|
-
|
|
150
|
-
|
|
161
|
+
`permission_mode` still exists on the config for schema uniformity but has no runtime
|
|
162
|
+
effect here — don't rely on it to gate Antigravity.
|
|
151
163
|
|
|
152
164
|
## Telemetry
|
|
153
165
|
|
|
@@ -187,19 +199,18 @@ as every other agent.
|
|
|
187
199
|
4. **`permission_mode` does not confine the harness.** Every mode runs
|
|
188
200
|
`policy.allow_all()`; coder_eval's write boundary is the sandbox driver, and a
|
|
189
201
|
headless eval has no human to approve anything.
|
|
190
|
-
5. **`
|
|
191
|
-
full builtin tool set, so an Antigravity run has tools (web search, subagents,
|
|
192
|
-
URL fetch) that the same task file denies on Claude Code and Codex.
|
|
193
|
-
6. **`max_turns` is counted by the harness.** One `communicate()` is a single SDK turn
|
|
202
|
+
5. **`max_turns` is counted by the harness.** One `communicate()` is a single SDK turn
|
|
194
203
|
here, so the harness counts model API calls itself (a MODEL step at a new
|
|
195
204
|
`step_index` opens one) and enforces the cap on the step loop. See
|
|
196
205
|
[Run-Limit Parity](HARNESS_PARITY.md).
|
|
197
|
-
|
|
206
|
+
6. **Shell commands over ~10s are moved to the background.** The localharness has a
|
|
198
207
|
10-second maximum synchronous wait; past it the command becomes a background task
|
|
199
208
|
and the model gets a task id, not a result. The turn polls for that result instead
|
|
200
|
-
of finalizing on an idle step stream, so slow work does complete — but
|
|
201
|
-
|
|
202
|
-
|
|
209
|
+
of finalizing on an idle step stream, so slow work does complete — but only an
|
|
210
|
+
orphaned `run_command` is waited on, the wait is bounded by 80% of `turn_timeout`
|
|
211
|
+
(10 minutes when the task sets none), and a job that outlives it (typically a server
|
|
212
|
+
the model left running) is force-closed as `result_status: unknown` and graded
|
|
213
|
+
normally rather than as a timeout.
|
|
203
214
|
Measured in [Run-Limit Parity](HARNESS_PARITY.md).
|
|
204
215
|
|
|
205
216
|
## Running in Docker
|
|
@@ -718,9 +718,10 @@ both. See [OpenCode](OPENCODE.md) and [Pi § plugins](PI.md#known-limitations).
|
|
|
718
718
|
lowercase (`bash`/`read`/`write`/`edit`/`grep`/`find`/`ls`), but the shared config
|
|
719
719
|
default (`experiments/default.yaml`) sets Claude-namespaced names
|
|
720
720
|
(`Bash`/`Read`/`Write`/…). Forwarding those to `--tools` would allowlist tools that
|
|
721
|
-
do not exist in Pi and strip the agent of ALL tools — so, like OpenCode (drops them)
|
|
722
|
-
Codex (forwards `disallowed_tools` without SDK enforcement),
|
|
723
|
-
|
|
721
|
+
do not exist in Pi and strip the agent of ALL tools — so, like OpenCode (drops them)
|
|
722
|
+
and Codex (forwards `disallowed_tools` without SDK enforcement), Pi ignores them and
|
|
723
|
+
runs with its full native toolset. (Antigravity maps them onto its builtin tools; see
|
|
724
|
+
[Antigravity](ANTIGRAVITY.md).) A task that needs a
|
|
724
725
|
restricted Pi toolset would have to name Pi's lowercase tools — a documented follow-up.
|
|
725
726
|
- **`permission_mode` is NOT enforced** — Pi headless print mode auto-runs tools and
|
|
726
727
|
exposes only project-file trust (`--approve` / `--no-approve`), no tool-approval
|
|
@@ -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.11",
|
|
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.11"
|
|
4
4
|
description = "Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -131,7 +131,7 @@ codex = [
|
|
|
131
131
|
# Without this extra the framework still installs and runs; Antigravity-dependent
|
|
132
132
|
# code paths fail at start() with a clear hint pointing back here.
|
|
133
133
|
antigravity = [
|
|
134
|
-
"google-antigravity==0.1.
|
|
134
|
+
"google-antigravity==0.1.20",
|
|
135
135
|
]
|
|
136
136
|
# Optional extra that enables OpenCode agent support.
|
|
137
137
|
#
|
|
@@ -95,13 +95,19 @@ _RECEIVE_STEPS_REENTRY_RETRIES = 5
|
|
|
95
95
|
# Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
96
96
|
_POLL_DEADLINE_TIMEOUT_FRACTION = 0.8
|
|
97
97
|
|
|
98
|
-
# Cap on poll *cycles
|
|
99
|
-
#
|
|
100
|
-
#
|
|
101
|
-
# consecutive empty polls".
|
|
98
|
+
# Cap on poll *cycles*, the bound only when a task sets no timeout at all; with
|
|
99
|
+
# one, the deadline alone bounds the wait. 120 * 5s = 10 minutes. Deliberately
|
|
100
|
+
# NOT "break after N consecutive empty polls".
|
|
102
101
|
# Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
103
102
|
_MAX_BACKGROUND_POLLS = 120
|
|
104
103
|
|
|
104
|
+
# The only tool a model can background: a `run_command` left ACTIVE is a job
|
|
105
|
+
# that may still finish. Any other tool left ACTIVE (edit_file on a read-only
|
|
106
|
+
# mount, a paged view_file, start_subagent) never resolves, so it does not
|
|
107
|
+
# justify polling.
|
|
108
|
+
# Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
109
|
+
_BACKGROUNDABLE_TOOL = "run_command"
|
|
110
|
+
|
|
105
111
|
# Antigravity builtin tool name -> the canonical (Claude) vocabulary every
|
|
106
112
|
# criterion is written against. Unmapped names pass through unchanged.
|
|
107
113
|
# Rationale: .claude/notes/agents.md § Tool-name and argument normalization
|
|
@@ -120,6 +126,51 @@ _ANTIGRAVITY_TO_CLAUDE_TOOL_MAP: dict[str, str] = {
|
|
|
120
126
|
"finish": "Finish",
|
|
121
127
|
}
|
|
122
128
|
|
|
129
|
+
# Canonical (Claude) tool name -> the Antigravity builtin it enables, for
|
|
130
|
+
# `allowed_tools` / `disallowed_tools`. "Skill" and "TodoWrite" have no builtin
|
|
131
|
+
# (skills load through `skills_paths`), so they map to nothing; a name that is
|
|
132
|
+
# already an Antigravity builtin passes through.
|
|
133
|
+
# Rationale: .claude/notes/agents.md § Antigravity tool allowlist
|
|
134
|
+
_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP: dict[str, str] = {
|
|
135
|
+
"Bash": "run_command",
|
|
136
|
+
"Read": "view_file",
|
|
137
|
+
"Write": "create_file",
|
|
138
|
+
"Edit": "edit_file",
|
|
139
|
+
"MultiEdit": "edit_file",
|
|
140
|
+
"Glob": "find_file",
|
|
141
|
+
"Grep": "search_directory",
|
|
142
|
+
"LS": "list_directory",
|
|
143
|
+
"Task": "start_subagent",
|
|
144
|
+
"WebSearch": "search_web",
|
|
145
|
+
"WebFetch": "read_url_content",
|
|
146
|
+
"AskUserQuestion": "ask_question",
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Kept on under any allowlist: `finish` returns a turn's structured output,
|
|
150
|
+
# `schedule` is how the model waits on a backgrounded command, and the harness
|
|
151
|
+
# drops its "you will be notified, do not poll" guidance with `start_subagent`.
|
|
152
|
+
# Withheld subagents are denied at `_SUBAGENT_CALL` instead.
|
|
153
|
+
# Rationale: .claude/notes/agents.md § Antigravity tool allowlist
|
|
154
|
+
_ALWAYS_ENABLED_TOOLS: frozenset[str] = frozenset({"finish", "schedule", "start_subagent"})
|
|
155
|
+
|
|
156
|
+
# The one call that runs a subagent, built-in or model-defined.
|
|
157
|
+
_SUBAGENT_CALL = "invoke_subagent"
|
|
158
|
+
|
|
159
|
+
# Set on every run_command unless the environment already sets them, so a
|
|
160
|
+
# command that would stop to ask (`npx` installing a package, git credentials,
|
|
161
|
+
# apt/pip confirmations, a pager) answers itself or fails instead of waiting on
|
|
162
|
+
# a terminal no one types into.
|
|
163
|
+
# Rationale: .claude/notes/agents.md § Antigravity non-interactive commands
|
|
164
|
+
_NONINTERACTIVE_ENV: dict[str, str] = {
|
|
165
|
+
"CI": "1",
|
|
166
|
+
"npm_config_yes": "true",
|
|
167
|
+
"GIT_TERMINAL_PROMPT": "0",
|
|
168
|
+
"DEBIAN_FRONTEND": "noninteractive",
|
|
169
|
+
"PIP_NO_INPUT": "1",
|
|
170
|
+
"PAGER": "cat",
|
|
171
|
+
"GIT_PAGER": "cat",
|
|
172
|
+
}
|
|
173
|
+
|
|
123
174
|
# Tool-call arg keys the harness ADDS at completion (the result payload), not
|
|
124
175
|
# model-supplied inputs. The STATIC backstop; ``_params`` also strips any key
|
|
125
176
|
# that first appears at DONE. A leaked result would false-positive
|
|
@@ -303,18 +354,61 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
303
354
|
def _harness_env(self) -> dict[str, str] | None:
|
|
304
355
|
"""Per-agent environment for the localharness subprocess (``LocalAgentConfig.env``).
|
|
305
356
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
357
|
+
An overlay of the non-interactive variables (each only where the
|
|
358
|
+
environment does not already set it) plus, when mock dirs are configured,
|
|
359
|
+
the mock-CLI PATH prepend; ``None`` when there is nothing to add, so the
|
|
360
|
+
SDK spawns with a plain inherited env. The SDK merges it over
|
|
361
|
+
``os.environ`` at spawn, so every other inherited variable is untouched.
|
|
309
362
|
The same overlay becomes the harness's ``run_command`` environment.
|
|
310
363
|
"""
|
|
311
|
-
if not
|
|
364
|
+
env = {k: v for k, v in _NONINTERACTIVE_ENV.items() if k not in os.environ}
|
|
365
|
+
if self._env_path_prepend:
|
|
366
|
+
# Match the parent's own casing (Windows exports ``Path``) so the merge
|
|
367
|
+
# overrides the inherited entry instead of adding a sibling key.
|
|
368
|
+
path_key = next((k for k in os.environ if k.upper() == "PATH"), "PATH")
|
|
369
|
+
env[path_key] = os.pathsep.join([*self._env_path_prepend, os.environ.get(path_key) or ""])
|
|
370
|
+
return env or None
|
|
371
|
+
|
|
372
|
+
def _tool_capabilities(self, types: Any) -> Any:
|
|
373
|
+
"""``CapabilitiesConfig`` restricting the builtin tools to the configured
|
|
374
|
+
``allowed_tools`` / ``disallowed_tools``, or ``None`` when neither is set.
|
|
375
|
+
|
|
376
|
+
Names are mapped through ``_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP``; names with no
|
|
377
|
+
Antigravity builtin (``Skill``, ``TodoWrite``, MCP tools) are skipped. An
|
|
378
|
+
allowlist only narrows the harness's default toolset, so ``Glob`` / ``Grep`` /
|
|
379
|
+
``LS`` never turn on the tools the harness ships off (``find_file``,
|
|
380
|
+
``search_directory``, ``list_directory``). The SDK takes an allowlist OR a
|
|
381
|
+
denylist, so with both set the denied tools are removed from the allowlist.
|
|
382
|
+
``_ALWAYS_ENABLED_TOOLS`` are never removed.
|
|
383
|
+
|
|
384
|
+
Rationale: .claude/notes/agents.md § Antigravity tool allowlist
|
|
385
|
+
"""
|
|
386
|
+
allowed, disallowed = self.config.allowed_tools, self.config.disallowed_tools
|
|
387
|
+
if not allowed and not disallowed:
|
|
312
388
|
return None
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
389
|
+
builtin = {t.value for t in types.BuiltinTools}
|
|
390
|
+
harness_default = {t.value for t in types.BuiltinTools.default()}
|
|
391
|
+
|
|
392
|
+
def to_builtin(names: list[str] | None) -> set[str]:
|
|
393
|
+
mapped = {_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP.get(n, n) for n in names or []}
|
|
394
|
+
return mapped & builtin
|
|
395
|
+
|
|
396
|
+
if allowed:
|
|
397
|
+
enabled = ((to_builtin(allowed) & harness_default) - to_builtin(disallowed)) | _ALWAYS_ENABLED_TOOLS
|
|
398
|
+
self._log.debug("Enabled builtin tools: %s", ", ".join(sorted(enabled)))
|
|
399
|
+
return types.CapabilitiesConfig(enabled_tools=[types.BuiltinTools(t) for t in sorted(enabled)])
|
|
400
|
+
disabled = to_builtin(disallowed) - _ALWAYS_ENABLED_TOOLS
|
|
401
|
+
self._log.debug("Disabled builtin tools: %s", ", ".join(sorted(disabled)))
|
|
402
|
+
return types.CapabilitiesConfig(disabled_tools=[types.BuiltinTools(t) for t in sorted(disabled)])
|
|
403
|
+
|
|
404
|
+
def _subagents_allowed(self) -> bool:
|
|
405
|
+
"""Whether ``allowed_tools`` / ``disallowed_tools`` let the model run subagents (``Task``)."""
|
|
406
|
+
|
|
407
|
+
def names_task(names: list[str] | None) -> bool:
|
|
408
|
+
return any(_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP.get(n, n) == "start_subagent" for n in names or [])
|
|
409
|
+
|
|
410
|
+
allowed, disallowed = self.config.allowed_tools, self.config.disallowed_tools
|
|
411
|
+
return (not allowed or names_task(allowed)) and not names_task(disallowed)
|
|
318
412
|
|
|
319
413
|
async def start(
|
|
320
414
|
self,
|
|
@@ -365,14 +459,17 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
365
459
|
# policy would deny. ``permission_mode`` is deliberately NOT mapped
|
|
366
460
|
# here — it does not confine this agent, exactly as on Codex, and
|
|
367
461
|
# docs/agents/HARNESS_PARITY.md says so rather than leaving it
|
|
368
|
-
# silent. The isolation boundary is the driver.
|
|
369
|
-
|
|
462
|
+
# silent. The isolation boundary is the driver. Subagents the tool
|
|
463
|
+
# lists withhold are denied here, since `start_subagent` stays on.
|
|
464
|
+
policies=[policy.allow_all()] + ([] if self._subagents_allowed() else [policy.deny(_SUBAGENT_CALL)]),
|
|
370
465
|
system_instructions=self.config.system_prompt or None,
|
|
371
466
|
# Skill discovery: the search-path roots that parent the skill dirs.
|
|
372
467
|
skills_paths=skills_paths,
|
|
373
|
-
# Mock-CLI PATH shadowing
|
|
374
|
-
# see each other's mock dirs.
|
|
468
|
+
# Mock-CLI PATH shadowing plus the non-interactive variables, per
|
|
469
|
+
# agent: two concurrent tasks never see each other's mock dirs.
|
|
375
470
|
env=self._harness_env(),
|
|
471
|
+
# The builtin toolset, narrowed to allowed_tools / disallowed_tools.
|
|
472
|
+
capabilities=self._tool_capabilities(types),
|
|
376
473
|
)
|
|
377
474
|
# Thinking level onto every resolved model's endpoint. The SDK
|
|
378
475
|
# validates the model list in a model_validator, so options are set on
|
|
@@ -761,6 +858,8 @@ class _AntigravityTurnState:
|
|
|
761
858
|
# Most recently seen StepStatus per tool id, for has_orphaned_tool_call.
|
|
762
859
|
# Separate from _closed_tools, which tracks only DONE/ERROR.
|
|
763
860
|
self._tool_last_status: dict[str, Any] = {}
|
|
861
|
+
# Raw (Antigravity) tool name per tool id, for has_orphaned_tool_call.
|
|
862
|
+
self._tool_raw_names: dict[str, Any] = {}
|
|
764
863
|
# Content blocks accumulated since the last per-generation flush.
|
|
765
864
|
self._blocks: list[ContentBlock] = []
|
|
766
865
|
# Where the CURRENT generation started, advanced only by a flush that
|
|
@@ -865,6 +964,7 @@ class _AntigravityTurnState:
|
|
|
865
964
|
step_key = f"{trajectory_id}:{step.step_index}" if trajectory_id else str(step.step_index)
|
|
866
965
|
cid = call.id or f"{raw_name}_{step_key}_{call_index}"
|
|
867
966
|
self._tool_last_status[cid] = sstatus
|
|
967
|
+
self._tool_raw_names[cid] = raw_name
|
|
868
968
|
if cid not in self._seen_tools:
|
|
869
969
|
self._seen_tools.add(cid)
|
|
870
970
|
seq = self._next_seq
|
|
@@ -990,8 +1090,8 @@ class _AntigravityTurnState:
|
|
|
990
1090
|
return ""
|
|
991
1091
|
|
|
992
1092
|
def has_orphaned_tool_call(self) -> bool:
|
|
993
|
-
"""True if any NOT-YET-CLOSED
|
|
994
|
-
ACTIVE — the structural signature of a backgrounded task the model went
|
|
1093
|
+
"""True if any NOT-YET-CLOSED ``run_command``'s most recently seen status
|
|
1094
|
+
is ACTIVE — the structural signature of a backgrounded task the model went
|
|
995
1095
|
idle on without waiting for. See ``communicate``'s poll loop.
|
|
996
1096
|
|
|
997
1097
|
An ALLOWLIST on ACTIVE, never a denylist on "not yet closed": the SDK also
|
|
@@ -999,9 +1099,18 @@ class _AntigravityTurnState:
|
|
|
999
1099
|
should wait out. The `not in _closed_tools` guard is layered on top as a
|
|
1000
1100
|
monotonicity backstop, not a substitute.
|
|
1001
1101
|
|
|
1102
|
+
Also an allowlist on the TOOL: only ``run_command`` can be backgrounded.
|
|
1103
|
+
Any other tool left ACTIVE never resolves, so waiting on it only burns
|
|
1104
|
+
the poll budget; ``finalize`` force-closes it as unresolved.
|
|
1105
|
+
|
|
1002
1106
|
Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
1003
1107
|
"""
|
|
1004
|
-
return any(
|
|
1108
|
+
return any(
|
|
1109
|
+
cid not in self._closed_tools
|
|
1110
|
+
and s == _STATUS_ACTIVE
|
|
1111
|
+
and self._tool_raw_names.get(cid) == _BACKGROUNDABLE_TOOL
|
|
1112
|
+
for cid, s in self._tool_last_status.items()
|
|
1113
|
+
)
|
|
1005
1114
|
|
|
1006
1115
|
def finalize(self, status: AgentEndStatus, *, crashed: bool = False, crash_reason: str | None = None) -> None:
|
|
1007
1116
|
"""Close orphaned tools, flush leftover blocks, emit TurnEnd + AgentEnd.
|
|
@@ -170,7 +170,12 @@ class CliCalledChecker(BaseCriterion[CliCalledCriterion]):
|
|
|
170
170
|
facets.append(f"flags={sorted(criterion.flags)}")
|
|
171
171
|
wanted = ", ".join(facets)
|
|
172
172
|
|
|
173
|
-
if score == 1.0:
|
|
173
|
+
if score == 1.0 and count == 0 and criterion.max_count == 0:
|
|
174
|
+
details = (
|
|
175
|
+
f"0 invocation(s) matched ({wanted}); guard unproven: a typo in verb, tool or flags "
|
|
176
|
+
"would also match nothing"
|
|
177
|
+
)
|
|
178
|
+
elif score == 1.0:
|
|
174
179
|
details = f"{count} invocation(s) matched ({wanted}); satisfies {bound}"
|
|
175
180
|
elif not within_lower:
|
|
176
181
|
# A bare count sends the reader to the sandbox; this criterion exists
|