coder-eval 0.12.6__tar.gz → 0.12.8__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.
Files changed (833) hide show
  1. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/harness-candidates.md +10 -0
  2. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/contracts.md +8 -3
  3. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/lint-rules.md +1 -1
  4. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/orchestration.md +17 -0
  5. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/permissions.md +0 -8
  6. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/timing.md +2 -2
  7. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/harbor-e2e.yml +2 -0
  8. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/pr-checks.yml +6 -5
  9. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/publish-testpypi.yml +1 -1
  10. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/release.yml +1 -1
  11. {coder_eval-0.12.6 → coder_eval-0.12.8}/CHANGELOG.md +142 -0
  12. {coder_eval-0.12.6 → coder_eval-0.12.8}/PKG-INFO +5 -5
  13. {coder_eval-0.12.6 → coder_eval-0.12.8}/action.yml +1 -1
  14. {coder_eval-0.12.6 → coder_eval-0.12.8}/docker/Dockerfile +7 -7
  15. {coder_eval-0.12.6 → coder_eval-0.12.8}/docker/Dockerfile.runtime +3 -3
  16. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/DOCKER_ISOLATION.md +39 -0
  17. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/REPORT_SCHEMA.md +13 -7
  18. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/TASK_DEFINITION_GUIDE.md +21 -0
  19. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/ANTIGRAVITY.md +1 -1
  20. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/HARNESS_PARITY.md +5 -4
  21. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +1 -1
  22. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/efficiency-charts.tsx +3 -3
  23. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/window-summary.tsx +4 -4
  24. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
  25. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/criteria.md +1 -0
  26. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/task/SKILL.md +4 -0
  27. {coder_eval-0.12.6 → coder_eval-0.12.8}/pyproject.toml +11 -8
  28. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/__init__.py +1 -1
  29. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/_skills.py +2 -2
  30. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/antigravity_agent.py +47 -14
  31. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/codex_agent.py +43 -0
  32. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/pi_agent.py +2 -2
  33. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/run_task_internal_command.py +13 -0
  34. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/command_executed.py +48 -12
  35. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/agent.py +2 -2
  36. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/isolation/docker_runner.py +91 -47
  37. coder_eval-0.12.8/src/coder_eval/isolation/eval_material.py +58 -0
  38. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/__init__.py +2 -0
  39. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/agent_config.py +1 -1
  40. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/criteria.py +27 -1
  41. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/results.py +9 -0
  42. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/telemetry.py +18 -0
  43. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestrator.py +21 -80
  44. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/simulation/user_simulator.py +5 -1
  45. coder_eval-0.12.8/src/coder_eval/simulation/utterance.py +79 -0
  46. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/collector.py +1 -0
  47. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/events.py +2 -0
  48. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/antigravity_fixtures.py +31 -2
  49. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +1 -0
  50. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +1 -0
  51. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +1 -0
  52. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +1 -0
  53. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +1 -0
  54. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +1 -0
  55. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +1 -0
  56. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +1 -0
  57. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +1 -0
  58. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +1 -0
  59. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +1 -0
  60. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +1 -0
  61. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +1 -0
  62. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +1 -0
  63. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +1 -0
  64. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +1 -0
  65. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +1 -0
  66. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +1 -0
  67. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +1 -0
  68. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +1 -0
  69. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +1 -0
  70. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +2 -1
  71. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +1 -0
  72. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +1 -0
  73. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +1 -0
  74. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +1 -0
  75. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +1 -0
  76. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +1 -0
  77. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +1 -0
  78. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +1 -0
  79. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +1 -0
  80. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +1 -0
  81. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +1 -0
  82. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +1 -0
  83. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/runner.py +1 -1
  84. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_antigravity_agent.py +61 -31
  85. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_codex_agent.py +85 -0
  86. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_command_executed.py +97 -11
  87. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_custom_lint.py +175 -0
  88. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_runner_mounts.py +257 -1
  89. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_early_stop.py +2 -0
  90. coder_eval-0.12.8/tests/test_eval_material.py +147 -0
  91. coder_eval-0.12.8/tests/test_run_task_internal.py +75 -0
  92. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_success_criterion_union.py +25 -0
  93. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timeout_orchestrator.py +83 -0
  94. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timing_identity_contract.py +7 -3
  95. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_user_simulator.py +27 -0
  96. {coder_eval-0.12.6 → coder_eval-0.12.8}/uv.lock +126 -61
  97. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-code-review-full.md +0 -0
  98. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-code-review-wf.md +0 -0
  99. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-code-review.md +0 -0
  100. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-create-plan.md +0 -0
  101. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-implement-plan.md +0 -0
  102. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/commands/coder-eval-review.md +0 -0
  103. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/README.md +0 -0
  104. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/agents.md +0 -0
  105. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/isolation.md +0 -0
  106. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/persistence.md +0 -0
  107. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/notes/reporting.md +0 -0
  108. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/shared/axes.md +0 -0
  109. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/shared/multi-model-review.md +0 -0
  110. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/shared/review-rubric.md +0 -0
  111. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/shared/run-layout.md +0 -0
  112. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/workflows/cr-axis.js +0 -0
  113. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude/workflows/cr-parent.js +0 -0
  114. {coder_eval-0.12.6 → coder_eval-0.12.8}/.claude-plugin/marketplace.json +0 -0
  115. {coder_eval-0.12.6 → coder_eval-0.12.8}/.env.example +0 -0
  116. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/CODEOWNERS +0 -0
  117. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
  118. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  119. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  120. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/actionlint.yaml +0 -0
  121. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/code_review.md +0 -0
  122. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/dependabot.yml +0 -0
  123. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/pages-stub/index.html +0 -0
  124. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
  125. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/scripts/harbor_e2e.py +0 -0
  126. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/scripts/release_notes.py +0 -0
  127. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/claude-pr-review.yml +0 -0
  128. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/codeql.yml +0 -0
  129. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/conventional-commits.yml +0 -0
  130. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/docker-publish.yml +0 -0
  131. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/docs.yml +0 -0
  132. {coder_eval-0.12.6 → coder_eval-0.12.8}/.github/workflows/verify-published-action.yml +0 -0
  133. {coder_eval-0.12.6 → coder_eval-0.12.8}/.gitignore +0 -0
  134. {coder_eval-0.12.6 → coder_eval-0.12.8}/.pre-commit-config.yaml +0 -0
  135. {coder_eval-0.12.6 → coder_eval-0.12.8}/.python-version +0 -0
  136. {coder_eval-0.12.6 → coder_eval-0.12.8}/ADOPTERS.md +0 -0
  137. {coder_eval-0.12.6 → coder_eval-0.12.8}/CLAUDE.md +0 -0
  138. {coder_eval-0.12.6 → coder_eval-0.12.8}/CODE_OF_CONDUCT.md +0 -0
  139. {coder_eval-0.12.6 → coder_eval-0.12.8}/CONTRIBUTING.md +0 -0
  140. {coder_eval-0.12.6 → coder_eval-0.12.8}/LICENSE +0 -0
  141. {coder_eval-0.12.6 → coder_eval-0.12.8}/Makefile +0 -0
  142. {coder_eval-0.12.6 → coder_eval-0.12.8}/NOTICE +0 -0
  143. {coder_eval-0.12.6 → coder_eval-0.12.8}/README.md +0 -0
  144. {coder_eval-0.12.6 → coder_eval-0.12.8}/SECURITY.md +0 -0
  145. {coder_eval-0.12.6 → coder_eval-0.12.8}/comparison.md +0 -0
  146. {coder_eval-0.12.6 → coder_eval-0.12.8}/docker/coder_eval_entrypoint.sh +0 -0
  147. {coder_eval-0.12.6 → coder_eval-0.12.8}/docker/coder_eval_runtime_entrypoint.sh +0 -0
  148. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/AB_EXPERIMENTS.md +0 -0
  149. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/CI_GATE.md +0 -0
  150. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/DATASETS.md +0 -0
  151. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/DIALOG_MODE.md +0 -0
  152. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/EXTENDING.md +0 -0
  153. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/PLUGIN.md +0 -0
  154. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/USER_GUIDE.md +0 -0
  155. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/CLAUDE_CODE.md +0 -0
  156. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/CODEX.md +0 -0
  157. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/DELEGATE.md +0 -0
  158. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/OPENCODE.md +0 -0
  159. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/agents/PI.md +0 -0
  160. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/assets/hero.gif +0 -0
  161. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/comparison.md +0 -0
  162. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/index.md +0 -0
  163. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/llms.txt +0 -0
  164. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/01-first-evaluation.md +0 -0
  165. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/02-ci-pipeline.md +0 -0
  166. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/03-evalboard-local.md +0 -0
  167. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/04-writing-a-task.md +0 -0
  168. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/05-comparing-models.md +0 -0
  169. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/06-use-docker-isolation.md +0 -0
  170. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
  171. {coder_eval-0.12.6 → coder_eval-0.12.8}/docs/tutorials/README.md +0 -0
  172. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/.gitignore +0 -0
  173. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/README.md +0 -0
  174. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
  175. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
  176. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
  177. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
  178. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/col-help.tsx +0 -0
  179. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/collapsible-rail.tsx +0 -0
  180. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/harness-badge.tsx +0 -0
  181. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/harness-selector.tsx +0 -0
  182. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/scroll-table.tsx +0 -0
  183. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/search-box.tsx +0 -0
  184. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/skeleton.tsx +0 -0
  185. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/unit-toggle.tsx +0 -0
  186. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_components/version-list.tsx +0 -0
  187. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
  188. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_lib/source-param.ts +0 -0
  189. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
  190. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
  191. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/daily-chart.tsx +0 -0
  192. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/harness-legend.tsx +0 -0
  193. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/harness-series.ts +0 -0
  194. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/tag-rail.tsx +0 -0
  195. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
  196. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
  197. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/api/download/route.ts +0 -0
  198. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/api/file/route.ts +0 -0
  199. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
  200. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/api/refresh/route.ts +0 -0
  201. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/error.tsx +0 -0
  202. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/globals.css +0 -0
  203. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/icon.png +0 -0
  204. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/layout.tsx +0 -0
  205. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/loading.tsx +0 -0
  206. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/page.tsx +0 -0
  207. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
  208. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/path-to-ga/page.tsx +0 -0
  209. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/path-to-ga/task-table.tsx +0 -0
  210. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/scribe/page.tsx +0 -0
  211. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/scribe/run-table.tsx +0 -0
  212. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
  213. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/trends/actions.ts +0 -0
  214. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/trends/page.tsx +0 -0
  215. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/trends/trends-view.tsx +0 -0
  216. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
  217. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/watchlist/page.tsx +0 -0
  218. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
  219. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/next-env.d.ts +0 -0
  220. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/next.config.mjs +0 -0
  221. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/package.json +0 -0
  222. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/pnpm-lock.yaml +0 -0
  223. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/postcss.config.mjs +0 -0
  224. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/public/harness/antigravity.png +0 -0
  225. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/public/harness/claude-code.png +0 -0
  226. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/public/harness/codex.png +0 -0
  227. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/public/harness/pi.png +0 -0
  228. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/public/uipath.png +0 -0
  229. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/tailwind.config.ts +0 -0
  230. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/tsconfig.json +0 -0
  231. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/vitest.config.ts +0 -0
  232. {coder_eval-0.12.6 → coder_eval-0.12.8}/evalboard/vitest.setup.ts +0 -0
  233. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/default.yaml +0 -0
  234. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/early-stop-ab.yaml +0 -0
  235. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/model-comparison.yaml +0 -0
  236. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/permissions-smoke.yaml +0 -0
  237. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/plugin-comparison.yaml +0 -0
  238. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/prompt-mutations-example.yaml +0 -0
  239. {coder_eval-0.12.6 → coder_eval-0.12.8}/experiments/smoke_variants.yaml +0 -0
  240. {coder_eval-0.12.6 → coder_eval-0.12.8}/litellm/README.md +0 -0
  241. {coder_eval-0.12.6 → coder_eval-0.12.8}/litellm/cost_logger.py +0 -0
  242. {coder_eval-0.12.6 → coder_eval-0.12.8}/litellm/litellm-config.yaml +0 -0
  243. {coder_eval-0.12.6 → coder_eval-0.12.8}/litellm/start-litellm.sh +0 -0
  244. {coder_eval-0.12.6 → coder_eval-0.12.8}/mkdocs.yml +0 -0
  245. {coder_eval-0.12.6 → coder_eval-0.12.8}/osv-scanner.toml +0 -0
  246. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/README.md +0 -0
  247. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/cli-setup.md +0 -0
  248. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/repo-layout.md +0 -0
  249. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/run-layout.md +0 -0
  250. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/task-rubric.md +0 -0
  251. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
  252. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
  253. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
  254. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
  255. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
  256. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/init/SKILL.md +0 -0
  257. {coder_eval-0.12.6 → coder_eval-0.12.8}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
  258. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/check_commit_msg.sh +0 -0
  259. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/README.md +0 -0
  260. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/antigravity.json +0 -0
  261. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/claude-code.json +0 -0
  262. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/codex.json +0 -0
  263. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/opencode.json +0 -0
  264. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/corpus/pi.json +0 -0
  265. {coder_eval-0.12.6 → coder_eval-0.12.8}/scripts/timing/decompose_run.py +0 -0
  266. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/.gitattributes +0 -0
  267. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agent.py +0 -0
  268. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/__init__.py +0 -0
  269. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/_logging.py +0 -0
  270. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/claude_code_agent.py +0 -0
  271. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/delegate/.gitignore +0 -0
  272. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
  273. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/delegate/package.json +0 -0
  274. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/delegate_agent.py +0 -0
  275. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/noop_agent.py +0 -0
  276. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/opencode_agent.py +0 -0
  277. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/registry.py +0 -0
  278. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/agents/watchdog.py +0 -0
  279. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/analysis.py +0 -0
  280. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/argv_match.py +0 -0
  281. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/__init__.py +0 -0
  282. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/console.py +0 -0
  283. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/evaluate_command.py +0 -0
  284. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/evaluate_target.py +0 -0
  285. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/execute_command.py +0 -0
  286. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/export_command.py +0 -0
  287. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/harbor_command.py +0 -0
  288. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/plan_command.py +0 -0
  289. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/report_command.py +0 -0
  290. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/run_command.py +0 -0
  291. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/run_helpers.py +0 -0
  292. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/cli/utils.py +0 -0
  293. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/config.py +0 -0
  294. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/__init__.py +0 -0
  295. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
  296. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/agent_judge.py +0 -0
  297. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/base.py +0 -0
  298. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/classification_match.py +0 -0
  299. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/cli_called.py +0 -0
  300. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/commands_efficiency.py +0 -0
  301. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/file_check.py +0 -0
  302. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/file_contains.py +0 -0
  303. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/file_exists.py +0 -0
  304. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/file_matches_regex.py +0 -0
  305. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/json_check.py +0 -0
  306. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/llm_judge.py +0 -0
  307. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/reference_comparison.py +0 -0
  308. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/run_command.py +0 -0
  309. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/skill_triggered.py +0 -0
  310. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/system_one_judge.py +0 -0
  311. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/criteria/uipath_eval.py +0 -0
  312. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/durations.py +0 -0
  313. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/__init__.py +0 -0
  314. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/agent.py +0 -0
  315. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/budget.py +0 -0
  316. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/categories.py +0 -0
  317. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/categorization.py +0 -0
  318. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/checker_misuse.py +0 -0
  319. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/executor.py +0 -0
  320. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/judge.py +0 -0
  321. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/reference.py +0 -0
  322. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/retry.py +0 -0
  323. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/errors/timeout.py +0 -0
  324. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/__init__.py +0 -0
  325. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/checker.py +0 -0
  326. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
  327. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
  328. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_context.py +0 -0
  329. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_litellm.py +0 -0
  330. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_models.py +0 -0
  331. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_persistence.py +0 -0
  332. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_system_one.py +0 -0
  333. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/judge_usage.py +0 -0
  334. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/sub_agent.py +0 -0
  335. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/summaries.py +0 -0
  336. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
  337. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/evaluation/verdict_tool.py +0 -0
  338. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/formatting.py +0 -0
  339. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/fs_permissions.py +0 -0
  340. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/__init__.py +0 -0
  341. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/agent_paths.py +0 -0
  342. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/atif_emit.py +0 -0
  343. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/atif_hydrate.py +0 -0
  344. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/atif_models.py +0 -0
  345. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/experiment_packager.py +0 -0
  346. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/packager.py +0 -0
  347. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/portability.py +0 -0
  348. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/harbor/reward.py +0 -0
  349. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/invocation_log.py +0 -0
  350. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/isolation/__init__.py +0 -0
  351. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/litellm_cost.py +0 -0
  352. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/logging_config.py +0 -0
  353. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/cli_match.py +0 -0
  354. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/container_context.py +0 -0
  355. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/container_paths.py +0 -0
  356. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/enums.py +0 -0
  357. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/experiment.py +0 -0
  358. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/judge.py +0 -0
  359. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/judge_defaults.py +0 -0
  360. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/limits.py +0 -0
  361. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/merge_strategy.py +0 -0
  362. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/mutations.py +0 -0
  363. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/routing.py +0 -0
  364. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/sandbox.py +0 -0
  365. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/system_one.py +0 -0
  366. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/tasks.py +0 -0
  367. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/models/templates.py +0 -0
  368. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/__init__.py +0 -0
  369. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/batch.py +0 -0
  370. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/config.py +0 -0
  371. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/config_merge.py +0 -0
  372. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/early_stop.py +0 -0
  373. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/evaluation.py +0 -0
  374. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/experiment.py +0 -0
  375. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/overrides.py +0 -0
  376. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/regrade.py +0 -0
  377. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/run_limits.py +0 -0
  378. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
  379. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/orchestration/task_loader.py +0 -0
  380. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/path_utils.py +0 -0
  381. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/plugins.py +0 -0
  382. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/pricing.py +0 -0
  383. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/py.typed +0 -0
  384. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/__init__.py +0 -0
  385. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/experiment.py +0 -0
  386. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/helpers.py +0 -0
  387. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/html.py +0 -0
  388. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/junit.py +0 -0
  389. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/reports/markdown.py +0 -0
  390. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/resources/__init__.py +0 -0
  391. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
  392. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/resources/tags.yaml +0 -0
  393. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/result_metrics.py +0 -0
  394. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/run_record.py +0 -0
  395. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/sandbox.py +0 -0
  396. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/__init__.py +0 -0
  397. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/ast_similarity.py +0 -0
  398. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/complexity.py +0 -0
  399. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/quality.py +0 -0
  400. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/signature_similarity.py +0 -0
  401. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/similarity.py +0 -0
  402. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/scoring/token_similarity.py +0 -0
  403. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/simulation/__init__.py +0 -0
  404. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/simulation/termination.py +0 -0
  405. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/stats.py +0 -0
  406. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/__init__.py +0 -0
  407. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/callbacks.py +0 -0
  408. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/renderers.py +0 -0
  409. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/streaming/wire.py +0 -0
  410. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/telemetry.py +0 -0
  411. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/timing.py +0 -0
  412. {coder_eval-0.12.6 → coder_eval-0.12.8}/src/coder_eval/utils.py +0 -0
  413. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/README.md +0 -0
  414. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agentless_smoke_test.yaml +0 -0
  415. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/antigravity_hello_world.yaml +0 -0
  416. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
  417. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/claude_hello_world.yaml +0 -0
  418. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/claude_hello_world_docker.yaml +0 -0
  419. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
  420. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/claude_subagent_test.yaml +0 -0
  421. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
  422. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_hello_world.yaml +0 -0
  423. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_parallel_commands.yaml +0 -0
  424. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
  425. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_skills_test.yaml +0 -0
  426. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_string_utils.yaml +0 -0
  427. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/codex_subagent_test.yaml +0 -0
  428. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/subagent_bash_long_input.yaml +0 -0
  429. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/agents/subagent_merge_sort.yaml +0 -0
  430. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
  431. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/anti_cheat_reference/reference/solution.py +0 -0
  432. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/byod_smoke_test.yaml +0 -0
  433. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dataset_example.yaml +0 -0
  434. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/datasets/sentiment.jsonl +0 -0
  435. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
  436. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/delegate/hello_date_delegate.yaml +0 -0
  437. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
  438. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
  439. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
  440. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/environment/input.txt +0 -0
  441. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
  442. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
  443. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
  444. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
  445. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
  446. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/fibonacci_with_template.yaml +0 -0
  447. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/hello_date.yaml +0 -0
  448. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/inline_starter_example.yaml +0 -0
  449. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/internal/session_resumption.yaml +0 -0
  450. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_smoke.yaml +0 -0
  451. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
  452. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
  453. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
  454. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
  455. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
  456. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/opencode_smoke_test.yaml +0 -0
  457. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/pi_smoke_test.yaml +0 -0
  458. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
  459. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/record_cli_responses.yaml +0 -0
  460. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/run_limits/max_turns_cap.yaml +0 -0
  461. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/run_limits/turn_timeout.yaml +0 -0
  462. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
  463. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
  464. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
  465. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
  466. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
  467. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
  468. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/README.md +0 -0
  469. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
  470. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
  471. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
  472. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
  473. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
  474. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
  475. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
  476. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
  477. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
  478. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
  479. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/sentiment_classification.yaml +0 -0
  480. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_agent_judge.yaml +0 -0
  481. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_budget_exceeded.yaml +0 -0
  482. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
  483. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_llm_judge.yaml +0 -0
  484. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_negative_path.yaml +0 -0
  485. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_system_one_judge.yaml +0 -0
  486. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_task_timeout.yaml +0 -0
  487. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/smoke_variants.yaml +0 -0
  488. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/test_sandbox.yaml +0 -0
  489. {coder_eval-0.12.6 → coder_eval-0.12.8}/tasks/token_check.yaml +0 -0
  490. {coder_eval-0.12.6 → coder_eval-0.12.8}/templates/byod_smoke_test/Dockerfile +0 -0
  491. {coder_eval-0.12.6 → coder_eval-0.12.8}/templates/fibonacci-starter/README.md +0 -0
  492. {coder_eval-0.12.6 → coder_eval-0.12.8}/templates/fibonacci-starter/src/main.py +0 -0
  493. {coder_eval-0.12.6 → coder_eval-0.12.8}/templates/fibonacci-starter/tests/test_main.py +0 -0
  494. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/__init__.py +0 -0
  495. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_bracket_clock.py +0 -0
  496. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_container_contract.py +0 -0
  497. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/__init__.py +0 -0
  498. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/__init__.py +0 -0
  499. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/_scrub.py +0 -0
  500. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
  501. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
  502. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
  503. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
  504. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
  505. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
  506. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
  507. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
  508. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
  509. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
  510. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
  511. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
  512. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
  513. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
  514. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
  515. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/live_criteria.py +0 -0
  516. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/__init__.py +0 -0
  517. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
  518. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
  519. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
  520. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
  521. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/run_full.md +0 -0
  522. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
  523. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_fixtures/timing_union_cases.json +0 -0
  524. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/_path_helpers.py +0 -0
  525. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/conftest.py +0 -0
  526. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/__init__.py +0 -0
  527. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/atif/known_good_trajectory.json +0 -0
  528. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
  529. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
  530. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/mock_agent.py +0 -0
  531. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/pi_happy_stream.jsonl +0 -0
  532. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
  533. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
  534. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
  535. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/fixtures/text_stub_agent.py +0 -0
  536. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
  537. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
  538. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
  539. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
  540. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/__init__.py +0 -0
  541. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/action_docs.py +0 -0
  542. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/agent_roster_parity.py +0 -0
  543. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/dead_config_fields.py +0 -0
  544. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/doc_env_parity.py +0 -0
  545. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/doc_examples.py +0 -0
  546. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/doc_indexes.py +0 -0
  547. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/doc_schema_parity.py +0 -0
  548. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/generated.py +0 -0
  549. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/live_verdict_contract.py +0 -0
  550. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/plugin_manifest_parity.py +0 -0
  551. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/plugin_reference.py +0 -0
  552. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/pricing_mirror.py +0 -0
  553. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/prose_budget.py +0 -0
  554. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/pyright_config.py +0 -0
  555. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/__init__.py +0 -0
  556. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/_layers.py +0 -0
  557. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/_model_ctor.py +0 -0
  558. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/base.py +0 -0
  559. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
  560. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
  561. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
  562. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
  563. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
  564. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
  565. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
  566. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
  567. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
  568. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
  569. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
  570. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
  571. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
  572. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
  573. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
  574. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
  575. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
  576. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
  577. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
  578. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce051_no_driver_override.py +0 -0
  579. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
  580. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
  581. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
  582. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
  583. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
  584. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
  585. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
  586. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce060_message_id_declared.py +0 -0
  587. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
  588. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
  589. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
  590. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
  591. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_agent_timing_access.py +0 -0
  592. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
  593. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
  594. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_silent_except.py +0 -0
  595. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_submodule_model_imports.py +0 -0
  596. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
  597. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
  598. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
  599. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/open_explicit_encoding.py +0 -0
  600. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
  601. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/register_criterion_required.py +0 -0
  602. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
  603. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
  604. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/violation.py +0 -0
  605. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/lint/workflow_outputs.py +0 -0
  606. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_action_inputs.py +0 -0
  607. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_action_version_pin.py +0 -0
  608. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent.py +0 -0
  609. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_config_no_timing_fields.py +0 -0
  610. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_config_optional_type.py +0 -0
  611. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_config_registry_dispatch.py +0 -0
  612. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_config_sdk_decoupling.py +0 -0
  613. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_golden_master.py +0 -0
  614. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_judge_criterion.py +0 -0
  615. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_telemetry.py +0 -0
  616. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_telemetry_advanced.py +0 -0
  617. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agent_timeout.py +0 -0
  618. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_agentless.py +0 -0
  619. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_atif_emit.py +0 -0
  620. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_atif_hydrate.py +0 -0
  621. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_atif_models.py +0 -0
  622. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_byoa_plugin.py +0 -0
  623. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_byoa_plugin_live.py +0 -0
  624. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_byod_feature.py +0 -0
  625. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_check_all_async.py +0 -0
  626. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_checker_logging.py +0 -0
  627. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_classification_match.py +0 -0
  628. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_claude_settings_enforcement_live.py +0 -0
  629. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cleanup_preservation_guard.py +0 -0
  630. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_backend_flag.py +0 -0
  631. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_called_criterion.py +0 -0
  632. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_empty_glob.py +0 -0
  633. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_match_parity.py +0 -0
  634. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_sdk_options.py +0 -0
  635. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_set_overrides.py +0 -0
  636. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_telemetry.py +0 -0
  637. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cli_type_flag.py +0 -0
  638. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_code_review_bugs.py +0 -0
  639. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_codex_agent_live.py +0 -0
  640. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_codex_agent_unit.py +0 -0
  641. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_codex_token_mapping.py +0 -0
  642. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_command_statistics.py +0 -0
  643. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_command_telemetry_result_data.py +0 -0
  644. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_commands_efficiency.py +0 -0
  645. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_config_lineage.py +0 -0
  646. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_config_merge_engine.py +0 -0
  647. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_config_precedence.py +0 -0
  648. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_container_context.py +0 -0
  649. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_continuous_scoring.py +0 -0
  650. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_cost_accounting_paths.py +0 -0
  651. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_criterion_result_round_trip.py +0 -0
  652. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_dataset_expansion.py +0 -0
  653. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_debug_logging.py +0 -0
  654. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_delegate_agent.py +0 -0
  655. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_delegate_agent_config.py +0 -0
  656. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_delegate_agent_live.py +0 -0
  657. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_delegate_agent_registration.py +0 -0
  658. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_detached_grading_boundaries.py +0 -0
  659. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_detached_grading_guards.py +0 -0
  660. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_build_failure.py +0 -0
  661. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_litellm_env.py +0 -0
  662. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_runner_container_death.py +0 -0
  663. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_runner_stream_limit.py +0 -0
  664. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_wildcard_env.py +0 -0
  665. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_docker_workdir_live.py +0 -0
  666. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_driver_resolver.py +0 -0
  667. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_durations.py +0 -0
  668. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_error_handling.py +0 -0
  669. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_evaluate_command.py +0 -0
  670. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_evaluate_format_harbor.py +0 -0
  671. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_evaluate_target.py +0 -0
  672. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_evaluator.py +0 -0
  673. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_event_collector.py +0 -0
  674. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_execute_command.py +0 -0
  675. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_execute_evaluate_loop.py +0 -0
  676. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_execute_format_harbor.py +0 -0
  677. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_cli.py +0 -0
  678. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_loader.py +0 -0
  679. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_models.py +0 -0
  680. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_reports.py +0 -0
  681. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_resolver.py +0 -0
  682. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_experiment_runner.py +0 -0
  683. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_file_check.py +0 -0
  684. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_file_contains_scoring.py +0 -0
  685. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_formatting.py +0 -0
  686. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_git_clone_failure.py +0 -0
  687. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_glob_paths_in_file_criteria.py +0 -0
  688. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_agent.py +0 -0
  689. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_e2e_fixtures.py +0 -0
  690. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_experiment_packager.py +0 -0
  691. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_export_golden.py +0 -0
  692. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_packager.py +0 -0
  693. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_portability.py +0 -0
  694. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_harbor_reward.py +0 -0
  695. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_heartbeat_watchdog.py +0 -0
  696. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_ignore_patterns_negation.py +0 -0
  697. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_image_from_dockerfiles.py +0 -0
  698. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_image_skew_refusal.py +0 -0
  699. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_integration.py +0 -0
  700. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_json_check.py +0 -0
  701. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_anthropic.py +0 -0
  702. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_bedrock.py +0 -0
  703. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_burn_in_live.py +0 -0
  704. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_context_builder.py +0 -0
  705. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_litellm.py +0 -0
  706. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_models.py +0 -0
  707. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_persistence.py +0 -0
  708. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_judge_system_one.py +0 -0
  709. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_lint_no_top_level_run_limits.py +0 -0
  710. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_lint_runner.py +0 -0
  711. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_litellm_config.py +0 -0
  712. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_litellm_cost.py +0 -0
  713. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_litellm_cost_logger.py +0 -0
  714. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_litellm_judge_live.py +0 -0
  715. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_litellm_route.py +0 -0
  716. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_llm_judge_criterion.py +0 -0
  717. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_log_tail_buffer.py +0 -0
  718. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_logging.py +0 -0
  719. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_logging_isolation.py +0 -0
  720. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_merge_characterization.py +0 -0
  721. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_merge_strategy_annotations.py +0 -0
  722. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_merge_unification.py +0 -0
  723. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_models.py +0 -0
  724. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_mutations.py +0 -0
  725. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_new_criteria.py +0 -0
  726. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_node_env_config.py +0 -0
  727. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_opencode_agent.py +0 -0
  728. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_optional_dependencies.py +0 -0
  729. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_orchestrator.py +0 -0
  730. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_orchestrator_error_log_tail.py +0 -0
  731. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_orchestrator_telemetry.py +0 -0
  732. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_overrides_engine.py +0 -0
  733. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_parallel.py +0 -0
  734. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_path_utils.py +0 -0
  735. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pi_agent.py +0 -0
  736. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pi_agent_config.py +0 -0
  737. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pi_smoke_task.py +0 -0
  738. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_plan_command.py +0 -0
  739. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_plugin_processing.py +0 -0
  740. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_plugins.py +0 -0
  741. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_post_run.py +0 -0
  742. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pr_review_workflow.py +0 -0
  743. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pre_run.py +0 -0
  744. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_preservation_mode.py +0 -0
  745. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pricing_mirror.py +0 -0
  746. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_pricing_registry.py +0 -0
  747. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_prose_budget.py +0 -0
  748. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_prose_budget_commands.py +0 -0
  749. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reference_comparison_scoring.py +0 -0
  750. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reference_evaluator.py +0 -0
  751. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reference_missing_file.py +0 -0
  752. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reference_models.py +0 -0
  753. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reference_permissions.py +0 -0
  754. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_registry.py +0 -0
  755. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_regrade.py +0 -0
  756. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_release_notes.py +0 -0
  757. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_replicate_stats.py +0 -0
  758. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_report_command.py +0 -0
  759. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reports.py +0 -0
  760. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reports_html.py +0 -0
  761. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reports_junit.py +0 -0
  762. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_reports_package.py +0 -0
  763. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_resolve_task_files.py +0 -0
  764. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_result_metrics.py +0 -0
  765. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_resume.py +0 -0
  766. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_retry_logic_comprehensive.py +0 -0
  767. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_route_seam_exhaustiveness.py +0 -0
  768. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_routing.py +0 -0
  769. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_command_junit.py +0 -0
  770. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_command_stdout.py +0 -0
  771. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_helpers.py +0 -0
  772. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_limits_models.py +0 -0
  773. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_limits_orchestrator.py +0 -0
  774. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_limits_resolver.py +0 -0
  775. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_metrics.py +0 -0
  776. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_record.py +0 -0
  777. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_run_summary_rebuild.py +0 -0
  778. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_runtime_tool_versions.py +0 -0
  779. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox.py +0 -0
  780. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_adopt.py +0 -0
  781. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_layer_builder.py +0 -0
  782. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_optional.py +0 -0
  783. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_record_cli.py +0 -0
  784. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_security.py +0 -0
  785. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_symlink_preservation.py +0 -0
  786. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_templates.py +0 -0
  787. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sandbox_venv_live.py +0 -0
  788. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_scorers.py +0 -0
  789. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_scoring_quality.py +0 -0
  790. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sdk_option_classification.py +0 -0
  791. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_seed_from_prior_result.py +0 -0
  792. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_simulation_config.py +0 -0
  793. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_simulation_integration.py +0 -0
  794. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_simulation_termination.py +0 -0
  795. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_simulation_trials.py +0 -0
  796. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_skill_triggered.py +0 -0
  797. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_stats.py +0 -0
  798. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_stats_nonfinite.py +0 -0
  799. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_agent_integration.py +0 -0
  800. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_batch.py +0 -0
  801. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_callbacks.py +0 -0
  802. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_cli.py +0 -0
  803. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_events.py +0 -0
  804. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_orchestrator.py +0 -0
  805. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_renderers.py +0 -0
  806. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_streaming_wire.py +0 -0
  807. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_sub_agent_runner.py +0 -0
  808. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_suite_rollup.py +0 -0
  809. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_summaries.py +0 -0
  810. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_system_one_judge.py +0 -0
  811. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_system_one_judge_live.py +0 -0
  812. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_tags.py +0 -0
  813. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_task_definition_unknown_fields.py +0 -0
  814. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_teardown_interrupt.py +0 -0
  815. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_telemetry.py +0 -0
  816. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_template_env_expansion.py +0 -0
  817. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_threshold_enforcement.py +0 -0
  818. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timeout_batch.py +0 -0
  819. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timeout_categorization.py +0 -0
  820. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timeout_exceptions.py +0 -0
  821. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timeout_models.py +0 -0
  822. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timing_close_window.py +0 -0
  823. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_timing_union_parity.py +0 -0
  824. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_token_usage.py +0 -0
  825. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_uipath_eval.py +0 -0
  826. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_ungraded_reporting.py +0 -0
  827. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_utils.py +0 -0
  828. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_utterance_extraction.py +0 -0
  829. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_variant_prompt_file.py +0 -0
  830. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_verdict_tool.py +0 -0
  831. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_verify_published_workflow.py +0 -0
  832. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_watchdog.py +0 -0
  833. {coder_eval-0.12.6 → coder_eval-0.12.8}/tests/test_yaml_migration.py +0 -0
