coder-eval 0.9.4__tar.gz → 0.9.6__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.9.4 → coder_eval-0.9.6}/.claude/harness-candidates.md +99 -0
- coder_eval-0.9.6/.github/actionlint.yaml +11 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/claude-pr-review.yml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/codeql.yml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/conventional-commits.yml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/docker-publish.yml +6 -6
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/docs.yml +5 -2
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/pr-checks.yml +72 -19
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/publish-testpypi.yml +4 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/workflows/release.yml +14 -13
- {coder_eval-0.9.4 → coder_eval-0.9.6}/CHANGELOG.md +167 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/CLAUDE.md +13 -6
- {coder_eval-0.9.4 → coder_eval-0.9.6}/CONTRIBUTING.md +19 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/Makefile +9 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/PKG-INFO +18 -10
- {coder_eval-0.9.4 → coder_eval-0.9.6}/README.md +17 -9
- {coder_eval-0.9.4 → coder_eval-0.9.6}/action.yml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/AB_EXPERIMENTS.md +7 -7
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/CI_GATE.md +23 -13
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/DIALOG_MODE.md +4 -3
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/EXTENDING.md +2 -2
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/REPORT_SCHEMA.md +3 -2
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/TASK_DEFINITION_GUIDE.md +314 -102
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/agents/CLAUDE_CODE.md +4 -3
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/index.md +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/llms.txt +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/02-ci-pipeline.md +4 -2
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/04-writing-a-task.md +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/README.md +18 -0
- coder_eval-0.9.6/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +138 -0
- coder_eval-0.9.6/evalboard/app/path-to-ga/page.tsx +132 -0
- coder_eval-0.9.6/evalboard/app/path-to-ga/task-table.tsx +197 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/package.json +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/pnpm-lock.yaml +42 -75
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/early-stop-ab.yaml +8 -8
- {coder_eval-0.9.4 → coder_eval-0.9.6}/mkdocs.yml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/pyproject.toml +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/plan_command.py +1 -1
- coder_eval-0.9.6/src/coder_eval/criteria/cli_called.py +309 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/command_executed.py +144 -13
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/file_check.py +7 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/file_contains.py +3 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/file_exists.py +6 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/file_matches_regex.py +4 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/json_check.py +7 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/reference_comparison.py +6 -6
- coder_eval-0.9.6/src/coder_eval/invocation_log.py +151 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/__init__.py +14 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/criteria.py +436 -86
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/limits.py +49 -32
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/results.py +20 -17
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/sandbox.py +105 -0
- coder_eval-0.9.6/src/coder_eval/orchestration/early_stop.py +713 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/experiment.py +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestrator.py +49 -64
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/pricing.py +10 -4
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/reports.py +37 -9
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/reports_experiment.py +1 -1
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/reports_html.py +5 -8
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/resources/default_ignore_patterns.yaml +7 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/sandbox.py +245 -15
- coder_eval-0.9.6/tasks/early_stop_decision_budget_exceeded.yaml +43 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/early_stop_weighted_high_weight_kills_run.yaml +14 -14
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/early_stop_weighted_low_weight_absorbed.yaml +17 -16
- coder_eval-0.9.6/tests/lint/action_docs.py +232 -0
- coder_eval-0.9.6/tests/lint/rules/ce032_criteria_path_seam.py +50 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/runner.py +2 -0
- coder_eval-0.9.6/tests/test_cli_called_criterion.py +743 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_command_executed.py +354 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_custom_lint.py +203 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_early_stop.py +911 -342
- coder_eval-0.9.6/tests/test_glob_paths_in_file_criteria.py +253 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_merge_strategy_annotations.py +1 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reference_comparison_scoring.py +3 -0
- coder_eval-0.9.6/tests/test_sandbox_record_cli.py +506 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_success_criterion_union.py +1 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_threshold_enforcement.py +3 -2
- {coder_eval-0.9.4 → coder_eval-0.9.6}/uv.lock +1 -1
- coder_eval-0.9.4/evalboard/app/path-to-ga/page.tsx +0 -218
- coder_eval-0.9.4/src/coder_eval/orchestration/early_stop.py +0 -614
- coder_eval-0.9.4/tasks/early_stop_decision_budget_exceeded.yaml +0 -40
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-run-analysis.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/commands/coder-eval-task-create.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/shared/axes.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.env.example +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/CODEOWNERS +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/code_review.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/dependabot.yml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.gitignore +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/.python-version +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/ADOPTERS.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/LICENSE +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/NOTICE +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/SECURITY.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docker/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/DATASETS.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/assets/hero.gif +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/comparison.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/docs/tutorials/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/.gitignore +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/globals.css +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/icon.png +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/default.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/litellm/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/litellm/cost_logger.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/osv-scanner.toml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/antigravity_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/codex_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/aggregate_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/run_task_internal_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/isolation/docker_runner.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/container_paths.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/reports_junit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/reports_stats.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tasks/token_check.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/_path_helpers.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/conftest.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce023_no_proxy_shim_import.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/lint/violation.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_agentless.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_aggregate.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_antigravity_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_classification_match.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_codex_agent.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_runner_mounts.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_error_handling.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_evaluator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_event_collector.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_file_check.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_formatting.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_integration.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_json_check.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_logging.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_mutations.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_parallel.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_path_utils.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_plan_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_plugins.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_post_run.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_pre_run.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reference_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reference_orchestrator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_registry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_release_notes.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_report_command.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports_experiment.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports_html.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports_stats.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_reports_stats_nonfinite.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_resume.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_routing.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_scorers.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_summaries.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_tags.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_telemetry.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_token_usage.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_utils.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_watchdog.py +0 -0
- {coder_eval-0.9.4 → coder_eval-0.9.6}/tests/test_yaml_migration.py +0 -0
|
@@ -107,3 +107,102 @@ Deferred lint/test guardrails surfaced during reviews. Promote to a `CExxx` rule
|
|
|
107
107
|
caught them. The cleanup plan explicitly deferred this as YAGNI for the
|
|
108
108
|
one-time purge, but any future doc rename/deletion re-opens the same blind
|
|
109
109
|
spot — caught in the 2026-07-03 open-source-docs-cleanup implementation run.
|
|
110
|
+
|
|
111
|
+
## From PR #77 (command-executed shell-normalize) — CE030-to-criteria deferred
|
|
112
|
+
|
|
113
|
+
- [ ] **Extend CE030 doc/schema-parity to the `SuccessCriterion` union** so a new
|
|
114
|
+
criterion (or field) can't ship undocumented. Attempted in PR #77 and reverted:
|
|
115
|
+
CI installs `--extra uipath`, and in that environment `coder_eval.models.criteria`
|
|
116
|
+
gains a `CliCalledCriterion` (fields `log`/`positional`) that is NOT present in a
|
|
117
|
+
plain checkout (it did not reproduce on macOS, whose lockfile resolution omits the
|
|
118
|
+
contributing linux-only component). It defeated every discriminator tried — union
|
|
119
|
+
membership, a `__module__` string filter (it is spoofed to `coder_eval.models.criteria`),
|
|
120
|
+
a genuine-module-attribute scan (it is `setattr` onto the module), and even an AST
|
|
121
|
+
parse of the `SuccessCriterion` union literal in `criteria.py` source (CI's imported
|
|
122
|
+
criteria module resolves to a file whose union literal already contains it). No
|
|
123
|
+
runtime OR source signal available in the lint could separate the injected criterion
|
|
124
|
+
from an in-tree one. Revisit only with a way to identify the in-tree criterion set that
|
|
125
|
+
is provably immune to the uipath integration — e.g. a hardcoded name allowlist of the
|
|
126
|
+
in-tree criteria (losing auto-coverage of new ones), or first understanding exactly how
|
|
127
|
+
that environment injects the criterion. Until then CE030 stays scoped to the four
|
|
128
|
+
top-level models; the `command_pattern`/`exclude_pattern` contract this PR changed is
|
|
129
|
+
documented in the Field descriptions and TASK_DEFINITION_GUIDE regardless.
|
|
130
|
+
|
|
131
|
+
## From the evalboard Path-to-GA de-tag / mature-passes fix (4e5bbc4…dd5f7e9) — TS-side guards deferred
|
|
132
|
+
|
|
133
|
+
Context: the CExxx harness is a **Python** AST runner over `src/coder_eval/`, so none
|
|
134
|
+
of the invariants below are mechanizable in it. Each would need a TypeScript lint
|
|
135
|
+
harness (eslint config + custom rules) that `evalboard/` does not have today —
|
|
136
|
+
standing one up for three call sites fails the KISS/YAGNI gate. Deferring rather
|
|
137
|
+
than dropping; promote if a fourth TS-side invariant appears, and stand up the
|
|
138
|
+
harness once for all of them.
|
|
139
|
+
|
|
140
|
+
> **Update (PR #94 review round 2).** The *execution* half of this gap is closed:
|
|
141
|
+
> `evalboard/` is now gated by the `evalboard` job in `.github/workflows/pr-checks.yml`
|
|
142
|
+
> and reachable locally via `make evalboard-verify`, so the vitest suite (including
|
|
143
|
+
> the pricing drift guard) is enforcement rather than documentation. What remains
|
|
144
|
+
> deferred below is the *static-analysis* half — eslint has still not been stood up.
|
|
145
|
+
> The review that prompted this round names four more candidate TS rules (raw
|
|
146
|
+
> `status === "SUCCESS"` outside `lib/status.ts`; DOM-global shadowing in props;
|
|
147
|
+
> inline copies of the tag predicate; per-run tooltip copy reused on aggregate
|
|
148
|
+
> surfaces), which meets the "fourth invariant" promotion bar stated above —
|
|
149
|
+
> **stand up eslint next time `evalboard/` is touched substantively.**
|
|
150
|
+
|
|
151
|
+
- [ ] **"Every consumer of `RunOverviewTask.matureSkipped` must decide explicitly
|
|
152
|
+
whether a carry-forward row counts."** Four consumers now, and they deliberately
|
|
153
|
+
DISAGREE: `lib/trends.ts` and `app/runs/[id]/run-view.tsx` count a mature skip as
|
|
154
|
+
a pass; `lib/overview.ts::buildTagTaskRows` excludes it from both terms
|
|
155
|
+
(`/path-to-ga` is a GA-readiness page). A new consumer silently inheriting either
|
|
156
|
+
convention is a real hazard. Guard shape: flag a file that reads `.matureSkipped`
|
|
157
|
+
without a nearby comment naming its convention — weak, hence the deferral. Closed
|
|
158
|
+
for now by unit tests that assert the exclusion from BOTH numerator and denominator
|
|
159
|
+
(`lib/__tests__/overview.test.ts` → `describe("buildTagTaskRows")`).
|
|
160
|
+
|
|
161
|
+
- [x] ~~**`taskCarriesRepoTag` is the single repo-provenance tag predicate — but one
|
|
162
|
+
duplicate survives.**~~ **RESOLVED in PR #94 review round 2.** The predicate moved to
|
|
163
|
+
a dependency-free `lib/tags.ts` (structurally typed on `{skill, tags}` so
|
|
164
|
+
`RunOverviewTask`, `TaskResultSummary` and `TaskTrend` all satisfy it), re-exported
|
|
165
|
+
from `lib/overview.ts` for existing callers. Both inline copies now import it:
|
|
166
|
+
`app/runs/[id]/run-view.tsx` (the `"use client"` one that could not before) and
|
|
167
|
+
`lib/trends.ts::trendMatchesTag` (a third copy the original deferral missed).
|
|
168
|
+
Still worth a lint rule ("no inline `tags.includes(x) || skill === x`") to catch
|
|
169
|
+
future copies — folded into the eslint promotion noted above.
|
|
170
|
+
|
|
171
|
+
- [ ] **The de-tag rule fails CLOSED on a newest run that loads fine but stamps no
|
|
172
|
+
`tags`** (`lib/overview.ts::buildTagTaskRows`): every tagged task would read as
|
|
173
|
+
de-tagged and the table would empty, rendering an empty state indistinguishable from
|
|
174
|
+
a genuine full de-tagging. Its sibling failure mode (`overview == null`, a transient
|
|
175
|
+
blob read failure) IS guarded, with exactly this rationale. Currently unreachable —
|
|
176
|
+
0 of ~116k date-shaped non-ad-hoc task rows in `runs-remote/` lack `tags`, and the
|
|
177
|
+
six zero-tag runs found are all ad-hoc (filtered upstream by id shape + `meta.adhoc`)
|
|
178
|
+
— so the barrier is two upstream filters rather than a check at the seam. Left
|
|
179
|
+
unguarded on purpose: a `if (taggedInRun.size === 0) skip the de-tag signal` guard
|
|
180
|
+
would also mask a real, total de-tagging. Revisit if the pipeline ever stops
|
|
181
|
+
stamping tags, or if a non-ad-hoc run legitimately carries zero tagged rows.
|
|
182
|
+
|
|
183
|
+
- [ ] **Discriminating-test discipline for predicate narrowings.** Two tests in this
|
|
184
|
+
change passed for the wrong reason — a downstream rule (the de-tag drop) masked the
|
|
185
|
+
mutation they claimed to catch — and the plan leaned on a `grep` acceptance criterion
|
|
186
|
+
that CI never runs. Both were found by mutation-testing the suite and fixed. No
|
|
187
|
+
mechanizable guard; the durable lesson is: when a test names a narrowing, construct
|
|
188
|
+
the fixture so the row SURVIVES every other rule, or the assertion proves nothing.
|
|
189
|
+
|
|
190
|
+
- [ ] **CE034 — runner-label registry + dogfood runner parity** over
|
|
191
|
+
`.github/workflows/*.yml`. Two clauses: (a) every label a job can land on must appear
|
|
192
|
+
in `.github/actionlint.yaml`'s `self-hosted-runner.labels` or a stock GitHub-hosted
|
|
193
|
+
allowlist — including *both* branches of an expression-valued `runs-on:`, which
|
|
194
|
+
actionlint treats as opaque; (b) `action-dogfood`'s label must equal the one the
|
|
195
|
+
consumer snippet in `docs/tutorials/02-ci-pipeline.md` advertises. Nothing guards
|
|
196
|
+
either today: actionlint is not wired into `make verify` or pre-commit (grep: the
|
|
197
|
+
config file is its only mention), and CE026 parses that job's prerequisite *steps*
|
|
198
|
+
but never its `runs-on:`. Why it matters: an undeclared label is not a runtime error,
|
|
199
|
+
the job queues until GitHub cancels it hours later — indistinguishable from a pool
|
|
200
|
+
outage; and a repo-wide `runs-on:` migration has twice swept up `action-dogfood`
|
|
201
|
+
(#306, then 027121e in this PR), which exists precisely to prove the published Action
|
|
202
|
+
works on the image external integrators use. Implemented and verified once (both
|
|
203
|
+
clauses caught their regression class on the real tree) but reverted as out of
|
|
204
|
+
proportion to a 16-line runner migration — ~240 lines including tests. Note when
|
|
205
|
+
writing it: discriminate labels from expression operands structurally, on the
|
|
206
|
+
preceding `&&`/`||`, NOT on the string's shape — a "contains 'ubuntu'" heuristic
|
|
207
|
+
silently fails on `uipath-ubunut-latest`, the exact transposition typo the rule is
|
|
208
|
+
for. Caught in the multi-model review of PR #86.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Declares this repo's custom runner labels so actionlint stops reporting them as
|
|
2
|
+
# unknown. Advisory only: nothing in `make verify` runs actionlint, so this file helps
|
|
3
|
+
# a local run or an editor integration and is not a gate.
|
|
4
|
+
#
|
|
5
|
+
# These are UiPath's centralized managed GitHub pool labels. Jobs that deliberately
|
|
6
|
+
# stay on stock `ubuntu-latest` say why at their own `runs-on:`.
|
|
7
|
+
self-hosted-runner:
|
|
8
|
+
labels:
|
|
9
|
+
- uipath-ubuntu-latest
|
|
10
|
+
- uipath-ubuntu-24.04
|
|
11
|
+
- uipath-windows-latest
|
|
@@ -41,13 +41,13 @@ env:
|
|
|
41
41
|
jobs:
|
|
42
42
|
publish:
|
|
43
43
|
name: Build and push to GHCR
|
|
44
|
-
runs-on: ubuntu-latest
|
|
44
|
+
runs-on: uipath-ubuntu-latest
|
|
45
45
|
# Skip semantic-release's own commit so we don't double-build on the
|
|
46
46
|
# version-bump push.
|
|
47
47
|
if: "!contains(github.event.head_commit.message, 'chore(release):')"
|
|
48
48
|
timeout-minutes: 30
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
# No SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS on purpose: nothing installs on the
|
|
50
|
+
# host here, and the Docker build doesn't inherit job env (it uses its own ARG).
|
|
51
51
|
|
|
52
52
|
steps:
|
|
53
53
|
- name: Checkout code
|
|
@@ -65,17 +65,17 @@ jobs:
|
|
|
65
65
|
echo "owner_lc=${OWNER_LC}" >> "$GITHUB_OUTPUT"
|
|
66
66
|
|
|
67
67
|
- name: Set up Docker Buildx
|
|
68
|
-
uses: docker/setup-buildx-action@v3
|
|
68
|
+
uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0
|
|
69
69
|
|
|
70
70
|
- name: Log in to GHCR
|
|
71
|
-
uses: docker/login-action@v3
|
|
71
|
+
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3.7.0
|
|
72
72
|
with:
|
|
73
73
|
registry: ${{ env.REGISTRY }}
|
|
74
74
|
username: ${{ github.actor }}
|
|
75
75
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
76
76
|
|
|
77
77
|
- name: Build and push image
|
|
78
|
-
uses: docker/build-push-action@v6
|
|
78
|
+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6.19.2
|
|
79
79
|
with:
|
|
80
80
|
context: .
|
|
81
81
|
file: docker/Dockerfile
|
|
@@ -35,9 +35,12 @@ concurrency:
|
|
|
35
35
|
|
|
36
36
|
jobs:
|
|
37
37
|
publish:
|
|
38
|
-
runs-on: ubuntu-latest
|
|
38
|
+
runs-on: uipath-ubuntu-latest
|
|
39
|
+
# Without a budget, a hang in the unattended `git push --force` below would hold a
|
|
40
|
+
# shared-pool runner slot for GitHub's 6h default.
|
|
41
|
+
timeout-minutes: 10
|
|
39
42
|
steps:
|
|
40
|
-
- uses: actions/checkout@
|
|
43
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
41
44
|
|
|
42
45
|
- name: Assemble the published tree
|
|
43
46
|
run: |
|
|
@@ -26,17 +26,26 @@ permissions:
|
|
|
26
26
|
# here — TELEMETRY_ENABLED is the single canonical disable gate.
|
|
27
27
|
env:
|
|
28
28
|
TELEMETRY_ENABLED: "false"
|
|
29
|
+
# The `uipath-*` pool enforces a minimum package-age safe-chain check on installs.
|
|
30
|
+
# Workflow-level so every installing job inherits it; per-job copies are how some
|
|
31
|
+
# jobs previously ended up with no exclusions at all. The literal is the operative
|
|
32
|
+
# value — no secret of that name exists at repo or org level, so the bare `secrets.`
|
|
33
|
+
# reference this replaced resolved to an empty list. (Image builds carry their own
|
|
34
|
+
# list in docker/Dockerfile; deliberately not the same set.)
|
|
35
|
+
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
|
|
29
36
|
|
|
30
37
|
jobs:
|
|
31
38
|
quality-gate:
|
|
32
39
|
name: Quality Gate (Format, Lint, Type, Test, Security)
|
|
33
|
-
|
|
40
|
+
# Fork PRs go to stock GitHub-hosted runners: this job runs the PR's own
|
|
41
|
+
# `uv.lock` build hooks and test files, and the repo is public, so untrusted code
|
|
42
|
+
# must not land on the shared pool image. Everything else uses the pool.
|
|
43
|
+
runs-on: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'ubuntu-latest' || 'uipath-ubuntu-latest' }}
|
|
34
44
|
timeout-minutes: 10
|
|
35
45
|
|
|
36
|
-
#
|
|
37
|
-
#
|
|
46
|
+
# A dummy Anthropic key so CI tests that construct a client don't fail on a
|
|
47
|
+
# missing key.
|
|
38
48
|
env:
|
|
39
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
40
49
|
ANTHROPIC_API_KEY: "sk-ant-test-dummy-key-for-ci-tests-only"
|
|
41
50
|
|
|
42
51
|
steps:
|
|
@@ -157,20 +166,62 @@ jobs:
|
|
|
157
166
|
echo "✅ Quality gate complete!"
|
|
158
167
|
echo "📊 All checks passed: formatting, linting, types, security, tests"
|
|
159
168
|
|
|
169
|
+
evalboard:
|
|
170
|
+
# The dashboard's own gate. `evalboard/` ships ~460 vitest assertions,
|
|
171
|
+
# including the pricing drift guard that asserts lib/pricing.ts still agrees
|
|
172
|
+
# with src/coder_eval/pricing.py — and until this job existed NOTHING ran
|
|
173
|
+
# them: not a workflow, not a Makefile target, not a pre-commit hook. The
|
|
174
|
+
# guard was consequently red on `main` for weeks while a 3x-wrong Opus rate
|
|
175
|
+
# and five unpriced in-use models shipped to the board. An unrun assertion is
|
|
176
|
+
# documentation, not enforcement.
|
|
177
|
+
#
|
|
178
|
+
# Deliberately NOT path-filtered. `paths:` is workflow-scoped in GitHub
|
|
179
|
+
# Actions, and the parity guard's whole point is that a reprice in
|
|
180
|
+
# src/coder_eval/pricing.py — a pure-Python diff touching no evalboard file —
|
|
181
|
+
# must trip it. A `evalboard/**`-only filter would skip exactly the change
|
|
182
|
+
# class this job exists to catch.
|
|
183
|
+
name: Evalboard (Types, Tests, Build)
|
|
184
|
+
# Fork-PR carve-out — see `quality-gate`. `pnpm install --frozen-lockfile` runs
|
|
185
|
+
# the PR's own lockfile install scripts, same untrusted-code class.
|
|
186
|
+
runs-on: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'ubuntu-latest' || 'uipath-ubuntu-latest' }}
|
|
187
|
+
timeout-minutes: 15
|
|
188
|
+
steps:
|
|
189
|
+
- name: Checkout code
|
|
190
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
191
|
+
|
|
192
|
+
- name: Set up Node.js 20
|
|
193
|
+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
194
|
+
with:
|
|
195
|
+
node-version: "20"
|
|
196
|
+
|
|
197
|
+
- name: Enable pnpm
|
|
198
|
+
# The version comes from evalboard/package.json's `packageManager` field,
|
|
199
|
+
# so corepack pins it without a second place to keep in sync.
|
|
200
|
+
run: corepack enable
|
|
201
|
+
|
|
202
|
+
- name: Install dependencies (lockfile-pinned)
|
|
203
|
+
working-directory: evalboard
|
|
204
|
+
run: pnpm install --frozen-lockfile
|
|
205
|
+
|
|
206
|
+
- name: Verify (tsc --noEmit && vitest run && next build)
|
|
207
|
+
working-directory: evalboard
|
|
208
|
+
run: pnpm verify
|
|
209
|
+
|
|
160
210
|
no-uipath-extra:
|
|
161
211
|
# Proves that `pip install coder-eval` (without the optional `[uipath]`
|
|
162
212
|
# extra) yields a working framework: imports succeed, the criterion
|
|
163
213
|
# registry validates, and the uipath-specific code paths fail with a
|
|
164
214
|
# clear hint instead of an import error.
|
|
165
215
|
name: No-Extra Install (uipath optional)
|
|
166
|
-
|
|
216
|
+
# Fork-PR carve-out — see the comment on `quality-gate` above.
|
|
217
|
+
runs-on: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository) && 'ubuntu-latest' || 'uipath-ubuntu-latest' }}
|
|
167
218
|
timeout-minutes: 5
|
|
168
219
|
steps:
|
|
169
220
|
- name: Checkout code
|
|
170
|
-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
|
|
221
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
171
222
|
|
|
172
223
|
- name: Set up Python 3.13
|
|
173
|
-
uses: actions/setup-python@
|
|
224
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
174
225
|
with:
|
|
175
226
|
python-version: "3.13"
|
|
176
227
|
|
|
@@ -208,7 +259,7 @@ jobs:
|
|
|
208
259
|
|
|
209
260
|
windows-smoke:
|
|
210
261
|
name: Windows Smoke Test
|
|
211
|
-
runs-on: windows-latest
|
|
262
|
+
runs-on: uipath-windows-latest
|
|
212
263
|
# 15min headroom: the smoke task itself completes in ~7min, but the
|
|
213
264
|
# actions/cache post-step on Windows is slow when ``.venv`` is large.
|
|
214
265
|
# We also exclude ``.venv`` from the cached paths (uv re-creates it
|
|
@@ -222,7 +273,6 @@ jobs:
|
|
|
222
273
|
shell: bash
|
|
223
274
|
|
|
224
275
|
env:
|
|
225
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
226
276
|
# Job-level dummy key keeps the unit-test step deterministic and isolated
|
|
227
277
|
# from real-API leakage. The e2e step below overrides to Bedrock at step scope.
|
|
228
278
|
ANTHROPIC_API_KEY: "sk-ant-test-dummy-key-for-ci-tests-only"
|
|
@@ -326,7 +376,7 @@ jobs:
|
|
|
326
376
|
|
|
327
377
|
e2e-smoke:
|
|
328
378
|
name: E2E Smoke Tests (Real API)
|
|
329
|
-
runs-on: ubuntu-latest
|
|
379
|
+
runs-on: uipath-ubuntu-latest
|
|
330
380
|
timeout-minutes: 10
|
|
331
381
|
# Skip on fork PRs where secrets aren't available
|
|
332
382
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
@@ -341,7 +391,6 @@ jobs:
|
|
|
341
391
|
AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }}
|
|
342
392
|
AWS_REGION: ${{ secrets.AWS_REGION }}
|
|
343
393
|
BEDROCK_MODEL: ${{ secrets.BEDROCK_MODEL }}
|
|
344
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
345
394
|
# tasks_run for --tags smoke-pass. 6 task files (hello_date, dataset_example,
|
|
346
395
|
# smoke_llm_judge, smoke_agent_judge, byod_smoke_test, agentless_smoke_test);
|
|
347
396
|
# dataset_example fans out to 2 inline rows, so 7 sub-tasks. If you add/remove a
|
|
@@ -509,7 +558,7 @@ jobs:
|
|
|
509
558
|
|
|
510
559
|
live-tests:
|
|
511
560
|
name: Live Integration Tests (Settings Enforcement + Cost Budget)
|
|
512
|
-
runs-on: ubuntu-24.04
|
|
561
|
+
runs-on: uipath-ubuntu-24.04
|
|
513
562
|
timeout-minutes: 15
|
|
514
563
|
# Skip on fork PRs where secrets aren't available
|
|
515
564
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
@@ -519,7 +568,6 @@ jobs:
|
|
|
519
568
|
# settings-enforcement and cost-budget steps use this. The Bedrock
|
|
520
569
|
# settings-enforcement step adds API_BACKEND=bedrock at step scope only.
|
|
521
570
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
522
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
523
571
|
# Bedrock backend for the third settings-enforcement run. Job-level so
|
|
524
572
|
# the preflight secrets check can validate them; the BedrockRoute is
|
|
525
573
|
# only engaged via API_BACKEND=bedrock at step scope.
|
|
@@ -582,10 +630,12 @@ jobs:
|
|
|
582
630
|
# `-ra` surfaces skipped tests in the summary so CI logs show what ran vs skipped.
|
|
583
631
|
# `--strict-markers` rejects unregistered @pytest.mark.* (cheap typo insurance).
|
|
584
632
|
# JUnit XML feeds the post-run "tests actually passed" assertion below.
|
|
633
|
+
# `-n 4` overrides pyproject's `-n auto`: these hit the real API, so
|
|
634
|
+
# concurrency must not vary with the runner's vCPU count. 4 = the old shape.
|
|
585
635
|
run: |
|
|
586
636
|
mkdir -p tmp
|
|
587
637
|
.venv/bin/pytest tests/test_claude_settings_enforcement_live.py \
|
|
588
|
-
-m live -v --tb=short --strict-markers -ra -n
|
|
638
|
+
-m live -v --tb=short --strict-markers -ra -n 4 \
|
|
589
639
|
--junit-xml=tmp/junit-settings.xml
|
|
590
640
|
|
|
591
641
|
- name: Run claude-settings enforcement live tests (BedrockRoute)
|
|
@@ -597,7 +647,7 @@ jobs:
|
|
|
597
647
|
API_BACKEND: "bedrock"
|
|
598
648
|
run: |
|
|
599
649
|
.venv/bin/pytest tests/test_claude_settings_enforcement_live.py \
|
|
600
|
-
-m live -v --tb=short --strict-markers -ra -n
|
|
650
|
+
-m live -v --tb=short --strict-markers -ra -n 4 \
|
|
601
651
|
--junit-xml=tmp/junit-settings-bedrock.xml
|
|
602
652
|
|
|
603
653
|
- name: Assert live tests actually ran (not silently skipped)
|
|
@@ -680,7 +730,7 @@ jobs:
|
|
|
680
730
|
|
|
681
731
|
codex-live-tests:
|
|
682
732
|
name: Live Integration Tests (Codex)
|
|
683
|
-
runs-on: ubuntu-24.04
|
|
733
|
+
runs-on: uipath-ubuntu-24.04
|
|
684
734
|
timeout-minutes: 15
|
|
685
735
|
# Skip on fork PRs where secrets aren't available.
|
|
686
736
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
@@ -692,7 +742,6 @@ jobs:
|
|
|
692
742
|
CODEX_API_KEY: ${{ secrets.CODEX_API_KEY }}
|
|
693
743
|
CODEX_BASE_URL: ${{ secrets.CODEX_BASE_URL }}
|
|
694
744
|
CODEX_MODEL: ${{ secrets.CODEX_MODEL }}
|
|
695
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
696
745
|
|
|
697
746
|
steps:
|
|
698
747
|
- name: Checkout code
|
|
@@ -756,7 +805,7 @@ jobs:
|
|
|
756
805
|
|
|
757
806
|
byoa-live-tests:
|
|
758
807
|
name: Live Integration Tests (BYOA Plugin)
|
|
759
|
-
runs-on: ubuntu-24.04
|
|
808
|
+
runs-on: uipath-ubuntu-24.04
|
|
760
809
|
timeout-minutes: 15
|
|
761
810
|
# Skip on fork PRs where secrets aren't available.
|
|
762
811
|
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository
|
|
@@ -764,7 +813,6 @@ jobs:
|
|
|
764
813
|
env:
|
|
765
814
|
# DirectRoute: a plugin agent that subclasses ClaudeCodeAgent uses ANTHROPIC_API_KEY.
|
|
766
815
|
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
767
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS }}
|
|
768
816
|
|
|
769
817
|
steps:
|
|
770
818
|
- name: Checkout code
|
|
@@ -834,6 +882,11 @@ jobs:
|
|
|
834
882
|
|
|
835
883
|
action-dogfood:
|
|
836
884
|
name: Action Dogfood (composite action, real API)
|
|
885
|
+
# Deliberately NOT on the `uipath-*` pool, and keep it that way: this job is the
|
|
886
|
+
# executable proof of the published Action, and docs/tutorials/02-ci-pipeline.md
|
|
887
|
+
# (the one consumer snippet naming a runner) says `ubuntu-latest`. Nothing else in
|
|
888
|
+
# CI exercises the image integrators actually use. A bulk `runs-on:` migration has
|
|
889
|
+
# swept this up twice — check it by hand.
|
|
837
890
|
runs-on: ubuntu-latest
|
|
838
891
|
timeout-minutes: 15
|
|
839
892
|
# Skip on fork PRs where secrets aren't available (matches e2e-smoke).
|
|
@@ -34,8 +34,11 @@ permissions:
|
|
|
34
34
|
jobs:
|
|
35
35
|
publish-testpypi:
|
|
36
36
|
name: Build and publish to TestPyPI
|
|
37
|
-
runs-on: ubuntu-latest
|
|
37
|
+
runs-on: uipath-ubuntu-latest
|
|
38
38
|
timeout-minutes: 10
|
|
39
|
+
env:
|
|
40
|
+
# `uv build` resolves build deps under the pool's safe-chain gate.
|
|
41
|
+
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
|
|
39
42
|
environment:
|
|
40
43
|
name: testpypi
|
|
41
44
|
url: https://test.pypi.org/project/coder-eval/
|
|
@@ -49,21 +49,22 @@ permissions:
|
|
|
49
49
|
jobs:
|
|
50
50
|
release:
|
|
51
51
|
name: Bump version and publish
|
|
52
|
-
#
|
|
53
|
-
#
|
|
54
|
-
#
|
|
55
|
-
|
|
52
|
+
# KNOWINGLY reverses PR #6, which moved this job to a GitHub-hosted runner because
|
|
53
|
+
# "cutting a release was blocked whenever that pool was unavailable". The pool's
|
|
54
|
+
# availability is what changed; the accepted trade-off is that the release path has
|
|
55
|
+
# no GitHub-hosted fallback again. Both jobs here are `workflow_dispatch`-only, so
|
|
56
|
+
# no PR check exercises them -- dry-run publish-testpypi.yml after editing this file.
|
|
57
|
+
runs-on: uipath-ubuntu-latest
|
|
56
58
|
timeout-minutes: 15
|
|
57
59
|
outputs:
|
|
58
60
|
# Exposed so the downstream publish-pypi job gates on a version having been
|
|
59
61
|
# produced (real release on main, or a stamped prerelease on a branch).
|
|
60
62
|
version: ${{ steps.ver.outputs.version }}
|
|
61
63
|
env:
|
|
62
|
-
#
|
|
63
|
-
#
|
|
64
|
-
#
|
|
65
|
-
|
|
66
|
-
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: "openai-codex-cli-bin,openai-codex"
|
|
64
|
+
# Load-bearing on the release path: the pool enforces a package-age safe-chain
|
|
65
|
+
# check on uv installs. Same expression as pr-checks.yml (see the comment there),
|
|
66
|
+
# so a package can't pass PR CI and then fail the release install.
|
|
67
|
+
SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
|
|
67
68
|
|
|
68
69
|
steps:
|
|
69
70
|
# Only a real release (main) needs the app token: semantic-release pushes the
|
|
@@ -409,14 +410,14 @@ jobs:
|
|
|
409
410
|
cache-from: type=registry,ref=ghcr.io/${{ steps.img.outputs.owner_lc }}/coder-eval-agent:buildcache
|
|
410
411
|
|
|
411
412
|
# Publish the wheel+sdist to public PyPI. This runs as its own job so OIDC
|
|
412
|
-
# Trusted Publishing is scoped to a dedicated, environment-gated context
|
|
413
|
-
#
|
|
414
|
-
#
|
|
413
|
+
# Trusted Publishing is scoped to a dedicated, environment-gated context --
|
|
414
|
+
# no PyPI token/secret is stored. Gated on the release job having actually
|
|
415
|
+
# cut a version.
|
|
415
416
|
publish-pypi:
|
|
416
417
|
name: Publish to PyPI
|
|
417
418
|
needs: release
|
|
418
419
|
if: needs.release.outputs.version != ''
|
|
419
|
-
runs-on: ubuntu-latest
|
|
420
|
+
runs-on: uipath-ubuntu-latest
|
|
420
421
|
timeout-minutes: 10
|
|
421
422
|
environment:
|
|
422
423
|
name: pypi
|
|
@@ -2,6 +2,173 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.9.6 (2026-08-11)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Code review fixes for evalboard path-to-ga stale tags and mature passes
|
|
10
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
11
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
12
|
+
|
|
13
|
+
- Review round 2 — gate evalboard in CI, correct GPT-5.6 rates
|
|
14
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
15
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
16
|
+
|
|
17
|
+
- **ci**: Correct defects in the uipath runner migration
|
|
18
|
+
([#86](https://github.com/UiPath/coder_eval/pull/86),
|
|
19
|
+
[`57556af`](https://github.com/UiPath/coder_eval/commit/57556af6e47bffcd5fbbb708b9f8b399cceea4c7))
|
|
20
|
+
|
|
21
|
+
- **criteria**: Make glob path resolution literal-first and ignore-filtered
|
|
22
|
+
([#65](https://github.com/UiPath/coder_eval/pull/65),
|
|
23
|
+
[`b3bba2b`](https://github.com/UiPath/coder_eval/commit/b3bba2b6c00e3772351b28bf63d5cde9e97b8e7e))
|
|
24
|
+
|
|
25
|
+
- **criteria**: Split clustered short flags and keep negative numbers positional
|
|
26
|
+
([#73](https://github.com/UiPath/coder_eval/pull/73),
|
|
27
|
+
[`a7ec3ea`](https://github.com/UiPath/coder_eval/commit/a7ec3eababc907a0220a598d974540eb579a538c))
|
|
28
|
+
|
|
29
|
+
- **evalboard**: 1/3 — drop de-tagged tasks and score only executed runs
|
|
30
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
31
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
32
|
+
|
|
33
|
+
- **evalboard**: Path-to-GA shows only still-tagged tasks, scored on runs that executed
|
|
34
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
35
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
36
|
+
|
|
37
|
+
- **evalboard**: Resync lib/pricing.ts with the authoritative pricing.py table
|
|
38
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
39
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
40
|
+
|
|
41
|
+
- **sandbox**: Close the remaining record_cli findings from #73
|
|
42
|
+
([#73](https://github.com/UiPath/coder_eval/pull/73),
|
|
43
|
+
[`a7ec3ea`](https://github.com/UiPath/coder_eval/commit/a7ec3eababc907a0220a598d974540eb579a538c))
|
|
44
|
+
|
|
45
|
+
- **sandbox**: Repair record_cli defects found reviewing #73
|
|
46
|
+
([#73](https://github.com/UiPath/coder_eval/pull/73),
|
|
47
|
+
[`a7ec3ea`](https://github.com/UiPath/coder_eval/commit/a7ec3eababc907a0220a598d974540eb579a538c))
|
|
48
|
+
|
|
49
|
+
- **sandbox**: Stop the recorder dir defeating the PLUGIN_TOOLS_DIR pin
|
|
50
|
+
([#73](https://github.com/UiPath/coder_eval/pull/73),
|
|
51
|
+
[`a7ec3ea`](https://github.com/UiPath/coder_eval/commit/a7ec3eababc907a0220a598d974540eb579a538c))
|
|
52
|
+
|
|
53
|
+
### Chores
|
|
54
|
+
|
|
55
|
+
- Change to centralized managed GitHub pool ([#86](https://github.com/UiPath/coder_eval/pull/86),
|
|
56
|
+
[`57556af`](https://github.com/UiPath/coder_eval/commit/57556af6e47bffcd5fbbb708b9f8b399cceea4c7))
|
|
57
|
+
|
|
58
|
+
### Documentation
|
|
59
|
+
|
|
60
|
+
- **harness**: Defer four TS-side evalboard invariants from the path-to-ga fix
|
|
61
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
62
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
63
|
+
|
|
64
|
+
### Features
|
|
65
|
+
|
|
66
|
+
- **criteria**: Accept glob patterns in criterion path fields
|
|
67
|
+
([#65](https://github.com/UiPath/coder_eval/pull/65),
|
|
68
|
+
[`b3bba2b`](https://github.com/UiPath/coder_eval/commit/b3bba2b6c00e3772351b28bf63d5cde9e97b8e7e))
|
|
69
|
+
|
|
70
|
+
- **evalboard**: 2/3 — surface last-seen and maturity on the Path-to-GA table
|
|
71
|
+
([#94](https://github.com/UiPath/coder_eval/pull/94),
|
|
72
|
+
[`ce006c1`](https://github.com/UiPath/coder_eval/commit/ce006c19b594701e90aec1d63cae15b337c0e06d))
|
|
73
|
+
|
|
74
|
+
- **sandbox**: Generate CLI recording shims via record_cli
|
|
75
|
+
([#73](https://github.com/UiPath/coder_eval/pull/73),
|
|
76
|
+
[`a7ec3ea`](https://github.com/UiPath/coder_eval/commit/a7ec3eababc907a0220a598d974540eb579a538c))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
## v0.9.5 (2026-08-05)
|
|
80
|
+
|
|
81
|
+
### Bug Fixes
|
|
82
|
+
|
|
83
|
+
- **command-executed**: Keep whole argv-joined payload in shell unwrap
|
|
84
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
85
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
86
|
+
|
|
87
|
+
- **command-executed**: Match patterns against shell-normalized commands
|
|
88
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
89
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
90
|
+
|
|
91
|
+
- **command-executed**: Narrow command param to str before shell-normalizing
|
|
92
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
93
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
94
|
+
|
|
95
|
+
- **command-executed**: Recognize shell wrappers by predicate, not allowlist
|
|
96
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
97
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
98
|
+
|
|
99
|
+
- **criteria**: Add present predicate so asserting a switch cannot weaken a guard
|
|
100
|
+
([#72](https://github.com/UiPath/coder_eval/pull/72),
|
|
101
|
+
[`8574ded`](https://github.com/UiPath/coder_eval/commit/8574dedb02d6e9ab883b042934f89297591e8abd))
|
|
102
|
+
|
|
103
|
+
- **criteria**: Make cli_called guards fail loud instead of vacuously passing
|
|
104
|
+
([#72](https://github.com/UiPath/coder_eval/pull/72),
|
|
105
|
+
[`8574ded`](https://github.com/UiPath/coder_eval/commit/8574dedb02d6e9ab883b042934f89297591e8abd))
|
|
106
|
+
|
|
107
|
+
- **criteria**: Stop ignore_flags re-opening the guard false-PASS
|
|
108
|
+
([#72](https://github.com/UiPath/coder_eval/pull/72),
|
|
109
|
+
[`8574ded`](https://github.com/UiPath/coder_eval/commit/8574dedb02d6e9ab883b042934f89297591e8abd))
|
|
110
|
+
|
|
111
|
+
- **early-stop**: Address PR review — trajectory parity, reason determinism, doc restore
|
|
112
|
+
([#78](https://github.com/UiPath/coder_eval/pull/78),
|
|
113
|
+
[`4cf8092`](https://github.com/UiPath/coder_eval/commit/4cf80920422e25fec663ef93e483902bdeffad24))
|
|
114
|
+
|
|
115
|
+
- **lint**: Derive CE030 criteria from the source union literal, not runtime
|
|
116
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
117
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
118
|
+
|
|
119
|
+
- **lint**: Enumerate in-tree criteria by module attribute, not the union
|
|
120
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
121
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
122
|
+
|
|
123
|
+
- **lint**: Scope CE030 criterion parity to in-tree criteria only
|
|
124
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
125
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
126
|
+
|
|
127
|
+
- **reports**: Explicit return on every early_stop_gate_note path (CodeQL py/mixed-returns)
|
|
128
|
+
([#78](https://github.com/UiPath/coder_eval/pull/78),
|
|
129
|
+
[`4cf8092`](https://github.com/UiPath/coder_eval/commit/4cf80920422e25fec663ef93e483902bdeffad24))
|
|
130
|
+
|
|
131
|
+
- **reports**: Pre-initialize the gate note so CodeQL sees it bound on every path
|
|
132
|
+
([#78](https://github.com/UiPath/coder_eval/pull/78),
|
|
133
|
+
[`4cf8092`](https://github.com/UiPath/coder_eval/commit/4cf80920422e25fec663ef93e483902bdeffad24))
|
|
134
|
+
|
|
135
|
+
### Chores
|
|
136
|
+
|
|
137
|
+
- **deps-dev**: Bump postcss from 8.5.18 to 8.5.23 in /evalboard
|
|
138
|
+
([#75](https://github.com/UiPath/coder_eval/pull/75),
|
|
139
|
+
[`cdced15`](https://github.com/UiPath/coder_eval/commit/cdced152dea732096dcff939c45e7d7c927c2a5a))
|
|
140
|
+
|
|
141
|
+
### Documentation
|
|
142
|
+
|
|
143
|
+
- Surface the Marketplace listing and make the Action quickstarts self-sufficient
|
|
144
|
+
([#80](https://github.com/UiPath/coder_eval/pull/80),
|
|
145
|
+
[`401245a`](https://github.com/UiPath/coder_eval/commit/401245ad14055c1da5d7b594e506686c59cedce7))
|
|
146
|
+
|
|
147
|
+
- **command-executed**: Document shell-normalization contract + gate it (CE030)
|
|
148
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
149
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
150
|
+
|
|
151
|
+
### Features
|
|
152
|
+
|
|
153
|
+
- **criteria**: Add cli_called for structured invocation matching
|
|
154
|
+
([#72](https://github.com/UiPath/coder_eval/pull/72),
|
|
155
|
+
[`8574ded`](https://github.com/UiPath/coder_eval/commit/8574dedb02d6e9ab883b042934f89297591e8abd))
|
|
156
|
+
|
|
157
|
+
- **criteria**: Match a flag across spellings with FlagMatch.aliases
|
|
158
|
+
([#72](https://github.com/UiPath/coder_eval/pull/72),
|
|
159
|
+
[`8574ded`](https://github.com/UiPath/coder_eval/commit/8574dedb02d6e9ab883b042934f89297591e8abd))
|
|
160
|
+
|
|
161
|
+
- **early-stop**: Per-criterion arming via stop_early blocks on live criteria
|
|
162
|
+
([#78](https://github.com/UiPath/coder_eval/pull/78),
|
|
163
|
+
[`4cf8092`](https://github.com/UiPath/coder_eval/commit/4cf80920422e25fec663ef93e483902bdeffad24))
|
|
164
|
+
|
|
165
|
+
### Refactoring
|
|
166
|
+
|
|
167
|
+
- **command-executed**: Total _match_haystacks, shared window, memoized
|
|
168
|
+
([#77](https://github.com/UiPath/coder_eval/pull/77),
|
|
169
|
+
[`7abd080`](https://github.com/UiPath/coder_eval/commit/7abd08098146067890e16740c37239c2e0009a24))
|
|
170
|
+
|
|
171
|
+
|
|
5
172
|
## v0.9.4 (2026-08-04)
|
|
6
173
|
|
|
7
174
|
### Bug Fixes
|