coder-eval 0.12.13__tar.gz → 0.12.14__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.13 → coder_eval-0.12.14}/.claude/notes/agents.md +9 -2
- {coder_eval-0.12.13 → coder_eval-0.12.14}/CHANGELOG.md +9 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/PKG-INFO +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/action.yml +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/TASK_DEFINITION_GUIDE.md +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/ANTIGRAVITY.md +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/CODEX.md +3 -2
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/HARNESS_PARITY.md +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/pyproject.toml +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/codex_agent.py +88 -42
- coder_eval-0.12.14/tasks/agents/codex_skills_test.yaml +30 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_codex_agent_unit.py +76 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_runner_mounts.py +1 -1
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_plugin_processing.py +2 -2
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_skill_triggered.py +2 -2
- {coder_eval-0.12.13 → coder_eval-0.12.14}/uv.lock +1 -1
- coder_eval-0.12.13/tasks/agents/codex_skills_test.yaml +0 -30
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/context-window.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/lint-rules.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/notes/timing.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.env.example +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/code_review.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/pr-checks.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.gitignore +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/.python-version +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/ADOPTERS.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/CLAUDE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/LICENSE +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/Makefile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/NOTICE +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/SECURITY.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/comparison.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docker/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/DELEGATE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/comparison.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/index.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/llms.txt +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/package.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/default.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/litellm/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/mkdocs.yml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/osv-scanner.toml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/delegate_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/delegate_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_a_tool_call.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_b_max_turns_cut.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_c_error_frame_crash.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_e_tool_only_call_crosses_cap.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_f_batched_tools_in_sequence.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/conftest.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_context_window.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_delegate_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_delegate_agent_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_durations.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_integration.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_logging.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_registry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reports.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_resume.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_routing.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_stats.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_tags.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timing_identity_contract.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_utils.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.13 → coder_eval-0.12.14}/tests/test_yaml_migration.py +0 -0
|
@@ -717,8 +717,15 @@ being hardcoded, so a plugin that relocates its skills keeps working.
|
|
|
717
717
|
skips external *plugins*, not configured skill paths. An inherited value is appended to
|
|
718
718
|
rather than clobbered, since the host may legitimately configure OpenCode the same way.
|
|
719
719
|
- **Pi** passes each as `--skill <dir>`.
|
|
720
|
-
- **Codex**
|
|
721
|
-
the
|
|
720
|
+
- **Codex** copies each skill dir into `.agents/skills/`, which the CLI auto-discovers from
|
|
721
|
+
the working directory upward. Copies, not symlinks, for two reasons that compound. Codex
|
|
722
|
+
resolves a symlinked skill to its source, finds the plugin manifest there and lists the
|
|
723
|
+
skill as `<plugin>:<skill>`; models sometimes turn that into the nonexistent path
|
|
724
|
+
`.agents/skills/<plugin>/<skill>/SKILL.md`. The search that follows (`rg --files`,
|
|
725
|
+
`find`) skips symlinks and returns nothing, so the agent works without the skill. The
|
|
726
|
+
copies are made before each turn and removed after it, the same concern that kept
|
|
727
|
+
OpenCode out of the sandbox: criteria and run artifacts must see only what the agent
|
|
728
|
+
left. Skill dirs the workspace already has are never touched.
|
|
722
729
|
- **Antigravity** takes search paths natively via `skills_paths` — but those only drive
|
|
723
730
|
DISCOVERY. The file-tool allowlist is `workspaces` alone, so the skill roots must appear
|
|
724
731
|
there too, or the agent discovers a skill and every read of its `SKILL.md` is denied as
|
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.14 (2026-10-15)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **codex**: Copy skills into .agents/skills instead of symlinking
|
|
10
|
+
([#225](https://github.com/UiPath/coder_eval/pull/225),
|
|
11
|
+
[`1895a2c`](https://github.com/UiPath/coder_eval/commit/1895a2cfb0c2f0d8a171b2e445b0b034440209b2))
|
|
12
|
+
|
|
13
|
+
|
|
5
14
|
## v0.12.13 (2026-10-13)
|
|
6
15
|
|
|
7
16
|
### 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.14
|
|
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.14" # <-- 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
|
|
@@ -1345,7 +1345,7 @@ Like `skill_triggered`, this criterion emits a `ClassificationCriterionResult`,
|
|
|
1345
1345
|
|
|
1346
1346
|
### `skill_triggered`
|
|
1347
1347
|
|
|
1348
|
-
Binary classifier: **did the agent engage the target skill during the run?** Agent-agnostic — scans the run's `turn_records` for either signal: Claude's explicit `Skill` tool call whose `skill` parameter matches `skill_name` (namespace prefixes like `plugin:skill` are stripped, so `skill_name: uipath-agents` matches `Skill(skill="uipath-coded-agents:uipath-agents")`), or — for an agent with no `Skill` tool, e.g. Codex — a command that reads the skill's files off disk (a parameter contains `skills/<skill_name>/`, matching both the repo path and the `.agents/skills/`
|
|
1348
|
+
Binary classifier: **did the agent engage the target skill during the run?** Agent-agnostic — scans the run's `turn_records` for either signal: Claude's explicit `Skill` tool call whose `skill` parameter matches `skill_name` (namespace prefixes like `plugin:skill` are stripped, so `skill_name: uipath-agents` matches `Skill(skill="uipath-coded-agents:uipath-agents")`), or — for an agent with no `Skill` tool, e.g. Codex — a command that reads the skill's files off disk (a parameter contains `skills/<skill_name>/`, matching both the repo path and the `.agents/skills/` copy).
|
|
1349
1349
|
|
|
1350
1350
|
Observed label is `"yes"` when either signal is found, else `"no"`. Expected label is `"yes"` iff `expected_skill == skill_name`. **Binary scoring:** `1.0` when observed matches expected, else `0.0`.
|
|
1351
1351
|
|
|
@@ -127,7 +127,7 @@ Antigravity supports [Agent Skills](https://agentskills.io/specification)
|
|
|
127
127
|
2. the runtime plugin directory passed to `start()`.
|
|
128
128
|
|
|
129
129
|
For each source, the harness is handed whichever of `<source>/skills` or `<source>`
|
|
130
|
-
directly contains subdirectories with a `SKILL.md`. Unlike Codex — which
|
|
130
|
+
directly contains subdirectories with a `SKILL.md`. Unlike Codex — which copies
|
|
131
131
|
skills into `.agents/skills/` — Antigravity is given the search-path roots directly
|
|
132
132
|
via the SDK's `skills_paths`, and those roots are also added to the harness
|
|
133
133
|
`workspaces` allowlist (otherwise the agent would find a skill but be denied the
|
|
@@ -115,7 +115,7 @@ CodexAgent supports SKILL.md files following the [Agent Skills open standard](ht
|
|
|
115
115
|
1. **config.plugins** - Local plugins with `type: local` and `path` pointing to a skills directory
|
|
116
116
|
2. **plugin_tools_dir** parameter - Runtime plugin directory passed to `start()`
|
|
117
117
|
|
|
118
|
-
Skills are
|
|
118
|
+
Skills are copied to `.agents/skills/` for each turn, where the Codex CLI auto-discovers them, and removed when the turn ends. Environment variables in plugin paths (`$VAR`, `${VAR}`) are expanded at runtime.
|
|
119
119
|
|
|
120
120
|
Example with environment variable:
|
|
121
121
|
```yaml
|
|
@@ -206,8 +206,9 @@ The agent sets up SKILL.md files (Agent Skills open standard) in `.agents/skills
|
|
|
206
206
|
1. Scans `config.plugins` for local plugins with `path` field
|
|
207
207
|
2. Checks `plugin_tools_dir` parameter passed to `start()`
|
|
208
208
|
3. Expands environment variables in paths (`$PLUGIN_PATH`, `${PLUGIN_PATH}`)
|
|
209
|
-
4.
|
|
209
|
+
4. Copies each skill directory into `.agents/skills/` before every turn (real files, not symlinks), skipping any skill dir the workspace already has
|
|
210
210
|
5. Codex CLI auto-discovers skills in `.agents/skills/`
|
|
211
|
+
6. Removes the copies when the turn ends, so criteria and run artifacts never see them
|
|
211
212
|
|
|
212
213
|
### Async Integration
|
|
213
214
|
|
|
@@ -684,7 +684,7 @@ This field breaks it silently.
|
|
|
684
684
|
claude-code hands the value to the SDK as a *plugin directory*, and a plugin's skills
|
|
685
685
|
live at `<plugin>/skills/<name>/SKILL.md`. Point it at the directory that directly
|
|
686
686
|
parents the skill directories and no skill loads. Codex
|
|
687
|
-
(`codex_agent.
|
|
687
|
+
(`codex_agent._collect_skills`) and Antigravity (`antigravity_agent._resolve_skills_paths`)
|
|
688
688
|
both scan **both** layouts and take whichever actually holds a `<skill>/SKILL.md`.
|
|
689
689
|
|
|
690
690
|
† Pi uses the shared `_plugin_skill_dirs` resolver, whose bare-dir fallback resolves a
|
|
@@ -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.14",
|
|
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.14"
|
|
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"
|
|
@@ -854,6 +854,9 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
854
854
|
self.working_directory: Path | None = None
|
|
855
855
|
self._env_path_prepend: list[str] = []
|
|
856
856
|
self._login_shell_home: Path | None = None
|
|
857
|
+
self._skill_dirs: list[Path] = []
|
|
858
|
+
self._skill_copies: list[Path] = []
|
|
859
|
+
self._skill_parent_dirs: list[Path] = []
|
|
857
860
|
# _state / _iteration / _iteration_was_incremented / pending_turn lifecycle
|
|
858
861
|
# bookkeeping lives on the Agent base class (shared defaults + helpers).
|
|
859
862
|
self._log = PrefixedAdapter(logger, {"prefix": instance_name})
|
|
@@ -909,8 +912,7 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
909
912
|
"CodexAgent: login_api_key failed — agent will fall back to env-based auth: %s", exc
|
|
910
913
|
)
|
|
911
914
|
|
|
912
|
-
|
|
913
|
-
self._setup_skills(plugin_tools_dir)
|
|
915
|
+
self._collect_skills(plugin_tools_dir)
|
|
914
916
|
|
|
915
917
|
# Log permission and tool configuration
|
|
916
918
|
self._log_config_enforcement()
|
|
@@ -954,6 +956,27 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
954
956
|
if not self.working_directory or not self.codex_client:
|
|
955
957
|
raise RuntimeError("Agent not started. Call start() first.")
|
|
956
958
|
|
|
959
|
+
self._install_skills()
|
|
960
|
+
try:
|
|
961
|
+
return await self._communicate_turn(
|
|
962
|
+
user_input,
|
|
963
|
+
stream_callback=stream_callback,
|
|
964
|
+
timeout=timeout,
|
|
965
|
+
max_turns=max_turns,
|
|
966
|
+
should_stop=should_stop,
|
|
967
|
+
)
|
|
968
|
+
finally:
|
|
969
|
+
self._remove_skills()
|
|
970
|
+
|
|
971
|
+
async def _communicate_turn(
|
|
972
|
+
self,
|
|
973
|
+
user_input: str,
|
|
974
|
+
*,
|
|
975
|
+
stream_callback: StreamCallback | None,
|
|
976
|
+
timeout: float | None,
|
|
977
|
+
max_turns: int | None,
|
|
978
|
+
should_stop: Callable[[], bool] | None,
|
|
979
|
+
) -> TurnRecord:
|
|
957
980
|
assert self.config.type is not None, "CodexAgent requires AgentConfig.type to be set before communicate()"
|
|
958
981
|
|
|
959
982
|
# Reset the pending slot + bump the iteration counter (shared lifecycle).
|
|
@@ -1092,6 +1115,7 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
1092
1115
|
self._thread_usage_baseline = _ThreadTotals()
|
|
1093
1116
|
self._active_turn_handle = None
|
|
1094
1117
|
self._cleanup_login_shell_home()
|
|
1118
|
+
self._remove_skills()
|
|
1095
1119
|
self._mark_stopped()
|
|
1096
1120
|
|
|
1097
1121
|
async def kill(self) -> None:
|
|
@@ -1108,6 +1132,7 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
1108
1132
|
self._interrupt_active_turn()
|
|
1109
1133
|
self._close_client()
|
|
1110
1134
|
self._cleanup_login_shell_home()
|
|
1135
|
+
self._remove_skills()
|
|
1111
1136
|
|
|
1112
1137
|
def _interrupt_active_turn(self) -> None:
|
|
1113
1138
|
"""Interrupt the in-flight Codex turn, if any (best-effort, idempotent)."""
|
|
@@ -1147,17 +1172,16 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
1147
1172
|
"codex_model_is_deployment": True,
|
|
1148
1173
|
}
|
|
1149
1174
|
|
|
1150
|
-
def
|
|
1151
|
-
"""
|
|
1175
|
+
def _collect_skills(self, plugin_tools_dir: str | None) -> None:
|
|
1176
|
+
"""Resolve the skill dirs that :meth:`_install_skills` copies in for each turn.
|
|
1152
1177
|
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1178
|
+
A source may hold skill dirs directly or be a plugin root whose skills live
|
|
1179
|
+
one level deeper; both layouts are scanned, and the first source to provide
|
|
1180
|
+
a skill name wins.
|
|
1156
1181
|
|
|
1157
1182
|
Rationale: .claude/notes/agents.md § Skills, per harness
|
|
1158
1183
|
"""
|
|
1159
|
-
|
|
1160
|
-
return
|
|
1184
|
+
self._skill_dirs = []
|
|
1161
1185
|
|
|
1162
1186
|
skills_sources: list[Path] = []
|
|
1163
1187
|
|
|
@@ -1179,7 +1203,7 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
1179
1203
|
hint = "env var likely unset" if "$" in expanded_path else "path does not exist"
|
|
1180
1204
|
self._log.warning(
|
|
1181
1205
|
f"Plugin skills path did not resolve: {path_str!r} "
|
|
1182
|
-
+ f"→ {expanded_path!r} ({hint}); no skills
|
|
1206
|
+
+ f"→ {expanded_path!r} ({hint}); no skills taken from it"
|
|
1183
1207
|
)
|
|
1184
1208
|
|
|
1185
1209
|
# Also check plugin_tools_dir parameter
|
|
@@ -1192,53 +1216,75 @@ class CodexAgent(Agent[CodexAgentConfig]):
|
|
|
1192
1216
|
if not skills_sources:
|
|
1193
1217
|
return
|
|
1194
1218
|
|
|
1195
|
-
# Create .agents/skills directory (Codex auto-discovery location)
|
|
1196
|
-
agents_skills_dir = self.working_directory / ".agents" / "skills"
|
|
1197
1219
|
try:
|
|
1198
|
-
agents_skills_dir.mkdir(parents=True, exist_ok=True)
|
|
1199
|
-
|
|
1200
|
-
# A source may hold skill dirs directly or be a plugin root whose
|
|
1201
|
-
# skills live one level deeper. Scan both layouts.
|
|
1202
1220
|
for skills_source in skills_sources:
|
|
1203
1221
|
scan_dirs = [skills_source]
|
|
1204
1222
|
nested = skills_source / "skills"
|
|
1205
1223
|
if nested.is_dir():
|
|
1206
1224
|
scan_dirs.append(nested)
|
|
1207
|
-
|
|
1208
1225
|
for scan_dir in scan_dirs:
|
|
1209
1226
|
for skill_dir in scan_dir.iterdir():
|
|
1210
1227
|
if not (skill_dir.is_dir() and (skill_dir / "SKILL.md").exists()):
|
|
1211
1228
|
continue
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1229
|
+
if all(d.name != skill_dir.name for d in self._skill_dirs):
|
|
1230
|
+
self._skill_dirs.append(skill_dir)
|
|
1231
|
+
except OSError as e:
|
|
1232
|
+
self._log.warning(f"Failed to scan skills: {e}")
|
|
1216
1233
|
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
if linked:
|
|
1228
|
-
self._log.debug(f"Linked {len(linked)} skill(s) into {agents_skills_dir}")
|
|
1229
|
-
else:
|
|
1230
|
-
# Sources existed but held no SKILL.md, so codex runs with no
|
|
1231
|
-
# skill context at all.
|
|
1232
|
-
self._log.warning(
|
|
1233
|
-
f"0 skills linked into {agents_skills_dir} despite "
|
|
1234
|
-
+ f"{len(skills_sources)} plugin source(s): "
|
|
1235
|
-
+ f"{[str(s) for s in skills_sources]}; "
|
|
1236
|
-
+ "check the plugin path points at a skills repo root"
|
|
1237
|
-
)
|
|
1234
|
+
if self._skill_dirs:
|
|
1235
|
+
self._log.debug(f"Found {len(self._skill_dirs)} skill(s): {[d.name for d in self._skill_dirs]}")
|
|
1236
|
+
else:
|
|
1237
|
+
# Sources existed but held no SKILL.md, so codex runs with no
|
|
1238
|
+
# skill context at all.
|
|
1239
|
+
self._log.warning(
|
|
1240
|
+
f"0 skills found in {len(skills_sources)} plugin source(s): "
|
|
1241
|
+
+ f"{[str(s) for s in skills_sources]}; "
|
|
1242
|
+
+ "check the plugin path points at a skills repo root"
|
|
1243
|
+
)
|
|
1238
1244
|
|
|
1245
|
+
def _install_skills(self) -> None:
|
|
1246
|
+
"""Copy the collected skills into ``.agents/skills/``, where Codex auto-discovers them.
|
|
1247
|
+
|
|
1248
|
+
Real copies, not symlinks. Codex resolves a symlinked skill to its source,
|
|
1249
|
+
finds the plugin manifest there and lists it as ``<plugin>:<skill>``, which
|
|
1250
|
+
models turn into a nonexistent ``<plugin>/<skill>/`` path; ``rg --files`` and
|
|
1251
|
+
``find`` then skip the symlinks, so the search that follows finds nothing. A
|
|
1252
|
+
skill dir already in the workspace is left alone and never removed.
|
|
1253
|
+
|
|
1254
|
+
Rationale: .claude/notes/agents.md § Skills, per harness
|
|
1255
|
+
"""
|
|
1256
|
+
if not (self.working_directory and self._skill_dirs):
|
|
1257
|
+
return
|
|
1258
|
+
agents_skills_dir = self.working_directory / ".agents" / "skills"
|
|
1259
|
+
try:
|
|
1260
|
+
for parent in (agents_skills_dir.parent, agents_skills_dir):
|
|
1261
|
+
if not parent.exists():
|
|
1262
|
+
parent.mkdir()
|
|
1263
|
+
self._skill_parent_dirs.append(parent)
|
|
1264
|
+
for skill_dir in self._skill_dirs:
|
|
1265
|
+
target = agents_skills_dir / skill_dir.name
|
|
1266
|
+
if target.exists() or target.is_symlink():
|
|
1267
|
+
continue
|
|
1268
|
+
self._skill_copies.append(target)
|
|
1269
|
+
shutil.copytree(skill_dir, target, symlinks=True)
|
|
1270
|
+
self._log.debug(f"Copied {len(self._skill_copies)} skill(s) into {agents_skills_dir}")
|
|
1239
1271
|
except Exception as e:
|
|
1240
1272
|
self._log.warning(f"Failed to set up skills: {e}")
|
|
1241
1273
|
|
|
1274
|
+
def _remove_skills(self) -> None:
|
|
1275
|
+
"""Remove what :meth:`_install_skills` created (best-effort, idempotent).
|
|
1276
|
+
|
|
1277
|
+
Runs at the end of every turn, so criteria and run artifacts see the workspace
|
|
1278
|
+
the agent left, not the skill copies.
|
|
1279
|
+
"""
|
|
1280
|
+
copies, self._skill_copies = self._skill_copies, []
|
|
1281
|
+
parents, self._skill_parent_dirs = self._skill_parent_dirs, []
|
|
1282
|
+
for copy in copies:
|
|
1283
|
+
shutil.rmtree(copy, ignore_errors=True)
|
|
1284
|
+
for parent in reversed(parents):
|
|
1285
|
+
with contextlib.suppress(OSError):
|
|
1286
|
+
parent.rmdir()
|
|
1287
|
+
|
|
1242
1288
|
@staticmethod
|
|
1243
1289
|
def _resolve_base_url() -> str | None:
|
|
1244
1290
|
"""Custom Codex endpoint base URL from CODEX_BASE_URL, or None."""
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
task_id: codex_skills_test
|
|
2
|
+
description: Test that CodexAgent installs SKILL.md files for the turn and removes them before grading
|
|
3
|
+
|
|
4
|
+
tags:
|
|
5
|
+
- codex
|
|
6
|
+
- streaming
|
|
7
|
+
- skills
|
|
8
|
+
|
|
9
|
+
agent:
|
|
10
|
+
type: codex
|
|
11
|
+
model: gpt-5.5
|
|
12
|
+
permission_mode: acceptEdits
|
|
13
|
+
plugins:
|
|
14
|
+
- type: local
|
|
15
|
+
path: "$PLUGIN_PATH"
|
|
16
|
+
|
|
17
|
+
initial_prompt: |
|
|
18
|
+
Run `find .agents/skills -name SKILL.md | wc -l` and write the number it prints, and
|
|
19
|
+
nothing else, to skill_count.txt.
|
|
20
|
+
|
|
21
|
+
success_criteria:
|
|
22
|
+
- type: run_command
|
|
23
|
+
description: find should see at least one SKILL.md under .agents/skills
|
|
24
|
+
command: grep -Eq '^[[:space:]]*[1-9][0-9]*[[:space:]]*$' skill_count.txt
|
|
25
|
+
expected_exit_code: 0
|
|
26
|
+
|
|
27
|
+
- type: run_command
|
|
28
|
+
description: The skill copies are gone by grading time
|
|
29
|
+
command: test ! -e .agents
|
|
30
|
+
expected_exit_code: 0
|
|
@@ -14,8 +14,10 @@ module's ``importorskip("openai_codex")``.
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
+
import os
|
|
17
18
|
import time
|
|
18
19
|
from datetime import datetime
|
|
20
|
+
from pathlib import Path
|
|
19
21
|
from types import SimpleNamespace
|
|
20
22
|
|
|
21
23
|
import pytest
|
|
@@ -272,3 +274,77 @@ class TestExecutionBoundsFromSdkStamps:
|
|
|
272
274
|
# tool_use block; deriving it from the flush time would be a guess.
|
|
273
275
|
tel = self._build(factory(), root_type, started_ms=_EPOCH_MS, completed_ms=_EPOCH_MS + 1)
|
|
274
276
|
assert tel.generation_completed_at is None
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
def _skills_repo(root: Path, *names: str) -> Path:
|
|
280
|
+
for name in names:
|
|
281
|
+
(root / "skills" / name / "references").mkdir(parents=True)
|
|
282
|
+
(root / "skills" / name / "SKILL.md").write_text("---\nname: x\n---\n", encoding="utf-8")
|
|
283
|
+
(root / "skills" / name / "references" / "guide.md").write_text("ref\n", encoding="utf-8")
|
|
284
|
+
return root
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
class TestSkillCopies:
|
|
288
|
+
"""Skills reach ``.agents/skills/`` as real files for each turn, and leave with it."""
|
|
289
|
+
|
|
290
|
+
@staticmethod
|
|
291
|
+
def _agent(tmp_path: Path, *names: str) -> CodexAgent:
|
|
292
|
+
plugin = _skills_repo(tmp_path / "plugin", *names)
|
|
293
|
+
agent = CodexAgent(
|
|
294
|
+
parse_agent_config(type=AgentKind.CODEX, model="gpt-5.5", plugins=[{"type": "local", "path": str(plugin)}])
|
|
295
|
+
)
|
|
296
|
+
agent.working_directory = tmp_path / "work"
|
|
297
|
+
agent.working_directory.mkdir()
|
|
298
|
+
agent._collect_skills(None)
|
|
299
|
+
return agent
|
|
300
|
+
|
|
301
|
+
def test_a_walk_that_skips_symlinks_still_lists_the_skill(self, tmp_path):
|
|
302
|
+
# os.walk without followlinks sees what `rg --files` and `find` see.
|
|
303
|
+
agent = self._agent(tmp_path, "uipath-planner")
|
|
304
|
+
agent._install_skills()
|
|
305
|
+
skills_root = agent.working_directory / ".agents" / "skills"
|
|
306
|
+
found = sorted(
|
|
307
|
+
(Path(d) / f).relative_to(skills_root).as_posix() for d, _, files in os.walk(skills_root) for f in files
|
|
308
|
+
)
|
|
309
|
+
assert found == ["uipath-planner/SKILL.md", "uipath-planner/references/guide.md"]
|
|
310
|
+
|
|
311
|
+
def test_remove_restores_the_workspace(self, tmp_path):
|
|
312
|
+
agent = self._agent(tmp_path, "uipath-planner")
|
|
313
|
+
agent._install_skills()
|
|
314
|
+
agent._remove_skills()
|
|
315
|
+
assert list(agent.working_directory.iterdir()) == []
|
|
316
|
+
|
|
317
|
+
def test_workspace_skill_dirs_and_agent_files_survive(self, tmp_path):
|
|
318
|
+
agent = self._agent(tmp_path, "uipath-planner", "uipath-rpa")
|
|
319
|
+
own = agent.working_directory / ".agents" / "skills" / "uipath-rpa"
|
|
320
|
+
own.mkdir(parents=True)
|
|
321
|
+
(own / "SKILL.md").write_text("task-provided\n", encoding="utf-8")
|
|
322
|
+
agent._install_skills()
|
|
323
|
+
(agent.working_directory / ".agents" / "notes.md").write_text("agent output\n", encoding="utf-8")
|
|
324
|
+
agent._remove_skills()
|
|
325
|
+
assert (own / "SKILL.md").read_text(encoding="utf-8") == "task-provided\n"
|
|
326
|
+
assert (agent.working_directory / ".agents" / "notes.md").is_file()
|
|
327
|
+
assert not (agent.working_directory / ".agents" / "skills" / "uipath-planner").exists()
|
|
328
|
+
|
|
329
|
+
@pytest.mark.parametrize("turn_raises", [False, True])
|
|
330
|
+
async def test_skills_exist_only_during_each_turn(self, tmp_path, monkeypatch, turn_raises):
|
|
331
|
+
agent = self._agent(tmp_path, "uipath-planner")
|
|
332
|
+
agent.codex_client = object()
|
|
333
|
+
skill_md = agent.working_directory / ".agents" / "skills" / "uipath-planner" / "SKILL.md"
|
|
334
|
+
seen: list[bool] = []
|
|
335
|
+
|
|
336
|
+
async def fake_turn(user_input, **_):
|
|
337
|
+
seen.append(skill_md.is_file())
|
|
338
|
+
if turn_raises:
|
|
339
|
+
raise RuntimeError("turn failed")
|
|
340
|
+
return "record"
|
|
341
|
+
|
|
342
|
+
monkeypatch.setattr(agent, "_communicate_turn", fake_turn)
|
|
343
|
+
for _ in range(2):
|
|
344
|
+
if turn_raises:
|
|
345
|
+
with pytest.raises(RuntimeError):
|
|
346
|
+
await agent.communicate("go")
|
|
347
|
+
else:
|
|
348
|
+
assert await agent.communicate("go") == "record"
|
|
349
|
+
assert not (agent.working_directory / ".agents").exists()
|
|
350
|
+
assert seen == [True, True]
|
|
@@ -801,7 +801,7 @@ class TestAutoMountAllowlistMask:
|
|
|
801
801
|
assert f"{CONTAINER_PLUGINS_DIR}/0/.claude-plugin" not in tmpfs
|
|
802
802
|
|
|
803
803
|
def test_tmpfs_targets_are_under_mounted_container_root(self, tmp_path: Path):
|
|
804
|
-
# Codex
|
|
804
|
+
# Codex skill copies / Antigravity search paths read from the container path
|
|
805
805
|
# the staged task.yaml names, so the mask must sit under that path.
|
|
806
806
|
root = self._plugin_root(tmp_path / "plugin")
|
|
807
807
|
(root / "skills" / "demo").mkdir(parents=True)
|
|
@@ -113,9 +113,9 @@ class TestPluginRootWarning:
|
|
|
113
113
|
scores 0 and the suite reports recall 0.0, indistinguishable from a skill that
|
|
114
114
|
never triggers. That shipped in six documentation surfaces before anyone noticed.
|
|
115
115
|
|
|
116
|
-
Codex (`codex_agent.
|
|
116
|
+
Codex (`codex_agent._collect_skills`) and Antigravity
|
|
117
117
|
(`antigravity_agent._resolve_skills_paths`) accept BOTH depths and already log
|
|
118
|
-
when they
|
|
118
|
+
when they find zero skills. claude-code — the one harness where the wrong depth is
|
|
119
119
|
fatal — was the only one that stayed silent, and a repo-scoped lint rule cannot
|
|
120
120
|
reach the user repos where `/coder-eval:check-skill` writes these suites.
|
|
121
121
|
"""
|
|
@@ -325,7 +325,7 @@ class TestSkillTriggeredCodex:
|
|
|
325
325
|
|
|
326
326
|
The detectable signal is a command whose recorded text references the skill's
|
|
327
327
|
directory, ``skills/<skill_name>/`` (present in both the repo path and the
|
|
328
|
-
``.agents/skills/``
|
|
328
|
+
``.agents/skills/`` copy).
|
|
329
329
|
"""
|
|
330
330
|
|
|
331
331
|
def _sed(self, path: str) -> CommandTelemetry:
|
|
@@ -347,7 +347,7 @@ class TestSkillTriggeredCodex:
|
|
|
347
347
|
)
|
|
348
348
|
assert result.score == 1.0 and result.observed_label == "yes"
|
|
349
349
|
|
|
350
|
-
def
|
|
350
|
+
def test_codex_reads_skill_md_agents_copy_tp(self) -> None:
|
|
351
351
|
result = _check(
|
|
352
352
|
expected_skill="uipath-agents",
|
|
353
353
|
skill_name="uipath-agents",
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
task_id: codex_skills_test
|
|
2
|
-
description: Test that CodexAgent properly sets up and discovers SKILL.md files
|
|
3
|
-
|
|
4
|
-
tags:
|
|
5
|
-
- codex
|
|
6
|
-
- streaming
|
|
7
|
-
- skills
|
|
8
|
-
|
|
9
|
-
agent:
|
|
10
|
-
type: codex
|
|
11
|
-
model: gpt-5.5
|
|
12
|
-
permission_mode: acceptEdits
|
|
13
|
-
plugins:
|
|
14
|
-
- type: local
|
|
15
|
-
path: "$PLUGIN_PATH"
|
|
16
|
-
|
|
17
|
-
initial_prompt: |
|
|
18
|
-
List all available skills in your environment by checking the .agents/skills directory.
|
|
19
|
-
Count how many SKILL.md files are available.
|
|
20
|
-
|
|
21
|
-
success_criteria:
|
|
22
|
-
- type: run_command
|
|
23
|
-
description: .agents/skills directory should exist
|
|
24
|
-
command: test -d .agents/skills
|
|
25
|
-
expected_exit_code: 0
|
|
26
|
-
|
|
27
|
-
- type: run_command
|
|
28
|
-
description: Should have at least one SKILL.md file
|
|
29
|
-
command: find .agents/skills -name "SKILL.md" | wc -l | grep -v "^0$"
|
|
30
|
-
expected_exit_code: 0
|
|
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
|