coder-eval 0.12.9__tar.gz → 0.12.10__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.10}/.claude/notes/agents.md +34 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/CHANGELOG.md +19 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/PKG-INFO +2 -2
- {coder_eval-0.12.9 → coder_eval-0.12.10}/action.yml +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/ANTIGRAVITY.md +24 -15
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/HARNESS_PARITY.md +4 -3
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/pyproject.toml +2 -2
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/antigravity_agent.py +120 -23
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/cli_called.py +6 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_antigravity_agent.py +237 -12
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_called_criterion.py +12 -1
- {coder_eval-0.12.9 → coder_eval-0.12.10}/uv.lock +20 -20
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.env.example +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/code_review.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/pr-checks.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/.python-version +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/ADOPTERS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/CLAUDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/LICENSE +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/Makefile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/NOTICE +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/SECURITY.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/comparison.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docker/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/TASK_DEFINITION_GUIDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/DELEGATE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/comparison.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/index.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/llms.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/package.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/default.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/litellm/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/mkdocs.yml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/osv-scanner.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/delegate_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/conftest.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_delegate_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_delegate_agent_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_durations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_logging.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_registry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reports.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_resume.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_routing.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_stats.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_tags.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timing_identity_contract.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_utils.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.9 → coder_eval-0.12.10}/tests/test_yaml_migration.py +0 -0
|
@@ -434,7 +434,10 @@ 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 applies alongside that deadline, whichever comes first, and is the SOLE
|
|
438
|
+
bound when a task sets no timeout at all. Under a long `turn_timeout` (1800 s gives a
|
|
439
|
+
1440 s deadline) the deadline alone let a never-ending command (a dev server, an
|
|
440
|
+
unanswered prompt) idle the turn for 24 minutes. It is deliberately not
|
|
438
441
|
"break after N consecutive empty polls": `receive_steps()` returns identically empty
|
|
439
442
|
whether a backgrounded job is still running or will never resolve, and there is no signal
|
|
440
443
|
that tells the two apart except waiting. A count small enough to matter would abort real
|
|
@@ -447,6 +450,36 @@ answer in a headless eval), CANCELED and UNKNOWN — none of which the closed se
|
|
|
447
450
|
done, and none of which the poll loop should wait out, since they will never become DONE
|
|
448
451
|
on their own.
|
|
449
452
|
|
|
453
|
+
It is also an allowlist on the TOOL: only a `run_command` can be backgrounded. Any other
|
|
454
|
+
tool left ACTIVE never resolved in practice: an `edit_file` on the read-only skill mount,
|
|
455
|
+
a `view_file` paged at a large `content_offset`, a `start_subagent`. In a 370-task
|
|
456
|
+
SkillSpec run, 12 of 21 turns that polled to the deadline were waiting on one of those,
|
|
457
|
+
after the model had already finished. `finalize` force-closes them as unresolved.
|
|
458
|
+
|
|
459
|
+
## Antigravity tool allowlist
|
|
460
|
+
|
|
461
|
+
`allowed_tools` / `disallowed_tools` map onto the harness's builtin toolset
|
|
462
|
+
(`CapabilitiesConfig.enabled_tools` / `disabled_tools`) through
|
|
463
|
+
`_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP`, so an experiment's allowlist confines Antigravity the
|
|
464
|
+
way it confines Claude Code. Without it Antigravity ran with every builtin, including
|
|
465
|
+
`start_subagent` and `search_web`, under a list that gave Claude Code neither. `Skill` and
|
|
466
|
+
`TodoWrite` have no builtin (skills load through `skills_paths`) and are skipped. `finish`
|
|
467
|
+
stays on under any allowlist: it returns structured output, not a capability.
|
|
468
|
+
`enable_subagents` is a separate switch from the toolset and follows whether
|
|
469
|
+
`start_subagent` survives. The SDK takes an allowlist OR a denylist, so with both set the
|
|
470
|
+
denied tools are removed from the allowlist.
|
|
471
|
+
|
|
472
|
+
## Antigravity non-interactive commands
|
|
473
|
+
|
|
474
|
+
`run_command` runs in a real terminal: a command that blocks becomes a background task the
|
|
475
|
+
model can check on and type into. A command that stops to ask (`npx` installing a missing
|
|
476
|
+
package, git credentials, an apt/pip confirmation, a pager) and that the model then leaves
|
|
477
|
+
behind keeps the turn waiting on a prompt no one answers. `_NONINTERACTIVE_ENV`
|
|
478
|
+
(`CI`, `npm_config_yes`, `GIT_TERMINAL_PROMPT=0`, `DEBIAN_FRONTEND`, `PIP_NO_INPUT`,
|
|
479
|
+
`PAGER`/`GIT_PAGER=cat`) rides the per-agent `env` seam, each variable only where the
|
|
480
|
+
environment does not already set it, so those commands answer themselves or fail fast. It
|
|
481
|
+
cannot close the terminal: a bare `read` or a server still runs until the poll cap.
|
|
482
|
+
|
|
450
483
|
## The receive_steps re-entrancy window
|
|
451
484
|
|
|
452
485
|
`receive_steps()` is two nested async generators: the public one delegates to the
|
|
@@ -2,6 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.10 (2026-10-03)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **antigravity**: Enforce tool lists, non-interactive commands, bounded polling
|
|
10
|
+
([#215](https://github.com/UiPath/coder_eval/pull/215),
|
|
11
|
+
[`7a5a4d0`](https://github.com/UiPath/coder_eval/commit/7a5a4d03ff962b7e47a10c28051b0ca286e2a046))
|
|
12
|
+
|
|
13
|
+
- **cli-called**: Report a zero-match max_count: 0 guard as unproven
|
|
14
|
+
([#205](https://github.com/UiPath/coder_eval/pull/205),
|
|
15
|
+
[`33bc3d7`](https://github.com/UiPath/coder_eval/commit/33bc3d70bd988a522801d75900aeb53ef8400225))
|
|
16
|
+
|
|
17
|
+
### Chores
|
|
18
|
+
|
|
19
|
+
- **deps**: Bump urllib3 2.8.0 and virtualenv 21.14.2 to clear pip-audit
|
|
20
|
+
([#215](https://github.com/UiPath/coder_eval/pull/215),
|
|
21
|
+
[`7a5a4d0`](https://github.com/UiPath/coder_eval/commit/7a5a4d03ff962b7e47a10c28051b0ca286e2a046))
|
|
22
|
+
|
|
23
|
+
|
|
5
24
|
## v0.12.9 (2026-09-29)
|
|
6
25
|
|
|
7
26
|
### 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.10
|
|
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.10" # <-- 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,28 @@ 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` always stays on.
|
|
149
|
+
|
|
150
|
+
`run_command` also gets non-interactive environment variables (`CI=1`,
|
|
151
|
+
`npm_config_yes=true`, `GIT_TERMINAL_PROMPT=0`, `DEBIAN_FRONTEND=noninteractive`,
|
|
152
|
+
`PIP_NO_INPUT=1`, `PAGER=cat`), each only where the environment does not already set it.
|
|
143
153
|
|
|
144
154
|
The trust boundary for an Antigravity run is therefore the **sandbox**, not the
|
|
145
155
|
agent config. Run untrusted tasks under the [Docker driver](../DOCKER_ISOLATION.md);
|
|
146
156
|
the `tempdir` driver is not a security boundary. This mirrors the reality that the
|
|
147
157
|
`bypassPermissions`-equivalent behavior is always on for this backend.
|
|
148
158
|
|
|
149
|
-
|
|
150
|
-
|
|
159
|
+
`permission_mode` still exists on the config for schema uniformity but has no runtime
|
|
160
|
+
effect here — don't rely on it to gate Antigravity.
|
|
151
161
|
|
|
152
162
|
## Telemetry
|
|
153
163
|
|
|
@@ -187,19 +197,18 @@ as every other agent.
|
|
|
187
197
|
4. **`permission_mode` does not confine the harness.** Every mode runs
|
|
188
198
|
`policy.allow_all()`; coder_eval's write boundary is the sandbox driver, and a
|
|
189
199
|
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
|
|
200
|
+
5. **`max_turns` is counted by the harness.** One `communicate()` is a single SDK turn
|
|
194
201
|
here, so the harness counts model API calls itself (a MODEL step at a new
|
|
195
202
|
`step_index` opens one) and enforces the cap on the step loop. See
|
|
196
203
|
[Run-Limit Parity](HARNESS_PARITY.md).
|
|
197
|
-
|
|
204
|
+
6. **Shell commands over ~10s are moved to the background.** The localharness has a
|
|
198
205
|
10-second maximum synchronous wait; past it the command becomes a background task
|
|
199
206
|
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
|
-
`
|
|
207
|
+
of finalizing on an idle step stream, so slow work does complete — but only an
|
|
208
|
+
orphaned `run_command` is waited on, the wait is bounded by 10 minutes or 80% of
|
|
209
|
+
`turn_timeout` (whichever is shorter), and a job that outlives it (typically a server
|
|
210
|
+
the model left running) is force-closed as `result_status: unknown` and graded
|
|
211
|
+
normally rather than as a timeout.
|
|
203
212
|
Measured in [Run-Limit Parity](HARNESS_PARITY.md).
|
|
204
213
|
|
|
205
214
|
## 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.10",
|
|
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.10"
|
|
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
|
#
|
|
@@ -96,12 +96,20 @@ _RECEIVE_STEPS_REENTRY_RETRIES = 5
|
|
|
96
96
|
_POLL_DEADLINE_TIMEOUT_FRACTION = 0.8
|
|
97
97
|
|
|
98
98
|
# Cap on poll *cycles* -- the SOLE bound when a task sets no timeout at all, and
|
|
99
|
-
# a backstop against a very large one
|
|
99
|
+
# a backstop against a very large one (applied alongside the deadline, whichever
|
|
100
|
+
# is reached first). 120 * 5s = 10 minutes, ~2x the worst real
|
|
100
101
|
# backgrounded-job duration observed (60-300s). Deliberately NOT "break after N
|
|
101
102
|
# consecutive empty polls".
|
|
102
103
|
# Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
103
104
|
_MAX_BACKGROUND_POLLS = 120
|
|
104
105
|
|
|
106
|
+
# The only tool a model can background: a `run_command` left ACTIVE is a job
|
|
107
|
+
# that may still finish. Any other tool left ACTIVE (edit_file on a read-only
|
|
108
|
+
# mount, a paged view_file, start_subagent) never resolves, so it does not
|
|
109
|
+
# justify polling.
|
|
110
|
+
# Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
111
|
+
_BACKGROUNDABLE_TOOL = "run_command"
|
|
112
|
+
|
|
105
113
|
# Antigravity builtin tool name -> the canonical (Claude) vocabulary every
|
|
106
114
|
# criterion is written against. Unmapped names pass through unchanged.
|
|
107
115
|
# Rationale: .claude/notes/agents.md § Tool-name and argument normalization
|
|
@@ -120,6 +128,45 @@ _ANTIGRAVITY_TO_CLAUDE_TOOL_MAP: dict[str, str] = {
|
|
|
120
128
|
"finish": "Finish",
|
|
121
129
|
}
|
|
122
130
|
|
|
131
|
+
# Canonical (Claude) tool name -> the Antigravity builtin it enables, for
|
|
132
|
+
# `allowed_tools` / `disallowed_tools`. "Skill" and "TodoWrite" have no builtin
|
|
133
|
+
# (skills load through `skills_paths`), so they map to nothing; a name that is
|
|
134
|
+
# already an Antigravity builtin passes through.
|
|
135
|
+
# Rationale: .claude/notes/agents.md § Antigravity tool allowlist
|
|
136
|
+
_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP: dict[str, str] = {
|
|
137
|
+
"Bash": "run_command",
|
|
138
|
+
"Read": "view_file",
|
|
139
|
+
"Write": "create_file",
|
|
140
|
+
"Edit": "edit_file",
|
|
141
|
+
"MultiEdit": "edit_file",
|
|
142
|
+
"Glob": "find_file",
|
|
143
|
+
"Grep": "search_directory",
|
|
144
|
+
"LS": "list_directory",
|
|
145
|
+
"Task": "start_subagent",
|
|
146
|
+
"WebSearch": "search_web",
|
|
147
|
+
"WebFetch": "read_url_content",
|
|
148
|
+
"AskUserQuestion": "ask_question",
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
# Kept on under any allowlist: `finish` is how a turn returns structured
|
|
152
|
+
# output, not a capability an allowlist is meant to grant or withhold.
|
|
153
|
+
_ALWAYS_ENABLED_TOOLS: frozenset[str] = frozenset({"finish"})
|
|
154
|
+
|
|
155
|
+
# Set on every run_command unless the environment already sets them, so a
|
|
156
|
+
# command that would stop to ask (`npx` installing a package, git credentials,
|
|
157
|
+
# apt/pip confirmations, a pager) answers itself or fails instead of waiting on
|
|
158
|
+
# a terminal no one types into.
|
|
159
|
+
# Rationale: .claude/notes/agents.md § Antigravity non-interactive commands
|
|
160
|
+
_NONINTERACTIVE_ENV: dict[str, str] = {
|
|
161
|
+
"CI": "1",
|
|
162
|
+
"npm_config_yes": "true",
|
|
163
|
+
"GIT_TERMINAL_PROMPT": "0",
|
|
164
|
+
"DEBIAN_FRONTEND": "noninteractive",
|
|
165
|
+
"PIP_NO_INPUT": "1",
|
|
166
|
+
"PAGER": "cat",
|
|
167
|
+
"GIT_PAGER": "cat",
|
|
168
|
+
}
|
|
169
|
+
|
|
123
170
|
# Tool-call arg keys the harness ADDS at completion (the result payload), not
|
|
124
171
|
# model-supplied inputs. The STATIC backstop; ``_params`` also strips any key
|
|
125
172
|
# that first appears at DONE. A leaked result would false-positive
|
|
@@ -303,18 +350,57 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
303
350
|
def _harness_env(self) -> dict[str, str] | None:
|
|
304
351
|
"""Per-agent environment for the localharness subprocess (``LocalAgentConfig.env``).
|
|
305
352
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
353
|
+
An overlay of the non-interactive variables (each only where the
|
|
354
|
+
environment does not already set it) plus, when mock dirs are configured,
|
|
355
|
+
the mock-CLI PATH prepend; ``None`` when there is nothing to add, so the
|
|
356
|
+
SDK spawns with a plain inherited env. The SDK merges it over
|
|
357
|
+
``os.environ`` at spawn, so every other inherited variable is untouched.
|
|
309
358
|
The same overlay becomes the harness's ``run_command`` environment.
|
|
310
359
|
"""
|
|
311
|
-
if not
|
|
360
|
+
env = {k: v for k, v in _NONINTERACTIVE_ENV.items() if k not in os.environ}
|
|
361
|
+
if self._env_path_prepend:
|
|
362
|
+
# Match the parent's own casing (Windows exports ``Path``) so the merge
|
|
363
|
+
# overrides the inherited entry instead of adding a sibling key.
|
|
364
|
+
path_key = next((k for k in os.environ if k.upper() == "PATH"), "PATH")
|
|
365
|
+
env[path_key] = os.pathsep.join([*self._env_path_prepend, os.environ.get(path_key) or ""])
|
|
366
|
+
return env or None
|
|
367
|
+
|
|
368
|
+
def _tool_capabilities(self, types: Any) -> Any:
|
|
369
|
+
"""``CapabilitiesConfig`` restricting the builtin tools to the configured
|
|
370
|
+
``allowed_tools`` / ``disallowed_tools``, or ``None`` when neither is set.
|
|
371
|
+
|
|
372
|
+
Names are mapped through ``_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP``; names with no
|
|
373
|
+
Antigravity builtin (``Skill``, ``TodoWrite``, MCP tools) are skipped. The
|
|
374
|
+
SDK takes an allowlist OR a denylist, so with both set the denied tools are
|
|
375
|
+
removed from the allowlist.
|
|
376
|
+
|
|
377
|
+
Rationale: .claude/notes/agents.md § Antigravity tool allowlist
|
|
378
|
+
"""
|
|
379
|
+
allowed, disallowed = self.config.allowed_tools, self.config.disallowed_tools
|
|
380
|
+
if not allowed and not disallowed:
|
|
312
381
|
return None
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
382
|
+
builtin = {t.value for t in types.BuiltinTools}
|
|
383
|
+
|
|
384
|
+
def to_builtin(names: list[str] | None) -> set[str]:
|
|
385
|
+
mapped = {_CLAUDE_TO_ANTIGRAVITY_TOOL_MAP.get(n, n) for n in names or []}
|
|
386
|
+
return mapped & builtin
|
|
387
|
+
|
|
388
|
+
# `enable_subagents` is a separate switch from the toolset; it follows
|
|
389
|
+
# whether `start_subagent` survives the filter.
|
|
390
|
+
subagent = types.BuiltinTools.START_SUBAGENT.value
|
|
391
|
+
if allowed:
|
|
392
|
+
enabled = (to_builtin(allowed) | _ALWAYS_ENABLED_TOOLS) - to_builtin(disallowed)
|
|
393
|
+
self._log.debug("Enabled builtin tools: %s", ", ".join(sorted(enabled)))
|
|
394
|
+
return types.CapabilitiesConfig(
|
|
395
|
+
enabled_tools=[types.BuiltinTools(t) for t in sorted(enabled)],
|
|
396
|
+
enable_subagents=subagent in enabled,
|
|
397
|
+
)
|
|
398
|
+
disabled = to_builtin(disallowed) - _ALWAYS_ENABLED_TOOLS
|
|
399
|
+
self._log.debug("Disabled builtin tools: %s", ", ".join(sorted(disabled)))
|
|
400
|
+
return types.CapabilitiesConfig(
|
|
401
|
+
disabled_tools=[types.BuiltinTools(t) for t in sorted(disabled)],
|
|
402
|
+
enable_subagents=subagent not in disabled,
|
|
403
|
+
)
|
|
318
404
|
|
|
319
405
|
async def start(
|
|
320
406
|
self,
|
|
@@ -370,9 +456,11 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
370
456
|
system_instructions=self.config.system_prompt or None,
|
|
371
457
|
# Skill discovery: the search-path roots that parent the skill dirs.
|
|
372
458
|
skills_paths=skills_paths,
|
|
373
|
-
# Mock-CLI PATH shadowing
|
|
374
|
-
# see each other's mock dirs.
|
|
459
|
+
# Mock-CLI PATH shadowing plus the non-interactive variables, per
|
|
460
|
+
# agent: two concurrent tasks never see each other's mock dirs.
|
|
375
461
|
env=self._harness_env(),
|
|
462
|
+
# The builtin toolset, narrowed to allowed_tools / disallowed_tools.
|
|
463
|
+
capabilities=self._tool_capabilities(types),
|
|
376
464
|
)
|
|
377
465
|
# Thinking level onto every resolved model's endpoint. The SDK
|
|
378
466
|
# validates the model list in a model_validator, so options are set on
|
|
@@ -547,11 +635,8 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
547
635
|
and not state.max_turns_hit
|
|
548
636
|
and not state.timeout_hit
|
|
549
637
|
and state.has_orphaned_tool_call()
|
|
550
|
-
and
|
|
551
|
-
|
|
552
|
-
if poll_deadline is None
|
|
553
|
-
else time.monotonic() < poll_deadline
|
|
554
|
-
)
|
|
638
|
+
and poll_count < _MAX_BACKGROUND_POLLS
|
|
639
|
+
and (poll_deadline is None or time.monotonic() < poll_deadline)
|
|
555
640
|
):
|
|
556
641
|
poll_count += 1
|
|
557
642
|
self._log.debug("Polling for backgrounded work (orphaned tool call); attempt %d", poll_count)
|
|
@@ -577,9 +662,9 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
577
662
|
# stop/timeout: the call is force-closed as unresolved and
|
|
578
663
|
# the turn is still graded normally on everything else.
|
|
579
664
|
bound = (
|
|
580
|
-
f"
|
|
581
|
-
if
|
|
582
|
-
else f"
|
|
665
|
+
f"_MAX_BACKGROUND_POLLS ({_MAX_BACKGROUND_POLLS})"
|
|
666
|
+
if poll_count >= _MAX_BACKGROUND_POLLS
|
|
667
|
+
else f"poll_deadline ({_POLL_DEADLINE_TIMEOUT_FRACTION:.0%} of {timeout:g}s turn timeout)"
|
|
583
668
|
)
|
|
584
669
|
msg = "Poll budget exhausted (%s, poll_count=%d) with a tool call still ACTIVE."
|
|
585
670
|
self._log.warning(msg, bound, poll_count)
|
|
@@ -761,6 +846,8 @@ class _AntigravityTurnState:
|
|
|
761
846
|
# Most recently seen StepStatus per tool id, for has_orphaned_tool_call.
|
|
762
847
|
# Separate from _closed_tools, which tracks only DONE/ERROR.
|
|
763
848
|
self._tool_last_status: dict[str, Any] = {}
|
|
849
|
+
# Raw (Antigravity) tool name per tool id, for has_orphaned_tool_call.
|
|
850
|
+
self._tool_raw_names: dict[str, Any] = {}
|
|
764
851
|
# Content blocks accumulated since the last per-generation flush.
|
|
765
852
|
self._blocks: list[ContentBlock] = []
|
|
766
853
|
# Where the CURRENT generation started, advanced only by a flush that
|
|
@@ -865,6 +952,7 @@ class _AntigravityTurnState:
|
|
|
865
952
|
step_key = f"{trajectory_id}:{step.step_index}" if trajectory_id else str(step.step_index)
|
|
866
953
|
cid = call.id or f"{raw_name}_{step_key}_{call_index}"
|
|
867
954
|
self._tool_last_status[cid] = sstatus
|
|
955
|
+
self._tool_raw_names[cid] = raw_name
|
|
868
956
|
if cid not in self._seen_tools:
|
|
869
957
|
self._seen_tools.add(cid)
|
|
870
958
|
seq = self._next_seq
|
|
@@ -990,8 +1078,8 @@ class _AntigravityTurnState:
|
|
|
990
1078
|
return ""
|
|
991
1079
|
|
|
992
1080
|
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
|
|
1081
|
+
"""True if any NOT-YET-CLOSED ``run_command``'s most recently seen status
|
|
1082
|
+
is ACTIVE — the structural signature of a backgrounded task the model went
|
|
995
1083
|
idle on without waiting for. See ``communicate``'s poll loop.
|
|
996
1084
|
|
|
997
1085
|
An ALLOWLIST on ACTIVE, never a denylist on "not yet closed": the SDK also
|
|
@@ -999,9 +1087,18 @@ class _AntigravityTurnState:
|
|
|
999
1087
|
should wait out. The `not in _closed_tools` guard is layered on top as a
|
|
1000
1088
|
monotonicity backstop, not a substitute.
|
|
1001
1089
|
|
|
1090
|
+
Also an allowlist on the TOOL: only ``run_command`` can be backgrounded.
|
|
1091
|
+
Any other tool left ACTIVE never resolves, so waiting on it only burns
|
|
1092
|
+
the poll budget; ``finalize`` force-closes it as unresolved.
|
|
1093
|
+
|
|
1002
1094
|
Rationale: .claude/notes/agents.md § Antigravity Step interleaving and the background poll
|
|
1003
1095
|
"""
|
|
1004
|
-
return any(
|
|
1096
|
+
return any(
|
|
1097
|
+
cid not in self._closed_tools
|
|
1098
|
+
and s == _STATUS_ACTIVE
|
|
1099
|
+
and self._tool_raw_names.get(cid) == _BACKGROUNDABLE_TOOL
|
|
1100
|
+
for cid, s in self._tool_last_status.items()
|
|
1101
|
+
)
|
|
1005
1102
|
|
|
1006
1103
|
def finalize(self, status: AgentEndStatus, *, crashed: bool = False, crash_reason: str | None = None) -> None:
|
|
1007
1104
|
"""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
|