@@ -1022,3 +1022,13 @@ re-derive from scratch.
1022
1022
  have, and it is a recurring class ONLY within one file so far — worth promoting to a rule
1023
1023
  if a second subprocess-driven agent repeats it. Caught in: final cross-phase review,
1024
1024
  delegate agent port.
1025
+
1026
+ ## From 2026-09-26 Antigravity SDK 0.1.18 usage regression
1027
+
1028
+ - [ ] Runtime guard: fail an Antigravity turn that ran MODEL steps but booked zero
1029
+ tokens, as OpenCode's `require_token_telemetry` does. SDK 0.1.18 deprecated
1030
+ `Step.usage_metadata` (usage moved to `conversation.total_usage`), so every
1031
+ Antigravity turn from `3aa2db30` on reported no tokens and no cost, and `api_calls`
1032
+ stayed at 1 so `max_turns` never tripped — all silently, with `make verify` green.
1033
+ A static rule cannot see an SDK field go dead; a live-telemetry smoke (one real turn,
1034
+ assert `token_usage` is non-empty) in the harness-bump checklist would have.
@@ -95,9 +95,14 @@ the raw text alone can stop counting.
95
95
  It is memoized because the early-stop watcher re-scans the whole accumulated trajectory on
96
96
  every tool-call event, normalizing the same command many times per run.
