coder-eval 0.12.12__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.12 → coder_eval-0.12.14}/.claude/notes/README.md +1 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/agents.md +42 -8
- coder_eval-0.12.14/.claude/notes/context-window.md +170 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/lint-rules.md +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/timing.md +6 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/CHANGELOG.md +68 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/PKG-INFO +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/action.yml +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/AB_EXPERIMENTS.md +23 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/EXTENDING.md +16 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/TASK_DEFINITION_GUIDE.md +9 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/ANTIGRAVITY.md +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/CLAUDE_CODE.md +5 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/CODEX.md +10 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/DELEGATE.md +2 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/HARNESS_PARITY.md +50 -16
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/pyproject.toml +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/claude_code_agent.py +104 -10
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/codex_agent.py +92 -42
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/delegate_agent.py +88 -42
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/agent_config.py +82 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/pricing.py +6 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/experiment.py +6 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/html.py +4 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/markdown.py +23 -2
- coder_eval-0.12.14/tasks/agents/codex_skills_test.yaml +30 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_bracket_clock.py +2 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/delegate_fixtures.py +49 -2
- coder_eval-0.12.14/tests/_fixtures/golden_streams/expected/delegate_e_tool_only_call_crosses_cap.json +112 -0
- coder_eval-0.12.14/tests/_fixtures/golden_streams/expected/delegate_f_batched_tools_in_sequence.json +150 -0
- coder_eval-0.12.14/tests/test_agent_context_window.py +152 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_codex_agent_unit.py +76 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_delegate_agent.py +139 -9
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_delegate_agent_live.py +20 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_runner_mounts.py +1 -1
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_plugin_processing.py +2 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_skill_triggered.py +2 -2
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timing_identity_contract.py +12 -13
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_token_usage.py +135 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/uv.lock +1 -1
- coder_eval-0.12.12/tasks/agents/codex_skills_test.yaml +0 -30
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.env.example +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/code_review.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/pr-checks.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.gitignore +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/.python-version +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/ADOPTERS.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/CLAUDE.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/LICENSE +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/Makefile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/NOTICE +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/SECURITY.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/comparison.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docker/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/comparison.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/index.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/llms.txt +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/package.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/default.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/litellm/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/mkdocs.yml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/osv-scanner.toml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_a_tool_call.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_b_max_turns_cut.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_c_error_frame_crash.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/delegate_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/conftest.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_durations.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_integration.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_logging.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_registry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reports.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_resume.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_routing.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_stats.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_tags.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_utils.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.12 → coder_eval-0.12.14}/tests/test_yaml_migration.py +0 -0
|
@@ -13,6 +13,7 @@ rule docstrings in `tests/lint/rules/`, then the guides under `docs/`.
|
|
|
13
13
|
## Contents
|
|
14
14
|
|
|
15
15
|
- [agents.md](agents.md) — agent adapters, the turn lifecycle, token reconciliation, harness parity
|
|
16
|
+
- [context-window.md](context-window.md) — the `agent.context_window` cap, per harness
|
|
16
17
|
- [contracts.md](contracts.md) — criteria, datasets, aggregation, judging
|
|
17
18
|
- [isolation.md](isolation.md) — the docker driver, the sandbox, detached grading
|
|
18
19
|
- [lint-rules.md](lint-rules.md) — why each CE lint rule exists
|
|
@@ -306,6 +306,15 @@ cost bills it at the input rate and the cache buckets separately.
|
|
|
306
306
|
id), and the `usage` snapshot the last resort. Cost is backfilled from the rate card
|
|
307
307
|
when a turn was timed out or killed, so there is no terminal `ResultMessage` — the
|
|
308
308
|
tokens are already captured, so this is pure pricing.
|
|
309
|
+
`model_usage` and `total_cost_usd` count the whole SESSION: a CLI resumed with
|
|
310
|
+
`resume=` restores the running totals it saved on exit, so a dialog's turn N reports
|
|
311
|
+
turns 1..N (`usage` and `num_turns` stay per-turn). `_turn_usage_slice` subtracts what
|
|
312
|
+
the same session last reported, from any ResultMessage, error or not, since the CLI
|
|
313
|
+
saves on every exit. Summing unsliced snapshots shows as a reconciliation row equal to
|
|
314
|
+
the previous turn's total (200/200 multi-turn tasks of a 2026-10-07 Haiku 5.5 run),
|
|
315
|
+
and inflates the simulator's tokens the same way. A counter that moved
|
|
316
|
+
backwards means no restore, and the snapshot is booked whole. A killed turn reports
|
|
317
|
+
nothing, so if its CLI saved totals, the next turn absorbs its usage.
|
|
309
318
|
- **Codex/OpenAI** report `input_tokens` INCLUSIVE of the cached prefix, and bill no
|
|
310
319
|
separate cache-write fee. So the fresh slice is `input - cached`, `cache_creation` is 0,
|
|
311
320
|
and `cache_read` is `cached`.
|
|
@@ -708,8 +717,15 @@ being hardcoded, so a plugin that relocates its skills keeps working.
|
|
|
708
717
|
skips external *plugins*, not configured skill paths. An inherited value is appended to
|
|
709
718
|
rather than clobbered, since the host may legitimately configure OpenCode the same way.
|
|
710
719
|
- **Pi** passes each as `--skill <dir>`.
|
|
711
|
-
- **Codex**
|
|
712
|
-
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.
|
|
713
729
|
- **Antigravity** takes search paths natively via `skills_paths` — but those only drive
|
|
714
730
|
DISCOVERY. The file-tool allowlist is `workspaces` alone, so the skill roots must appear
|
|
715
731
|
there too, or the agent discovers a skill and every read of its `SKILL.md` is denied as
|
|
@@ -846,12 +862,29 @@ shared `agents/_skills.py` resolver: the SDK wants ONE parent directory, not a l
|
|
|
846
862
|
ran 7 steps). The adapter counts calls from the event stream and abandons the host when call N+1
|
|
847
863
|
opens; `len(turnUsages)` from the `result` then replaces the estimate as `num_turns`.
|
|
848
864
|
|
|
865
|
+
**A call opens on its first text, or on its `usage` frame when it streams none — never on a tool
|
|
866
|
+
event.** The host streams a call's text, flushes the call's `usage` frame, then runs the call's
|
|
867
|
+
tools, and it runs a batched reply's tools one at a time: `tool_call`, `tool_result`, `tool_call`,
|
|
868
|
+
`tool_result`. The adapter once opened call N+1 when every open tool had returned. With that order
|
|
869
|
+
the open set empties after each tool, so every tool counted as a call: a downstream suite saw a turn
|
|
870
|
+
with 16 round-trips and 96 tool calls cut at `max_turns: 80`. Now a `thinking` or `message` event
|
|
871
|
+
opens a call unless the open call has already streamed text, and a `usage` frame opens one only for
|
|
872
|
+
a call that streamed none. A crossing call that streams text is cut at that text, before any of its
|
|
873
|
+
tools. A tool-only crossing call is cut at its own frame, and its first tool can start before the kill:
|
|
874
|
+
the host starts a call's tools right after the frame, and the stream gives no earlier boundary. A host
|
|
875
|
+
without `usage` frames counts only the calls that stream text; such a host is below the 1.203.0 floor,
|
|
876
|
+
which is also the first release that takes the `auth` init option.
|
|
877
|
+
Only `_TurnState.on_text` / `on_tool_event` / `on_usage_frame` / `on_result` write the count, so the rule
|
|
878
|
+
lives in one place. `on_result` compares the live count with `len(turnUsages)` and warns when they
|
|
879
|
+
differ: the order is read from the 1.203.1 host and SDK source, not from a live transcript, so a host
|
|
880
|
+
release that reorders the frames shows up in the logs instead of silently moving the cap.
|
|
881
|
+
|
|
849
882
|
**A cut turn keeps the usage of its finished calls.** A turn cut by `max_turns` or a stop gets no
|
|
850
883
|
`result`, so the adapter sums the per-round-trip `usage` frames; the `result`'s total replaces the sum
|
|
851
|
-
when it arrives. Ordering (from SDK
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
884
|
+
when it arrives. Ordering (from the host and SDK source, not a live transcript): call N's `usage` frame
|
|
885
|
+
precedes every tool event of call N. A crossing call that streams text is cut at that text, so its usage
|
|
886
|
+
is dropped; a tool-only crossing call is cut at its own frame, so its usage is booked. The adapter warns
|
|
887
|
+
when a cut turn had finished calls but no usage.
|
|
855
888
|
|
|
856
889
|
**One `AssistantMessage` per `communicate()`.** `isStepStart` and `turnUsages` would allow a
|
|
857
890
|
per-round-trip split; today `isStepStart` only merges streamed deltas. `close_window` opens the one
|
|
@@ -948,8 +981,9 @@ introduced or should silently "fix" by picking one number over the other.
|
|
|
948
981
|
|
|
949
982
|
### Delegate agent golden-master coverage
|
|
950
983
|
|
|
951
|
-
`tests/_fixtures/golden_streams/delegate_fixtures.py` scripts the host's stdout frames for
|
|
952
|
-
scenarios: a tool call, a `max_turns` cut, an `error`-frame crash
|
|
984
|
+
`tests/_fixtures/golden_streams/delegate_fixtures.py` scripts the host's stdout frames for six
|
|
985
|
+
scenarios: a tool call, a `max_turns` cut, an `error`-frame crash, an orphaned tool, a tool-only call
|
|
986
|
+
that crosses the cap, and a batched reply whose tools run one at a time. The `event`,
|
|
953
987
|
`result` and `error` frames mirror the live `1.202.1` transcript. The `usage` frame and the `result`
|
|
954
988
|
fields new in `1.203.0` follow the host source of UiPath/Autopilot#6656 (`src/usage.ts` and
|
|
955
989
|
`handleSend`): every usage object carries all four buckets with `input_tokens` exclusive of cache,
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Capping the agent's context window
|
|
2
|
+
|
|
3
|
+
Analysis and design for `agent.context_window`: one harness-neutral field that caps the
|
|
4
|
+
context window an agent works within, set per agent config or per experiment variant.
|
|
5
|
+
|
|
6
|
+
## Problem and evidence
|
|
7
|
+
|
|
8
|
+
A benchmark of Claude Code on Sonnet 5 (Bedrock, 1M-token window) let runs grow to
|
|
9
|
+
250k-480k tokens of context. Above about 150k tokens each extended-thinking step got
|
|
10
|
+
about 10x slower, so most runs hit the 2-hour task limit. The operator wants to measure
|
|
11
|
+
pass rate and cost at several context caps, for example one variant at 200k and one at
|
|
12
|
+
400k, on the same tasks.
|
|
13
|
+
|
|
14
|
+
Before this change no harness-neutral way existed:
|
|
15
|
+
|
|
16
|
+
- **claude-code**: `claude_settings` (`--settings`) could carry `autoCompactWindow`. That
|
|
17
|
+
works for one harness only, and when `claude_settings` is a file path a variant cannot
|
|
18
|
+
merge one key into it.
|
|
19
|
+
- **codex**: `CodexAgentConfig` has no pass-through. `CodexAgent._build_thread_options`
|
|
20
|
+
builds the thread `config` dict itself, so no value reached Codex.
|
|
21
|
+
- **antigravity, opencode, pi, delegate**: no knob is wired.
|
|
22
|
+
|
|
23
|
+
## How each harness controls its window
|
|
24
|
+
|
|
25
|
+
### claude-code
|
|
26
|
+
|
|
27
|
+
Verified in the CLI the SDK spawns. `claude-agent-sdk` runs its **bundled** CLI before it
|
|
28
|
+
looks for `claude` on `PATH` (`SubprocessCLITransport._find_cli`), so the CLI that runs is
|
|
29
|
+
the one the SDK wheel bundles, not the one the agent image installs with npm:
|
|
30
|
+
|
|
31
|
+
| coder_eval | claude-agent-sdk (uv.lock) | bundled CLI | image npm CLI |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| 0.12.1 | 0.2.124 | 2.1.216 | 2.1.177 |
|
|
34
|
+
| 0.12.12 | 0.2.159 | 2.1.281 | 2.1.281 |
|
|
35
|
+
|
|
36
|
+
`environment_info.claude_code_cli` records `claude -v` from `PATH`, so a 0.12.1 run
|
|
37
|
+
records 2.1.177 while 2.1.216 ran. That is a separate defect and is not fixed here.
|
|
38
|
+
|
|
39
|
+
Three inputs set the auto-compact window. Both bundled CLIs (2.1.216 and 2.1.281) contain
|
|
40
|
+
the same resolution function. The highest precedence comes first:
|
|
41
|
+
|
|
42
|
+
1. `CLAUDE_CODE_AUTO_COMPACT_WINDOW` environment variable: a plain token count. It
|
|
43
|
+
outranks the flag and every settings scope.
|
|
44
|
+
2. `--autocompact <auto|tokens>`: added in 2.1.221 (CLI reference). It is absent from
|
|
45
|
+
2.1.216 as a parsed option.
|
|
46
|
+
3. `autoCompactWindow` settings key. The settings schema is
|
|
47
|
+
`int().min(100000).max(1000000).optional().catch(undefined)`, so an out-of-range
|
|
48
|
+
value is **silently dropped**.
|
|
49
|
+
|
|
50
|
+
The effective window is `min(model context window, configured value)`. Auto-compaction
|
|
51
|
+
starts when the context approaches that window.
|
|
52
|
+
|
|
53
|
+
### codex
|
|
54
|
+
|
|
55
|
+
Verified in the `openai-codex-cli-bin` 0.156.1 binary (the pin) and its source at tag
|
|
56
|
+
`rust-v0.156.1`:
|
|
57
|
+
|
|
58
|
+
- `model_context_window` ("Size of the context window for the model, in tokens"):
|
|
59
|
+
`with_config_overrides` sets the model's `context_window` to
|
|
60
|
+
`min(value, max_context_window)`. Three things follow from it. The default
|
|
61
|
+
auto-compact limit becomes 90% of it. The hard cap, which forces compaction, becomes
|
|
62
|
+
`context_window * effective_context_window_percent / 100`. The remaining-window figure
|
|
63
|
+
the model is shown also changes.
|
|
64
|
+
- `model_auto_compact_token_limit` ("Token usage threshold triggering auto-compaction"):
|
|
65
|
+
the trigger only, clamped to 90% of the resolved window. It does not change the window.
|
|
66
|
+
- `model_auto_compact_token_limit_scope` (`total` by default, or `body_after_prefix`) and
|
|
67
|
+
`model_post_turn_compact_threshold_percent` (turn-end compaction, off by default) tune
|
|
68
|
+
when compaction starts. They are not caps.
|
|
69
|
+
|
|
70
|
+
The thread `config` dict `thread_start` takes is the same override surface that
|
|
71
|
+
coder_eval already uses for `enabled_tools` and `model_providers`.
|
|
72
|
+
|
|
73
|
+
### antigravity, opencode, pi, delegate
|
|
74
|
+
|
|
75
|
+
None of them has a context-window knob wired in coder_eval. They are out of scope, and
|
|
76
|
+
they reject the field.
|
|
77
|
+
|
|
78
|
+
## Options considered
|
|
79
|
+
|
|
80
|
+
**Per-harness pass-through** (a Codex `config` pass-through next to `claude_settings`).
|
|
81
|
+
It is flexible, but a variant would have to name a different key per harness, and the
|
|
82
|
+
recorded value would mean something different on each. It also opens a free-form
|
|
83
|
+
pass-through on Codex with no denylist. Rejected.
|
|
84
|
+
|
|
85
|
+
**A field under `run_limits`.** Run limits are caps that the orchestrator or the agent
|
|
86
|
+
enforces on a run (turns, time, tokens, USD), and the parity table lists them. A context
|
|
87
|
+
window is not a spend cap. It is a harness setting that changes what the agent does, and
|
|
88
|
+
it depends on the agent type, which `run_limits` does not know. The guide also says that
|
|
89
|
+
`agent:` holds no run-time caps. Rejected.
|
|
90
|
+
|
|
91
|
+
**A field on the agent config.** One name, accepted on a type-less config so that
|
|
92
|
+
experiment defaults and variants can set it, and validated against the concrete type
|
|
93
|
+
when the config resolves. **Chosen.**
|
|
94
|
+
|
|
95
|
+
Naming: `context_window`, in tokens. It names the quantity the operator caps, matches
|
|
96
|
+
Codex's `model_context_window`, and avoids "auto-compact", which describes a mechanism of
|
|
97
|
+
one harness. `max_context_tokens` was considered, but it reads as a per-request input
|
|
98
|
+
limit, which neither harness enforces.
|
|
99
|
+
|
|
100
|
+
## Recommended design
|
|
101
|
+
|
|
102
|
+
`BaseAgentConfig.context_window: int | None` (default `None`, `gt=0`).
|
|
103
|
+
|
|
104
|
+
- Each config class declares `_context_window_range: ClassVar[tuple[int, int | None] |
|
|
105
|
+
None]`. `None` (the base default) means that the harness cannot apply the field.
|
|
106
|
+
`ClaudeCodeAgentConfig` declares `(100_000, 1_000_000)` and `CodexAgentConfig` declares
|
|
107
|
+
`(32_768, None)`.
|
|
108
|
+
- `check_context_window_supported` (model validator) rejects an unsupported type or an
|
|
109
|
+
out-of-range value as soon as the type is known. A plugin agent inherits `None`, so it
|
|
110
|
+
also rejects the field until it opts in.
|
|
111
|
+
- The field uses the default `replace` merge strategy. It is set at any of the five
|
|
112
|
+
layers, and with `-D agent.context_window=N`.
|
|
113
|
+
|
|
114
|
+
Per-harness mapping:
|
|
115
|
+
|
|
116
|
+
- **claude-code**: `CLAUDE_CODE_AUTO_COMPACT_WINDOW=<N>` in the SDK `env`. The
|
|
117
|
+
environment variable was chosen over the settings key and the flag for four reasons.
|
|
118
|
+
It has the highest precedence, so host, project and `claude_settings` values cannot
|
|
119
|
+
override the cap. It works whether `claude_settings` is a dict or a file path. Both
|
|
120
|
+
bundled CLIs read it, which the flag does not. `extra_args` stays framework-owned.
|
|
121
|
+
`claude_settings.autoCompactWindow` together with `context_window` is a load error,
|
|
122
|
+
because the environment variable would silently override it.
|
|
123
|
+
- **codex**: `model_context_window: <N>` in the thread `config`. No trigger key is set,
|
|
124
|
+
so Codex compacts at its default 90% of the window.
|
|
125
|
+
|
|
126
|
+
## Validation
|
|
127
|
+
|
|
128
|
+
- `gt=0` on every config, so a type-less config rejects nonsense as well.
|
|
129
|
+
- claude-code: 100000-1000000, the CLI's documented range. Outside that range the CLI
|
|
130
|
+
drops a settings value silently, so coder_eval enforces the range itself.
|
|
131
|
+
- codex: 32768 and up. Codex clamps the value to the model's catalog maximum, and the
|
|
132
|
+
floor rejects a window too small to work in, such as a YAML `yes` coerced to 1.
|
|
133
|
+
- every other type: rejected at load, naming the supported types. A variant that
|
|
134
|
+
switches `type` to an unsupported harness fails when the experiment resolves.
|
|
135
|
+
|
|
136
|
+
## Recording
|
|
137
|
+
|
|
138
|
+
The resolved agent config is persisted as `agent_config` on every task row (`run.json`
|
|
139
|
+
and `task.json`). `agent.context_window` therefore appears per task, and config lineage
|
|
140
|
+
records which layer set it (for example, the variant). The experiment report groups by
|
|
141
|
+
variant, so a cap per variant groups without new report code. On claude-code the
|
|
142
|
+
`sdk_options` dump also shows the environment variable in `env`.
|
|
143
|
+
|
|
144
|
+
## Open questions
|
|
145
|
+
|
|
146
|
+
- **A silent clamp to the model's window.** Neither harness reports that the model's
|
|
147
|
+
window lowered the cap. A cap above the model's window runs at the model's window.
|
|
148
|
+
Recording the effective window would need a per-model catalog in coder_eval.
|
|
149
|
+
- **Trigger points differ.** Codex compacts at 90% of the window. Claude Code compacts
|
|
150
|
+
when the context approaches the window, minus an internal buffer. Equal caps therefore
|
|
151
|
+
do not compact at exactly the same token count. A separate harness-neutral trigger
|
|
152
|
+
field is possible, but it is not added until a benchmark needs it.
|
|
153
|
+
- **A host `CLAUDE_CODE_AUTO_COMPACT_WINDOW` and uncapped runs.** Decided: the SDK starts
|
|
154
|
+
the CLI with `os.environ` underneath `options.env`, so when the field is unset the
|
|
155
|
+
claude-code agent blanks a host value. A run recorded as uncapped is never capped by
|
|
156
|
+
the host. This changes every claude-code run on a host that sets the variable,
|
|
157
|
+
including runs that never set `context_window`. Codex has no equivalent: an unset
|
|
158
|
+
field leaves a host `model_context_window` in `$CODEX_HOME/config.toml` in effect.
|
|
159
|
+
- **The recorded CLI version is wrong.** See the version table above:
|
|
160
|
+
`environment_info.claude_code_cli` should record the bundled CLI version.
|
|
161
|
+
- **Other harnesses.** Pi can lower a model's window with
|
|
162
|
+
`providers.<provider>.modelOverrides.<model>.contextWindow` in `models.json`. A mapping
|
|
163
|
+
was written and then reverted (d1757a60), because no live run backed it and no task
|
|
164
|
+
uses `type: pi`; it comes back with a live test. OpenCode (`limit.context` and
|
|
165
|
+
`limit.input` in provider config) needs a `limit.output` coder_eval does not know, and
|
|
166
|
+
an unpinned CLI. Antigravity's `CompactionConfig(token_threshold=N)` only moves the
|
|
167
|
+
trigger. Delegate keeps its history in the backend. Each needs its own verification
|
|
168
|
+
before it opts in.
|
|
169
|
+
- **How often a run compacted is not recorded.** A cap A/B cannot yet tell "cap never
|
|
170
|
+
reached" from "compacted N times" from the task row alone.
|
|
@@ -845,7 +845,7 @@ assertion for each. A defaulted `AgentStartEvent` lands ~365 days before the clo
|
|
|
845
845
|
first window, so the head blows any sane UPPER bound by the whole offset. A defaulted
|
|
846
846
|
`AgentEndEvent` lands ~365 days BEFORE its own last message, so `decompose_turn` clamps the
|
|
847
847
|
negative to `0.0` — "measured, and instant", which passes an upper bound. Only a strict
|
|
848
|
-
`> 0.0` catches it. It holds on
|
|
848
|
+
`> 0.0` catches it. It holds on every clocked harness because real work separates a
|
|
849
849
|
turn's last flush from its end event. The margin is smallest on antigravity, which holds
|
|
850
850
|
its process across turns: it measures 0.007-0.035 ms there, 7-35 ticks of the 1 us
|
|
851
851
|
resolution that both `datetime` and `time.monotonic()` have on Linux, macOS and Windows.
|
|
@@ -16,6 +16,11 @@ removes:
|
|
|
16
16
|
transition or an NTP step inside a turn lands directly in a generation window — an
|
|
17
17
|
hour-long jump in a millisecond field. Nightly runs start at 04:18 and run for hours,
|
|
18
18
|
so it is reachable rather than theoretical. A monotonic-derived stamp cannot express it.
|
|
19
|
+
- Delegate stamped its one window and its tool spans with raw `datetime.now()` but measured
|
|
20
|
+
`duration_seconds` with `time.monotonic()`. On Windows the wall clock moved 0.24-0.37 ms
|
|
21
|
+
further than the monotonic one inside a sub-millisecond turn, so the tail alone came out
|
|
22
|
+
longer than the whole turn and `test_delegate_golden[a_tool_call]` failed at random. One
|
|
23
|
+
window has no inter-window drift to correct, but it still shares the turn's duration.
|
|
19
24
|
|
|
20
25
|
It is an EXTRACTION, not an invention: antigravity already captured this exact pair at
|
|
21
26
|
the top of `communicate` and simply did not use it for later stamps.
|
|
@@ -205,7 +210,7 @@ Magnitudes are only real where a scripted clock makes them real, so each case dr
|
|
|
205
210
|
harness's own reducer with a hand-moved clock and feeds its output through a real
|
|
206
211
|
`EventCollector`, the seam production uses to compute the head and the tail. The module
|
|
207
212
|
reuses the three clock-injection idioms the per-harness suites already use rather than
|
|
208
|
-
inventing a fourth: an injected `TurnClock` stand-in (pi, antigravity, claude-code), a
|
|
213
|
+
inventing a fourth: an injected `TurnClock` stand-in (pi, antigravity, claude-code, delegate), a
|
|
209
214
|
`datetime` subclass patched onto the module (opencode), and scripted SDK epoch-millisecond
|
|
210
215
|
stamps (codex). OpenCode needs a `datetime` SUBCLASS rather than a stub because the
|
|
211
216
|
reducer also calls `datetime.fromtimestamp` through the same module global to convert the
|
|
@@ -2,6 +2,74 @@
|
|
|
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
|
+
|
|
14
|
+
## v0.12.13 (2026-10-13)
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **agent**: Address the context_window review
|
|
19
|
+
([#219](https://github.com/UiPath/coder_eval/pull/219),
|
|
20
|
+
[`ae02485`](https://github.com/UiPath/coder_eval/commit/ae02485a7a21944e2ee15a0f72131def5f2e425a))
|
|
21
|
+
|
|
22
|
+
- **agents**: Count Delegate batched tool calls once under max_turns and stamp turns off one
|
|
23
|
+
TurnClock ([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
24
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
25
|
+
|
|
26
|
+
- **claude-code**: Book only the turn's own usage on a resumed session
|
|
27
|
+
([#221](https://github.com/UiPath/coder_eval/pull/221),
|
|
28
|
+
[`c9456e5`](https://github.com/UiPath/coder_eval/commit/c9456e58b49174c29f48577507f249eb9e98a94b))
|
|
29
|
+
|
|
30
|
+
- **delegate**: Count a batched reply's tools as one model call under max_turns
|
|
31
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
32
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
33
|
+
|
|
34
|
+
- **delegate**: Keep the max_turns count in one place and warn when it drifts
|
|
35
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
36
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
37
|
+
|
|
38
|
+
- **delegate**: Stamp the whole turn off one TurnClock
|
|
39
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
40
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
41
|
+
|
|
42
|
+
- **pricing**: Add Haiku 5.5, Sonnet 5.5 and GPT-6.1 Sol, re-verify every row
|
|
43
|
+
([#220](https://github.com/UiPath/coder_eval/pull/220),
|
|
44
|
+
[`b3ae960`](https://github.com/UiPath/coder_eval/commit/b3ae96033d32f3e88bff68a15219e85372762220))
|
|
45
|
+
|
|
46
|
+
### Chores
|
|
47
|
+
|
|
48
|
+
- **no-mistakes/document**: Name Delegate among the TurnClock harnesses in timing docs
|
|
49
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
50
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
51
|
+
|
|
52
|
+
### Documentation
|
|
53
|
+
|
|
54
|
+
- **delegate**: Count the six Delegate golden-master scenarios in the notes
|
|
55
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
56
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
57
|
+
|
|
58
|
+
- **delegate**: Document the tool-only cut race and relax the live test count
|
|
59
|
+
([#222](https://github.com/UiPath/coder_eval/pull/222),
|
|
60
|
+
[`db2067e`](https://github.com/UiPath/coder_eval/commit/db2067e94e458796c10cfe5f2b0c0383a3c8db03))
|
|
61
|
+
|
|
62
|
+
### Features
|
|
63
|
+
|
|
64
|
+
- **agent**: Cap Pi's context window with agent.context_window
|
|
65
|
+
([#219](https://github.com/UiPath/coder_eval/pull/219),
|
|
66
|
+
[`ae02485`](https://github.com/UiPath/coder_eval/commit/ae02485a7a21944e2ee15a0f72131def5f2e425a))
|
|
67
|
+
|
|
68
|
+
- **agent**: Cap the agent's context window with agent.context_window
|
|
69
|
+
([#219](https://github.com/UiPath/coder_eval/pull/219),
|
|
70
|
+
[`ae02485`](https://github.com/UiPath/coder_eval/commit/ae02485a7a21944e2ee15a0f72131def5f2e425a))
|
|
71
|
+
|
|
72
|
+
|
|
5
73
|
## v0.12.12 (2026-10-06)
|
|
6
74
|
|
|
7
75
|
### 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
|
|
@@ -23,6 +23,7 @@ to the orchestrator are involved.
|
|
|
23
23
|
- [What a Variant Can Override](#what-a-variant-can-override)
|
|
24
24
|
- [Recipe: A/B a Skill](#recipe-ab-a-skill)
|
|
25
25
|
- [Recipe: A/B a Model](#recipe-ab-a-model)
|
|
26
|
+
- [Recipe: A/B a Context Window](#recipe-ab-a-context-window)
|
|
26
27
|
- [Recipe: A/B a Prompt](#recipe-ab-a-prompt)
|
|
27
28
|
- [Recipe: Smoke vs. e2e Flavors (Early Stop)](#recipe-smoke-vs-e2e-flavors-early-stop)
|
|
28
29
|
- [Replicates (Statistical Power)](#replicates-statistical-power)
|
|
@@ -222,6 +223,28 @@ variants:
|
|
|
222
223
|
agent: { model: claude-opus-5 }
|
|
223
224
|
```
|
|
224
225
|
|
|
226
|
+
## Recipe: A/B a Context Window
|
|
227
|
+
|
|
228
|
+
`agent.context_window` caps the context the agent works within, in tokens: the
|
|
229
|
+
harness compacts the conversation before it outgrows the cap. Use it to measure
|
|
230
|
+
pass rate and cost against the cap on a model with a large window. Each task row
|
|
231
|
+
records the cap in `agent_config.context_window`.
|
|
232
|
+
|
|
233
|
+
```yaml
|
|
234
|
+
experiment_id: context-window
|
|
235
|
+
description: "The same model with a 200k and a 400k context cap"
|
|
236
|
+
|
|
237
|
+
variants:
|
|
238
|
+
- variant_id: cap-200k
|
|
239
|
+
agent: { context_window: 200000 }
|
|
240
|
+
- variant_id: cap-400k
|
|
241
|
+
agent: { context_window: 400000 }
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
An agent type that cannot apply the cap fails the experiment at load.
|
|
245
|
+
[Run-Limit Parity](agents/HARNESS_PARITY.md#the-context-window-cap-per-harness) lists which
|
|
246
|
+
agent types accept it and what the cap does on each.
|
|
247
|
+
|
|
225
248
|
## Recipe: A/B a Prompt
|
|
226
249
|
|
|
227
250
|
Use `prompt_mutations` (transform the task prompt) or `initial_prompt` /
|
|
@@ -80,6 +80,22 @@ class MyAgentConfig(BaseAgentConfig):
|
|
|
80
80
|
The factory `create_agent(kind, config, …)` raises `TypeError` if the passed config
|
|
81
81
|
isn't an instance of the registered `config_class`, so keep them paired.
|
|
82
82
|
|
|
83
|
+
To accept `agent.context_window`, declare the inclusive range of tokens your harness
|
|
84
|
+
can cap its context window to, and apply `self.config.context_window` when the agent
|
|
85
|
+
starts. A config class that declares nothing rejects the field at load, which is the
|
|
86
|
+
right default: a capped variant must never run uncapped.
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from typing import ClassVar
|
|
90
|
+
|
|
91
|
+
class MyAgentConfig(BaseAgentConfig):
|
|
92
|
+
type: Literal["my-agent"] = "my-agent"
|
|
93
|
+
_context_window_range: ClassVar[tuple[int, int | None] | None] = (32_768, None)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Add your harness to the table in
|
|
97
|
+
[Run-Limit Parity](agents/HARNESS_PARITY.md#the-context-window-cap-per-harness).
|
|
98
|
+
|
|
83
99
|
### The `Agent` ABC — implementation checklist
|
|
84
100
|
|
|
85
101
|
Implement these three abstract methods:
|
|
@@ -170,6 +170,7 @@ agent:
|
|
|
170
170
|
- "Write"
|
|
171
171
|
- "Bash"
|
|
172
172
|
model: "claude-sonnet-5" # Optional: specific model
|
|
173
|
+
context_window: 200000 # Optional: cap the context window, in tokens (claude-code, codex)
|
|
173
174
|
sdk_options: # Optional: agent SDK pass-through (keys depend on `type`)
|
|
174
175
|
effort: high # claude-code: any non-framework-managed ClaudeAgentOptions field
|
|
175
176
|
```
|
|
@@ -188,6 +189,13 @@ validates its own keys at YAML load:
|
|
|
188
189
|
Deep-merged across the 5-layer config chain. Override via CLI with the
|
|
189
190
|
repeatable `-D agent.sdk_options.KEY=VALUE`.
|
|
190
191
|
|
|
192
|
+
**`context_window`** caps the context window the agent works within, in tokens: the
|
|
193
|
+
harness compacts the conversation before it outgrows the cap, and never runs past the
|
|
194
|
+
model's own window. Override via CLI with `-D agent.context_window=400000`. Which agent
|
|
195
|
+
types accept it, in what range, what each does with it and what an unset value means:
|
|
196
|
+
[Run-Limit Parity](agents/HARNESS_PARITY.md#the-context-window-cap-per-harness). An agent
|
|
197
|
+
type that cannot apply it rejects it at load.
|
|
198
|
+
|
|
191
199
|
**Permission Modes:**
|
|
192
200
|
- `default` — Default permission handling
|
|
193
201
|
- `acceptEdits` — Auto-accept file edits (recommended for evaluations)
|
|
@@ -1337,7 +1345,7 @@ Like `skill_triggered`, this criterion emits a `ClassificationCriterionResult`,
|
|
|
1337
1345
|
|
|
1338
1346
|
### `skill_triggered`
|
|
1339
1347
|
|
|
1340
|
-
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).
|
|
1341
1349
|
|
|
1342
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`.
|
|
1343
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
|
|
@@ -104,6 +104,7 @@ agent:
|
|
|
104
104
|
| `system_prompt_file` | `str \| null` | Path (relative to the task YAML) loaded into `system_prompt` at resolution. Works with either `system_prompt_mode`. |
|
|
105
105
|
| `setting_sources` | `list["user"\|"project"\|"local"] \| null` | Which host setting sources the SDK reads. Default resolves to `["project"]`. See [Sandbox isolation](#sandbox-isolation). |
|
|
106
106
|
| `claude_settings` | `str \| dict \| null` | Passed to the SDK `--settings`. A dict is JSON-serialized; a str is a settings file path. Use `permissions.deny` to block tools/paths. |
|
|
107
|
+
| `context_window` | `int \| null` (100000-1000000) | Auto-compact window, in tokens, sent as `CLAUDE_CODE_AUTO_COMPACT_WINDOW`. It outranks `--autocompact` and every settings scope, and is capped to the model's window. Setting `claude_settings.autoCompactWindow` too is a load error. See [Harness parity](HARNESS_PARITY.md#the-context-window-cap-per-harness). |
|
|
107
108
|
| `sdk_options` | `dict` (default `{}`) | Pass-through for `ClaudeAgentOptions` fields Coder Eval doesn't own (e.g. `effort`). Validated at load — an unknown or framework-owned key is a hard error. |
|
|
108
109
|
| `ignore_patterns` | `list[str] \| null` | Gitignore-style overrides for the workspace copy used by judge sub-agents (supports `!` negation). |
|
|
109
110
|
|
|
@@ -212,9 +213,11 @@ resolution for any agent that does not declare `supports_cooperative_stop`. See
|
|
|
212
213
|
|
|
213
214
|
Claude Code produces the richest telemetry of the agents:
|
|
214
215
|
|
|
215
|
-
- **Authoritative billing** comes from the SDK's
|
|
216
|
+
- **Authoritative billing** comes from the SDK's `model_usage` on the
|
|
216
217
|
terminal result message and reconciles to `total_cost_usd` — this already includes
|
|
217
|
-
sub-agent consumption that the per-message stream under-reports.
|
|
218
|
+
sub-agent consumption that the per-message stream under-reports. Both count the
|
|
219
|
+
whole session, so a resumed turn books only what changed since the session's
|
|
220
|
+
previous result message.
|
|
218
221
|
- **Sub-agent accounting** is derived by grouping `parent_tool_use_id`-tagged
|
|
219
222
|
assistant messages; there is no separate per-sub-agent field. The terminal
|
|
220
223
|
sub-agent generation (delivered as the Agent tool result, never streamed) is
|
|
@@ -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
|
|
@@ -192,6 +192,13 @@ The agent maps `permission_mode` to the Codex SDK's `Sandbox`. The approval mode
|
|
|
192
192
|
|
|
193
193
|
`allowed_tools` / `disallowed_tools` are normalized (`Bash` → `shell`, `Write`/`Edit` → `apply_patch`, etc.) and passed as `enabled_tools` / `disabled_tools` in the thread `config`. **Note:** the Codex SDK does not currently enforce `disabled_tools`; do not rely on it as a security boundary (the agent logs a warning when it is set).
|
|
194
194
|
|
|
195
|
+
### Context Window
|
|
196
|
+
|
|
197
|
+
`agent.context_window` is passed as `model_context_window` in the thread `config`. Codex
|
|
198
|
+
uses it as the model's context window, capped to the model's catalog maximum, and
|
|
199
|
+
auto-compacts at 90% of it. See
|
|
200
|
+
[Harness parity](HARNESS_PARITY.md#the-context-window-cap-per-harness).
|
|
201
|
+
|
|
195
202
|
### Skills Discovery
|
|
196
203
|
|
|
197
204
|
The agent sets up SKILL.md files (Agent Skills open standard) in `.agents/skills/` directory:
|
|
@@ -199,8 +206,9 @@ The agent sets up SKILL.md files (Agent Skills open standard) in `.agents/skills
|
|
|
199
206
|
1. Scans `config.plugins` for local plugins with `path` field
|
|
200
207
|
2. Checks `plugin_tools_dir` parameter passed to `start()`
|
|
201
208
|
3. Expands environment variables in paths (`$PLUGIN_PATH`, `${PLUGIN_PATH}`)
|
|
202
|
-
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
|
|
203
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
|
|
204
212
|
|
|
205
213
|
### Async Integration
|
|
206
214
|
|
|
@@ -168,8 +168,8 @@ Run-limit semantics per harness: [Run-Limit Parity](HARNESS_PARITY.md).
|
|
|
168
168
|
## Known Limitations
|
|
169
169
|
|
|
170
170
|
1. **No multi-generation transcript splitting.** This agent builds one `AssistantMessage` per `communicate()` call, not one per backend round-trip. The host does send the signals a split needs (`isStepStart` on `message` events and per-round-trip `turnUsages` on `result`), but this agent does not use them yet.
|
|
171
|
-
2. **`max_turns` is enforced by coder_eval, not by the host.** The host's `maxSteps` option on `send` does not stop the turn (confirmed live: `maxSteps: 2` ran 7 steps and only reported `maxStepsReached: true`), so this agent does not send it. See [Run-Limit Parity](HARNESS_PARITY.md).
|
|
172
|
-
A turn cut at `max_turns`, or by a cooperative early stop, keeps the token usage and cost of every model call that finished before the cut, as on the other agents. The host sends a `usage` frame for each call before that call's tool results.
|
|
171
|
+
2. **`max_turns` is enforced by coder_eval, not by the host.** The host's `maxSteps` option on `send` does not stop the turn (confirmed live: `maxSteps: 2` ran 7 steps and only reported `maxStepsReached: true`), so this agent does not send it. It counts a call on the call's first streamed text, or on its `usage` frame when the call streams none. The host runs a batched reply's tools one at a time, so tool events do not mark a call. See [Run-Limit Parity](HARNESS_PARITY.md).
|
|
172
|
+
A turn cut at `max_turns`, or by a cooperative early stop, keeps the token usage and cost of every model call that finished before the cut, as on the other agents. The host sends a `usage` frame for each call before that call's tool results. Which side of the cut the crossing call lands on depends on its shape. A call that streams text is cut at that text, before its `usage` frame and before any of its tools, so its usage is dropped. A tool-only call is cut at its own `usage` frame, so its usage is booked, and its first tool can start before the kill: the host starts a call's tools right after the frame, and the stream gives no earlier boundary. When the `result` arrives, the agent compares its own call count with the host's `turnUsages` and logs a warning if they differ, because a change in the host's frame order would move the cap. A host that does not send `usage` frames reports usage only on its final `result` frame, which a cut turn never gets: that turn has no usage, and the agent logs a warning.
|
|
173
173
|
3. **Only three backend failures get a specific diagnosis.** A Cloudflare WAF block page is reported as a content-filter failure and is not retried: the same prompt or tool result is blocked again. An SSE connect timeout is reported as a connection failure and is retried. A session conflict ("A reply is already being generated") is retried in a new conversation when no turn of that conversation has finished. After a finished turn, or with a `session_id` set in the config, the retry stays in the same conversation, so the agent never continues without its earlier turns: the retry succeeds once the backend releases the conversation (it stops the reply when the host disconnects), or the task ends as an error. There is no first-response stall detection: a stalled turn ends at its turn timeout. Every other crash ends the turn as an `AgentCrashError`, which is retried unless its message matches a category that is not retried (a timeout, or an auth, billing or content-filter error).
|
|
174
174
|
4. **`sdk_options` accepts only `effort`.** Reasoning effort uses the same `sdk_options.effort` key as Claude Code, so `-D agent.sdk_options.effort=high` works for both agents. Any other key, or an `effort` that is not a string, is a validation error. The host checks the tier itself: it logs a tier it does not recognize and uses the model's default. `project_id`, `session_id` and `enable_computer_use` are typed config fields.
|
|
175
175
|
5. **`enable_computer_use: true` requires local permissions and is unavailable on Linux.** macOS needs Accessibility + Screen Recording grants; the SDK throws unconditionally on Linux when this is enabled.
|