coder-eval 0.12.8__tar.gz → 0.12.9__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.8 → coder_eval-0.12.9}/.github/workflows/pr-checks.yml +1 -1
- {coder_eval-0.12.8 → coder_eval-0.12.9}/CHANGELOG.md +29 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/PKG-INFO +1 -1
- {coder_eval-0.12.8 → coder_eval-0.12.9}/action.yml +1 -1
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DOCKER_ISOLATION.md +13 -2
- coder_eval-0.12.9/osv-scanner.toml +15 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.8 → coder_eval-0.12.9}/pyproject.toml +2 -2
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/docker_runner.py +59 -23
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/__init__.py +2 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/container_paths.py +3 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_container_context.py +31 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_mounts.py +21 -18
- {coder_eval-0.12.8 → coder_eval-0.12.9}/uv.lock +5 -5
- coder_eval-0.12.8/osv-scanner.toml +0 -11
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/agents.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.env.example +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/code_review.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.gitignore +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/.python-version +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/ADOPTERS.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/CLAUDE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/LICENSE +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/Makefile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/NOTICE +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/SECURITY.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/comparison.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/TASK_DEFINITION_GUIDE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/DELEGATE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/HARNESS_PARITY.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/comparison.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/index.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/llms.txt +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/package.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/default.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/mkdocs.yml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/conftest.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_durations.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_integration.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_logging.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_registry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_resume.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_routing.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_stats.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_tags.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_identity_contract.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_utils.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_yaml_migration.py +0 -0
|
@@ -123,7 +123,7 @@ jobs:
|
|
|
123
123
|
|
|
124
124
|
# PHASE 3: Security scanning
|
|
125
125
|
- name: Security - Dependency vulnerabilities (pip-audit)
|
|
126
|
-
run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln
|
|
126
|
+
run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln CVE-2026-49265 --ignore-vuln CVE-2026-49264 # pygments 2.19.2 ReDoS + pip 26.0.1 tar/ZIP ambiguity; no fixes available on PyPI yet — revisit quarterly. oauthlib 3.3.1 PKCE timing side channel + RevocationEndpoint JSONP callback injection: both server-side OAuth endpoints, unused here (transitive via azure-monitor exporter -> msrest); fix 4.0.0 is a major bump still inside the safe-chain minimum package age — revisit next month
|
|
127
127
|
|
|
128
128
|
- name: Security - OSV vulnerability scan (osv-scanner)
|
|
129
129
|
# Complements pip-audit: pip-audit queries the PyPI advisory DB;
|
|
@@ -2,6 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.9 (2026-09-29)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **docker**: Mount plugins at /coder_eval/plugins/<i> and point the staged task there
|
|
10
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
11
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
12
|
+
|
|
13
|
+
- **docker**: Mount plugins at /work/plugins/<i> and point the staged task there
|
|
14
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
15
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
16
|
+
|
|
17
|
+
### Chores
|
|
18
|
+
|
|
19
|
+
- **deps**: Bump pyjwt to 2.15.1 and ignore oauthlib CVE-2026-49265
|
|
20
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
21
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
22
|
+
|
|
23
|
+
- **deps**: Ignore oauthlib CVE-2026-49264 and drop the stale pyjwt ignore
|
|
24
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
25
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
26
|
+
|
|
27
|
+
### Refactoring
|
|
28
|
+
|
|
29
|
+
- **docker**: Mount plugins under /work/plugins, not /coder_eval/plugins
|
|
30
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
31
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
32
|
+
|
|
33
|
+
|
|
5
34
|
## v0.12.8 (2026-09-29)
|
|
6
35
|
|
|
7
36
|
### 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.9
|
|
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
|
|
@@ -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.9" # <-- 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
|
|
@@ -361,9 +361,20 @@ reference window's posture above; neither contains an adversarial agent.
|
|
|
361
361
|
read-write (a `:ro` mount rejects `rm` with EROFS). `prior.json` is kept: it is
|
|
362
362
|
read later on the regrade path, and a regrade runs no agent so it is not a leak.
|
|
363
363
|
|
|
364
|
+
- **Plugins mount at a fixed container path.** The `i`-th `agent.plugins[]` entry
|
|
365
|
+
is resolved on the host (a relative path against the task YAML's directory, `$VAR`
|
|
366
|
+
and `~` expanded) and mounted `:ro` at `/work/plugins/<i>`. The task YAML
|
|
367
|
+
staged into the container is rewritten to point at that path, so the in-container
|
|
368
|
+
agent loads the directory the host mounted, whatever form the authored path took
|
|
369
|
+
and whatever the container's cwd. (Before, the staged YAML kept the authored string:
|
|
370
|
+
a relative or `$VAR` path the container could not resolve loaded no skill, with only
|
|
371
|
+
a warning.) An entry that does not resolve to a host directory is neither mounted
|
|
372
|
+
nor rewritten. It sits under `/work`, so a `sandbox.docker.extra_mounts` destination
|
|
373
|
+
cannot shadow it (those are refused anywhere under `/work/`).
|
|
374
|
+
|
|
364
375
|
- **Auto-mounted plugin trees are default-deny masked.** An `agent.plugins[].path`
|
|
365
|
-
(or a `TemplateDirSource.path` that is itself a plugin
|
|
366
|
-
its host path `:ro` so the plugin loads. Eval material colocated under that tree
|
|
376
|
+
(at `/work/plugins/<i>`) or a `TemplateDirSource.path` that is itself a plugin
|
|
377
|
+
root (at its host path) is auto-mounted `:ro` so the plugin loads. Eval material colocated under that tree
|
|
367
378
|
as siblings of the skills dir — sibling task YAMLs, reference solutions, test
|
|
368
379
|
fixtures — would otherwise be readable. So the runner keeps the whole root
|
|
369
380
|
mounted but layers an empty `--tmpfs` over every child dir OUTSIDE the keep-set
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# osv-scanner suppressions for advisories without an available fix.
|
|
2
|
+
#
|
|
3
|
+
# Mirrors the inline --ignore-vuln list passed to pip-audit in
|
|
4
|
+
# .github/workflows/pr-checks.yml so both scanners stay in sync. pip-audit
|
|
5
|
+
# accepts ignores as CLI flags; osv-scanner only reads them from this TOML.
|
|
6
|
+
# When an advisory is fixed upstream, drop the entry here AND remove the
|
|
7
|
+
# matching pip-audit flag in the same PR.
|
|
8
|
+
|
|
9
|
+
[[IgnoredVulns]]
|
|
10
|
+
id = "CVE-2026-49265"
|
|
11
|
+
reason = "oauthlib 3.3.1 PKCE timing side channel in the server-side code_challenge check, which coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
|
|
12
|
+
|
|
13
|
+
[[IgnoredVulns]]
|
|
14
|
+
id = "GHSA-hj66-6f7g-4r5v"
|
|
15
|
+
reason = "CVE-2026-49264: oauthlib 3.3.1 RevocationEndpoint JSONP callback injection (only with enable_jsonp=True), a server-side OAuth endpoint coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
|
|
@@ -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.9",
|
|
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.9"
|
|
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"
|
|
@@ -227,7 +227,7 @@ constraint-dependencies = [
|
|
|
227
227
|
"langgraph>=1.0.10",
|
|
228
228
|
"langsmith>=0.6.3",
|
|
229
229
|
"orjson>=3.11.6",
|
|
230
|
-
"pyjwt>=2.
|
|
230
|
+
"pyjwt>=2.14.0",
|
|
231
231
|
"python-multipart>=0.0.31",
|
|
232
232
|
"requests>=2.33.0",
|
|
233
233
|
"starlette>=1.3.1",
|
|
@@ -30,6 +30,7 @@ from coder_eval.models import (
|
|
|
30
30
|
CONTAINER_GRADE_WORKSPACE,
|
|
31
31
|
CONTAINER_INPUT_DIR,
|
|
32
32
|
CONTAINER_OUTPUT_DIR,
|
|
33
|
+
CONTAINER_PLUGINS_DIR,
|
|
33
34
|
CONTAINER_REFERENCE_DIR,
|
|
34
35
|
CONTAINER_TASK_DIR,
|
|
35
36
|
CONTAINER_WORK_DIR,
|
|
@@ -724,6 +725,17 @@ class DockerRunner:
|
|
|
724
725
|
# Rationale: .claude/notes/orchestration.md § The host-side driver rewrite
|
|
725
726
|
execution_sandbox = SandboxConfig.model_validate({**self.rt.task.sandbox.model_dump(), "driver": "tempdir"}) # noqa: CE051
|
|
726
727
|
execution_task = self.rt.task.model_copy(update={"sandbox": execution_sandbox})
|
|
728
|
+
# Point each mounted plugin at its container path; the host path (relative,
|
|
729
|
+
# $VAR, or absolute) need not exist inside the container.
|
|
730
|
+
plugin_mounts = self._plugin_mounts()
|
|
731
|
+
if plugin_mounts and execution_task.agent is not None:
|
|
732
|
+
plugins = [
|
|
733
|
+
{**plugin, "path": plugin_mounts[i][1]} if i in plugin_mounts else plugin
|
|
734
|
+
for i, plugin in enumerate(execution_task.agent.plugins or [])
|
|
735
|
+
]
|
|
736
|
+
execution_task = execution_task.model_copy(
|
|
737
|
+
update={"agent": execution_task.agent.model_copy(update={"plugins": plugins})}
|
|
738
|
+
)
|
|
727
739
|
|
|
728
740
|
def _dump_task_yaml() -> str:
|
|
729
741
|
return yaml.safe_dump(execution_task.model_dump(mode="json"), sort_keys=False)
|
|
@@ -1236,13 +1248,34 @@ class DockerRunner:
|
|
|
1236
1248
|
expanded = self.rt.task_file.parent / expanded
|
|
1237
1249
|
return expanded.resolve()
|
|
1238
1250
|
|
|
1251
|
+
def _plugin_mounts(self) -> dict[int, tuple[Path, str]]:
|
|
1252
|
+
"""``agent.plugins`` index -> (host dir, container path) for every plugin whose path resolves to a dir.
|
|
1253
|
+
|
|
1254
|
+
Shared by ``_stage_inputs`` (rewrites the staged task.yaml) and
|
|
1255
|
+
``_append_auto_mounts`` (emits the binds), so the two cannot disagree.
|
|
1256
|
+
"""
|
|
1257
|
+
plugins = (self.rt.task.agent.plugins if self.rt.task.agent else None) or []
|
|
1258
|
+
mounts: dict[int, tuple[Path, str]] = {}
|
|
1259
|
+
for i, plugin in enumerate(plugins):
|
|
1260
|
+
raw_path = plugin.get("path") if isinstance(plugin, dict) else None
|
|
1261
|
+
if not raw_path:
|
|
1262
|
+
continue
|
|
1263
|
+
resolved = self._resolve_mount_path(raw_path)
|
|
1264
|
+
if resolved.is_dir():
|
|
1265
|
+
mounts[i] = (resolved, f"{CONTAINER_PLUGINS_DIR}/{i}")
|
|
1266
|
+
return mounts
|
|
1267
|
+
|
|
1239
1268
|
def _append_auto_mounts(self, argv: list[str]) -> None:
|
|
1240
|
-
"""Bind-mount the plugin, template and system-prompt paths a task references, ``:ro
|
|
1269
|
+
"""Bind-mount the plugin, template and system-prompt paths a task references, ``:ro``.
|
|
1241
1270
|
|
|
1242
|
-
|
|
1243
|
-
|
|
1271
|
+
Plugin ``i`` goes to ``CONTAINER_PLUGINS_DIR/i`` (see ``_plugin_mounts``); the
|
|
1272
|
+
rest mount at their host path. A plugin root also gets every non-skill child dir
|
|
1273
|
+
masked with an empty tmpfs. The reference is deliberately NOT here: it has its
|
|
1274
|
+
own mount (``_reference_mount_args``).
|
|
1244
1275
|
"""
|
|
1276
|
+
# Host sources bound at their host path (dedupe), and every container dest bound.
|
|
1245
1277
|
mounted: set[Path] = set()
|
|
1278
|
+
dests: set[str] = set()
|
|
1246
1279
|
# Warned, not refused: `plugin.path` / `reference.directory` /
|
|
1247
1280
|
# `template_sources` are user-controlled strings, and legitimate uses exist.
|
|
1248
1281
|
# Rationale: .claude/notes/isolation.md § Extra mounts and reserved destinations
|
|
@@ -1251,19 +1284,11 @@ class DockerRunner:
|
|
|
1251
1284
|
# Lazy: eval_material imports agents._skills, whose package imports this module.
|
|
1252
1285
|
from coder_eval.isolation.eval_material import mask_dirs
|
|
1253
1286
|
|
|
1254
|
-
# Masked dir -> its plugin root. Emitted only once every bind is
|
|
1255
|
-
# nested plugin root's bind can win over its parent's mask of the same path.
|
|
1256
|
-
mask_targets: dict[
|
|
1287
|
+
# Masked container dir -> its host plugin root. Emitted only once every bind is
|
|
1288
|
+
# known, so a nested plugin root's bind can win over its parent's mask of the same path.
|
|
1289
|
+
mask_targets: dict[str, Path] = {}
|
|
1257
1290
|
|
|
1258
|
-
def
|
|
1259
|
-
if not raw_path:
|
|
1260
|
-
return
|
|
1261
|
-
resolved = self._resolve_mount_path(raw_path)
|
|
1262
|
-
# File paths get mounted as the parent dir so a single -v covers
|
|
1263
|
-
# the file; container-side reads still resolve at the same path.
|
|
1264
|
-
target = resolved if (dir_only or resolved.is_dir()) else resolved.parent
|
|
1265
|
-
if target in mounted or not target.is_dir():
|
|
1266
|
-
return
|
|
1291
|
+
def _bind(target: Path, dest: str) -> None:
|
|
1267
1292
|
for sensitive in sensitive_sources:
|
|
1268
1293
|
if target == sensitive or sensitive in target.parents:
|
|
1269
1294
|
logger.warning(
|
|
@@ -1271,17 +1296,28 @@ class DockerRunner:
|
|
|
1271
1296
|
target,
|
|
1272
1297
|
)
|
|
1273
1298
|
break
|
|
1274
|
-
|
|
1275
|
-
argv.extend(["-v", f"{target}:{
|
|
1299
|
+
dests.add(dest)
|
|
1300
|
+
argv.extend(["-v", f"{target}:{dest}:ro"])
|
|
1276
1301
|
masks = mask_dirs(target)
|
|
1277
1302
|
if not masks and (target / ".claude-plugin" / "plugin.json").is_file():
|
|
1278
1303
|
logger.warning(_MASK_STANDDOWN_WARNING, target)
|
|
1279
1304
|
for masked_dir in masks:
|
|
1280
|
-
mask_targets.setdefault(masked_dir, target)
|
|
1305
|
+
mask_targets.setdefault(str(Path(dest) / masked_dir.relative_to(target)), target)
|
|
1281
1306
|
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1307
|
+
def _auto_mount(raw_path: str | None, *, dir_only: bool = True) -> None:
|
|
1308
|
+
if not raw_path:
|
|
1309
|
+
return
|
|
1310
|
+
resolved = self._resolve_mount_path(raw_path)
|
|
1311
|
+
# File paths get mounted as the parent dir so a single -v covers
|
|
1312
|
+
# the file; container-side reads still resolve at the same path.
|
|
1313
|
+
target = resolved if (dir_only or resolved.is_dir()) else resolved.parent
|
|
1314
|
+
if target in mounted or not target.is_dir():
|
|
1315
|
+
return
|
|
1316
|
+
mounted.add(target)
|
|
1317
|
+
_bind(target, str(target))
|
|
1318
|
+
|
|
1319
|
+
for host_dir, dest in self._plugin_mounts().values():
|
|
1320
|
+
_bind(host_dir, dest)
|
|
1285
1321
|
|
|
1286
1322
|
from coder_eval.models import TemplateDirSource
|
|
1287
1323
|
|
|
@@ -1299,9 +1335,9 @@ class DockerRunner:
|
|
|
1299
1335
|
# A deeper --tmpfs wins over the enclosing :ro bind regardless of argv order;
|
|
1300
1336
|
# a mask that is also a bind would be a duplicate mount point, so the bind wins.
|
|
1301
1337
|
for masked_dir, root in sorted(mask_targets.items()):
|
|
1302
|
-
if masked_dir in
|
|
1338
|
+
if masked_dir in dests:
|
|
1303
1339
|
continue
|
|
1304
|
-
argv.extend(["--tmpfs",
|
|
1340
|
+
argv.extend(["--tmpfs", masked_dir])
|
|
1305
1341
|
logger.warning(_MASK_WARNING, masked_dir, root)
|
|
1306
1342
|
|
|
1307
1343
|
def _build_argv(
|
|
@@ -36,6 +36,7 @@ from coder_eval.models.container_paths import (
|
|
|
36
36
|
CONTAINER_GRADE_WORKSPACE,
|
|
37
37
|
CONTAINER_INPUT_DIR,
|
|
38
38
|
CONTAINER_OUTPUT_DIR,
|
|
39
|
+
CONTAINER_PLUGINS_DIR,
|
|
39
40
|
CONTAINER_REFERENCE_DIR,
|
|
40
41
|
CONTAINER_TASK_DIR,
|
|
41
42
|
CONTAINER_WORK_DIR,
|
|
@@ -324,6 +325,7 @@ __all__ = [ # noqa: RUF022 - Keep grouped by category for readability
|
|
|
324
325
|
"CONTAINER_INPUT_DIR",
|
|
325
326
|
"CONTAINER_OUTPUT_DIR",
|
|
326
327
|
"CONTAINER_GRADE_WORKSPACE",
|
|
328
|
+
"CONTAINER_PLUGINS_DIR",
|
|
327
329
|
"CONTAINER_REFERENCE_DIR",
|
|
328
330
|
"IN_CONTAINER_ENV",
|
|
329
331
|
"CONTAINER_TASK_DIR",
|
|
@@ -91,6 +91,8 @@ CONTAINER_REFERENCE_DIR = "/work/references"
|
|
|
91
91
|
# Rationale: .claude/notes/isolation.md § Why the grading container gets a private scratch directory
|
|
92
92
|
CONTAINER_GRADE_WORKSPACE = "/work/workspace"
|
|
93
93
|
|
|
94
|
+
CONTAINER_PLUGINS_DIR = "/work/plugins" # agent.plugins[i] mounts :ro at <dir>/<i>; see DOCKER_ISOLATION.md
|
|
95
|
+
|
|
94
96
|
# Paths a task's WORKDIR must never collide with. Consumed by SandboxConfig's
|
|
95
97
|
# working_dir validator and re-asserted host-side in docker_runner.
|
|
96
98
|
RESERVED_CONTAINER_DIRS = frozenset(
|
|
@@ -102,5 +104,6 @@ RESERVED_CONTAINER_DIRS = frozenset(
|
|
|
102
104
|
CONTAINER_TASK_DIR,
|
|
103
105
|
CONTAINER_REFERENCE_DIR,
|
|
104
106
|
CONTAINER_GRADE_WORKSPACE,
|
|
107
|
+
CONTAINER_PLUGINS_DIR,
|
|
105
108
|
}
|
|
106
109
|
)
|
|
@@ -18,6 +18,7 @@ from coder_eval import models
|
|
|
18
18
|
from coder_eval.cli import app, run_task_internal_command
|
|
19
19
|
from coder_eval.isolation.docker_runner import DockerRunner
|
|
20
20
|
from coder_eval.models import (
|
|
21
|
+
CONTAINER_PLUGINS_DIR,
|
|
21
22
|
AgentKind,
|
|
22
23
|
ConfigLineageEntry,
|
|
23
24
|
ContainerContext,
|
|
@@ -293,6 +294,36 @@ async def test_the_staged_task_yaml_says_tempdir(tmp_path: Path) -> None:
|
|
|
293
294
|
assert staged.sandbox.driver == "tempdir"
|
|
294
295
|
|
|
295
296
|
|
|
297
|
+
async def test_the_staged_task_yaml_points_plugins_at_their_container_mounts(tmp_path: Path) -> None:
|
|
298
|
+
# A relative plugin path resolves against the task-file dir on the host; the
|
|
299
|
+
# container gets the fixed mount path instead, since that host path (or its
|
|
300
|
+
# $VAR) need not exist inside. An unresolvable plugin is left as authored.
|
|
301
|
+
(tmp_path / "plugin" / "skills" / "demo").mkdir(parents=True)
|
|
302
|
+
plugins = [{"type": "local", "path": "plugin"}, {"type": "local", "path": "does/not/exist"}]
|
|
303
|
+
task = TaskDefinition.model_validate(
|
|
304
|
+
{
|
|
305
|
+
**_authored_docker_task().model_dump(),
|
|
306
|
+
"initial_prompt": "go",
|
|
307
|
+
"agent": {"type": "claude-code", "plugins": plugins},
|
|
308
|
+
}
|
|
309
|
+
)
|
|
310
|
+
rt = ResolvedTask(
|
|
311
|
+
task=task,
|
|
312
|
+
task_file=tmp_path / "t.yaml",
|
|
313
|
+
run_dir=tmp_path / "run",
|
|
314
|
+
variant_id="default",
|
|
315
|
+
original_task_id="staged",
|
|
316
|
+
)
|
|
317
|
+
input_dir = tmp_path / "input"
|
|
318
|
+
input_dir.mkdir()
|
|
319
|
+
await DockerRunner(rt)._stage_inputs(input_dir)
|
|
320
|
+
|
|
321
|
+
staged, _ = load_task(input_dir / "task.yaml")
|
|
322
|
+
assert [p["path"] for p in staged.agent.plugins] == [f"{CONTAINER_PLUGINS_DIR}/0", "does/not/exist"]
|
|
323
|
+
# The host-side task is untouched: argv rendering still needs the host path.
|
|
324
|
+
assert rt.task.agent.plugins[0]["path"] == "plugin"
|
|
325
|
+
|
|
326
|
+
|
|
296
327
|
async def test_the_contract_carries_the_authored_sandbox(tmp_path: Path) -> None:
|
|
297
328
|
rt, _, ctx = await _stage(tmp_path)
|
|
298
329
|
|
|
@@ -25,6 +25,7 @@ from coder_eval.isolation.docker_runner import (
|
|
|
25
25
|
CLAUDE_COPY_MAX_ATTEMPTS,
|
|
26
26
|
CONTAINER_ENTRYPOINT,
|
|
27
27
|
CONTAINER_OUTPUT_DIR,
|
|
28
|
+
CONTAINER_PLUGINS_DIR,
|
|
28
29
|
CONTAINER_REFERENCE_DIR,
|
|
29
30
|
CONTAINER_TASK_DIR,
|
|
30
31
|
DockerRunError,
|
|
@@ -790,18 +791,18 @@ class TestAutoMountAllowlistMask:
|
|
|
790
791
|
argv = self._argv(runner, tmp_path)
|
|
791
792
|
|
|
792
793
|
tmpfs = self._tmpfs(argv)
|
|
793
|
-
# The whole root is :ro-mounted so the plugin loads.
|
|
794
|
-
assert f"{root.resolve()}:{
|
|
794
|
+
# The whole root is :ro-mounted at plugin 0's container path so the plugin loads.
|
|
795
|
+
assert f"{root.resolve()}:{CONTAINER_PLUGINS_DIR}/0:ro" in self._mounts(argv)
|
|
795
796
|
# Non-skill children masked; skill surface + manifest not.
|
|
796
|
-
assert
|
|
797
|
-
assert
|
|
798
|
-
assert
|
|
799
|
-
assert
|
|
800
|
-
assert
|
|
801
|
-
|
|
802
|
-
def
|
|
803
|
-
# Codex symlinks / Antigravity search paths dereference the
|
|
804
|
-
#
|
|
797
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/tests" in tmpfs
|
|
798
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/reference" in tmpfs
|
|
799
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/node_modules" in tmpfs
|
|
800
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/skills" not in tmpfs
|
|
801
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/.claude-plugin" not in tmpfs
|
|
802
|
+
|
|
803
|
+
def test_tmpfs_targets_are_under_mounted_container_root(self, tmp_path: Path):
|
|
804
|
+
# Codex symlinks / Antigravity search paths dereference the container path
|
|
805
|
+
# the staged task.yaml names, so the mask must sit under that path.
|
|
805
806
|
root = self._plugin_root(tmp_path / "plugin")
|
|
806
807
|
(root / "skills" / "demo").mkdir(parents=True)
|
|
807
808
|
(root / "tests").mkdir()
|
|
@@ -810,7 +811,7 @@ class TestAutoMountAllowlistMask:
|
|
|
810
811
|
argv = self._argv(runner, tmp_path)
|
|
811
812
|
|
|
812
813
|
for masked in self._tmpfs(argv):
|
|
813
|
-
assert Path(masked).is_relative_to(
|
|
814
|
+
assert Path(masked).is_relative_to(f"{CONTAINER_PLUGINS_DIR}/0")
|
|
814
815
|
|
|
815
816
|
def test_template_source_plugin_root_is_masked(self, tmp_path: Path):
|
|
816
817
|
from coder_eval.models import TemplateDirSource
|
|
@@ -860,12 +861,14 @@ class TestAutoMountAllowlistMask:
|
|
|
860
861
|
argv = self._argv(runner, tmp_path)
|
|
861
862
|
mounts, tmpfs = self._mounts(argv), self._tmpfs(argv)
|
|
862
863
|
|
|
863
|
-
# B is bind-mounted (so it loads) and NOT
|
|
864
|
-
|
|
865
|
-
assert
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
assert
|
|
864
|
+
# B is bind-mounted at its own container path (so it loads) and NOT
|
|
865
|
+
# tmpfs-masked there (no duplicate dest).
|
|
866
|
+
assert f"{b.resolve()}:{CONTAINER_PLUGINS_DIR}/1:ro" in mounts
|
|
867
|
+
assert f"{CONTAINER_PLUGINS_DIR}/1" not in tmpfs
|
|
868
|
+
# A's own non-skill children (B included) are masked in A's view; B masks its own.
|
|
869
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/tests" in tmpfs
|
|
870
|
+
assert f"{CONTAINER_PLUGINS_DIR}/0/nested_b" in tmpfs
|
|
871
|
+
assert f"{CONTAINER_PLUGINS_DIR}/1/tests" in tmpfs
|
|
869
872
|
# No --tmpfs target collides with a bind destination (the M2 crash).
|
|
870
873
|
bind_dests = {m.split(":")[1] for m in mounts if m.count(":") >= 2}
|
|
871
874
|
assert not (set(tmpfs) & bind_dests)
|
|
@@ -14,7 +14,7 @@ constraints = [
|
|
|
14
14
|
{ name = "langgraph", specifier = ">=1.0.10" },
|
|
15
15
|
{ name = "langsmith", specifier = ">=0.6.3" },
|
|
16
16
|
{ name = "orjson", specifier = ">=3.11.6" },
|
|
17
|
-
{ name = "pyjwt", specifier = ">=2.
|
|
17
|
+
{ name = "pyjwt", specifier = ">=2.14.0" },
|
|
18
18
|
{ name = "python-multipart", specifier = ">=0.0.31" },
|
|
19
19
|
{ name = "requests", specifier = ">=2.33.0" },
|
|
20
20
|
{ name = "starlette", specifier = ">=1.3.1" },
|
|
@@ -513,7 +513,7 @@ wheels = [
|
|
|
513
513
|
|
|
514
514
|
[[package]]
|
|
515
515
|
name = "coder-eval"
|
|
516
|
-
version = "0.12.
|
|
516
|
+
version = "0.12.9"
|
|
517
517
|
source = { editable = "." }
|
|
518
518
|
dependencies = [
|
|
519
519
|
{ name = "anthropic" },
|
|
@@ -2265,11 +2265,11 @@ wheels = [
|
|
|
2265
2265
|
|
|
2266
2266
|
[[package]]
|
|
2267
2267
|
name = "pyjwt"
|
|
2268
|
-
version = "2.
|
|
2268
|
+
version = "2.15.1"
|
|
2269
2269
|
source = { registry = "https://pypi.org/simple" }
|
|
2270
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
2270
|
+
sdist = { url = "https://files.pythonhosted.org/packages/43/ea/5194e52748b0da83d71e082d75496eaec6e58f419f5e184786ded517e6a9/pyjwt-2.15.1.tar.gz", hash = "sha256:4f259e80cdfb6b3fc18a7de51fd1ef9ec79652f25019bae68975ca2468a34df8", size = 121252, upload-time = "2026-09-28T18:40:42.598Z" }
|
|
2271
2271
|
wheels = [
|
|
2272
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
2272
|
+
{ url = "https://files.pythonhosted.org/packages/50/ca/44de4e75f8aadc457f0634be3b542815078ded46dca30efb960edeecad6e/pyjwt-2.15.1-py3-none-any.whl", hash = "sha256:42d59d631f7768a1028a64c7ff581a9bf7519804daf91fc5b6c56e30eec5e193", size = 33860, upload-time = "2026-09-28T18:40:41.429Z" },
|
|
2273
2273
|
]
|
|
2274
2274
|
|
|
2275
2275
|
[package.optional-dependencies]
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# osv-scanner suppressions for advisories without an available fix.
|
|
2
|
-
#
|
|
3
|
-
# Mirrors the inline --ignore-vuln list passed to pip-audit in
|
|
4
|
-
# .github/workflows/pr-checks.yml so both scanners stay in sync. pip-audit
|
|
5
|
-
# accepts ignores as CLI flags; osv-scanner only reads them from this TOML.
|
|
6
|
-
# When an advisory is fixed upstream, drop the entry here AND remove the
|
|
7
|
-
# matching pip-audit flag in the same PR.
|
|
8
|
-
|
|
9
|
-
[[IgnoredVulns]]
|
|
10
|
-
id = "PYSEC-2025-183"
|
|
11
|
-
reason = "pyjwt 2.12.1 weak-encryption — disputed by supplier (key length is application-chosen). No fix available on PyPI; revisit quarterly."
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|