97
97
 
98
- The regex search window is capped to bound ReDoS on a large command string, and
99
- normalization runs over that same truncated window, so `shlex` never sees more than the cap
100
- and needs no separate guard.
98
+ Each regex search is bounded to 2000 characters to limit ReDoS on a large command string,
99
+ but the whole command is searched: the first 2000 characters, then the rest in windows that
100
+ start and end on logical-line boundaries. Agents write long heredoc scripts that end in the
101
+ command a task checks for (`cat > x <<EOF ... EOF` then `uip agent validate`), and a single
102
+ leading window scored those as never run. Normalization runs per window, so `shlex` never
103
+ sees more than the bound and needs no separate guard. Only a Bash command is windowed:
104
+ another tool's params are JSON, and a later window of a Write/Edit body is file content,
105
+ not a command the agent ran, so those keep the single leading window.
101
106
 
102
107
  ## Recording a CLI invocation
103
108
 
@@ -667,7 +667,7 @@ shipped. An id is a permanent documentation anchor: a suppression comment carryi
667
667
  an older branch, review or commit message must never start meaning something new. CE023 is
668
668
  retired the same way, after the rule was deleted with the package it guarded.
669
669
 
670
- Claim 068 next, and note 065 IS TAKEN without being in `ALL_RULES`: doc-surface and
670
+ Claim 069 next, and note 065 IS TAKEN without being in `ALL_RULES`: doc-surface and
671
671
  whole-tree rules are `@pytest.mark.lint` classes in `tests/test_custom_lint.py` rather than
