coder-eval 0.12.0__tar.gz → 0.12.1__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.0 → coder_eval-0.12.1}/.claude/harness-candidates.md +87 -0
- coder_eval-0.12.1/.github/scripts/harbor_e2e.py +163 -0
- coder_eval-0.12.1/.github/workflows/harbor-e2e.yml +91 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/pr-checks.yml +15 -8
- {coder_eval-0.12.0 → coder_eval-0.12.1}/CHANGELOG.md +131 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/CLAUDE.md +8 -5
- {coder_eval-0.12.0 → coder_eval-0.12.1}/PKG-INFO +4 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/action.yml +1 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docker/Dockerfile +13 -9
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/TASK_DEFINITION_GUIDE.md +39 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/USER_GUIDE.md +45 -8
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/HARNESS_PARITY.md +67 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/page.tsx +44 -8
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/pyproject.toml +23 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/__init__.py +1 -1
- coder_eval-0.12.1/src/coder_eval/agents/_timing.py +42 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/antigravity_agent.py +85 -5
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/claude_code_agent.py +8 -3
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/codex_agent.py +232 -27
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/opencode_agent.py +51 -2
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/pi_agent.py +27 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/analysis.py +16 -8
- coder_eval-0.12.1/src/coder_eval/argv_match.py +267 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/__init__.py +5 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/evaluate_command.py +140 -40
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/execute_command.py +25 -0
- coder_eval-0.12.1/src/coder_eval/cli/export_command.py +126 -0
- coder_eval-0.12.1/src/coder_eval/cli/harbor_command.py +65 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/run_command.py +134 -17
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/run_task_internal_command.py +123 -1
- coder_eval-0.12.1/src/coder_eval/criteria/cli_called.py +218 -0
- coder_eval-0.12.1/src/coder_eval/harbor/__init__.py +22 -0
- coder_eval-0.12.1/src/coder_eval/harbor/agent.py +160 -0
- coder_eval-0.12.1/src/coder_eval/harbor/agent_paths.py +29 -0
- coder_eval-0.12.1/src/coder_eval/harbor/atif_emit.py +422 -0
- coder_eval-0.12.1/src/coder_eval/harbor/atif_hydrate.py +180 -0
- coder_eval-0.12.1/src/coder_eval/harbor/atif_models.py +290 -0
- coder_eval-0.12.1/src/coder_eval/harbor/experiment_packager.py +211 -0
- coder_eval-0.12.1/src/coder_eval/harbor/packager.py +701 -0
- coder_eval-0.12.1/src/coder_eval/harbor/portability.py +149 -0
- coder_eval-0.12.1/src/coder_eval/harbor/reward.py +102 -0
- coder_eval-0.12.1/src/coder_eval/invocation_log.py +306 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/isolation/docker_runner.py +177 -14
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/__init__.py +17 -1
- coder_eval-0.12.1/src/coder_eval/models/cli_match.py +392 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/container_paths.py +23 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/criteria.py +50 -172
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/sandbox.py +181 -6
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/tasks.py +0 -8
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/telemetry.py +13 -2
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/batch.py +14 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/config.py +18 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/evaluation.py +2 -2
- coder_eval-0.12.1/src/coder_eval/orchestration/regrade.py +1213 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestrator.py +41 -12
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/path_utils.py +16 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/sandbox.py +60 -15
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/README.md +5 -3
- coder_eval-0.12.1/tasks/record_cli_responses.yaml +206 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/__init__.py +2 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/_scrub.py +64 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/antigravity_fixtures.py +279 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/codex_fixtures.py +50 -12
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +52 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +83 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +92 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +72 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +106 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +1 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +1 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +12 -3
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +2 -2
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +1 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +7 -7
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +1 -1
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +57 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +106 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +47 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +155 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/opencode_fixtures.py +227 -0
- coder_eval-0.12.1/tests/_fixtures/golden_streams/pi_fixtures.py +207 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +6 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +25 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/instruction.md +9 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/task.toml +73 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +1 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +28 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +17 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +2 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +1 -0
- coder_eval-0.12.1/tests/_fixtures/harbor_export_golden/source_task/task.yaml +33 -0
- coder_eval-0.12.1/tests/_fixtures/timing_union_cases.json +100 -0
- coder_eval-0.12.1/tests/fixtures/atif/known_good_trajectory.json +125 -0
- coder_eval-0.12.1/tests/harbor_e2e/fixtures/docker_baseline.yaml +35 -0
- coder_eval-0.12.1/tests/harbor_e2e/fixtures/llm_judge.yaml +44 -0
- coder_eval-0.12.1/tests/harbor_e2e/fixtures/template_sources.yaml +38 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/doc_env_parity.py +23 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/doc_schema_parity.py +16 -3
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +10 -3
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce053_run_record_filename_literal.py +30 -4
- coder_eval-0.12.1/tests/lint/rules/ce056_no_container_env_literal.py +83 -0
- coder_eval-0.12.1/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +82 -0
- coder_eval-0.12.1/tests/lint/rules/ce058_no_timing_literal.py +204 -0
- coder_eval-0.12.1/tests/lint/rules/ce059_generation_window_is_two_reads.py +79 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_cli_imports_in_core.py +7 -2
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/runner.py +8 -0
- coder_eval-0.12.1/tests/test_agent_golden_master.py +364 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_telemetry.py +8 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_telemetry_advanced.py +3 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_antigravity_agent.py +436 -99
- coder_eval-0.12.1/tests/test_atif_emit.py +365 -0
- coder_eval-0.12.1/tests/test_atif_hydrate.py +138 -0
- coder_eval-0.12.1/tests/test_atif_models.py +181 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_called_criterion.py +235 -41
- coder_eval-0.12.1/tests/test_cli_match_parity.py +121 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_codex_agent.py +344 -3
- coder_eval-0.12.1/tests/test_codex_agent_unit.py +280 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_command_statistics.py +37 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_custom_lint.py +334 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_detached_grading_boundaries.py +137 -6
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_detached_grading_guards.py +117 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_runner_mounts.py +37 -0
- coder_eval-0.12.1/tests/test_evaluate_format_harbor.py +126 -0
- coder_eval-0.12.1/tests/test_execute_format_harbor.py +87 -0
- coder_eval-0.12.1/tests/test_harbor_agent.py +171 -0
- coder_eval-0.12.1/tests/test_harbor_experiment_packager.py +308 -0
- coder_eval-0.12.1/tests/test_harbor_export_golden.py +80 -0
- coder_eval-0.12.1/tests/test_harbor_packager.py +659 -0
- coder_eval-0.12.1/tests/test_harbor_portability.py +135 -0
- coder_eval-0.12.1/tests/test_harbor_reward.py +123 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_models.py +56 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_opencode_agent.py +174 -125
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_orchestrator.py +73 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pi_agent.py +111 -119
- coder_eval-0.12.1/tests/test_regrade.py +1274 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox.py +56 -1
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_adopt.py +22 -0
- coder_eval-0.12.1/tests/test_sandbox_record_cli.py +1182 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_templates.py +11 -6
- coder_eval-0.12.1/tests/test_sandbox_venv_live.py +110 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_simulation_integration.py +73 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_tags.py +186 -1
- coder_eval-0.12.1/tests/test_timing_union_parity.py +55 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_token_usage.py +12 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/uv.lock +261 -8
- coder_eval-0.12.0/src/coder_eval/criteria/cli_called.py +0 -312
- coder_eval-0.12.0/src/coder_eval/invocation_log.py +0 -151
- coder_eval-0.12.0/src/coder_eval/orchestration/regrade.py +0 -601
- coder_eval-0.12.0/tests/test_agent_golden_master.py +0 -98
- coder_eval-0.12.0/tests/test_codex_agent_unit.py +0 -131
- coder_eval-0.12.0/tests/test_regrade.py +0 -323
- coder_eval-0.12.0/tests/test_sandbox_record_cli.py +0 -506
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-code-review-full.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-code-review-wf.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-code-review.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-create-plan.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-implement-plan.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/commands/coder-eval-review.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/shared/axes.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/shared/multi-model-review.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/shared/review-rubric.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/shared/run-layout.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/workflows/cr-axis.js +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude/workflows/cr-parent.js +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.claude-plugin/marketplace.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.env.example +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/CODEOWNERS +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/actionlint.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/code_review.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/dependabot.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/pages-stub/index.html +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/scripts/release_notes.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/claude-pr-review.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/codeql.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/conventional-commits.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/docker-publish.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/docs.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/publish-testpypi.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/release.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.github/workflows/verify-published-action.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.gitignore +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.pre-commit-config.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/.python-version +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/ADOPTERS.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/CODE_OF_CONDUCT.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/CONTRIBUTING.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/LICENSE +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/Makefile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/NOTICE +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/SECURITY.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/comparison.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docker/Dockerfile.runtime +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docker/coder_eval_entrypoint.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docker/coder_eval_runtime_entrypoint.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/AB_EXPERIMENTS.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/CI_GATE.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/DATASETS.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/DIALOG_MODE.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/DOCKER_ISOLATION.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/EXTENDING.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/PLUGIN.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/REPORT_SCHEMA.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/ANTIGRAVITY.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/CLAUDE_CODE.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/CODEX.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/OPENCODE.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/agents/PI.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/assets/hero.gif +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/comparison.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/index.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/llms.txt +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/01-first-evaluation.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/02-ci-pipeline.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/03-evalboard-local.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/04-writing-a-task.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/05-comparing-models.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/06-use-docker-isolation.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/docs/tutorials/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/.gitignore +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/col-help.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/collapsible-rail.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/harness-badge.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/harness-selector.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/scroll-table.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/search-box.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/skeleton.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/unit-toggle.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_components/version-list.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_lib/source-param.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/daily-chart.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/harness-legend.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/harness-series.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/tag-rail.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/_overview/window-summary.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/api/download/route.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/api/file/route.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/api/refresh/route.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/error.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/globals.css +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/icon.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/layout.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/loading.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/path-to-ga/page.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/path-to-ga/task-table.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/scribe/page.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/scribe/run-table.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/trends/actions.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/trends/page.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/trends/trends-view.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/watchlist/page.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/next-env.d.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/next.config.mjs +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/package.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/pnpm-lock.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/postcss.config.mjs +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/public/harness/antigravity.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/public/harness/claude-code.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/public/harness/codex.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/public/harness/pi.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/public/uipath.png +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/tailwind.config.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/tsconfig.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/vitest.config.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/evalboard/vitest.setup.ts +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/default.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/early-stop-ab.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/model-comparison.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/permissions-smoke.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/plugin-comparison.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/prompt-mutations-example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/experiments/smoke_variants.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/litellm/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/litellm/cost_logger.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/litellm/litellm-config.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/litellm/start-litellm.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/mkdocs.yml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/osv-scanner.toml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/cli-setup.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/criteria.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/repo-layout.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/run-layout.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/task-rubric.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/init/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/plugins/coder-eval/skills/task/SKILL.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/scripts/check_commit_msg.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/.gitattributes +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/_logging.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/_skills.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/noop_agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/registry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/agents/watchdog.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/aggregate_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/console.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/evaluate_target.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/plan_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/report_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/run_helpers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/cli/utils.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/agent_judge.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/base.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/classification_match.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/command_executed.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/commands_efficiency.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/file_check.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/file_contains.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/file_exists.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/file_matches_regex.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/json_check.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/llm_judge.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/reference_comparison.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/run_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/skill_triggered.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/criteria/uipath_eval.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/budget.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/categories.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/categorization.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/checker_misuse.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/executor.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/judge.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/reference.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/retry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/errors/timeout.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/checker.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_context.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_litellm.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_persistence.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/judge_usage.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/sub_agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/summaries.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/evaluation/verdict_tool.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/formatting.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/fs_permissions.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/isolation/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/litellm_cost.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/logging_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/agent_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/enums.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/experiment.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/judge.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/judge_defaults.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/limits.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/merge_strategy.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/mutations.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/results.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/routing.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/models/templates.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/config_merge.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/early_stop.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/experiment.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/overrides.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/run_limits.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/orchestration/task_loader.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/plugins.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/pricing.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/py.typed +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/reports.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/reports_experiment.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/reports_html.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/reports_junit.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/reports_stats.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/resources/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/resources/tags.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/ast_similarity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/complexity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/quality.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/signature_similarity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/similarity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/scoring/token_similarity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/simulation/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/simulation/termination.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/simulation/user_simulator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/callbacks.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/collector.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/events.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/renderers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/streaming/wire.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/telemetry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/src/coder_eval/utils.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agentless_smoke_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/antigravity_hello_world.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/claude_hello_world.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/claude_hello_world_docker.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/claude_subagent_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_hello_world.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_parallel_commands.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_skills_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_string_utils.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/codex_subagent_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/subagent_bash_long_input.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/agents/subagent_merge_sort.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/anti_cheat_reference/reference/solution.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/byod_smoke_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dataset_example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/datasets/sentiment.jsonl +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/environment/input.txt +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/fibonacci_with_template.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/hello_date.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/inline_starter_example.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/internal/session_resumption.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_smoke.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/opencode_smoke_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/pi_smoke_test.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/run_limits/max_turns_cap.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/run_limits/turn_timeout.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/sentiment_classification.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_agent_judge.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_llm_judge.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_negative_path.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_task_timeout.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/smoke_variants.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/test_sandbox.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tasks/token_check.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/templates/byod_smoke_test/Dockerfile +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/templates/fibonacci-starter/README.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/templates/fibonacci-starter/src/main.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/templates/fibonacci-starter/tests/test_main.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/live_criteria.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/run_full.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/_path_helpers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/conftest.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/mock_agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/pi_happy_stream.jsonl +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/fixtures/text_stub_agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/action_docs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/agent_roster_parity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/dead_config_fields.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/doc_examples.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/doc_indexes.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/generated.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/live_verdict_contract.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/plugin_manifest_parity.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/plugin_reference.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/pyright_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/__init__.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/base.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce023_no_proxy_shim_import.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce051_no_driver_override.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_agent_timing_access.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_silent_except.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_submodule_model_imports.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/open_explicit_encoding.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/register_criterion_required.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/violation.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/lint/workflow_outputs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_action_inputs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_action_version_pin.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_config_no_timing_fields.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_config_optional_type.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_config_registry_dispatch.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_config_sdk_decoupling.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_judge_criterion.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agent_timeout.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_agentless.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_aggregate.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_byoa_plugin.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_byoa_plugin_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_byod_feature.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_check_all_async.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_checker_logging.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_classification_match.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_claude_settings_enforcement_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cleanup_preservation_guard.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_backend_flag.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_empty_glob.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_sdk_options.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_set_overrides.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_telemetry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cli_type_flag.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_code_review_bugs.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_codex_agent_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_codex_token_mapping.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_command_executed.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_command_telemetry_result_data.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_commands_efficiency.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_config_lineage.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_config_merge_engine.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_config_precedence.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_continuous_scoring.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_cost_accounting_paths.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_criterion_result_round_trip.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_dataset_expansion.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_debug_logging.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_build_failure.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_litellm_env.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_runner_container_death.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_runner_stream_limit.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_wildcard_env.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_docker_workdir_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_driver_resolver.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_early_stop.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_error_handling.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_evaluate_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_evaluate_target.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_evaluator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_event_collector.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_execute_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_execute_evaluate_loop.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_cli.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_loader.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_reports.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_resolver.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_experiment_runner.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_file_check.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_file_contains_scoring.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_formatting.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_git_clone_failure.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_glob_paths_in_file_criteria.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_heartbeat_watchdog.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_ignore_patterns_negation.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_image_from_dockerfiles.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_integration.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_json_check.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_anthropic.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_bedrock.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_burn_in_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_context_builder.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_litellm.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_judge_persistence.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_lint_no_top_level_run_limits.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_lint_runner.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_litellm_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_litellm_cost.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_litellm_cost_logger.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_litellm_judge_live.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_litellm_route.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_llm_judge_criterion.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_log_tail_buffer.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_logging.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_logging_isolation.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_merge_characterization.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_merge_strategy_annotations.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_merge_unification.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_mutations.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_new_criteria.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_node_env_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_optional_dependencies.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_orchestrator_error_log_tail.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_orchestrator_telemetry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_overrides_engine.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_parallel.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_path_utils.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pi_agent_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pi_smoke_task.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_plan_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_plugin_processing.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_plugins.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_post_run.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pr_review_workflow.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pre_run.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_preservation_mode.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_pricing_registry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reference_comparison_scoring.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reference_evaluator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reference_missing_file.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reference_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reference_permissions.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_registry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_release_notes.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_replicate_stats.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_report_command.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports_experiment.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports_html.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports_junit.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports_stats.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_reports_stats_nonfinite.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_resolve_task_files.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_resume.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_retry_logic_comprehensive.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_route_seam_exhaustiveness.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_routing.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_command_junit.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_command_stdout.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_helpers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_limits_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_limits_orchestrator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_limits_resolver.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_run_metrics.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_runtime_tool_versions.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_layer_builder.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_optional.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_security.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sandbox_symlink_preservation.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_scorers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_scoring_quality.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sdk_option_classification.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_seed_from_prior_result.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_simulation_config.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_simulation_termination.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_simulation_trials.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_skill_triggered.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_agent_integration.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_batch.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_callbacks.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_cli.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_events.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_orchestrator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_renderers.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_streaming_wire.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_sub_agent_runner.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_success_criterion_union.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_suite_rollup.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_summaries.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_task_definition_unknown_fields.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_teardown_interrupt.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_telemetry.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_template_env_expansion.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_threshold_enforcement.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_timeout_batch.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_timeout_categorization.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_timeout_exceptions.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_timeout_models.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_timeout_orchestrator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_uipath_eval.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_ungraded_reporting.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_user_simulator.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_utils.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_utterance_extraction.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_variant_prompt_file.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_verdict_tool.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_verify_published_workflow.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_visible_turn_cap.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_watchdog.py +0 -0
- {coder_eval-0.12.0 → coder_eval-0.12.1}/tests/test_yaml_migration.py +0 -0
|
@@ -455,6 +455,31 @@ with the two `action.yml` items above — one considered change to the action's
|
|
|
455
455
|
`final_status`, which does not exist in `run.json` and would have made a new
|
|
456
456
|
assertion dead on arrival. Guard: assert the key set that non-Python consumers
|
|
457
457
|
depend on, mirroring how CE030 pins doc/schema parity.
|
|
458
|
+
- [ ] **A probe task's detector must not be satisfiable from the sandbox-readable task
|
|
459
|
+
YAML.** `docker_runner._stage_inputs` serialises the post-override `TaskDefinition` to
|
|
460
|
+
`/work/input/task.yaml` and mounts `tasks/` again at `/work/task_dir`, both agent-readable.
|
|
461
|
+
Two probes now depend on NOT being satisfiable from that text — `anti_cheat_reference` via a
|
|
462
|
+
regex that cannot match its own source, `record_cli_responses` via a log-derived detector —
|
|
463
|
+
and nothing enforces it. `record_cli_responses` originally shipped (in review) with
|
|
464
|
+
`file_contains` needles that were verbatim in its own YAML, which would have let a
|
|
465
|
+
transcribing agent pass while dispatch was dead. Guard: for every `smoke-pass` task, assert no
|
|
466
|
+
`file_contains` needle / `file_matches_regex` pattern on a must-match criterion appears in the
|
|
467
|
+
serialised task YAML. Deferred: needs per-criterion-type handling and a real false-positive
|
|
468
|
+
pass (paths and generic words will collide), so well over 30 min.
|
|
469
|
+
- [ ] **A new shim failure mode must still RECORD the invocation.** A generated shim that dies
|
|
470
|
+
before `record()` leaves a log byte-identical to "the agent never ran it", which passes a
|
|
471
|
+
`max_count: 0` guard. The sidecar import was exactly that, caught only in review. Guard:
|
|
472
|
+
render each shim shape, break each external dependency in turn, assert the log is non-empty.
|
|
473
|
+
Deferred: "each external dependency" has no enumeration today, so the rule needs a seam
|
|
474
|
+
(a declared list of what a shim depends on) before it can be mechanical rather than a
|
|
475
|
+
hand-maintained list that decays.
|
|
476
|
+
- [ ] **A generated-artifact invariant must be asserted against a real run of that artifact,
|
|
477
|
+
not against the config that produced it.** `TestRecordCliProbeIntegrity` first shipped
|
|
478
|
+
comparing the task YAML with itself and hardcoding `"rule": 0` — a spelling `json.dumps`'s
|
|
479
|
+
default separators own — so a separator change would have left it green while the blocking CI
|
|
480
|
+
probe failed. Now fixed for this case by running a real shim. Deferred as a general guard:
|
|
481
|
+
"derives its expectation from the thing it checks" is not mechanically detectable; it belongs
|
|
482
|
+
in the review rubric rather than a lint rule.
|
|
458
483
|
|
|
459
484
|
- [ ] A `_*TurnState` (agent turn-state) attribute that is written but never read
|
|
460
485
|
outside its own assignment — CE037-class dead accumulator. Surfaced during the
|
|
@@ -464,3 +489,65 @@ with the two `action.yml` items above — one considered change to the action's
|
|
|
464
489
|
run. Guard would need cross-method dataflow over each `Agent`-subclass turn-state
|
|
465
490
|
class (write sites vs read sites), which the AST-only CExxx runner can't express
|
|
466
491
|
in ~30 min — deferred. Caught in: Pi harness Phase 2 quality review.
|
|
492
|
+
|
|
493
|
+
- [ ] A duration/count aggregate over run-task rows that fails to exclude
|
|
494
|
+
`mature_skipped`. Nothing guards it: the CExxx runner is Python-AST only and
|
|
495
|
+
this defect class lives in the evalboard's TypeScript. A codex nightly
|
|
496
|
+
rendered "1300 tasks · 15h 29m" for the 397 tasks that actually ran. Fixed
|
|
497
|
+
for the two whole-run sites by extracting `deriveRunDuration`; a general
|
|
498
|
+
guard needs a TS lint surface the harness does not have.
|
|
499
|
+
Caught in: timing-capture Phase 1 review.
|
|
500
|
+
|
|
501
|
+
- [ ] Subtracting a SUM of intervals from a wall span where the intervals can
|
|
502
|
+
overlap. Semantic, not syntactic — an AST rule cannot tell a sum of
|
|
503
|
+
durations from a union. Antigravity shipped it: four concurrent 400ms tool
|
|
504
|
+
calls inside a 1000ms window summed to 1600ms and clamped generation to the
|
|
505
|
+
0.0 the change existed to remove. The real guard is the replay-based
|
|
506
|
+
`assert_timing_captured` golden sensor, which now exists; a static rule
|
|
507
|
+
would not have caught it. Caught in: timing-capture Phase 3 review.
|
|
508
|
+
|
|
509
|
+
- [ ] A test fixture whose field name does not exist on the type it models.
|
|
510
|
+
`parseMessages`'s `CommandEntry` keys on `tool_id`; a fixture using
|
|
511
|
+
`tool_use_id` never resolves, params fall back to `{}`, and every tool
|
|
512
|
+
weighs exactly 1 — which silently turned a "split by content size" test
|
|
513
|
+
into a 99%-thinking assertion that passed. TypeScript accepts it because
|
|
514
|
+
the fixtures are untyped object literals. Typing the fixture factories
|
|
515
|
+
against the real interfaces would guard the whole class; that is a
|
|
516
|
+
sweep across the evalboard test suite, not ~30 min.
|
|
517
|
+
Caught in: timing-capture Phase 5 review.
|
|
518
|
+
|
|
519
|
+
### Deferred timing divergences (not guardrails — accounting gaps)
|
|
520
|
+
|
|
521
|
+
Recorded here as well as in `docs/agents/HARNESS_PARITY.md` § Known
|
|
522
|
+
divergences, so the deferred-work record is one place. Measurements in
|
|
523
|
+
`c/time-bugs-audit.md`.
|
|
524
|
+
|
|
525
|
+
- [ ] **Antigravity books orphan-poll waiting as agent duration** (audit P2-1).
|
|
526
|
+
A task can spend `0.8 × turn_timeout` waiting on a tool call that never
|
|
527
|
+
reaches DONE — 14 tasks, 9.6h of one 83h run. Only CLOSED tool intervals are
|
|
528
|
+
subtracted from a generation window, so that wait stays inside whichever
|
|
529
|
+
window contains it; the force-close records `execution_completed_at` while
|
|
530
|
+
leaving `duration_ms` as `None`. Deliberately out of scope of the timing
|
|
531
|
+
work: closing it means deciding whether a backgrounded tool's elapsed time
|
|
532
|
+
is model time (the model IS generating while it runs), which is a semantic
|
|
533
|
+
question, not a bug fix.
|
|
534
|
+
|
|
535
|
+
- [ ] **Delegate (`delegate-sdk`) records no execution bounds** (audit P3-1).
|
|
536
|
+
It reports `duration_ms` but neither `execution_started_at` nor
|
|
537
|
+
`execution_completed_at`, so its tool calls cannot be placed on a timeline.
|
|
538
|
+
Coverage is ~88%, so it is not urgent. The agent lives in the separate
|
|
539
|
+
`coder_eval_uipath` repo; mirror the Codex change there
|
|
540
|
+
(`_item_timing` + threading the SDK stamps through the telemetry builders).
|
|
541
|
+
|
|
542
|
+
- [ ] **Pre-existing, surfaced by this work's final review: `TokenUsage._adopt_legacy_input_tokens`
|
|
543
|
+
double-counts the cache buckets.** The validator copies a legacy record's
|
|
544
|
+
full-prompt `input_tokens` straight into `uncached_input_tokens`, and the
|
|
545
|
+
computed `input_tokens` then adds `cache_creation` + `cache_read` again. A
|
|
546
|
+
legacy record with `input_tokens=1000`, `cache_creation=200`, `cache_read=150`
|
|
547
|
+
reloads as 1350 prompt tokens and bills 1000 at the uncached rate instead of
|
|
548
|
+
650. Affects every report, budget check and detached regrade over a
|
|
549
|
+
pre-split run that used prompt caching. NOT touched by the timing work
|
|
550
|
+
(token accounting was explicitly out of its scope) and not a guardrail
|
|
551
|
+
candidate — a real bug needing its own change, with a decision about
|
|
552
|
+
whether legacy records can be distinguished from current ones at all.
|
|
553
|
+
Caught in: timing-capture final review (gpt-5.6-sol).
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Harbor end-to-end smoke test.
|
|
3
|
+
|
|
4
|
+
Exports a handful of coder-eval tasks to Harbor (`coder-eval export --format
|
|
5
|
+
harbor`), runs each with `hb run -a coder_eval.harbor.agent:CoderEvalAgent`
|
|
6
|
+
against real Docker, and asserts that:
|
|
7
|
+
|
|
8
|
+
- the verifier phase wrote `reward.json` with `reward == 1.0`
|
|
9
|
+
- the agent phase wrote a real ATIF `trajectory.json`
|
|
10
|
+
- both the agent and verifier phases left a `task.json` behind
|
|
11
|
+
|
|
12
|
+
Invoked by `.github/workflows/harbor-e2e.yml` -- deliberately NOT part of
|
|
13
|
+
`make test`: it shells out to a real `hb` CLI, real Docker builds, and (for
|
|
14
|
+
the llm_judge scenario) a real model call, none of which belong in the fast
|
|
15
|
+
unit-test suite.
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import json
|
|
21
|
+
import shutil
|
|
22
|
+
import subprocess
|
|
23
|
+
import sys
|
|
24
|
+
from dataclasses import dataclass
|
|
25
|
+
from pathlib import Path
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
29
|
+
WORK_DIR = REPO_ROOT / "tmp" / "harbor_e2e"
|
|
30
|
+
AGENT_IMPORT_PATH = "coder_eval.harbor.agent:CoderEvalAgent"
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass(frozen=True)
|
|
34
|
+
class Scenario:
|
|
35
|
+
"""One (task.yaml, export flags) pair to round-trip through Harbor."""
|
|
36
|
+
|
|
37
|
+
name: str
|
|
38
|
+
task_file: Path
|
|
39
|
+
allow_credentials: bool = False
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
SCENARIOS: list[Scenario] = [
|
|
43
|
+
# "tmpdir" baseline: plain docker driver, default coder-eval-agent image,
|
|
44
|
+
# no dockerfile_path / template_sources / llm_judge -- exercises the bare
|
|
45
|
+
# export -> CoderEvalAgent -> --workspace-dir -> verifier round trip.
|
|
46
|
+
Scenario("baseline", REPO_ROOT / "tests/harbor_e2e/fixtures/docker_baseline.yaml"),
|
|
47
|
+
# llm_judge: real model call inside the VERIFIER phase, not just the agent.
|
|
48
|
+
Scenario("llm_judge", REPO_ROOT / "tests/harbor_e2e/fixtures/llm_judge.yaml", allow_credentials=True),
|
|
49
|
+
# Custom (BYOD) Docker image via dockerfile_path -- reuses the in-tree
|
|
50
|
+
# byod_smoke_test task/image rather than duplicating it.
|
|
51
|
+
Scenario("docker_custom_image", REPO_ROOT / "tasks/byod_smoke_test.yaml"),
|
|
52
|
+
# template_sources: TemplateDirSource copy-in + rewritten path, plus
|
|
53
|
+
# sandbox.python.env_packages surviving the agent-phase task.yaml merge.
|
|
54
|
+
Scenario("template_sources", REPO_ROOT / "tests/harbor_e2e/fixtures/template_sources.yaml"),
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def _run(cmd: list[str]) -> subprocess.CompletedProcess[str]:
|
|
59
|
+
print(f"+ {' '.join(cmd)}", flush=True)
|
|
60
|
+
return subprocess.run(cmd, check=False, text=True, capture_output=True)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def export_task(scenario: Scenario, out_dir: Path) -> None:
|
|
64
|
+
if out_dir.exists():
|
|
65
|
+
shutil.rmtree(out_dir)
|
|
66
|
+
cmd = ["coder-eval", "export", str(scenario.task_file), "-o", str(out_dir)]
|
|
67
|
+
if scenario.allow_credentials:
|
|
68
|
+
cmd.append("--allow-credentials")
|
|
69
|
+
result = _run(cmd)
|
|
70
|
+
print(result.stdout)
|
|
71
|
+
print(result.stderr, file=sys.stderr)
|
|
72
|
+
if result.returncode != 0:
|
|
73
|
+
raise RuntimeError(f"[{scenario.name}] `coder-eval export` failed (exit {result.returncode})")
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def run_harbor(scenario: Scenario, export_dir: Path, jobs_dir: Path) -> Path:
|
|
77
|
+
if jobs_dir.exists():
|
|
78
|
+
shutil.rmtree(jobs_dir)
|
|
79
|
+
cmd = [
|
|
80
|
+
"hb",
|
|
81
|
+
"run",
|
|
82
|
+
"-p",
|
|
83
|
+
str(export_dir),
|
|
84
|
+
"-a",
|
|
85
|
+
AGENT_IMPORT_PATH,
|
|
86
|
+
"--jobs-dir",
|
|
87
|
+
str(jobs_dir),
|
|
88
|
+
"-n",
|
|
89
|
+
"1",
|
|
90
|
+
"-y",
|
|
91
|
+
]
|
|
92
|
+
result = _run(cmd)
|
|
93
|
+
print(result.stdout)
|
|
94
|
+
print(result.stderr, file=sys.stderr)
|
|
95
|
+
if result.returncode != 0:
|
|
96
|
+
raise RuntimeError(f"[{scenario.name}] `hb run` failed (exit {result.returncode})")
|
|
97
|
+
|
|
98
|
+
# <jobs_dir>/<job_timestamp>/<trial_name>/{agent,verifier}/... -- glob for
|
|
99
|
+
# the one directory two levels down that actually holds a verifier/ output,
|
|
100
|
+
# rather than assuming a fixed trial-name shape Harbor doesn't guarantee.
|
|
101
|
+
trial_dirs = [d for d in jobs_dir.glob("*/*/") if (d / "verifier").is_dir()]
|
|
102
|
+
if len(trial_dirs) != 1:
|
|
103
|
+
raise RuntimeError(
|
|
104
|
+
f"[{scenario.name}] expected exactly one trial directory under {jobs_dir}, found {len(trial_dirs)}"
|
|
105
|
+
)
|
|
106
|
+
return trial_dirs[0]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def assert_scenario_artifacts(scenario: Scenario, trial_dir: Path) -> None:
|
|
110
|
+
reward_path = trial_dir / "verifier" / "reward.json"
|
|
111
|
+
if not reward_path.is_file():
|
|
112
|
+
raise RuntimeError(f"[{scenario.name}] missing {reward_path}")
|
|
113
|
+
reward = json.loads(reward_path.read_text(encoding="utf-8"))
|
|
114
|
+
if reward.get("reward") != 1.0:
|
|
115
|
+
raise RuntimeError(f"[{scenario.name}] expected reward 1.0, got {reward!r} ({reward_path})")
|
|
116
|
+
|
|
117
|
+
trajectory_path = trial_dir / "agent" / "trajectory.json"
|
|
118
|
+
if not trajectory_path.is_file():
|
|
119
|
+
raise RuntimeError(f"[{scenario.name}] missing {trajectory_path}")
|
|
120
|
+
trajectory = json.loads(trajectory_path.read_text(encoding="utf-8"))
|
|
121
|
+
if "schema_version" not in trajectory:
|
|
122
|
+
raise RuntimeError(f"[{scenario.name}] {trajectory_path} is missing 'schema_version'")
|
|
123
|
+
|
|
124
|
+
agent_task_jsons = list((trial_dir / "agent").glob("**/task.json"))
|
|
125
|
+
if not agent_task_jsons:
|
|
126
|
+
raise RuntimeError(f"[{scenario.name}] no task.json found under {trial_dir / 'agent'}")
|
|
127
|
+
verifier_task_json = trial_dir / "verifier" / "task.json"
|
|
128
|
+
if not verifier_task_json.is_file():
|
|
129
|
+
raise RuntimeError(f"[{scenario.name}] missing {verifier_task_json}")
|
|
130
|
+
|
|
131
|
+
print(
|
|
132
|
+
f"[{scenario.name}] OK: reward=1.0, trajectory.json present, "
|
|
133
|
+
+ f"{len(agent_task_jsons)} agent task.json + verifier/task.json present"
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def main() -> int:
|
|
138
|
+
WORK_DIR.mkdir(parents=True, exist_ok=True)
|
|
139
|
+
failures: list[str] = []
|
|
140
|
+
for scenario in SCENARIOS:
|
|
141
|
+
export_dir = WORK_DIR / scenario.name / "export"
|
|
142
|
+
jobs_dir = WORK_DIR / scenario.name / "jobs"
|
|
143
|
+
print(f"\n=== {scenario.name} ===", flush=True)
|
|
144
|
+
try:
|
|
145
|
+
export_task(scenario, export_dir)
|
|
146
|
+
trial_dir = run_harbor(scenario, export_dir, jobs_dir)
|
|
147
|
+
assert_scenario_artifacts(scenario, trial_dir)
|
|
148
|
+
except Exception as exc:
|
|
149
|
+
print(f"[{scenario.name}] FAILED: {exc}", file=sys.stderr)
|
|
150
|
+
failures.append(scenario.name)
|
|
151
|
+
|
|
152
|
+
print("\n=== Summary ===")
|
|
153
|
+
for scenario in SCENARIOS:
|
|
154
|
+
print(f" {scenario.name}: {'FAILED' if scenario.name in failures else 'OK'}")
|
|
155
|
+
|
|
156
|
+
if failures:
|
|
157
|
+
print(f"\n{len(failures)}/{len(SCENARIOS)} scenario(s) failed: {', '.join(failures)}", file=sys.stderr)
|
|
158
|
+
return 1
|
|
159
|
+
return 0
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
if __name__ == "__main__":
|
|
163
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
name: Harbor E2E
|
|
2
|
+
|
|
3
|
+
# Deliberately NOT triggered on pull_request: this exercises real Docker
|
|
4
|
+
# builds, a real `harbor` install, and (for the llm_judge scenario) a real
|
|
5
|
+
# model call, so it is informational rather than a required PR check for now
|
|
6
|
+
# (see .github/scripts/harbor_e2e.py's module docstring). workflow_dispatch
|
|
7
|
+
# lets a maintainer run it on demand; the nightly schedule catches drift
|
|
8
|
+
# between coder-eval's own release and Harbor's own upstream releases without
|
|
9
|
+
# blocking anyone's PR.
|
|
10
|
+
on:
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
schedule:
|
|
13
|
+
- cron: "17 5 * * *" # nightly, off the hour to avoid GitHub's peak-load pile-up
|
|
14
|
+
push:
|
|
15
|
+
branches: [main]
|
|
16
|
+
|
|
17
|
+
concurrency:
|
|
18
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
env:
|
|
25
|
+
TELEMETRY_ENABLED: "false"
|
|
26
|
+
# Route through Bedrock, mirroring pr-checks.yml's smoke-pass job -- keeps
|
|
27
|
+
# Anthropic-credit spend off this path; DirectRoute is exercised elsewhere.
|
|
28
|
+
API_BACKEND: "bedrock"
|
|
29
|
+
CLAUDE_CODE_USE_BEDROCK: "1"
|
|
30
|
+
AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }}
|
|
31
|
+
AWS_REGION: ${{ secrets.AWS_REGION }}
|
|
32
|
+
BEDROCK_MODEL: ${{ secrets.BEDROCK_MODEL }}
|
|
33
|
+
|
|
34
|
+
jobs:
|
|
35
|
+
harbor-e2e:
|
|
36
|
+
name: Harbor export + CoderEvalAgent round trip
|
|
37
|
+
runs-on: uipath-ubuntu-latest
|
|
38
|
+
timeout-minutes: 20
|
|
39
|
+
|
|
40
|
+
steps:
|
|
41
|
+
- name: Checkout code
|
|
42
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
43
|
+
|
|
44
|
+
- name: Set up Python 3.13
|
|
45
|
+
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.13"
|
|
48
|
+
|
|
49
|
+
- name: Set up Node.js 20
|
|
50
|
+
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
|
51
|
+
with:
|
|
52
|
+
node-version: "20"
|
|
53
|
+
|
|
54
|
+
- name: Install Claude CLI
|
|
55
|
+
run: npm install -g @anthropic-ai/claude-code
|
|
56
|
+
|
|
57
|
+
- name: Cache dependencies
|
|
58
|
+
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
|
59
|
+
with:
|
|
60
|
+
path: |
|
|
61
|
+
~/.cache/uv
|
|
62
|
+
~/.cache/pip
|
|
63
|
+
key: ${{ runner.os }}-py3.13-harbor-e2e-${{ hashFiles('pyproject.toml', 'uv.lock') }}
|
|
64
|
+
restore-keys: |
|
|
65
|
+
${{ runner.os }}-py3.13-harbor-e2e-
|
|
66
|
+
|
|
67
|
+
- name: Install uv
|
|
68
|
+
run: |
|
|
69
|
+
python -m pip install --upgrade "pip>=26.2"
|
|
70
|
+
pip install uv
|
|
71
|
+
|
|
72
|
+
- name: Install project dependencies (hash-verified from uv.lock)
|
|
73
|
+
# --extra harbor installs `harbor` into the SAME venv as coder-eval:
|
|
74
|
+
# CoderEvalAgent is resolved by `hb run -a
|
|
75
|
+
# coder_eval.harbor.agent:CoderEvalAgent` on the HOST process, so
|
|
76
|
+
# `harbor` and `coder_eval` must be importable from the same
|
|
77
|
+
# interpreter (see harbor/agent.py's module docstring). The version is
|
|
78
|
+
# pinned once, in pyproject.toml's `harbor` extra -- bump it there.
|
|
79
|
+
run: uv sync --frozen --extra dev --extra harbor
|
|
80
|
+
|
|
81
|
+
- name: Put the project venv on PATH
|
|
82
|
+
run: echo "${{ github.workspace }}/.venv/bin" >> "$GITHUB_PATH"
|
|
83
|
+
|
|
84
|
+
- name: Build coder-eval-agent base Docker image
|
|
85
|
+
run: make docker-image
|
|
86
|
+
|
|
87
|
+
- name: Build BYOD template Docker image
|
|
88
|
+
run: docker build -t byod-custom-image:0.1.0 templates/byod_smoke_test/
|
|
89
|
+
|
|
90
|
+
- name: Run Harbor E2E scenarios
|
|
91
|
+
run: python .github/scripts/harbor_e2e.py
|
|
@@ -80,7 +80,9 @@ jobs:
|
|
|
80
80
|
pip install uv
|
|
81
81
|
|
|
82
82
|
- name: Install project dependencies (hash-verified from uv.lock)
|
|
83
|
-
|
|
83
|
+
# --extra harbor: pyright below type-checks src/coder_eval/harbor/agent.py
|
|
84
|
+
# against harbor's real types, not a scoped ignore.
|
|
85
|
+
run: uv sync --frozen --extra dev --extra uipath --extra codex --extra litellm --extra harbor
|
|
84
86
|
|
|
85
87
|
# PHASE 1: Fast checks (fail early)
|
|
86
88
|
- name: Check code formatting (ruff format)
|
|
@@ -385,7 +387,9 @@ jobs:
|
|
|
385
387
|
pip install uv
|
|
386
388
|
|
|
387
389
|
- name: Install project dependencies (hash-verified from uv.lock)
|
|
388
|
-
|
|
390
|
+
# --extra harbor: pyright below type-checks src/coder_eval/harbor/agent.py
|
|
391
|
+
# against harbor's real types, not a scoped ignore.
|
|
392
|
+
run: uv sync --frozen --extra dev --extra uipath --extra codex --extra litellm --extra harbor
|
|
389
393
|
|
|
390
394
|
- name: Check code formatting (ruff format)
|
|
391
395
|
run: .venv/Scripts/ruff format --check src/ tests/
|
|
@@ -469,16 +473,16 @@ jobs:
|
|
|
469
473
|
AWS_BEARER_TOKEN_BEDROCK: ${{ secrets.AWS_BEARER_TOKEN_BEDROCK }}
|
|
470
474
|
AWS_REGION: ${{ secrets.AWS_REGION }}
|
|
471
475
|
BEDROCK_MODEL: ${{ secrets.BEDROCK_MODEL }}
|
|
472
|
-
# tasks_run for --tags smoke-pass.
|
|
476
|
+
# tasks_run for --tags smoke-pass. 8 task files (hello_date, dataset_example,
|
|
473
477
|
# smoke_llm_judge, smoke_agent_judge, byod_smoke_test, agentless_smoke_test,
|
|
474
|
-
# anti_cheat_reference); dataset_example fans out to 2
|
|
475
|
-
# sub-tasks. If you add/remove a smoke-pass task or change
|
|
476
|
-
# count, bump these.
|
|
478
|
+
# anti_cheat_reference, record_cli_responses); dataset_example fans out to 2
|
|
479
|
+
# inline rows, so 9 sub-tasks. If you add/remove a smoke-pass task or change
|
|
480
|
+
# the dataset row count, bump these.
|
|
477
481
|
#
|
|
478
482
|
# anti_cheat_reference lives in a SUBDIRECTORY, which `tasks/*.yaml` does not
|
|
479
483
|
# match — the smoke-pass step names its path explicitly. Keep that in sync.
|
|
480
|
-
EXPECTED_SMOKE_PASS_RUN: "
|
|
481
|
-
EXPECTED_SMOKE_PASS_SUCCEEDED: "
|
|
484
|
+
EXPECTED_SMOKE_PASS_RUN: "9"
|
|
485
|
+
EXPECTED_SMOKE_PASS_SUCCEEDED: "9"
|
|
482
486
|
# smoke-fail bucket: three tasks expected to fail.
|
|
483
487
|
# 1. smoke_negative_path: file_contains criterion is unsatisfiable
|
|
484
488
|
# (sentinel-string regression detection for success-checker).
|
|
@@ -549,6 +553,9 @@ jobs:
|
|
|
549
553
|
# explicitly. anti_cheat_reference is the adversarial probe that the agent
|
|
550
554
|
# cannot read the reference solution during its turn; it needs the
|
|
551
555
|
# coder-eval-agent image built above (it is a driver: docker task).
|
|
556
|
+
# record_cli_responses is the record_cli per-invocation-response probe and
|
|
557
|
+
# is also driver: docker, so it needs that same image; it is flat in
|
|
558
|
+
# tasks/, so the glob already matches it.
|
|
552
559
|
- name: Run smoke-pass bucket (expect all to succeed)
|
|
553
560
|
run: |
|
|
554
561
|
.venv/bin/coder-eval run tasks/*.yaml tasks/anti_cheat_reference/*.yaml \
|
|
@@ -2,6 +2,137 @@
|
|
|
2
2
|
|
|
3
3
|
<!-- version list -->
|
|
4
4
|
|
|
5
|
+
## v0.12.1 (2026-09-12)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Code review fixes for record-cli-review-fixes
|
|
10
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
11
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
12
|
+
|
|
13
|
+
- Resolve py/import-and-import-from CodeQL alerts in test_regrade.py +
|
|
14
|
+
test_detached_grading_boundaries.py ([#161](https://github.com/UiPath/coder_eval/pull/161),
|
|
15
|
+
[`6ab6b87`](https://github.com/UiPath/coder_eval/commit/6ab6b87b6112e5b9122bca86dc328b26f5c29188))
|
|
16
|
+
|
|
17
|
+
- **criteria**: 2/4 — a shim rule fault is an eval-config error, not an agent failure
|
|
18
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
19
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
20
|
+
|
|
21
|
+
- **evaluate**: Close the PR review findings on container-based detached grading
|
|
22
|
+
([#161](https://github.com/UiPath/coder_eval/pull/161),
|
|
23
|
+
[`6ab6b87`](https://github.com/UiPath/coder_eval/commit/6ab6b87b6112e5b9122bca86dc328b26f5c29188))
|
|
24
|
+
|
|
25
|
+
- **evaluate**: Close the review blockers on container-based detached grading
|
|
26
|
+
([#161](https://github.com/UiPath/coder_eval/pull/161),
|
|
27
|
+
[`6ab6b87`](https://github.com/UiPath/coder_eval/commit/6ab6b87b6112e5b9122bca86dc328b26f5c29188))
|
|
28
|
+
|
|
29
|
+
- **harbor**: Address code review findings from full 8-axis review
|
|
30
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
31
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
32
|
+
|
|
33
|
+
- **harbor**: Address PR review blockers (score-integrity, security, drops)
|
|
34
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
35
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
36
|
+
|
|
37
|
+
- **harbor**: Derive a prebuilt image's real WORKDIR instead of guessing /app
|
|
38
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
39
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
40
|
+
|
|
41
|
+
- **harbor**: Suppress pyright reportMissingImports for the harbor package
|
|
42
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
43
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
44
|
+
|
|
45
|
+
- **models**: Reference FlagPredicate at runtime so the cast is a real use
|
|
46
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
47
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
48
|
+
|
|
49
|
+
- **record_cli**: Close three real holes the Copilot review found
|
|
50
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
51
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
52
|
+
|
|
53
|
+
- **record_cli**: Reject an unusable response rule at load, and trace a shim fault
|
|
54
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
55
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
56
|
+
|
|
57
|
+
- **sandbox**: Give the sandbox venv system site packages
|
|
58
|
+
([#162](https://github.com/UiPath/coder_eval/pull/162),
|
|
59
|
+
[`e7d8326`](https://github.com/UiPath/coder_eval/commit/e7d8326ddade4d63305f94238897b39db8af4317))
|
|
60
|
+
|
|
61
|
+
- **test**: Strip ANSI color before asserting --workspace-dir in CLI output
|
|
62
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
63
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
64
|
+
|
|
65
|
+
- **tests**: Harden harbor CLI-error assertions and Windows chmod checks
|
|
66
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
67
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
68
|
+
|
|
69
|
+
- **timing**: Account for generation and tool time on every harness
|
|
70
|
+
([#164](https://github.com/UiPath/coder_eval/pull/164),
|
|
71
|
+
[`87102a3`](https://github.com/UiPath/coder_eval/commit/87102a357546672ae58c9c8474e609a4be3cb681))
|
|
72
|
+
|
|
73
|
+
### Build System
|
|
74
|
+
|
|
75
|
+
- **docker**: Bake the harbor extra into the coder-eval-agent image
|
|
76
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
77
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
78
|
+
|
|
79
|
+
### Continuous Integration
|
|
80
|
+
|
|
81
|
+
- **harbor**: Add Harbor E2E workflow (export + CoderEvalAgent round trip)
|
|
82
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
83
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
84
|
+
|
|
85
|
+
### Features
|
|
86
|
+
|
|
87
|
+
- **evaluate**: Grade a `driver: docker` row inside a container of its own image
|
|
88
|
+
([#161](https://github.com/UiPath/coder_eval/pull/161),
|
|
89
|
+
[`6ab6b87`](https://github.com/UiPath/coder_eval/commit/6ab6b87b6112e5b9122bca86dc328b26f5c29188))
|
|
90
|
+
|
|
91
|
+
- **harbor**: Coder-eval as a Harbor agent (C1.2)
|
|
92
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
93
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
94
|
+
|
|
95
|
+
- **harbor**: Export coder-eval tasks to Harbor, with coder-eval as the grader
|
|
96
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
97
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
98
|
+
|
|
99
|
+
- **harbor**: Export experiment.yaml variants to Harbor task directories
|
|
100
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
101
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
102
|
+
|
|
103
|
+
- **harbor**: Fix agent workspace alignment, env passthrough, and template sources
|
|
104
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
105
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
106
|
+
|
|
107
|
+
- **harbor**: Task.yaml/experiment.yaml → Harbor export + coder-eval as a Harbor agent
|
|
108
|
+
([#166](https://github.com/UiPath/coder_eval/pull/166),
|
|
109
|
+
[`9caffcb`](https://github.com/UiPath/coder_eval/commit/9caffcbbae1feeb498e40c83bf679289caab7148))
|
|
110
|
+
|
|
111
|
+
- **record_cli**: Serve a different canned response per invocation
|
|
112
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
113
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
114
|
+
|
|
115
|
+
### Refactoring
|
|
116
|
+
|
|
117
|
+
- **record_cli**: 1/4 — copy argv_match beside the shim instead of splicing it
|
|
118
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
119
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
120
|
+
|
|
121
|
+
### Testing
|
|
122
|
+
|
|
123
|
+
- Close three harness gaps this review surfaced
|
|
124
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
125
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
126
|
+
|
|
127
|
+
- **lint**: 4/4 — put the record_cli authoring surface under CE030 doc parity
|
|
128
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
129
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
130
|
+
|
|
131
|
+
- **tasks**: 3/4 — add the record_cli per-invocation-response probe
|
|
132
|
+
([#150](https://github.com/UiPath/coder_eval/pull/150),
|
|
133
|
+
[`3aca8e8`](https://github.com/UiPath/coder_eval/commit/3aca8e8010d6beb5147116d07e15118009e81991))
|
|
134
|
+
|
|
135
|
+
|
|
5
136
|
## v0.12.0 (2026-09-09)
|
|
6
137
|
|
|
7
138
|
### Bug Fixes
|