coder-eval 0.12.11__tar.gz → 0.12.13__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.11 → coder_eval-0.12.13}/.claude/notes/README.md +1 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/agents.md +154 -97
- coder_eval-0.12.13/.claude/notes/context-window.md +170 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/lint-rules.md +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/timing.md +6 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.env.example +18 -21
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/pr-checks.yml +21 -24
- {coder_eval-0.12.11 → coder_eval-0.12.13}/CHANGELOG.md +202 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/PKG-INFO +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/action.yml +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/AB_EXPERIMENTS.md +23 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/EXTENDING.md +16 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/REPORT_SCHEMA.md +27 -3
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/TASK_DEFINITION_GUIDE.md +23 -10
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/USER_GUIDE.md +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/CLAUDE_CODE.md +5 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/CODEX.md +7 -0
- coder_eval-0.12.13/docs/agents/DELEGATE.md +210 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/HARNESS_PARITY.md +63 -33
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/default.yaml +2 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/pyproject.toml +2 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/__init__.py +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/claude_code_agent.py +104 -10
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/codex_agent.py +4 -0
- coder_eval-0.12.13/src/coder_eval/agents/delegate/package.json +9 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/delegate_agent.py +560 -282
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/categorization.py +17 -6
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/agent_config.py +109 -11
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/results.py +4 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/overrides.py +18 -4
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/pricing.py +6 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/experiment.py +6 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/html.py +28 -4
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/markdown.py +76 -9
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/result_metrics.py +24 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/run_record.py +7 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/delegate/hello_date_delegate.yaml +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_bracket_clock.py +2 -2
- coder_eval-0.12.13/tests/_fixtures/golden_streams/delegate_fixtures.py +321 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_a_tool_call.json +101 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_b_max_turns_cut.json +112 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_c_error_frame_crash.json +92 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_d_orphaned_tool.json +92 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_e_tool_only_call_crosses_cap.json +112 -0
- coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_f_batched_tools_in_sequence.json +150 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/run_full.md +10 -9
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/run_minimal.md +2 -2
- coder_eval-0.12.13/tests/test_agent_context_window.py +152 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_golden_master.py +22 -4
- coder_eval-0.12.13/tests/test_delegate_agent.py +1253 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_config.py +16 -4
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_live.py +38 -16
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_characterization.py +1 -1
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_overrides_engine.py +32 -2
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports.py +65 -4
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_retry_logic_comprehensive.py +16 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_record.py +30 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_identity_contract.py +17 -16
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_token_usage.py +135 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/uv.lock +115 -78
- coder_eval-0.12.11/docs/agents/DELEGATE.md +0 -192
- coder_eval-0.12.11/src/coder_eval/agents/delegate/delegate_host.mjs +0 -175
- coder_eval-0.12.11/src/coder_eval/agents/delegate/package.json +0 -9
- coder_eval-0.12.11/tests/test_delegate_agent.py +0 -651
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/harness-candidates.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/permissions.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/code_review.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.gitignore +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/.python-version +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/ADOPTERS.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/CLAUDE.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/LICENSE +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/Makefile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/NOTICE +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/SECURITY.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/comparison.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/comparison.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/index.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/llms.txt +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/package.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/mkdocs.yml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/osv-scanner.toml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/eval_material.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestrator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/utterance.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/conftest.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/runner.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_container_context.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_custom_lint.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_durations.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_eval_material.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_integration.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_logging.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_registry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_resume.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_routing.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_task_internal.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_stats.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_tags.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_utils.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.11 → coder_eval-0.12.13}/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`.
|
|
@@ -558,7 +567,7 @@ shell-aware `parameters["command"]` extraction in `criteria/command_executed.py`
|
|
|
558
567
|
to raw-JSON matching — so the same task scores differently per harness. Unknown names pass
|
|
559
568
|
through unchanged.
|
|
560
569
|
|
|
561
|
-
|
|
570
|
+
Four cases are worth knowing:
|
|
562
571
|
|
|
563
572
|
- **OpenCode's tool set varies by MODEL within the one harness.** A live 174-task run
|
|
564
573
|
showed DeepSeek using `write`/`edit` 199 times and `apply_patch` 0, while GPT-5.6 used
|
|
@@ -571,6 +580,11 @@ Three cases are worth knowing:
|
|
|
571
580
|
- **Pi's search tool is `find`** (glob-by-pattern), not `glob`; there is no `glob` tool in
|
|
572
581
|
its built-in set, so mapping `find` to the canonical `Glob` is what keeps
|
|
573
582
|
`command_executed` and `commands_efficiency` comparable.
|
|
583
|
+
- **Delegate's host maps most names itself, but not `LoadSkill`.** `delegate-stdio` reports
|
|
584
|
+
`ReadFile` as `Read` and `ExecuteSkillApi` as `Skill`, so `DelegateAgent` maps only
|
|
585
|
+
`LoadSkill {name}` to `Skill {skill}`; without it `skill_triggered` never sees a Delegate skill
|
|
586
|
+
load. The rename is keyed by the host's name: keyed by `Skill`, it would also turn
|
|
587
|
+
ExecuteSkillApi's `name`, an API call, into a skill engagement.
|
|
574
588
|
|
|
575
589
|
Antigravity additionally strips the result payload out of a tool call's arguments: the
|
|
576
590
|
harness folds result fields into the same `args` dict at DONE. Beyond a static key list,
|
|
@@ -801,89 +815,134 @@ release adding an unclassified field fails loudly instead of silently passing th
|
|
|
801
815
|
|
|
802
816
|
## Delegate agent
|
|
803
817
|
|
|
804
|
-
`DelegateAgent` drives UiPath Autopilot's Delegate agent
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
`
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
the
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
`
|
|
837
|
-
|
|
838
|
-
`
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
The
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
`
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
`
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
**
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
(
|
|
885
|
-
|
|
886
|
-
|
|
818
|
+
`DelegateAgent` drives UiPath Autopilot's Delegate agent: reasoning in the UiPath backend, tools run
|
|
819
|
+
locally. It spawns the host from the public `@uipath/delegate-stdio` npm package
|
|
820
|
+
(`dist/delegate_stdio.mjs`), which pulls in `@uipath/delegate-sdk` and the interop binaries. The
|
|
821
|
+
package README is the wire-protocol SSOT. `agents/delegate/package.json` sets the floor at `1.203.0`, the
|
|
822
|
+
first release with the `auth` init option and the `usage` frame (UiPath/Autopilot#6656). The other frame
|
|
823
|
+
shapes were confirmed against a live `1.202.1` transcript; the frame builders in
|
|
824
|
+
`tests/_fixtures/golden_streams/delegate_fixtures.py` replay those shapes. (An earlier first-party
|
|
825
|
+
`delegate_host.mjs` wrapper is gone; see git history.)
|
|
826
|
+
|
|
827
|
+
**Auth goes to the host as the `auth` init option, not through its env.** `_env` reads the
|
|
828
|
+
`DELEGATE_*` name first, then the bare `AUTH_TOKEN` / `TENANT_ID` / `ORG_ID` / `ORG_SLUG` /
|
|
829
|
+
`TENANT_SLUG`. `DELEGATE_BACKEND_URL` → `backendUrl`, `DELEGATE_ENV` → `env`. We do not adopt the
|
|
830
|
+
host's own names (`ORG_LOGICAL_NAME`, `BACKEND_URL`, …): bare names collide with other tooling, and CI
|
|
831
|
+
secrets use the `DELEGATE_*` names. `_HOST_ENV_REMOVED` strips the host's names and the token from the
|
|
832
|
+
host env, because the agent's shells inherit it (token leak to code under test) and a stray
|
|
833
|
+
`BACKEND_URL` would reroute the host. A refresh source still writes the fresh token into the host's
|
|
834
|
+
own `process.env.AUTH_TOKEN`. `_INIT_CONFIG_ERROR_HINT` names our variables beside the host's message,
|
|
835
|
+
which names the host's own. `env=<slug>` without org/tenant
|
|
836
|
+
slugs fails init.
|
|
837
|
+
|
|
838
|
+
**`LLMGW_*` leaves the host env only when a token file is set.** Without a token file, the host's
|
|
839
|
+
`selectTokenSource` uses that S2S pair to refresh, so stripping it always would end refresh after an
|
|
840
|
+
hour. `_strip_redundant_gateway_creds` mirrors the host's lookup exactly
|
|
841
|
+
(`DELEGATE_AUTH_TOKEN_FILE ?? AUTH_TOKEN_FILE`, path-delimiter split, blanks ignored).
|
|
842
|
+
|
|
843
|
+
**Effort rides `sdk_options.effort`** — the same key as Claude Code, so one `-D` drives both.
|
|
844
|
+
`get_sdk_options()` returns the whole `init` dict (so the reports show Model and Effort), with
|
|
845
|
+
credentials redacted: `auth` → its field names, `backendUrl` → its host (`None` when `urlparse` cannot
|
|
846
|
+
parse the URL: the orchestrator reads it while it persists `task.json`, so a raise there would lose
|
|
847
|
+
the file and hide the original error). It is persisted in
|
|
848
|
+
`task.json`.
|
|
849
|
+
|
|
850
|
+
**`enableSkills` must be sent explicitly**: the host default is `false`, so `bundledSkillsPath` alone
|
|
851
|
+
loads nothing. `_resolve_bundled_skills_path` maps `<plugin.path>/skills` (first plugin wins), not the
|
|
852
|
+
shared `agents/_skills.py` resolver: the SDK wants ONE parent directory, not a list of skill dirs.
|
|
853
|
+
|
|
854
|
+
**`max_turns` stays client-side.** The host's `maxSteps` does not stop the turn (live: `maxSteps: 2`
|
|
855
|
+
ran 7 steps). The adapter counts calls from the event stream and abandons the host when call N+1
|
|
856
|
+
opens; `len(turnUsages)` from the `result` then replaces the estimate as `num_turns`.
|
|
857
|
+
|
|
858
|
+
**A call opens on its first text, or on its `usage` frame when it streams none — never on a tool
|
|
859
|
+
event.** The host streams a call's text, flushes the call's `usage` frame, then runs the call's
|
|
860
|
+
tools, and it runs a batched reply's tools one at a time: `tool_call`, `tool_result`, `tool_call`,
|
|
861
|
+
`tool_result`. The adapter once opened call N+1 when every open tool had returned. With that order
|
|
862
|
+
the open set empties after each tool, so every tool counted as a call: a downstream suite saw a turn
|
|
863
|
+
with 16 round-trips and 96 tool calls cut at `max_turns: 80`. Now a `thinking` or `message` event
|
|
864
|
+
opens a call unless the open call has already streamed text, and a `usage` frame opens one only for
|
|
865
|
+
a call that streamed none. A crossing call that streams text is cut at that text, before any of its
|
|
866
|
+
tools. A tool-only crossing call is cut at its own frame, and its first tool can start before the kill:
|
|
867
|
+
the host starts a call's tools right after the frame, and the stream gives no earlier boundary. A host
|
|
868
|
+
without `usage` frames counts only the calls that stream text; such a host is below the 1.203.0 floor,
|
|
869
|
+
which is also the first release that takes the `auth` init option.
|
|
870
|
+
Only `_TurnState.on_text` / `on_tool_event` / `on_usage_frame` / `on_result` write the count, so the rule
|
|
871
|
+
lives in one place. `on_result` compares the live count with `len(turnUsages)` and warns when they
|
|
872
|
+
differ: the order is read from the 1.203.1 host and SDK source, not from a live transcript, so a host
|
|
873
|
+
release that reorders the frames shows up in the logs instead of silently moving the cap.
|
|
874
|
+
|
|
875
|
+
**A cut turn keeps the usage of its finished calls.** A turn cut by `max_turns` or a stop gets no
|
|
876
|
+
`result`, so the adapter sums the per-round-trip `usage` frames; the `result`'s total replaces the sum
|
|
877
|
+
when it arrives. Ordering (from the host and SDK source, not a live transcript): call N's `usage` frame
|
|
878
|
+
precedes every tool event of call N. A crossing call that streams text is cut at that text, so its usage
|
|
879
|
+
is dropped; a tool-only crossing call is cut at its own frame, so its usage is booked. The adapter warns
|
|
880
|
+
when a cut turn had finished calls but no usage.
|
|
881
|
+
|
|
882
|
+
**One `AssistantMessage` per `communicate()`.** `isStepStart` and `turnUsages` would allow a
|
|
883
|
+
per-round-trip split; today `isStepStart` only merges streamed deltas. `close_window` opens the one
|
|
884
|
+
window at turn start, so head and tail measure ~0.
|
|
885
|
+
|
|
886
|
+
**Known host failures are recategorized** in `_describe_host_error` / `_crash_on_host_error`, ported
|
|
887
|
+
from the out-of-tree `delegate-sdk` adapter that drove the same host and backend:
|
|
888
|
+
|
|
889
|
+
- **Cloudflare WAF block page** (`<title>Continue with UiPath Platform</title>` or "not available in
|
|
890
|
+
your country"): a WAF rule matched shell-like text in the request, not a geo/auth block. A retry
|
|
891
|
+
is blocked again, so the reason carries "content filter" (`AGENT_INVALID_OUTPUT`). Two markers,
|
|
892
|
+
because the host truncates near 50 KB and the country sentence sits after ~48 KB of CSS.
|
|
893
|
+
- **SSE connect timeout**: no response headers, so the backend never started the turn. Rewritten to
|
|
894
|
+
"connection" (`AGENT_API_ERROR`, retried) with "timeout" removed, which would be `AGENT_TIMEOUT`
|
|
895
|
+
(not retried).
|
|
896
|
+
- **Session conflict** ("A reply is already being generated", 409): `_session_id` is dropped so the
|
|
897
|
+
retry starts a new conversation, but only while no turn of that conversation has finished
|
|
898
|
+
(`_conversation_has_history`). On a later turn a new conversation would continue the task without
|
|
899
|
+
the earlier turns, and the row would still be graded as one trajectory. So the retry keeps the
|
|
900
|
+
session. The 409 is short-lived: the backend cancels the reply when the killed host's stream
|
|
901
|
+
disconnects, then releases its turn claim, so the 5 s and 10 s `AGENT_CRASH` retries usually
|
|
902
|
+
succeed. A claim it fails to release expires after `TURN_CLAIM_TTL_SECONDS` (900 s), and the task
|
|
903
|
+
ends as an error. A `session_id` pinned in config counts as history, and dropping it would not
|
|
904
|
+
help anyway: each respawn sends it in `init`, and the SDK falls back to it when `send` carries no
|
|
905
|
+
`sessionId` (`sessionId || this.options.sessionId` in the SDK's `sendMessage`).
|
|
906
|
+
|
|
907
|
+
Not ported: stall-timeout+resend and the S2S token-file refresher. Port them when the need shows.
|
|
908
|
+
|
|
909
|
+
**No crash reason carries the stderr tail.** Categorization matches substrings of the reason, and the
|
|
910
|
+
tail holds incidental text (the sandbox path, so the task id). In build 13599116 "guardrail" in a task
|
|
911
|
+
path turned a transient error into non-retryable `AGENT_INVALID_OUTPUT`. `_log_stderr_tail` logs the
|
|
912
|
+
tail at WARNING instead.
|
|
913
|
+
|
|
914
|
+
**Only an init error that a retry cannot fix is non-retryable.** `AgentConfigError` only on
|
|
915
|
+
`_INIT_CONFIG_ERROR_MARKERS` (auth missing/rejected, missing slugs, unknown env) or on a whole-word
|
|
916
|
+
401/403. A bare `"401"` substring also matched ports and GUIDs, such as `127.0.0.1:54013`, and ended a
|
|
917
|
+
transient failure with no retry. Any other init error and the 60 s init deadline raise a retryable
|
|
918
|
+
`AgentCrashError`. The shared categorizer matches status codes as whole words too
|
|
919
|
+
(`errors/categorization.py::_mentions_status`): the `AgentCrashError` goes through `categorize_error`,
|
|
920
|
+
whose raw `"401"` substring made the same port and GUID cases a non-retryable auth error. A mid-run
|
|
921
|
+
respawn keeps the same classification: it once made every `AgentConfigError` retryable, so an expired
|
|
922
|
+
token ended the task at `start()` but was retried later.
|
|
923
|
+
|
|
924
|
+
**Clear the process handle on every path that leaves the host dead or dying** — EOF, `error` frame,
|
|
925
|
+
timeout (pre-check AND mid-`wait_for`), stop, `max_turns`. A shipped bug left it set after a mid-read
|
|
926
|
+
timeout, so the next turn reused a host with a `send` in flight
|
|
927
|
+
(`test_timeout_elapsing_mid_read_still_raises_turn_timeout_error` pins it). `_force_kill_host` clears
|
|
928
|
+
the handle before its reap. The adapter never reuses a host after a failed `send`, so no late event
|
|
929
|
+
leaks into the retry.
|
|
930
|
+
|
|
931
|
+
**Registered unconditionally**, like `codex`/`antigravity`; its extra is empty. Node and
|
|
932
|
+
`@uipath/delegate-stdio` are the real prerequisite, resolved lazily in `start()`.
|
|
933
|
+
|
|
934
|
+
**Host resolution: `DELEGATE_STDIO_PATH`, then local installs, then a global one.** Local means
|
|
935
|
+
the cwd, its ancestors and `agents/delegate/`; a local install wins, as in Node. A global install
|
|
936
|
+
is found through the package's `delegate-stdio` bin shim on `PATH`, not `npm root -g`, so the
|
|
937
|
+
resolver runs no npm subprocess. On POSIX the shim is a symlink to the bundle. On Windows it is a
|
|
938
|
+
`.cmd` file beside the prefix's `node_modules`. We never execute the `.cmd`: that would make
|
|
939
|
+
`cmd.exe` parse the arguments again. The home probe and `DELEGATE_SDK_NODE_MODULES` are gone. The
|
|
940
|
+
global search covers "install once, run from anywhere", and the root override only repeated the
|
|
941
|
+
path override. The explicit path stays for CI: a source build has no install root, and an install
|
|
942
|
+
in a temporary directory for each run keeps the runs on a shared host on their own versions.
|
|
943
|
+
|
|
944
|
+
**Windows path length**: an install root that pushes the interop binary path past 260 characters makes
|
|
945
|
+
the spawn fail with `ENOENT`. The docs tell users to install into a short path.
|
|
887
946
|
|
|
888
947
|
### Delegate agent pricing
|
|
889
948
|
|
|
@@ -913,16 +972,14 @@ un-mirrored gap, with the same caveat comment). The two tables can price the SAM
|
|
|
913
972
|
differently until someone reconciles them — a known, pre-existing state, not something this port
|
|
914
973
|
introduced or should silently "fix" by picking one number over the other.
|
|
915
974
|
|
|
916
|
-
### Delegate agent golden-master
|
|
917
|
-
|
|
918
|
-
`
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
`
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
`close_window`/`_finalize_turn` code (a single window per turn, opened at `_TurnState.__init__` and
|
|
928
|
-
closed at finalize), never on the SDK's field names, so there is nothing unverified for it to guess at.
|
|
975
|
+
### Delegate agent golden-master coverage
|
|
976
|
+
|
|
977
|
+
`tests/_fixtures/golden_streams/delegate_fixtures.py` scripts the host's stdout frames for six
|
|
978
|
+
scenarios: a tool call, a `max_turns` cut, an `error`-frame crash, an orphaned tool, a tool-only call
|
|
979
|
+
that crosses the cap, and a batched reply whose tools run one at a time. The `event`,
|
|
980
|
+
`result` and `error` frames mirror the live `1.202.1` transcript. The `usage` frame and the `result`
|
|
981
|
+
fields new in `1.203.0` follow the host source of UiPath/Autopilot#6656 (`src/usage.ts` and
|
|
982
|
+
`handleSend`): every usage object carries all four buckets with `input_tokens` exclusive of cache,
|
|
983
|
+
the frames flush before each event and before the `result` or `error`, and `result.usage` is the sum
|
|
984
|
+
of `turnUsages`. No live `1.203.0` transcript has been compared yet. If one differs, change the
|
|
985
|
+
builders and regenerate the snapshots with `GOLDEN_REGEN=1`.
|
|
@@ -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
|
|
@@ -89,36 +89,33 @@ LOG_TO_FILE=false # Set to true to enable file logging
|
|
|
89
89
|
# CODER_EVAL_REMEDIATE_HOME_PLUGINS=0
|
|
90
90
|
|
|
91
91
|
# Delegate agent settings (UiPath Autopilot's Delegate agent, requires Node.js
|
|
92
|
-
# on PATH plus `npm install @uipath/delegate-
|
|
93
|
-
#
|
|
92
|
+
# on PATH plus `npm install -g @uipath/delegate-stdio`, a release that accepts the
|
|
93
|
+
# `auth` init option). coder_eval finds the install itself. See docs/agents/DELEGATE.md.
|
|
94
94
|
#
|
|
95
|
-
#
|
|
96
|
-
#
|
|
97
|
-
# DELEGATE_SDK_NODE_MODULES="/path/to/install/root"
|
|
98
|
-
# DELEGATE_SDK_PATH="/path/to/node_modules/@uipath/delegate-sdk/dist/index.mjs"
|
|
99
|
-
#
|
|
100
|
-
# DELEGATE_ENV — cloud environment slug (alpha/staging/production/localhost),
|
|
101
|
-
# used to derive the backend URL from the auth record's org/tenant slugs.
|
|
95
|
+
# DELEGATE_ENV — cloud environment slug (alpha/staging/production),
|
|
96
|
+
# used to derive the backend URL from the org/tenant slugs.
|
|
102
97
|
# DELEGATE_ENV="alpha"
|
|
103
98
|
#
|
|
104
99
|
# DELEGATE_BACKEND_URL — pin the full agent-service URL directly instead
|
|
105
100
|
# (wins over DELEGATE_ENV when both are set).
|
|
106
101
|
# DELEGATE_BACKEND_URL="https://cloud.uipath.com/<org>/<tenant>/delegate_"
|
|
107
102
|
#
|
|
108
|
-
# Auth: either the token set below, or a prior `delegate-
|
|
109
|
-
#
|
|
110
|
-
# by coder_eval).
|
|
111
|
-
#
|
|
112
|
-
#
|
|
113
|
-
#
|
|
114
|
-
#
|
|
115
|
-
#
|
|
116
|
-
#
|
|
103
|
+
# Auth: either the token set below, or a prior `delegate-cli login`
|
|
104
|
+
# that wrote ~/.aria/sdk-auth.json (read by the Node host itself, not
|
|
105
|
+
# by coder_eval). coder_eval sends these values to the host as its `auth`
|
|
106
|
+
# init option, so the token stays out of the environment that the agent's
|
|
107
|
+
# shell tools inherit. Each var also accepts the bare spelling (AUTH_TOKEN,
|
|
108
|
+
# TENANT_ID, ORG_ID, ORG_SLUG, TENANT_SLUG) as a fallback -- prefer the
|
|
109
|
+
# DELEGATE_ spelling in a shared environment, since the bare names collide
|
|
110
|
+
# with what other tooling (npm, Vault, Terraform) commonly exports.
|
|
111
|
+
# DELEGATE_AUTH_TOKEN="..."
|
|
112
|
+
# DELEGATE_TENANT_ID="..."
|
|
113
|
+
# DELEGATE_ORG_ID="..."
|
|
117
114
|
# With DELEGATE_ENV (not DELEGATE_BACKEND_URL) also set these two -- the
|
|
118
115
|
# human-readable org/tenant names, not the GUIDs above -- or init fails with
|
|
119
|
-
# "
|
|
120
|
-
#
|
|
121
|
-
#
|
|
116
|
+
# 'env="alpha" requires org/tenant slugs'. See docs/agents/DELEGATE.md.
|
|
117
|
+
# DELEGATE_ORG_SLUG="..."
|
|
118
|
+
# DELEGATE_TENANT_SLUG="..."
|
|
122
119
|
|
|
123
120
|
# Usage Telemetry (anonymous; on by default).
|
|
124
121
|
# Disable entirely:
|