672
672
  `BaseRule`s, so `runner.py`'s uniqueness assert cannot see them. Enumerating them in a
673
673
  comment is how that note fell behind CE044, so grep instead:
@@ -108,6 +108,23 @@ VERDICT, never the facts — the seeding cannot restore a fact the execute phase
108
108
  captured. The budget gate runs AFTER the criteria on the graded path purely for
109
109
  partial-credit visibility, and there is no partial credit under `execute`.
110
110
 
111
+ ### Post-failure evidence is declared, not proven
112
+
113
+ A timed-out run used to score 0.00 on artifacts that every grader accepted, because the
114
+ whole uipath-maestro-flow suite grades through `run_command` and the path ran only file
115
+ checks. `read_only: true` admits a single named command.
116
+
117
+ The gate could not stay a ClassVar: `run_command` is safe or unsafe per criterion, not
118
+ per type, and no analysis decides which — an arbitrary shell command can start a cloud
119
+ job (`uip maestro flow debug` does). So the flag is the AUTHOR's claim, the ClassVar
120
+ stayed the type-level answer, and `evaluable_after_agent_failure` became the per-instance
121
+ one every caller asks. Widening the flag to the base would let a judge declare itself
122
+ deterministic, which is a different and false claim.
123
+
124
+ What keeps it honest: results land in `post_failure_criteria_results`, which
125
+ `calculate_weighted_score` never reads. A timed-out run stays ERROR at 0.0 no matter what
126
+ the diagnostic pass finds — the flag buys evidence, never a verdict.
127
+
111
128
  ### Rates need verdict evidence, not bucket counts
