coder-eval 0.12.7__tar.gz → 0.12.9__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/harness-candidates.md +10 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/lint-rules.md +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/permissions.md +0 -8
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/timing.md +2 -2
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/pr-checks.yml +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/CHANGELOG.md +82 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/PKG-INFO +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/action.yml +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/DOCKER_ISOLATION.md +50 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/REPORT_SCHEMA.md +4 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/HARNESS_PARITY.md +5 -4
- coder_eval-0.12.9/osv-scanner.toml +15 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/pyproject.toml +3 -2
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/__init__.py +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/_skills.py +2 -2
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/antigravity_agent.py +43 -10
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/codex_agent.py +43 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/run_task_internal_command.py +13 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/isolation/docker_runner.py +127 -47
- coder_eval-0.12.9/src/coder_eval/isolation/eval_material.py +58 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/__init__.py +4 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/container_paths.py +3 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/results.py +9 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/telemetry.py +18 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestrator.py +3 -71
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/simulation/user_simulator.py +5 -1
- coder_eval-0.12.9/src/coder_eval/simulation/utterance.py +79 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/collector.py +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/events.py +2 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/antigravity_fixtures.py +31 -2
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +1 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/runner.py +1 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_antigravity_agent.py +58 -3
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_codex_agent.py +85 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_container_context.py +31 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_custom_lint.py +175 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_runner_mounts.py +260 -1
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_early_stop.py +2 -0
- coder_eval-0.12.9/tests/test_eval_material.py +147 -0
- coder_eval-0.12.9/tests/test_run_task_internal.py +75 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timing_identity_contract.py +7 -3
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_user_simulator.py +27 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/uv.lock +5 -5
- coder_eval-0.12.7/osv-scanner.toml +0 -11
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/agents.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/contracts.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/isolation.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/orchestration.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/persistence.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/notes/reporting.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.env.example +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/code_review.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/scripts/harbor_e2e.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/harbor-e2e.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.gitignore +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/.python-version +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/ADOPTERS.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/CLAUDE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/LICENSE +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/Makefile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/NOTICE +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/SECURITY.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/comparison.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docker/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/TASK_DEFINITION_GUIDE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/USER_GUIDE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/DELEGATE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/comparison.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/index.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/llms.txt +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/page.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/package.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/default.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/litellm/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/mkdocs.yml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/antigravity.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/claude-code.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/codex.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/opencode.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/corpus/pi.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/scripts/timing/decompose_run.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/claude_code_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/.gitignore +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/package.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/delegate_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/opencode_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/pi_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/analysis.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/argv_match.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/execute_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/export_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/harbor_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/run_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/cli_called.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/system_one_judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/durations.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_system_one.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/agent_paths.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_emit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_hydrate.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/experiment_packager.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/packager.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/portability.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/harbor/reward.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/invocation_log.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/cli_match.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/container_context.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/criteria.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/sandbox.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/system_one.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/tasks.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/batch.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/evaluation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/regrade.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/path_utils.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/experiment.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/helpers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/html.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/junit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/reports/markdown.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/result_metrics.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/run_record.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/sandbox.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/stats.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/timing.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/delegate/hello_date_delegate.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/record_cli_responses.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_system_one_judge.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_bracket_clock.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_container_contract.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/_scrub.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_fixtures/timing_union_cases.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/conftest.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/atif/known_good_trajectory.json +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/doc_env_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/doc_schema_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/pricing_mirror.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/prose_budget.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/_layers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/_model_ctor.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce060_message_id_declared.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_golden_master.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_telemetry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_telemetry_advanced.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_atif_emit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_atif_hydrate.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_atif_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_called_criterion.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_match_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_codex_agent_unit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_command_statistics.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_delegate_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_delegate_agent_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_delegate_agent_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_delegate_agent_registration.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_detached_grading_boundaries.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_detached_grading_guards.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_durations.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_evaluate_format_harbor.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_execute_format_harbor.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_e2e_fixtures.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_experiment_packager.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_export_golden.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_packager.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_portability.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_harbor_reward.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_image_skew_refusal.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_integration.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_judge_system_one.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_logging.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_opencode_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_orchestrator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pi_agent.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pricing_mirror.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_prose_budget.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_prose_budget_commands.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_registry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_regrade.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reports.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_reports_package.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_result_metrics.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_resume.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_routing.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_record.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_run_summary_rebuild.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_adopt.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_record_cli.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_templates.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sandbox_venv_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_simulation_integration.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_stats.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_stats_nonfinite.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_system_one_judge.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_system_one_judge_live.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_tags.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timing_close_window.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_timing_union_parity.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_token_usage.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_utils.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.7 → coder_eval-0.12.9}/tests/test_yaml_migration.py +0 -0
|
@@ -1022,3 +1022,13 @@ re-derive from scratch.
|
|
|
1022
1022
|
have, and it is a recurring class ONLY within one file so far — worth promoting to a rule
|
|
1023
1023
|
if a second subprocess-driven agent repeats it. Caught in: final cross-phase review,
|
|
1024
1024
|
delegate agent port.
|
|
1025
|
+
|
|
1026
|
+
## From 2026-09-26 Antigravity SDK 0.1.18 usage regression
|
|
1027
|
+
|
|
1028
|
+
- [ ] Runtime guard: fail an Antigravity turn that ran MODEL steps but booked zero
|
|
1029
|
+
tokens, as OpenCode's `require_token_telemetry` does. SDK 0.1.18 deprecated
|
|
1030
|
+
`Step.usage_metadata` (usage moved to `conversation.total_usage`), so every
|
|
1031
|
+
Antigravity turn from `3aa2db30` on reported no tokens and no cost, and `api_calls`
|
|
1032
|
+
stayed at 1 so `max_turns` never tripped — all silently, with `make verify` green.
|
|
1033
|
+
A static rule cannot see an SDK field go dead; a live-telemetry smoke (one real turn,
|
|
1034
|
+
assert `token_usage` is non-empty) in the harness-bump checklist would have.
|
|
@@ -667,7 +667,7 @@ shipped. An id is a permanent documentation anchor: a suppression comment carryi
|
|
|
667
667
|
an older branch, review or commit message must never start meaning something new. CE023 is
|
|
668
668
|
retired the same way, after the rule was deleted with the package it guarded.
|
|
669
669
|
|
|
670
|
-
Claim
|
|
670
|
+
Claim 069 next, and note 065 IS TAKEN without being in `ALL_RULES`: doc-surface and
|
|
671
671
|
whole-tree rules are `@pytest.mark.lint` classes in `tests/test_custom_lint.py` rather than
|
|
672
672
|
`BaseRule`s, so `runner.py`'s uniqueness assert cannot see them. Enumerating them in a
|
|
673
673
|
comment is how that note fell behind CE044, so grep instead:
|
|
@@ -29,10 +29,6 @@ read-write throwaway copy; when it was bind-mounted `:ro` the chmod returned ERO
|
|
|
29
29
|
no tmpfs mask and has not been one since: see
|
|
30
30
|
[isolation.md](isolation.md) § Why the framework mounts are writable copies.
|
|
31
31
|
|
|
32
|
-
What the window does NOT hide is the task DEFINITION. `task.yaml` is also staged at
|
|
33
|
-
`/work/input` for the in-container orchestrator and that mount is untouched, so hiding the
|
|
34
|
-
criteria from the agent remains a separate, unsolved problem.
|
|
35
|
-
|
|
36
32
|
Criteria address reference files with the `$REFERENCE_DIR` token (same resolver as
|
|
37
33
|
`$TASK_DIR`) and the `REFERENCE_DIR` env var for `run_command`; `reference_comparison` names
|
|
38
34
|
one file via `reference_file`.
|
|
@@ -64,10 +60,6 @@ criteria and judges run. The task directory is shielded by the same window: unde
|
|
|
64
60
|
it is mounted as a throwaway COPY at a fixed container path, which is what makes it
|
|
65
61
|
chmod-able without touching the user's checked-out `tasks/` tree.
|
|
66
62
|
|
|
67
|
-
It shields grading MATERIAL that happens to live in the task directory (a `reference/`
|
|
68
|
-
subdirectory, fixtures), not the task DEFINITION: `task.yaml` is separately staged at
|
|
69
|
-
`/work/input`, which the agent can still read.
|
|
70
|
-
|
|
71
63
|
### Why a stack and not a refcount
|
|
72
64
|
|
|
73
65
|
Windows nest with *different* modes, so what an exit has to restore is the mode of the
|
|
@@ -401,8 +401,8 @@ and the tail are already computed.
|
|
|
401
401
|
|
|
402
402
|
A reducer's only remaining timing decision is where its window opens, which is the one
|
|
403
403
|
genuinely harness-shaped part: two interleave a tool into a single window outright
|
|
404
|
-
(Antigravity, whose Step for the tool arrives and only a later
|
|
405
|
-
the message, and Codex, whose `_flush_message` window extends to the last item's
|
|
404
|
+
(Antigravity, whose Step for the tool arrives and only a later rise in the conversation's
|
|
405
|
+
billed usage cuts the message, and Codex, whose `_flush_message` window extends to the last item's
|
|
406
406
|
`completed_at_ms`) while the other three tile the turn contiguously, so a call open at a
|
|
407
407
|
boundary runs inside two windows. Central subtraction handles both without either reducer
|
|
408
408
|
knowing which it is.
|
|
@@ -123,7 +123,7 @@ jobs:
|
|
|
123
123
|
|
|
124
124
|
# PHASE 3: Security scanning
|
|
125
125
|
- name: Security - Dependency vulnerabilities (pip-audit)
|
|
126
|
-
run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln
|
|
126
|
+
run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln CVE-2026-49265 --ignore-vuln CVE-2026-49264 # pygments 2.19.2 ReDoS + pip 26.0.1 tar/ZIP ambiguity; no fixes available on PyPI yet — revisit quarterly. oauthlib 3.3.1 PKCE timing side channel + RevocationEndpoint JSONP callback injection: both server-side OAuth endpoints, unused here (transitive via azure-monitor exporter -> msrest); fix 4.0.0 is a major bump still inside the safe-chain minimum package age — revisit next month
|
|
127
127
|
|
|
128
128
|
- name: Security - OSV vulnerability scan (osv-scanner)
|
|
129
129
|
# Complements pip-audit: pip-audit queries the PyPI advisory DB;
|
|
@@ -2,6 +2,88 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.9 (2026-09-29)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **docker**: Mount plugins at /coder_eval/plugins/<i> and point the staged task there
|
|
10
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
11
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
12
|
+
|
|
13
|
+
- **docker**: Mount plugins at /work/plugins/<i> and point the staged task there
|
|
14
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
15
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
16
|
+
|
|
17
|
+
### Chores
|
|
18
|
+
|
|
19
|
+
- **deps**: Bump pyjwt to 2.15.1 and ignore oauthlib CVE-2026-49265
|
|
20
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
21
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
22
|
+
|
|
23
|
+
- **deps**: Ignore oauthlib CVE-2026-49264 and drop the stale pyjwt ignore
|
|
24
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
25
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
26
|
+
|
|
27
|
+
### Refactoring
|
|
28
|
+
|
|
29
|
+
- **docker**: Mount plugins under /work/plugins, not /coder_eval/plugins
|
|
30
|
+
([#206](https://github.com/UiPath/coder_eval/pull/206),
|
|
31
|
+
[`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
## v0.12.8 (2026-09-29)
|
|
35
|
+
|
|
36
|
+
### Bug Fixes
|
|
37
|
+
|
|
38
|
+
- Also delete context.json in-container (source_yaml leaked criteria)
|
|
39
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
40
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
41
|
+
|
|
42
|
+
- **anti-cheat**: Apply multi-model review findings M1/M2/M3 + doc drift
|
|
43
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
44
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
45
|
+
|
|
46
|
+
- **anti-cheat**: Apply review Low findings L1/L2/L3
|
|
47
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
48
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
49
|
+
|
|
50
|
+
- **antigravity**: Read token usage from the conversation, not the Step
|
|
51
|
+
([#201](https://github.com/UiPath/coder_eval/pull/201),
|
|
52
|
+
[`101bb5c`](https://github.com/UiPath/coder_eval/commit/101bb5c85c5af97f8027388611dd70e7e7e0ecc8))
|
|
53
|
+
|
|
54
|
+
- **codex**: Record provider error notifications on the turn
|
|
55
|
+
([#203](https://github.com/UiPath/coder_eval/pull/203),
|
|
56
|
+
[`894f742`](https://github.com/UiPath/coder_eval/commit/894f74282c8f32918cc995fb4b2517f8984c4ed2))
|
|
57
|
+
|
|
58
|
+
- **docker**: Close two driver:docker channels that leaked grading material to the agent
|
|
59
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
60
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
61
|
+
|
|
62
|
+
- **simulation**: Send the simulated user's utterance, not its tagged transcript
|
|
63
|
+
([#204](https://github.com/UiPath/coder_eval/pull/204),
|
|
64
|
+
[`ffb9a81`](https://github.com/UiPath/coder_eval/commit/ffb9a8198a1af73904fabb0c8b3251a978351ab0))
|
|
65
|
+
|
|
66
|
+
### Documentation
|
|
67
|
+
|
|
68
|
+
- **harness**: Log deferred Low findings from anti-cheat review
|
|
69
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
70
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
71
|
+
|
|
72
|
+
### Features
|
|
73
|
+
|
|
74
|
+
- **lint**: 3/3 — CE065 flags eval material inside a skill dir
|
|
75
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
76
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
77
|
+
|
|
78
|
+
- **sandbox**: 1/3 — delete staged task.yaml in-container after load (anti-cheat)
|
|
79
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
80
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
81
|
+
|
|
82
|
+
- **sandbox**: 2/3 — allowlist tmpfs-mask of auto-mounted plugin trees
|
|
83
|
+
([#179](https://github.com/UiPath/coder_eval/pull/179),
|
|
84
|
+
[`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
|
|
85
|
+
|
|
86
|
+
|
|
5
87
|
## v0.12.7 (2026-09-25)
|
|
6
88
|
|
|
7
89
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: coder-eval
|
|
3
|
-
Version: 0.12.
|
|
3
|
+
Version: 0.12.9
|
|
4
4
|
Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites.
|
|
5
5
|
Project-URL: Homepage, https://coder-eval.com
|
|
6
6
|
Project-URL: Repository, https://github.com/UiPath/coder_eval
|
|
@@ -25,7 +25,7 @@ inputs:
|
|
|
25
25
|
version:
|
|
26
26
|
description: coder-eval version to install from PyPI, or "local" to install from the action checkout
|
|
27
27
|
required: false
|
|
28
|
-
default: "0.12.
|
|
28
|
+
default: "0.12.9" # <-- kept in sync with releases by release.yml
|
|
29
29
|
extras:
|
|
30
30
|
description: >-
|
|
31
31
|
Comma-separated coder-eval extras (`codex`, `antigravity,litellm`), composed
|
|
@@ -339,6 +339,56 @@ If the task declares a `reference:` block, a throwaway **copy** of its directory
|
|
|
339
339
|
|
|
340
340
|
See [Reference Solutions](TASK_DEFINITION_GUIDE.md#reference-solutions).
|
|
341
341
|
|
|
342
|
+
### Two more passive-read anti-cheat blocks
|
|
343
|
+
|
|
344
|
+
These are `driver: docker` only. `driver: tempdir` shares the host uid and has no
|
|
345
|
+
filesystem isolation, so neither applies there (nor can — there is nothing to
|
|
346
|
+
mask). Both are defense-in-depth passive-read blocks, consistent with the
|
|
347
|
+
reference window's posture above; neither contains an adversarial agent.
|
|
348
|
+
|
|
349
|
+
- **The staged grading inputs are deleted after load.** The host stages the
|
|
350
|
+
post-override `TaskDefinition` (with `success_criteria`) at `/work/input/task.yaml`
|
|
351
|
+
**and** a `context.json` whose `source_yaml` is the raw task text — criteria
|
|
352
|
+
verbatim, both at the top level and inside every `config_lineage` entry — for the
|
|
353
|
+
in-container orchestrator to load once at startup. The agent runs in the same
|
|
354
|
+
container, so leaving *either* readable would hand it the grading answer key
|
|
355
|
+
(deleting only `task.yaml` leaves the identical criteria one file over in
|
|
356
|
+
`context.json`). The in-container entry point deletes **both** immediately after
|
|
357
|
+
they are consumed — `context.json` is parsed into memory in the command body and
|
|
358
|
+
`task.yaml` by `load_task`, both before the delete (gated on
|
|
359
|
+
`CODER_EVAL_IN_CONTAINER`). They are read exactly once — grading reads criteria
|
|
360
|
+
from the in-memory task, never from disk. The `/work/input` mount is therefore
|
|
361
|
+
read-write (a `:ro` mount rejects `rm` with EROFS). `prior.json` is kept: it is
|
|
362
|
+
read later on the regrade path, and a regrade runs no agent so it is not a leak.
|
|
363
|
+
|
|
364
|
+
- **Plugins mount at a fixed container path.** The `i`-th `agent.plugins[]` entry
|
|
365
|
+
is resolved on the host (a relative path against the task YAML's directory, `$VAR`
|
|
366
|
+
and `~` expanded) and mounted `:ro` at `/work/plugins/<i>`. The task YAML
|
|
367
|
+
staged into the container is rewritten to point at that path, so the in-container
|
|
368
|
+
agent loads the directory the host mounted, whatever form the authored path took
|
|
369
|
+
and whatever the container's cwd. (Before, the staged YAML kept the authored string:
|
|
370
|
+
a relative or `$VAR` path the container could not resolve loaded no skill, with only
|
|
371
|
+
a warning.) An entry that does not resolve to a host directory is neither mounted
|
|
372
|
+
nor rewritten. It sits under `/work`, so a `sandbox.docker.extra_mounts` destination
|
|
373
|
+
cannot shadow it (those are refused anywhere under `/work/`).
|
|
374
|
+
|
|
375
|
+
- **Auto-mounted plugin trees are default-deny masked.** An `agent.plugins[].path`
|
|
376
|
+
(at `/work/plugins/<i>`) or a `TemplateDirSource.path` that is itself a plugin
|
|
377
|
+
root (at its host path) is auto-mounted `:ro` so the plugin loads. Eval material colocated under that tree
|
|
378
|
+
as siblings of the skills dir — sibling task YAMLs, reference solutions, test
|
|
379
|
+
fixtures — would otherwise be readable. So the runner keeps the whole root
|
|
380
|
+
mounted but layers an empty `--tmpfs` over every child dir OUTSIDE the keep-set
|
|
381
|
+
(`.claude-plugin` + the manifest-declared skill dirs). Everything that is not
|
|
382
|
+
the plugin surface is masked by default, so an unknown or new eval layout can
|
|
383
|
+
never leak; `tests/`, `node_modules/`, and reference solutions are masked for
|
|
384
|
+
free. A root agent cannot `umount` a tmpfs (`CAP_SYS_ADMIN` is not in Docker's
|
|
385
|
+
default set), so this mask is *stronger* than the mode-000 reference window. Two
|
|
386
|
+
residuals the mask cannot cover — an eval def or reference COLOCATED inside a
|
|
387
|
+
skill dir (masking it would hide the skill), and a `task_id:` YAML **file** loose
|
|
388
|
+
at the plugin root (a tmpfs masks a directory, not a single file) — are caught by
|
|
389
|
+
lint rule CE068 (keep eval material out of skill dirs and off the plugin root;
|
|
390
|
+
put it under a sibling `tests/`).
|
|
391
|
+
|
|
342
392
|
Inside the container, the entrypoint invokes `coder-eval _run-task-internal` (hidden subcommand), which loads the staged YAML + context, runs the standard in-process Orchestrator (driver auto-coerced back to `tempdir`), and writes `task.json` to the output mount. Host reads it and feeds the existing aggregation pipeline.
|
|
343
393
|
|
|
344
394
|
A `result_kind` discriminator on `CriterionResult` ensures `ClassificationCriterionResult` subclasses survive the JSON round-trip — without it, host-side aggregation would silently lose `observed_label`/`expected_label`.
|
|
@@ -210,7 +210,10 @@ token/cost budget breach, which fires only after every criterion is already scor
|
|
|
210
210
|
cache buckets, captured proxy-side on the LiteLLM open-weight backend and rendered
|
|
211
211
|
by the evalboard as a per-call table; empty on every other
|
|
212
212
|
backend), `num_turns`, `max_turns_exhausted`,
|
|
213
|
-
`result_summary` (`{is_error, subtype, stop_reason, result}`), `
|
|
213
|
+
`result_summary` (`{is_error, subtype, stop_reason, result}`), `provider_errors`
|
|
214
|
+
(`list[ProviderError]` — `{at, message, kind, http_status, will_retry, details}`, one
|
|
215
|
+
row per model-provider error the agent's own client reported, including errors it
|
|
216
|
+
retried itself; filled by the codex adapter, empty on other backends), `crashed`,
|
|
214
217
|
`crash_reason`.
|
|
215
218
|
|
|
216
219
|
> **Token invariant.** Summing the four token buckets across `messages`
|
|
@@ -67,8 +67,8 @@ All five harnesses can have tool execution inside a generation window, and it is
|
|
|
67
67
|
subtracted out of every one of them — **once, centrally**, by
|
|
68
68
|
`timing.py::subtract_tool_time`. No reducer does it itself; each
|
|
69
69
|
publishes the raw window (see the two sections below). Every harness has the
|
|
70
|
-
problem: Antigravity reports a `Step` for the tool and only a later
|
|
71
|
-
|
|
70
|
+
problem: Antigravity reports a `Step` for the tool and only a later rise in
|
|
71
|
+
the conversation's billed usage cuts the message; Codex's message window is seeded from
|
|
72
72
|
the first item's start and extended to the last item's completion; OpenCode, Pi
|
|
73
73
|
and claude-code tile, each window opening where the previous one closed and
|
|
74
74
|
running to the next, with every tool call in between running inside. In each the
|
|
@@ -559,8 +559,9 @@ Each harness finds the call boundary in its own stream (the table above):
|
|
|
559
559
|
first item would let one tool of call N+1 act. A call that ran tools therefore
|
|
560
560
|
opens the next call at its `tokenUsage`, since the results always go back to the
|
|
561
561
|
model, and the cap fires before call N+1 can run anything.
|
|
562
|
-
- **Antigravity**
|
|
563
|
-
|
|
562
|
+
- **Antigravity** bills each call on the conversation's cumulative usage, not on a
|
|
563
|
+
step, so a rise in that total closes the call, and the next call opens with a MODEL
|
|
564
|
+
step at a new `step_index`.
|
|
564
565
|
- **OpenCode** and **Pi** stream one `step_start` or `turn_start` per call.
|
|
565
566
|
- **Delegate**'s SDK has no round-trip marker, and a tool-only reply streams only
|
|
566
567
|
its tool call, with no text before it. So the next call opens when every tool the
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# osv-scanner suppressions for advisories without an available fix.
|
|
2
|
+
#
|
|
3
|
+
# Mirrors the inline --ignore-vuln list passed to pip-audit in
|
|
4
|
+
# .github/workflows/pr-checks.yml so both scanners stay in sync. pip-audit
|
|
5
|
+
# accepts ignores as CLI flags; osv-scanner only reads them from this TOML.
|
|
6
|
+
# When an advisory is fixed upstream, drop the entry here AND remove the
|
|
7
|
+
# matching pip-audit flag in the same PR.
|
|
8
|
+
|
|
9
|
+
[[IgnoredVulns]]
|
|
10
|
+
id = "CVE-2026-49265"
|
|
11
|
+
reason = "oauthlib 3.3.1 PKCE timing side channel in the server-side code_challenge check, which coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
|
|
12
|
+
|
|
13
|
+
[[IgnoredVulns]]
|
|
14
|
+
id = "GHSA-hj66-6f7g-4r5v"
|
|
15
|
+
reason = "CVE-2026-49264: oauthlib 3.3.1 RevocationEndpoint JSONP callback injection (only with enable_jsonp=True), a server-side OAuth endpoint coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "coder-eval",
|
|
4
4
|
"displayName": "Coder Eval",
|
|
5
|
-
"version": "0.12.
|
|
5
|
+
"version": "0.12.9",
|
|
6
6
|
"description": "Test whether your Claude Code skills actually trigger, and benchmark any coding agent — author, run, and analyze the eval suite that proves it, locally or as a CI gate.",
|
|
7
7
|
"author": { "name": "UiPath", "email": "coder-eval@uipath.com", "url": "https://github.com/UiPath/coder_eval" },
|
|
8
8
|
"homepage": "https://coder-eval.com",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "coder-eval"
|
|
3
|
-
version = "0.12.
|
|
3
|
+
version = "0.12.9"
|
|
4
4
|
description = "Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "Apache-2.0"
|
|
@@ -227,7 +227,7 @@ constraint-dependencies = [
|
|
|
227
227
|
"langgraph>=1.0.10",
|
|
228
228
|
"langsmith>=0.6.3",
|
|
229
229
|
"orjson>=3.11.6",
|
|
230
|
-
"pyjwt>=2.
|
|
230
|
+
"pyjwt>=2.14.0",
|
|
231
231
|
"python-multipart>=0.0.31",
|
|
232
232
|
"requests>=2.33.0",
|
|
233
233
|
"starlette>=1.3.1",
|
|
@@ -305,6 +305,7 @@ external = [
|
|
|
305
305
|
"CE064",
|
|
306
306
|
"CE065",
|
|
307
307
|
"CE066",
|
|
308
|
+
"CE068",
|
|
308
309
|
] # custom architectural lint rules (tests/lint/)
|
|
309
310
|
|
|
310
311
|
[tool.ruff.lint.pylint]
|
|
@@ -24,7 +24,7 @@ _DEFAULT_PLUGIN_SKILLS_SUBDIR = "skills"
|
|
|
24
24
|
_SKILL_FILE = "SKILL.md"
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
def
|
|
27
|
+
def manifest_skill_dirs(root: Path) -> list[Path]:
|
|
28
28
|
"""Skill directories a Claude-plugin root declares, in manifest order.
|
|
29
29
|
|
|
30
30
|
Reads the ``skills`` field of ``<root>/.claude-plugin/plugin.json`` (a string
|
|
@@ -81,7 +81,7 @@ def _plugin_skill_dirs(
|
|
|
81
81
|
hint,
|
|
82
82
|
)
|
|
83
83
|
continue
|
|
84
|
-
candidates = [directory for directory in
|
|
84
|
+
candidates = [directory for directory in manifest_skill_dirs(root) if directory.is_dir()]
|
|
85
85
|
# A path that is ALREADY a bare skills directory has no `skills/` subdir,
|
|
86
86
|
# so use it as-is. Deliberately NOT a fallback for a root that HAS one.
|
|
87
87
|
# Rationale: .claude/notes/agents.md § Skills, per harness
|
|
@@ -25,7 +25,7 @@ from collections.abc import Callable
|
|
|
25
25
|
from contextlib import AsyncExitStack
|
|
26
26
|
from datetime import datetime
|
|
27
27
|
from pathlib import Path
|
|
28
|
-
from typing import Any, ClassVar
|
|
28
|
+
from typing import Any, ClassVar, NamedTuple
|
|
29
29
|
|
|
30
30
|
from coder_eval.agent import Agent, AgentState
|
|
31
31
|
from coder_eval.agents._logging import PrefixedAdapter
|
|
@@ -152,6 +152,22 @@ def _enum_value(x: Any) -> Any:
|
|
|
152
152
|
return getattr(x, "value", x)
|
|
153
153
|
|
|
154
154
|
|
|
155
|
+
class _UsageCounts(NamedTuple):
|
|
156
|
+
"""The four Gemini token counts, named as ``google.antigravity.types.UsageMetadata`` names them."""
|
|
157
|
+
|
|
158
|
+
prompt_token_count: int = 0
|
|
159
|
+
cached_content_token_count: int = 0
|
|
160
|
+
candidates_token_count: int = 0
|
|
161
|
+
thoughts_token_count: int = 0
|
|
162
|
+
|
|
163
|
+
@classmethod
|
|
164
|
+
def of(cls, usage: Any) -> "_UsageCounts":
|
|
165
|
+
return cls(*((getattr(usage, f, 0) or 0) for f in cls._fields))
|
|
166
|
+
|
|
167
|
+
def minus(self, other: "_UsageCounts") -> "_UsageCounts":
|
|
168
|
+
return _UsageCounts(*(a - b for a, b in zip(self, other, strict=True)))
|
|
169
|
+
|
|
170
|
+
|
|
155
171
|
def _to_token_usage(usage: Any, model: str | None) -> TokenUsage:
|
|
156
172
|
"""Map a ``google.antigravity.types.UsageMetadata`` to coder_eval ``TokenUsage``.
|
|
157
173
|
|
|
@@ -480,6 +496,7 @@ class AntigravityAgent(Agent[AntigravityAgentConfig]):
|
|
|
480
496
|
model=model,
|
|
481
497
|
turn_start_time=turn_start_time,
|
|
482
498
|
clock=clock,
|
|
499
|
+
cumulative_usage=lambda: self._sdk_agent.conversation.total_usage,
|
|
483
500
|
max_turns=max_turns,
|
|
484
501
|
)
|
|
485
502
|
|
|
@@ -677,10 +694,13 @@ class _AntigravityTurnState:
|
|
|
677
694
|
agent's shared crash kernel builds ``pending_turn`` from ``collector``).
|
|
678
695
|
|
|
679
696
|
Step-stream shape this consumes (observed): each ``step_index`` is yielded
|
|
680
|
-
repeatedly through ACTIVE -> DONE transitions;
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
697
|
+
repeatedly through ACTIVE -> DONE transitions; a tool call carries a stable
|
|
698
|
+
``id`` and its result is folded into expanded ``args`` at DONE.
|
|
699
|
+
|
|
700
|
+
Usage is NOT on the Step: the SDK accumulates it per model invocation on the
|
|
701
|
+
conversation, which ``cumulative_usage`` reads. Each rise since the last
|
|
702
|
+
reading is booked as one generation, and ``finalize`` books the remainder, so
|
|
703
|
+
the per-message buckets always sum to the turn total.
|
|
684
704
|
"""
|
|
685
705
|
|
|
686
706
|
def __init__(
|
|
@@ -696,9 +716,12 @@ class _AntigravityTurnState:
|
|
|
696
716
|
model: str,
|
|
697
717
|
turn_start_time: float,
|
|
698
718
|
clock: TurnClock,
|
|
719
|
+
cumulative_usage: Callable[[], Any],
|
|
699
720
|
max_turns: int | None = None,
|
|
700
721
|
) -> None:
|
|
701
722
|
self._agent = agent
|
|
723
|
+
self._cumulative_usage = cumulative_usage
|
|
724
|
+
self._usage_booked = _UsageCounts.of(cumulative_usage())
|
|
702
725
|
self.emit = emit
|
|
703
726
|
self.task_id = task_id
|
|
704
727
|
self.turn_id = turn_id
|
|
@@ -815,13 +838,22 @@ class _AntigravityTurnState:
|
|
|
815
838
|
self._blocks.append(ContentBlock(block_type="text", sequence=0, text=step.content))
|
|
816
839
|
|
|
817
840
|
# Per-generation usage: fold into the turn total and cut an AssistantMessage.
|
|
818
|
-
if
|
|
841
|
+
if self._book_new_usage():
|
|
819
842
|
if not self._in_api_call:
|
|
820
843
|
self.api_calls += 1
|
|
821
844
|
self._in_api_call = False
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
845
|
+
|
|
846
|
+
def _book_new_usage(self) -> bool:
|
|
847
|
+
"""Book the usage accrued since the last reading as one generation; False if none."""
|
|
848
|
+
now = _UsageCounts.of(self._cumulative_usage())
|
|
849
|
+
accrued = now.minus(self._usage_booked)
|
|
850
|
+
if not any(accrued):
|
|
851
|
+
return False
|
|
852
|
+
self._usage_booked = now
|
|
853
|
+
gen = _to_token_usage(accrued, self.model)
|
|
854
|
+
self.total_usage = self.total_usage + gen
|
|
855
|
+
self._flush_generation(gen, accrued.thoughts_token_count)
|
|
856
|
+
return True
|
|
825
857
|
|
|
826
858
|
def _handle_tool_call(self, call: Any, step: Any, done: bool, sstatus: Any, call_index: int) -> None:
|
|
827
859
|
raw_name = _enum_value(call.name)
|
|
@@ -995,7 +1027,8 @@ class _AntigravityTurnState:
|
|
|
995
1027
|
)
|
|
996
1028
|
)
|
|
997
1029
|
|
|
998
|
-
#
|
|
1030
|
+
# Usage that landed after the last Step, then any blocks it did not carry.
|
|
1031
|
+
self._book_new_usage()
|
|
999
1032
|
if self._blocks:
|
|
1000
1033
|
self._flush_generation(TokenUsage(), 0)
|
|
1001
1034
|
|
|
@@ -11,6 +11,7 @@ import tempfile
|
|
|
11
11
|
import time
|
|
12
12
|
from collections.abc import Callable
|
|
13
13
|
from datetime import datetime
|
|
14
|
+
from enum import Enum
|
|
14
15
|
from pathlib import Path
|
|
15
16
|
from typing import Any, ClassVar, NamedTuple
|
|
16
17
|
from urllib.parse import urlparse
|
|
@@ -33,6 +34,7 @@ from coder_eval.models import (
|
|
|
33
34
|
CommandTelemetry,
|
|
34
35
|
ContentBlock,
|
|
35
36
|
DirectRoute,
|
|
37
|
+
ProviderError,
|
|
36
38
|
SystemPromptSemantics,
|
|
37
39
|
TokenUsage,
|
|
38
40
|
TranscriptMessage,
|
|
@@ -274,6 +276,34 @@ _LOGIN_PROFILE_NAMES = (".bash_profile", ".profile", ".zshenv", ".zprofile", ".z
|
|
|
274
276
|
_ZSH_PROFILE_NAMES = frozenset({".zshenv", ".zprofile", ".zshrc"})
|
|
275
277
|
|
|
276
278
|
|
|
279
|
+
def _provider_error_from(payload: Any) -> ProviderError:
|
|
280
|
+
"""Map a codex ``ErrorNotification`` payload onto a ``ProviderError``.
|
|
281
|
+
|
|
282
|
+
``codexErrorInfo`` is either a bare category (enum) or a one-key object whose
|
|
283
|
+
key is the category and whose value may carry ``httpStatusCode``.
|
|
284
|
+
"""
|
|
285
|
+
error = getattr(payload, "error", None)
|
|
286
|
+
kind: str | None = None
|
|
287
|
+
http_status: int | None = None
|
|
288
|
+
info = getattr(getattr(error, "codex_error_info", None), "root", None)
|
|
289
|
+
if isinstance(info, Enum):
|
|
290
|
+
kind = str(info.value)
|
|
291
|
+
elif hasattr(info, "model_dump"):
|
|
292
|
+
dumped = info.model_dump(by_alias=True, mode="json")
|
|
293
|
+
if len(dumped) == 1:
|
|
294
|
+
kind, body = next(iter(dumped.items()))
|
|
295
|
+
if isinstance(body, dict) and isinstance(body.get("httpStatusCode"), int):
|
|
296
|
+
http_status = body["httpStatusCode"]
|
|
297
|
+
return ProviderError(
|
|
298
|
+
at=datetime.now(),
|
|
299
|
+
message=str(getattr(error, "message", "") or ""),
|
|
300
|
+
kind=kind,
|
|
301
|
+
http_status=http_status,
|
|
302
|
+
will_retry=bool(getattr(payload, "will_retry", False)),
|
|
303
|
+
details=getattr(error, "additional_details", None),
|
|
304
|
+
)
|
|
305
|
+
|
|
306
|
+
|
|
277
307
|
def _get_item_root(notification: Any) -> Any:
|
|
278
308
|
"""Extract the typed item root from a Codex SDK notification.
|
|
279
309
|
|
|
@@ -338,6 +368,7 @@ class _CodexTurnState:
|
|
|
338
368
|
# Live pump scratch (set during streaming).
|
|
339
369
|
self.turn_result: Any = None
|
|
340
370
|
self.latest_token_usage: Any = None
|
|
371
|
+
self.provider_errors: list[ProviderError] = []
|
|
341
372
|
self.agent_message_chunks: list[str] = []
|
|
342
373
|
# Sequence per executable item, assigned at item/started and reused at
|
|
343
374
|
# item/completed via this id->seq map.
|
|
@@ -546,8 +577,19 @@ class _CodexTurnState:
|
|
|
546
577
|
self.on_token_usage_updated(notification)
|
|
547
578
|
elif method == "turn/completed":
|
|
548
579
|
return self.on_turn_completed(notification)
|
|
580
|
+
elif method == "error":
|
|
581
|
+
self.on_error(notification)
|
|
549
582
|
return False
|
|
550
583
|
|
|
584
|
+
def on_error(self, notification: Any) -> None:
|
|
585
|
+
"""Record a provider error; codex retries a stalled stream silently otherwise."""
|
|
586
|
+
err = _provider_error_from(notification.payload)
|
|
587
|
+
self.provider_errors.append(err)
|
|
588
|
+
self._agent._log.warning(
|
|
589
|
+
f"provider error (will_retry={err.will_retry}, kind={err.kind}, "
|
|
590
|
+
+ f"http_status={err.http_status}): {err.message}"
|
|
591
|
+
)
|
|
592
|
+
|
|
551
593
|
def on_item_started(self, notification: Any) -> None:
|
|
552
594
|
"""Emit ToolStartEvent + record the tool_use block for every tool-like item."""
|
|
553
595
|
root = _get_item_root(notification)
|
|
@@ -765,6 +807,7 @@ class _CodexTurnState:
|
|
|
765
807
|
assistant_turn_count=1,
|
|
766
808
|
messages=self.messages,
|
|
767
809
|
num_turns=max(self.api_calls, 1),
|
|
810
|
+
provider_errors=list(self.provider_errors),
|
|
768
811
|
crashed=crashed,
|
|
769
812
|
crash_reason=crash_reason,
|
|
770
813
|
max_turns_exhausted=status is AgentEndStatus.MAX_TURNS_EXHAUSTED,
|
|
@@ -17,6 +17,7 @@ from __future__ import annotations
|
|
|
17
17
|
import asyncio
|
|
18
18
|
import contextlib
|
|
19
19
|
import logging
|
|
20
|
+
import os
|
|
20
21
|
from pathlib import Path
|
|
21
22
|
from typing import Any
|
|
22
23
|
|
|
@@ -45,6 +46,17 @@ from coder_eval.path_utils import PRIOR_RESULT_FILENAME
|
|
|
45
46
|
logger = logging.getLogger(__name__)
|
|
46
47
|
|
|
47
48
|
|
|
49
|
+
def _scrub_staged_inputs(task_yaml: Path, context_json: Path) -> None:
|
|
50
|
+
"""Delete the staged ``task.yaml`` and ``context.json`` once loaded, inside a container only.
|
|
51
|
+
|
|
52
|
+
Both carry the task's ``success_criteria``, and the agent runs in this same container.
|
|
53
|
+
``prior.json`` is left for the regrade path, which reads it later and runs no agent.
|
|
54
|
+
"""
|
|
55
|
+
if os.environ.get(IN_CONTAINER_ENV) == "1":
|
|
56
|
+
task_yaml.unlink(missing_ok=True)
|
|
57
|
+
context_json.unlink(missing_ok=True)
|
|
58
|
+
|
|
59
|
+
|
|
48
60
|
def heartbeat_is_alive(current: str, last_counter: str, current_mtime: float, last_mtime: float) -> bool:
|
|
49
61
|
"""True when the heartbeat shows a fresh signal of life.
|
|
50
62
|
|
|
@@ -176,6 +188,7 @@ def run_task_internal_command(
|
|
|
176
188
|
# `task_file` is then pointed under the task_dir mount, so the `TASK_DIR` the
|
|
177
189
|
# Orchestrator exposes to `run_command` criteria resolves there, not /work/input.
|
|
178
190
|
task, _ = load_task(task_yaml)
|
|
191
|
+
_scrub_staged_inputs(task_yaml, context_json)
|
|
179
192
|
# The path below is never re-read; it only seeds Orchestrator's TASK_DIR.
|
|
180
193
|
runtime_task_file = task_dir / "task.yaml" if task_dir.is_dir() else task_yaml
|
|
181
194
|
|