112
129
 
113
130
  A published rate divides by rows that actually carry a verdict, not by a bucket count. The
@@ -29,10 +29,6 @@ read-write throwaway copy; when it was bind-mounted `:ro` the chmod returned ERO
29
29
  no tmpfs mask and has not been one since: see
30
30
  [isolation.md](isolation.md) § Why the framework mounts are writable copies.
31
31
 
32
- What the window does NOT hide is the task DEFINITION. `task.yaml` is also staged at
33
- `/work/input` for the in-container orchestrator and that mount is untouched, so hiding the
34
- criteria from the agent remains a separate, unsolved problem.
35
-
36
32
  Criteria address reference files with the `$REFERENCE_DIR` token (same resolver as
37
33
  `$TASK_DIR`) and the `REFERENCE_DIR` env var for `run_command`; `reference_comparison` names
38
34
  one file via `reference_file`.
@@ -64,10 +60,6 @@ criteria and judges run. The task directory is shielded by the same window: unde
64
60
  it is mounted as a throwaway COPY at a fixed container path, which is what makes it
65
61
  chmod-able without touching the user's checked-out `tasks/` tree.
66
62
 
67
- It shields grading MATERIAL that happens to live in the task directory (a `reference/`
68
- subdirectory, fixtures), not the task DEFINITION: `task.yaml` is separately staged at
69
- `/work/input`, which the agent can still read.
70
-
71
63
  ### Why a stack and not a refcount
72
64
 
73
65
  Windows nest with *different* modes, so what an exit has to restore is the mode of the
@@ -401,8 +401,8 @@ and the tail are already computed.
401
401
 
402
402
  A reducer's only remaining timing decision is where its window opens, which is the one
403
403
  genuinely harness-shaped part: two interleave a tool into a single window outright
404
- (Antigravity, whose Step for the tool arrives and only a later `usage_metadata` Step cuts
405
- the message, and Codex, whose `_flush_message` window extends to the last item's
404
+ (Antigravity, whose Step for the tool arrives and only a later rise in the conversation's
405
+ billed usage cuts the message, and Codex, whose `_flush_message` window extends to the last item's
406
406
  `completed_at_ms`) while the other three tile the turn contiguously, so a call open at a
407
407
  boundary runs inside two windows. Central subtraction handles both without either reducer
408
408
  knowing which it is.
@@ -29,6 +29,8 @@ env:
29
29
  # Anthropic-credit spend off this path; DirectRoute is exercised elsewhere.
30
30
  API_BACKEND: "bedrock"
31
31
  CLAUDE_CODE_USE_BEDROCK: "1"
32
+ # Same expression as pr-checks.yml (see the comment there).
33
+ SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }},claude-agent-sdk
32
34
 
33
35
  jobs:
34
36
  harbor-e2e:
@@ -38,11 +38,12 @@ env:
38
38
  TELEMETRY_ENABLED: "false"
39
39
  # The `uipath-*` pool enforces a minimum package-age safe-chain check on installs.
40
40
  # Workflow-level so every installing job inherits it; per-job copies are how some
41
- # jobs previously ended up with no exclusions at all. The literal is the operative
42
- # value — no secret of that name exists at repo or org level, so the bare `secrets.`
43
- # reference this replaced resolved to an empty list. (Image builds carry their own
44
- # list in docker/Dockerfile; deliberately not the same set.)
45
- SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
41
+ # jobs previously ended up with no exclusions at all. A repo secret of this name
42
+ # replaces the literal when set, so claude-agent-sdk sits outside the `||`: its wheel
43
+ # bundles the Claude Code CLI, and new-model support ships there faster than the
44
+ # gate window. (Image builds carry their own list in docker/Dockerfile; deliberately
45
+ # not the same set.)
46
+ SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }},claude-agent-sdk
46
47
 
47
48
  jobs:
48
49
  quality-gate:
@@ -38,7 +38,7 @@ jobs:
38
38
  timeout-minutes: 10
39
39
  env:
40
40
  # `uv build` resolves build deps under the pool's safe-chain gate.
41
- SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
41
+ SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }},claude-agent-sdk
42
42
  environment:
43
43
  name: testpypi
44
44
  url: https://test.pypi.org/project/coder-eval/
@@ -75,7 +75,7 @@ jobs:
75
75
  # Load-bearing on the release path: the pool enforces a package-age safe-chain
76
76
  # check on uv installs. Same expression as pr-checks.yml (see the comment there),
77
77
  # so a package can't pass PR CI and then fail the release install.
78
- SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }}
78
+ SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS: ${{ secrets.SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS || 'openai-codex-cli-bin,openai-codex' }},claude-agent-sdk
79
79
 
80
80
  steps:
81
81
  # Only a real release (main) needs the app token: semantic-release pushes the
@@ -2,6 +2,148 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.12.8 (2026-09-29)
6
+
7
+ ### Bug Fixes
8
+
9
+ - Also delete context.json in-container (source_yaml leaked criteria)
10
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
11
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
12
+
13
+ - **anti-cheat**: Apply multi-model review findings M1/M2/M3 + doc drift
14
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
15
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
16
+
17
+ - **anti-cheat**: Apply review Low findings L1/L2/L3
18
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
19
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
20
+
21
+ - **antigravity**: Read token usage from the conversation, not the Step
22
+ ([#201](https://github.com/UiPath/coder_eval/pull/201),
23
+ [`101bb5c`](https://github.com/UiPath/coder_eval/commit/101bb5c85c5af97f8027388611dd70e7e7e0ecc8))
24
+
25
+ - **codex**: Record provider error notifications on the turn
26
+ ([#203](https://github.com/UiPath/coder_eval/pull/203),
27
+ [`894f742`](https://github.com/UiPath/coder_eval/commit/894f74282c8f32918cc995fb4b2517f8984c4ed2))
28
+
29
+ - **docker**: Close two driver:docker channels that leaked grading material to the agent
30
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
31
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
32
+
33
+ - **simulation**: Send the simulated user's utterance, not its tagged transcript
34
+ ([#204](https://github.com/UiPath/coder_eval/pull/204),
35
+ [`ffb9a81`](https://github.com/UiPath/coder_eval/commit/ffb9a8198a1af73904fabb0c8b3251a978351ab0))
36
+
37
+ ### Documentation
38
+
39
+ - **harness**: Log deferred Low findings from anti-cheat review
40
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
41
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
42
+
43
+ ### Features
44
+
45
+ - **lint**: 3/3 — CE065 flags eval material inside a skill dir
46
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
47
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
48
+
49
+ - **sandbox**: 1/3 — delete staged task.yaml in-container after load (anti-cheat)
50
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
51
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
52
+
53
+ - **sandbox**: 2/3 — allowlist tmpfs-mask of auto-mounted plugin trees
54
+ ([#179](https://github.com/UiPath/coder_eval/pull/179),
55
+ [`ddf63e9`](https://github.com/UiPath/coder_eval/commit/ddf63e9b356a6c40a83ca5771a3ffd3a1e8dfd68))
56
+
57
+
58
+ ## v0.12.7 (2026-09-25)
59
+
60
+ ### Bug Fixes
61
+
62
+ - **criteria**: Search past the 2000-char bound only in Bash commands
63
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
64
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
65
+
66
+ - **criteria**: Search the whole command in command_executed and bump harness SDKs for Opus 5.5
67
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
68
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
69
+
70
+ - **criteria**: Search the whole command in command_executed, not just the first 2000 chars
71
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
72
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
73
+
74
+ - **docs**: Drop the budget-breach trigger, cut read_only to its contract
75
+ ([#197](https://github.com/UiPath/coder_eval/pull/197),
76
+ [`28c846e`](https://github.com/UiPath/coder_eval/commit/28c846ea6858fef04d366d245e5f7b679c2b75a1))
77
+
78
+ - **evalboard**: List date-named runs flagged adhoc in the Ad-hoc section
79
+ ([#200](https://github.com/UiPath/coder_eval/pull/200),
80
+ [`5bf4a72`](https://github.com/UiPath/coder_eval/commit/5bf4a72693f007e93da678b58e0ddb84fa1bf63c))
81
+
82
+ - **harbor**: Declare SUPPORTS_ATIF as a ClassVar to match harbor 0.23
83
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
84
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
85
+
86
+ ### Build System
87
+
88
+ - **deps**: Bump harness SDKs and CLIs to latest
89
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
90
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
91
+
92
+ - **deps**: Exempt claude-agent-sdk from the 48h package-age gate and take the latest SDK
93
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
94
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
95
+
96
+ - **deps**: Hold the SDK bump to releases past CI's 48h package-age gate
97
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
98
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
99
+
100
+ ### Continuous Integration
101
+
102
+ - **harbor**: Exempt claude-agent-sdk from the package-age gate in Harbor E2E
103
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
104
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
105
+
106
+ ### Documentation
107
+
108
+ - **agents**: Update Pi and Antigravity references for the harness bump
109
+ ([#196](https://github.com/UiPath/coder_eval/pull/196),
110
+ [`3aa2db3`](https://github.com/UiPath/coder_eval/commit/3aa2db30cdb07e47ca2cce98b47385eedb2de9cd))
111
+
112
+ - **criteria**: Name the budget-breach trigger on the post-failure path
113
+ ([#197](https://github.com/UiPath/coder_eval/pull/197),
114
+ [`28c846e`](https://github.com/UiPath/coder_eval/commit/28c846ea6858fef04d366d245e5f7b679c2b75a1))
115
+
116
+ ### Features
117
+
118
+ - **criteria**: Let a run_command criterion opt in to post-failure grading
119
+ ([#197](https://github.com/UiPath/coder_eval/pull/197),
120
+ [`28c846e`](https://github.com/UiPath/coder_eval/commit/28c846ea6858fef04d366d245e5f7b679c2b75a1))
121
+
122
+ - **evalboard**: Count agent time apart from eval overhead, and filter runs by variant
123
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
124
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
125
+
126
+ - **evalboard**: Headline agent time per passed task, not full task wall clock
127
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
128
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
129
+
130
+ - **evalboard**: Show agent time on the run page and filter it by variant
131
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
132
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
133
+
134
+ - **evalboard**: Show summed agent time in the overview window tile
135
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
136
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
137
+
138
+ - **evalboard**: Simplify the task timing strip into one bar and two groups
139
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
140
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
141
+
142
+ - **evalboard**: Split the task timeline into agent time and eval overhead
143
+ ([#198](https://github.com/UiPath/coder_eval/pull/198),
144
+ [`b04829c`](https://github.com/UiPath/coder_eval/commit/b04829c4dec86772822a28ef1b3fa7316c1f3c8d))
145
+
146
+
5
147
  ## v0.12.6 (2026-09-23)
6
148
 
7
149
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: coder-eval
3
- Version: 0.12.6
3
+ Version: 0.12.8
4
4
  Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites.
5
5
  Project-URL: Homepage, https://coder-eval.com
6
6
  Project-URL: Repository, https://github.com/UiPath/coder_eval
@@ -26,7 +26,7 @@ Requires-Python: >=3.13
26
26
  Requires-Dist: anthropic<2.0.0,>=1.0.0
27
27
  Requires-Dist: anyio>=4.14.2
28
28
  Requires-Dist: azure-monitor-opentelemetry-exporter<1.1.0,>=1.0.0b30
29
- Requires-Dist: claude-agent-sdk>=0.2.124
29
+ Requires-Dist: claude-agent-sdk>=0.2.157
30
30
  Requires-Dist: click>=8.3.3
31
31
  Requires-Dist: httpx2<3.0.0,>=2.12.0
32
32
  Requires-Dist: jmespath>=1.1.0
@@ -43,9 +43,9 @@ Requires-Dist: tomli-w>=1.0.0
43
43
  Requires-Dist: tqdm>=4.67.3
44
44
  Requires-Dist: typer>=0.24.1
45
45
  Provides-Extra: antigravity
46
- Requires-Dist: google-antigravity==0.1.8; extra == 'antigravity'
46
+ Requires-Dist: google-antigravity==0.1.18; extra == 'antigravity'
47
47
  Provides-Extra: codex
48
- Requires-Dist: openai-codex>=0.144.4; extra == 'codex'
48
+ Requires-Dist: openai-codex>=0.155.1; extra == 'codex'
49
49
  Provides-Extra: dev
50
50
  Requires-Dist: bandit[toml]>=1.9.4; extra == 'dev'
51
51
  Requires-Dist: defusedxml>=0.7.1; extra == 'dev'
@@ -60,7 +60,7 @@ Requires-Dist: pytest-xdist[psutil]>=3.0.0; extra == 'dev'
60
60
  Requires-Dist: pytest>=9.0.2; extra == 'dev'
61
61
  Requires-Dist: ruff>=0.15.7; extra == 'dev'
62
62
  Provides-Extra: harbor
63
- Requires-Dist: harbor==0.22.0; extra == 'harbor'
63
+ Requires-Dist: harbor==0.23.0; extra == 'harbor'
64
64
  Provides-Extra: litellm
65
65
  Requires-Dist: litellm<2.0.0,>=1.95.0; extra == 'litellm'
66
66
  Provides-Extra: opencode
@@ -25,7 +25,7 @@ inputs:
25
25
  version:
26
26
  description: coder-eval version to install from PyPI, or "local" to install from the action checkout
27
27
  required: false
28
- default: "0.12.6" # <-- kept in sync with releases by release.yml
28
+ default: "0.12.8" # <-- kept in sync with releases by release.yml
29
29
  extras:
30
30
  description: >-
31
31
  Comma-separated coder-eval extras (`codex`, `antigravity,litellm`), composed
@@ -30,7 +30,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
30
30
  # tag and is bumped deliberately -- mirrors the codex CLI pin
31
31
  # (`openai-codex-cli-bin==…` in pyproject). Leaving it at `@latest` let Docker
32
32
  # layer caching freeze it nondeterministically across rebuilds.
33
- ARG CLAUDE_CODE_VERSION=2.1.177
33
+ ARG CLAUDE_CODE_VERSION=2.1.281
34
34
  RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
35
35
  && apt-get install -y --no-install-recommends nodejs \
36
36
  && rm -rf /var/lib/apt/lists/* \
@@ -39,7 +39,7 @@ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
39
39
  # Pi Node CLI, pinned — same rationale as the Claude Code pin above (the agent
40
40
  # binary is a dominant non-model driver of results; @latest would freeze
41
41
  # nondeterministically under layer caching). Node 22 + npm are already present.
42
- ARG PI_VERSION=0.84.4
42
+ ARG PI_VERSION=0.87.1
43
43
  RUN npm install -g @earendil-works/pi-coding-agent@${PI_VERSION}
44
44
 
45
45
  # uv: matches host sandbox.py's `uv venv` + `uv pip install` fast path
@@ -84,12 +84,12 @@ COPY experiments/default.yaml ./experiments/default.yaml
84
84
  # pulls the `uipath` SDK from public PyPI (no credentials required).
85
85
  ARG CODER_EVAL_UV_EXTRAS=""
86
86
 
87
- # safe-chain min-age exclusions for the codex cli-bin pin (see pyproject [tool.uv])
88
- # and the pinned Antigravity harness. Codex and Antigravity are always installed,
89
- # so the default excludes their pinned packages from the min-age gate (the
90
- # google-antigravity release tracks the rapidly-moving Gemini harness and may be
87
+ # safe-chain min-age exclusions for the codex cli-bin pin (see pyproject [tool.uv]),
88
+ # the pinned Antigravity harness, and claude-agent-sdk (its wheel bundles the Claude
89
+ # Code CLI). All three are always installed, so the default excludes their pinned
90
+ # packages from the min-age gate (each tracks a rapidly-moving harness and may be
91
91
  # newer than the gate window); callers may override.
92
- ARG SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="openai-codex-cli-bin,openai-codex,google-antigravity"
92
+ ARG SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="openai-codex-cli-bin,openai-codex,google-antigravity,claude-agent-sdk"
93
93
 
94
94
  # All extras (codex, antigravity, litellm, and the opt-in uipath) resolve from
95
95
  # public PyPI per uv.lock, so the build needs no private-index credentials.
@@ -53,7 +53,7 @@ COPY pyproject.toml uv.lock README.md ./
53
53
  COPY src/ ./src/
54
54
  COPY experiments/default.yaml ./experiments/default.yaml
55
55
 
56
- ARG SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="openai-codex-cli-bin,openai-codex"
56
+ ARG SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="openai-codex-cli-bin,openai-codex,claude-agent-sdk"
57
57
  # Install the locked deps, then coder_eval itself NON-editable. An editable/path
58
58
  # install would leave the package source at /src (outside the kit), so the
59
59
  # `COPY --from /opt/coder-eval` overlay would ship a venv that can't import
@@ -66,7 +66,7 @@ RUN export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="${SAFE_CHAIN_MINIMUM_PACKA
66
66
 
67
67
  # --- 3. Node LTS + the Claude Code CLI, under the kit dir. -------------------
68
68
  ARG NODE_VERSION=22.14.0
69
- ARG CLAUDE_CODE_VERSION=2.1.177
69
+ ARG CLAUDE_CODE_VERSION=2.1.281
70
70
  # Download to a file first so a bad URL fails the build loudly (a piped
71
71
  # `curl | tar` would mask a 404 and only surface later as a missing npm), and
72
72
  # verify the tarball against nodejs.org's published SHASUMS256 before extracting
@@ -109,6 +109,6 @@ RUN chmod +x /usr/local/bin/coder_eval_entrypoint.sh
109
109
  # label; labels don't survive `COPY --from`). The claude-code pin mirrors the
110
110
  # framework image — a parity test (tests/test_image_from_dockerfiles.py) enforces it.
111
111
  ARG CODER_EVAL_VERSION=unknown
112
- ARG CLAUDE_CODE_VERSION=2.1.177
112
+ ARG CLAUDE_CODE_VERSION=2.1.281
113
113
  LABEL org.coder-eval.version="${CODER_EVAL_VERSION}"
114
114
  LABEL org.coder-eval.claude-code-version="${CLAUDE_CODE_VERSION}"
@@ -339,6 +339,45 @@ If the task declares a `reference:` block, a throwaway **copy** of its directory
339
339
 
340
340
  See [Reference Solutions](TASK_DEFINITION_GUIDE.md#reference-solutions).
341
341
 
342
+ ### Two more passive-read anti-cheat blocks
343
+
344
+ These are `driver: docker` only. `driver: tempdir` shares the host uid and has no
345
+ filesystem isolation, so neither applies there (nor can — there is nothing to
346
+ mask). Both are defense-in-depth passive-read blocks, consistent with the
347
+ reference window's posture above; neither contains an adversarial agent.
348
+
349
+ - **The staged grading inputs are deleted after load.** The host stages the
350
+ post-override `TaskDefinition` (with `success_criteria`) at `/work/input/task.yaml`
351
+ **and** a `context.json` whose `source_yaml` is the raw task text — criteria
352
+ verbatim, both at the top level and inside every `config_lineage` entry — for the
353
+ in-container orchestrator to load once at startup. The agent runs in the same
354
+ container, so leaving *either* readable would hand it the grading answer key
355
+ (deleting only `task.yaml` leaves the identical criteria one file over in
356
+ `context.json`). The in-container entry point deletes **both** immediately after
357
+ they are consumed — `context.json` is parsed into memory in the command body and
358
+ `task.yaml` by `load_task`, both before the delete (gated on
359
+ `CODER_EVAL_IN_CONTAINER`). They are read exactly once — grading reads criteria
360
+ from the in-memory task, never from disk. The `/work/input` mount is therefore
361
+ read-write (a `:ro` mount rejects `rm` with EROFS). `prior.json` is kept: it is
362
+ read later on the regrade path, and a regrade runs no agent so it is not a leak.
363
+
364
+ - **Auto-mounted plugin trees are default-deny masked.** An `agent.plugins[].path`
365
+ (or a `TemplateDirSource.path` that is itself a plugin root) is auto-mounted at
366
+ its host path `:ro` so the plugin loads. Eval material colocated under that tree
367
+ as siblings of the skills dir — sibling task YAMLs, reference solutions, test
368
+ fixtures — would otherwise be readable. So the runner keeps the whole root
369
+ mounted but layers an empty `--tmpfs` over every child dir OUTSIDE the keep-set
370
+ (`.claude-plugin` + the manifest-declared skill dirs). Everything that is not
371
+ the plugin surface is masked by default, so an unknown or new eval layout can
372
+ never leak; `tests/`, `node_modules/`, and reference solutions are masked for
373
+ free. A root agent cannot `umount` a tmpfs (`CAP_SYS_ADMIN` is not in Docker's
374
+ default set), so this mask is *stronger* than the mode-000 reference window. Two
375
+ residuals the mask cannot cover — an eval def or reference COLOCATED inside a
376
+ skill dir (masking it would hide the skill), and a `task_id:` YAML **file** loose
377
+ at the plugin root (a tmpfs masks a directory, not a single file) — are caught by
378
+ lint rule CE068 (keep eval material out of skill dirs and off the plugin root;
379
+ put it under a sibling `tests/`).
380
+
342
381
  Inside the container, the entrypoint invokes `coder-eval _run-task-internal` (hidden subcommand), which loads the staged YAML + context, runs the standard in-process Orchestrator (driver auto-coerced back to `tempdir`), and writes `task.json` to the output mount. Host reads it and feeds the existing aggregation pipeline.
343
382
 
344
383
  A `result_kind` discriminator on `CriterionResult` ensures `ClassificationCriterionResult` subclasses survive the JSON round-trip — without it, host-side aggregation would silently lose `observed_label`/`expected_label`.
@@ -188,14 +188,17 @@ fields so subclass keys round-trip.
188
188
 
189
189
  ### Post-failure criterion evidence
190
190
 
191
- When an agent crashes or its turn times out, coder-eval runs only deterministic,
192
- read-only artifact criteria while the sandbox is still live: `file_exists`,
191
+ When an agent crashes or its turn times out on a graded run, coder-eval runs only
192
+ deterministic, read-only artifact criteria while the sandbox is still live: `file_exists`,
193
193
  `file_contains`, `file_matches_regex`, `file_check`, `json_check`,
194
- `reference_comparison`, and `classification_match`. Judges, trajectory checks,
195
- `run_command`, and `uipath_eval` are recorded with
196
- `evaluation_status="not_evaluated"`; they are not invoked on this recovery path.
194
+ `reference_comparison`, and `classification_match`. A `run_command` criterion joins them
195
+ only when the task author sets [`read_only: true`](TASK_DEFINITION_GUIDE.md#run_command)
196
+ on it. Judges, trajectory checks, plain `run_command`, and `uipath_eval` are recorded
197
+ with `evaluation_status="not_evaluated"`; they are not invoked on this recovery path.
197
198
  The diagnostic list is additive evidence. An `ERROR` run remains `ERROR`, and its
198
- canonical score remains 0.0.
199
+ canonical score remains 0.0. The list stays empty under `coder-eval execute`, and on a
200
+ token/cost budget breach, which fires only after every criterion is already scored in
201
+ `success_criteria_results`.
199
202
 
200
203
  ### TurnRecord
201
204
 
@@ -207,7 +210,10 @@ canonical score remains 0.0.
207
210
  cache buckets, captured proxy-side on the LiteLLM open-weight backend and rendered
208
211
  by the evalboard as a per-call table; empty on every other
209
212
  backend), `num_turns`, `max_turns_exhausted`,
210
- `result_summary` (`{is_error, subtype, stop_reason, result}`), `crashed`,
213
+ `result_summary` (`{is_error, subtype, stop_reason, result}`), `provider_errors`
214
+ (`list[ProviderError]` — `{at, message, kind, http_status, will_retry, details}`, one
215
+ row per model-provider error the agent's own client reported, including errors it
216
+ retried itself; filled by the codex adapter, empty on other backends), `crashed`,
211
217
  `crash_reason`.
212
218
 
213
219
  > **Token invariant.** Summing the four token buckets across `messages`
@@ -904,6 +904,12 @@ Runs a command and checks the exit code, with optional stdout matching. **Binary
904
904
  expected_stdout: "Hello, World!" # Optional: check stdout content
905
905
  stdout_match: "exact" # "exact" (default), "contains", or "regex"
906
906
  description: "Script must output the correct text"
907
+
908
+ # Also graded when the turn times out or the agent crashes
909
+ - type: "run_command"
910
+ command: "python graders/check_flow.py"
911
+ read_only: true # declaration, not enforcement -- see below
912
+ description: "Flow must contain the approval node"
907
913
  ```
908
914
 
909
915
  | Field | Default | Description |
@@ -914,6 +920,19 @@ Runs a command and checks the exit code, with optional stdout matching. **Binary
914
920
  | `expected_stdout` | `null` | When set, stdout is also checked |
915
921
  | `stdout_match` | `"exact"` | Match mode: `exact` (stripped), `contains` (substring), `regex` (pattern) |
916
922
  | `score_from_stdout` | `false` | Read a float score (0.0–1.0) from the first stdout line (remaining lines become details); a non-zero exit code or a parse failure scores 0.0. Mutually exclusive with `expected_stdout`. |
923
+ | `read_only` | `false` | Declares the command inspects artifacts only. Its sole effect: a graded run also runs the criterion after a turn timeout or an agent crash — see [Post-failure criterion evidence](REPORT_SCHEMA.md#post-failure-criterion-evidence). |
924
+
925
+ `read_only` is an author declaration, **not** a restriction. coder-eval cannot decide
926
+ whether a shell command is pure, so it verifies nothing and confines nothing: the
927
+ command runs exactly as it always does. Set it only when the command reads artifacts and
928
+ nothing else. Leave it `false` when the command writes state or calls a live service (a
929
+ `uip maestro flow debug` grader starts a real cloud job, so it must stay `false`).
930
+
931
+ Keep a `read_only` criterion's `timeout` short. The diagnostic pass runs after the agent
932
+ is gone, and the commands are not interruptible: a `task_timeout` that expires mid-pass
933
+ cancels the await, not the shell subprocess, so it keeps running while the sandbox is
934
+ torn down. Without a `task_timeout` the pass is bounded only by the sum of these
935
+ timeouts.
917
936
 
918
937
  ### `file_matches_regex`
919
938
 
@@ -978,6 +997,8 @@ Checks whether the agent executed specific tools/commands during evaluation. Ins
978
997
 
979
998
  **Shell normalization.** For a Bash command, both `command_pattern` and `exclude_pattern` are matched against the raw command text **and** its shell-normalized form — the `bash`/`sh`/`zsh -lc "..."` wrapper stripped and shell quoting resolved with `shlex` — and a hit on *either* form counts. So a pattern like `curated_channels` matches whether the agent wrote the argument bare, `'single'`-quoted, `"double"`-quoted, or `\"escaped\"`; you do **not** hand-encode shell quoting. Because the same haystacks also feed `exclude_pattern` and the `max_count` gate, normalization is **not** purely additive: a quote-obfuscated call can now be caught by an exclusion or a `max_count: 0` gate that the raw text alone would have missed — and, conversely, an unedited `exclude_pattern` may now exclude a call it previously let through. Cross-repo suites that hand-encoded quote tolerance in their patterns should re-baseline.
980
999
 
1000
+ **Long commands.** A Bash command is searched in full: the first 2,000 characters, then the rest in windows of at most 2,000 characters that start and end on line boundaries. So a command that follows a long heredoc in the same Bash call still counts. Other tools match only on the first 2,000 characters of their JSON parameters, so a long Write or Edit body is not read as a command. This is not purely additive either: an `exclude_pattern` or a `max_count: 0` gate can now catch a call late in a long script that it did not see before, so suites should re-baseline. A match that crosses a window boundary is not guaranteed, and `^` and `$` can also match at a window edge.
1001
+
981
1002
  **Codex limitation.** Codex agents map `Read`, `Grep`, and `Glob` tools to `shell` commands (they execute via bash), so `tool_name: "Read"` on Codex returns no matches. Use `tool_name: "Bash"` or `tool_name: null` (any tool) for Codex-compatible checks. This criterion works correctly on Claude Code agents, which emit separate `Read`/`Grep`/`Glob` telemetry.
982
1003
 
983
1004
  ### `cli_called`
@@ -27,7 +27,7 @@ working directory — both required for an unattended eval.
27
27
  pip install 'coder-eval[antigravity]'
28
28
  ```
29
29
 
30
- This pulls in `google-antigravity` (pinned to `0.1.8`), whose wheel bundles the
30
+ This pulls in `google-antigravity` (pinned to `0.1.18`), whose wheel bundles the
31
31
  platform `localharness` binary. As with the other agents the SDK is imported lazily
32
32
  — a base install without the extra still runs end-to-end; Antigravity tasks fail at
33
33
  dispatch with a clear hint to install the extra.
@@ -67,8 +67,8 @@ All five harnesses can have tool execution inside a generation window, and it is
67
67
  subtracted out of every one of them — **once, centrally**, by
68
68
  `timing.py::subtract_tool_time`. No reducer does it itself; each
69
69
  publishes the raw window (see the two sections below). Every harness has the
70
- problem: Antigravity reports a `Step` for the tool and only a later
71
- `usage_metadata` `Step` cuts the message; Codex's message window is seeded from
70
+ problem: Antigravity reports a `Step` for the tool and only a later rise in
71
+ the conversation's billed usage cuts the message; Codex's message window is seeded from
72
72
  the first item's start and extended to the last item's completion; OpenCode, Pi
73
73
  and claude-code tile, each window opening where the previous one closed and
74
74
  running to the next, with every tool call in between running inside. In each the
@@ -559,8 +559,9 @@ Each harness finds the call boundary in its own stream (the table above):
559
559
  first item would let one tool of call N+1 act. A call that ran tools therefore
560
560
  opens the next call at its `tokenUsage`, since the results always go back to the
561
561
  model, and the cap fires before call N+1 can run anything.
562
- - **Antigravity** attaches `usage_metadata` to one step per call, and the next call
563
- opens with a MODEL step at a new `step_index`.
562
+ - **Antigravity** bills each call on the conversation's cumulative usage, not on a
563
+ step, so a rise in that total closes the call, and the next call opens with a MODEL
564
+ step at a new `step_index`.
564
565
  - **OpenCode** and **Pi** stream one `step_start` or `turn_start` per call.
565
566
  - **Delegate**'s SDK has no round-trip marker, and a tool-only reply streams only
566
567
  its tool call, with no text before it. So the next call opens when every tool the
@@ -32,7 +32,7 @@ describe("EfficiencyCharts", () => {
32
32
  test("opens on the wall-clock metric", () => {
33
33
  renderCharts();
34
34
  expect(screen.getByRole("heading")).toHaveTextContent(
35
- "Time per Passed Task",
35
+ "Agent Time per Passed Task",
36
36
  );
37
37
  expect(
38
38
  screen.getByRole("tab", { name: "Time" }),
@@ -40,10 +40,10 @@ const TABS: Array<{
40
40
  {
41
41
  key: "time",
42
42
  label: "Time",
43
- heading: "Time per Passed Task",
44
- title: "Total wall clock ÷ tasks passed. Every task's seconds count, failures included; only passes count in the denominator, so a run that fails more reads slower.",
43
+ heading: "Agent Time per Passed Task",
44
+ title: "Agent wall clock ÷ tasks passed. Counts the agent's turns only: sandbox setup, pre_run, grading and cleanup are excluded. Every task's agent seconds count, failures included; only passes count in the denominator, so a run that fails more reads slower.",
45
45
  blurb: (scoped) =>
46
- "Seconds of every task that ran ÷ the number that passed · hover a point for the share within 2× expected" +
46
+ "Agent seconds of every task that ran (setup and grading excluded) ÷ the number that passed · hover a point for the share within 2× expected" +
47
47
  (scoped ? " · scoped to the active filter" : ""),
48
48
  render: (props) => <TimePerPassedTaskChart {...props} />,
49
49
  },
@@ -36,7 +36,7 @@ function Tile({
36
36
  // Front-page window rollup: total spend + shape of the runs in scope. Every
37
37
  // tile is summed over the same set — `runCount` and `totals` both come out of
38
38
  // getOverview's single pass, so the Runs tile can never disagree with the
39
- // Cost/Tasks/Pass/Compute tiles or with the charts. The totals are scoped to
39
+ // Cost/Tasks/Pass/Agent time tiles or with the charts. The totals are scoped to
40
40
  // matching tasks whenever a filter is active.
41
41
  //
42
42
  // This describes the window the charts plot, NOT however far the run table below
@@ -91,9 +91,9 @@ export function WindowSummary({
91
91
  valueClass={passClass(pct)}
92
92
  />
93
93
  <Tile
94
- label="Compute time"
95
- value={fmtDuration(totals.durationSeconds)}
96
- sub={totals.durationPartial ? "some runs missing" : undefined}
94
+ label="Agent time"
95
+ value={fmtDuration(totals.agentSeconds)}
96
+ sub={totals.agentPartial ? "some runs missing" : undefined}
97
97
  />
98
98
  </div>
99
99
  </section>