coder-eval 0.12.3__tar.gz → 0.12.5__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.3 → coder_eval-0.12.5}/.claude/harness-candidates.md +13 -0
  2. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/agents.md +128 -0
  3. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/contracts.md +66 -0
  4. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/orchestration.md +19 -0
  5. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/persistence.md +88 -0
  6. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/reporting.md +19 -0
  7. {coder_eval-0.12.3 → coder_eval-0.12.5}/.env.example +40 -0
  8. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/pages-stub/index.html +2 -2
  9. coder_eval-0.12.5/.github/scripts/diagnose_delegate_token_claims.py +55 -0
  10. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/pr-checks.yml +321 -8
  11. {coder_eval-0.12.3 → coder_eval-0.12.5}/.pre-commit-config.yaml +1 -1
  12. {coder_eval-0.12.3 → coder_eval-0.12.5}/CHANGELOG.md +60 -0
  13. {coder_eval-0.12.3 → coder_eval-0.12.5}/PKG-INFO +5 -4
  14. {coder_eval-0.12.3 → coder_eval-0.12.5}/README.md +1 -0
  15. {coder_eval-0.12.3 → coder_eval-0.12.5}/action.yml +1 -1
  16. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/EXTENDING.md +2 -1
  17. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/REPORT_SCHEMA.md +1 -1
  18. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/TASK_DEFINITION_GUIDE.md +62 -1
  19. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/USER_GUIDE.md +2 -1
  20. coder_eval-0.12.5/docs/agents/DELEGATE.md +192 -0
  21. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/HARNESS_PARITY.md +31 -24
  22. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/comparison.md +2 -2
  23. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/index.md +1 -0
  24. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/llms.txt +1 -0
  25. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/harness-badge.tsx +9 -0
  26. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/default.yaml +1 -1
  27. {coder_eval-0.12.3 → coder_eval-0.12.5}/mkdocs.yml +4 -2
  28. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
  29. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/criteria.md +30 -0
  30. {coder_eval-0.12.3 → coder_eval-0.12.5}/pyproject.toml +8 -4
  31. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/__init__.py +1 -1
  32. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/__init__.py +11 -2
  33. coder_eval-0.12.5/src/coder_eval/agents/delegate/.gitignore +2 -0
  34. coder_eval-0.12.5/src/coder_eval/agents/delegate/delegate_host.mjs +175 -0
  35. coder_eval-0.12.5/src/coder_eval/agents/delegate/package.json +9 -0
  36. coder_eval-0.12.5/src/coder_eval/agents/delegate_agent.py +1041 -0
  37. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/execute_command.py +28 -1
  38. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_command.py +94 -16
  39. coder_eval-0.12.5/src/coder_eval/criteria/system_one_judge.py +193 -0
  40. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_context.py +2 -1
  41. coder_eval-0.12.5/src/coder_eval/evaluation/judge_system_one.py +112 -0
  42. coder_eval-0.12.5/src/coder_eval/evaluation/system_one_scoring.py +199 -0
  43. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/agent.py +17 -8
  44. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_emit.py +15 -11
  45. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/packager.py +23 -16
  46. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/portability.py +5 -3
  47. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/isolation/docker_runner.py +1 -3
  48. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/logging_config.py +18 -5
  49. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/__init__.py +25 -1
  50. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/agent_config.py +57 -0
  51. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/criteria.py +181 -2
  52. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/enums.py +1 -0
  53. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/judge_defaults.py +9 -0
  54. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/results.py +5 -3
  55. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/sandbox.py +4 -0
  56. coder_eval-0.12.5/src/coder_eval/models/system_one.py +196 -0
  57. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/tasks.py +2 -1
  58. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/batch.py +52 -13
  59. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/config.py +77 -2
  60. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/experiment.py +6 -5
  61. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/regrade.py +27 -15
  62. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestrator.py +31 -9
  63. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/path_utils.py +71 -2
  64. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/pricing.py +28 -0
  65. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/html.py +2 -2
  66. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/sandbox.py +20 -2
  67. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/README.md +6 -1
  68. coder_eval-0.12.5/tasks/delegate/fizzbuzz_delegate.yaml +24 -0
  69. coder_eval-0.12.5/tasks/delegate/hello_date_delegate.yaml +32 -0
  70. coder_eval-0.12.5/tasks/smoke_system_one_judge.yaml +105 -0
  71. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/task.toml +5 -0
  72. coder_eval-0.12.5/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +37 -0
  73. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/agent_roster_parity.py +4 -0
  74. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_golden_master.py +4 -0
  75. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_emit.py +52 -0
  76. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cleanup_preservation_guard.py +57 -9
  77. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_telemetry.py +2 -2
  78. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_custom_lint.py +2 -2
  79. coder_eval-0.12.5/tests/test_delegate_agent.py +580 -0
  80. coder_eval-0.12.5/tests/test_delegate_agent_config.py +68 -0
  81. coder_eval-0.12.5/tests/test_delegate_agent_live.py +141 -0
  82. coder_eval-0.12.5/tests/test_delegate_agent_registration.py +65 -0
  83. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_detached_grading_boundaries.py +29 -2
  84. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_agent.py +19 -4
  85. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_packager.py +53 -5
  86. coder_eval-0.12.5/tests/test_judge_system_one.py +185 -0
  87. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_models.py +3 -0
  88. coder_eval-0.12.5/tests/test_parallel.py +463 -0
  89. coder_eval-0.12.5/tests/test_path_utils.py +305 -0
  90. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_preservation_mode.py +14 -6
  91. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_models.py +15 -0
  92. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_command_junit.py +1 -1
  93. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_success_criterion_union.py +4 -0
  94. coder_eval-0.12.5/tests/test_system_one_judge.py +435 -0
  95. coder_eval-0.12.5/tests/test_system_one_judge_live.py +81 -0
  96. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_identity_contract.py +40 -0
  97. {coder_eval-0.12.3 → coder_eval-0.12.5}/uv.lock +9 -8
  98. coder_eval-0.12.3/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -32
  99. coder_eval-0.12.3/tests/test_parallel.py +0 -267
  100. coder_eval-0.12.3/tests/test_path_utils.py +0 -131
  101. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review-full.md +0 -0
  102. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review-wf.md +0 -0
  103. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-code-review.md +0 -0
  104. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-create-plan.md +0 -0
  105. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-implement-plan.md +0 -0
  106. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/commands/coder-eval-review.md +0 -0
  107. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/README.md +0 -0
  108. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/isolation.md +0 -0
  109. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/lint-rules.md +0 -0
  110. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/permissions.md +0 -0
  111. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/notes/timing.md +0 -0
  112. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/axes.md +0 -0
  113. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/multi-model-review.md +0 -0
  114. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/review-rubric.md +0 -0
  115. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/shared/run-layout.md +0 -0
  116. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/workflows/cr-axis.js +0 -0
  117. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude/workflows/cr-parent.js +0 -0
  118. {coder_eval-0.12.3 → coder_eval-0.12.5}/.claude-plugin/marketplace.json +0 -0
  119. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/CODEOWNERS +0 -0
  120. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
  121. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  122. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  123. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/actionlint.yaml +0 -0
  124. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/code_review.md +0 -0
  125. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/dependabot.yml +0 -0
  126. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/scripts/harbor_e2e.py +0 -0
  127. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/scripts/release_notes.py +0 -0
  128. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/claude-pr-review.yml +0 -0
  129. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/codeql.yml +0 -0
  130. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/conventional-commits.yml +0 -0
  131. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/docker-publish.yml +0 -0
  132. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/docs.yml +0 -0
  133. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/harbor-e2e.yml +0 -0
  134. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/publish-testpypi.yml +0 -0
  135. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/release.yml +0 -0
  136. {coder_eval-0.12.3 → coder_eval-0.12.5}/.github/workflows/verify-published-action.yml +0 -0
  137. {coder_eval-0.12.3 → coder_eval-0.12.5}/.gitignore +0 -0
  138. {coder_eval-0.12.3 → coder_eval-0.12.5}/.python-version +0 -0
  139. {coder_eval-0.12.3 → coder_eval-0.12.5}/ADOPTERS.md +0 -0
  140. {coder_eval-0.12.3 → coder_eval-0.12.5}/CLAUDE.md +0 -0
  141. {coder_eval-0.12.3 → coder_eval-0.12.5}/CODE_OF_CONDUCT.md +0 -0
  142. {coder_eval-0.12.3 → coder_eval-0.12.5}/CONTRIBUTING.md +0 -0
  143. {coder_eval-0.12.3 → coder_eval-0.12.5}/LICENSE +0 -0
  144. {coder_eval-0.12.3 → coder_eval-0.12.5}/Makefile +0 -0
  145. {coder_eval-0.12.3 → coder_eval-0.12.5}/NOTICE +0 -0
  146. {coder_eval-0.12.3 → coder_eval-0.12.5}/SECURITY.md +0 -0
  147. {coder_eval-0.12.3 → coder_eval-0.12.5}/comparison.md +0 -0
  148. {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/Dockerfile +0 -0
  149. {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/Dockerfile.runtime +0 -0
  150. {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/coder_eval_entrypoint.sh +0 -0
  151. {coder_eval-0.12.3 → coder_eval-0.12.5}/docker/coder_eval_runtime_entrypoint.sh +0 -0
  152. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/AB_EXPERIMENTS.md +0 -0
  153. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/CI_GATE.md +0 -0
  154. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DATASETS.md +0 -0
  155. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DIALOG_MODE.md +0 -0
  156. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/DOCKER_ISOLATION.md +0 -0
  157. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/PLUGIN.md +0 -0
  158. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/ANTIGRAVITY.md +0 -0
  159. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/CLAUDE_CODE.md +0 -0
  160. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/CODEX.md +0 -0
  161. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/OPENCODE.md +0 -0
  162. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/agents/PI.md +0 -0
  163. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/assets/hero.gif +0 -0
  164. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/01-first-evaluation.md +0 -0
  165. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/02-ci-pipeline.md +0 -0
  166. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/03-evalboard-local.md +0 -0
  167. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/04-writing-a-task.md +0 -0
  168. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/05-comparing-models.md +0 -0
  169. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/06-use-docker-isolation.md +0 -0
  170. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
  171. {coder_eval-0.12.3 → coder_eval-0.12.5}/docs/tutorials/README.md +0 -0
  172. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/.gitignore +0 -0
  173. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/README.md +0 -0
  174. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
  175. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
  176. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
  177. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
  178. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/col-help.tsx +0 -0
  179. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/collapsible-rail.tsx +0 -0
  180. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/harness-selector.tsx +0 -0
  181. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/scroll-table.tsx +0 -0
  182. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/search-box.tsx +0 -0
  183. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/skeleton.tsx +0 -0
  184. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/unit-toggle.tsx +0 -0
  185. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_components/version-list.tsx +0 -0
  186. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
  187. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_lib/source-param.ts +0 -0
  188. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
  189. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
  190. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
  191. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/daily-chart.tsx +0 -0
  192. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
  193. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/harness-legend.tsx +0 -0
  194. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/harness-series.ts +0 -0
  195. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/tag-rail.tsx +0 -0
  196. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
  197. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
  198. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/_overview/window-summary.tsx +0 -0
  199. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/download/route.ts +0 -0
  200. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/file/route.ts +0 -0
  201. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
  202. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/api/refresh/route.ts +0 -0
  203. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/error.tsx +0 -0
  204. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/globals.css +0 -0
  205. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/icon.png +0 -0
  206. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/layout.tsx +0 -0
  207. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/loading.tsx +0 -0
  208. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/page.tsx +0 -0
  209. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
  210. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/page.tsx +0 -0
  211. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/path-to-ga/task-table.tsx +0 -0
  212. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/scribe/page.tsx +0 -0
  213. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/scribe/run-table.tsx +0 -0
  214. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
  215. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/actions.ts +0 -0
  216. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/page.tsx +0 -0
  217. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/trends/trends-view.tsx +0 -0
  218. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
  219. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/page.tsx +0 -0
  220. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
  221. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/next-env.d.ts +0 -0
  222. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/next.config.mjs +0 -0
  223. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/package.json +0 -0
  224. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/pnpm-lock.yaml +0 -0
  225. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/postcss.config.mjs +0 -0
  226. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/antigravity.png +0 -0
  227. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/claude-code.png +0 -0
  228. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/codex.png +0 -0
  229. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/harness/pi.png +0 -0
  230. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/public/uipath.png +0 -0
  231. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/tailwind.config.ts +0 -0
  232. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/tsconfig.json +0 -0
  233. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/vitest.config.ts +0 -0
  234. {coder_eval-0.12.3 → coder_eval-0.12.5}/evalboard/vitest.setup.ts +0 -0
  235. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/early-stop-ab.yaml +0 -0
  236. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/model-comparison.yaml +0 -0
  237. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/permissions-smoke.yaml +0 -0
  238. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/plugin-comparison.yaml +0 -0
  239. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/prompt-mutations-example.yaml +0 -0
  240. {coder_eval-0.12.3 → coder_eval-0.12.5}/experiments/smoke_variants.yaml +0 -0
  241. {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/README.md +0 -0
  242. {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/cost_logger.py +0 -0
  243. {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/litellm-config.yaml +0 -0
  244. {coder_eval-0.12.3 → coder_eval-0.12.5}/litellm/start-litellm.sh +0 -0
  245. {coder_eval-0.12.3 → coder_eval-0.12.5}/osv-scanner.toml +0 -0
  246. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/README.md +0 -0
  247. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/cli-setup.md +0 -0
  248. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/repo-layout.md +0 -0
  249. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/run-layout.md +0 -0
  250. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/task-rubric.md +0 -0
  251. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
  252. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
  253. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
  254. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
  255. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
  256. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/init/SKILL.md +0 -0
  257. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
  258. {coder_eval-0.12.3 → coder_eval-0.12.5}/plugins/coder-eval/skills/task/SKILL.md +0 -0
  259. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/check_commit_msg.sh +0 -0
  260. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/README.md +0 -0
  261. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/antigravity.json +0 -0
  262. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/claude-code.json +0 -0
  263. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/codex.json +0 -0
  264. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/opencode.json +0 -0
  265. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/corpus/pi.json +0 -0
  266. {coder_eval-0.12.3 → coder_eval-0.12.5}/scripts/timing/decompose_run.py +0 -0
  267. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/.gitattributes +0 -0
  268. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agent.py +0 -0
  269. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/_logging.py +0 -0
  270. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/_skills.py +0 -0
  271. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/antigravity_agent.py +0 -0
  272. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/claude_code_agent.py +0 -0
  273. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/codex_agent.py +0 -0
  274. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/noop_agent.py +0 -0
  275. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/opencode_agent.py +0 -0
  276. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/pi_agent.py +0 -0
  277. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/registry.py +0 -0
  278. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/agents/watchdog.py +0 -0
  279. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/analysis.py +0 -0
  280. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/argv_match.py +0 -0
  281. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/__init__.py +0 -0
  282. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/console.py +0 -0
  283. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/evaluate_command.py +0 -0
  284. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/evaluate_target.py +0 -0
  285. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/export_command.py +0 -0
  286. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/harbor_command.py +0 -0
  287. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/plan_command.py +0 -0
  288. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/report_command.py +0 -0
  289. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_helpers.py +0 -0
  290. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/run_task_internal_command.py +0 -0
  291. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/cli/utils.py +0 -0
  292. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/config.py +0 -0
  293. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/__init__.py +0 -0
  294. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
  295. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/agent_judge.py +0 -0
  296. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/base.py +0 -0
  297. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/classification_match.py +0 -0
  298. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/cli_called.py +0 -0
  299. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/command_executed.py +0 -0
  300. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/commands_efficiency.py +0 -0
  301. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_check.py +0 -0
  302. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_contains.py +0 -0
  303. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_exists.py +0 -0
  304. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/file_matches_regex.py +0 -0
  305. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/json_check.py +0 -0
  306. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/llm_judge.py +0 -0
  307. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/reference_comparison.py +0 -0
  308. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/run_command.py +0 -0
  309. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/skill_triggered.py +0 -0
  310. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/criteria/uipath_eval.py +0 -0
  311. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/durations.py +0 -0
  312. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/__init__.py +0 -0
  313. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/agent.py +0 -0
  314. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/budget.py +0 -0
  315. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/categories.py +0 -0
  316. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/categorization.py +0 -0
  317. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/checker_misuse.py +0 -0
  318. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/executor.py +0 -0
  319. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/judge.py +0 -0
  320. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/reference.py +0 -0
  321. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/retry.py +0 -0
  322. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/errors/timeout.py +0 -0
  323. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/__init__.py +0 -0
  324. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/checker.py +0 -0
  325. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
  326. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
  327. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_litellm.py +0 -0
  328. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_models.py +0 -0
  329. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_persistence.py +0 -0
  330. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/judge_usage.py +0 -0
  331. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/sub_agent.py +0 -0
  332. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/summaries.py +0 -0
  333. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/evaluation/verdict_tool.py +0 -0
  334. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/formatting.py +0 -0
  335. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/fs_permissions.py +0 -0
  336. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/__init__.py +0 -0
  337. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/agent_paths.py +0 -0
  338. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_hydrate.py +0 -0
  339. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/atif_models.py +0 -0
  340. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/experiment_packager.py +0 -0
  341. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/harbor/reward.py +0 -0
  342. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/invocation_log.py +0 -0
  343. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/isolation/__init__.py +0 -0
  344. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/litellm_cost.py +0 -0
  345. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/cli_match.py +0 -0
  346. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/container_context.py +0 -0
  347. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/container_paths.py +0 -0
  348. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/experiment.py +0 -0
  349. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/judge.py +0 -0
  350. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/limits.py +0 -0
  351. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/merge_strategy.py +0 -0
  352. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/mutations.py +0 -0
  353. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/routing.py +0 -0
  354. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/telemetry.py +0 -0
  355. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/models/templates.py +0 -0
  356. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/__init__.py +0 -0
  357. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/config_merge.py +0 -0
  358. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/early_stop.py +0 -0
  359. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/evaluation.py +0 -0
  360. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/overrides.py +0 -0
  361. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/run_limits.py +0 -0
  362. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
  363. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/orchestration/task_loader.py +0 -0
  364. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/plugins.py +0 -0
  365. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/py.typed +0 -0
  366. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/__init__.py +0 -0
  367. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/experiment.py +0 -0
  368. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/helpers.py +0 -0
  369. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/junit.py +0 -0
  370. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/reports/markdown.py +0 -0
  371. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/__init__.py +0 -0
  372. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
  373. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/resources/tags.yaml +0 -0
  374. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/result_metrics.py +0 -0
  375. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/run_record.py +0 -0
  376. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/__init__.py +0 -0
  377. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/ast_similarity.py +0 -0
  378. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/complexity.py +0 -0
  379. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/quality.py +0 -0
  380. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/signature_similarity.py +0 -0
  381. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/similarity.py +0 -0
  382. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/scoring/token_similarity.py +0 -0
  383. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/__init__.py +0 -0
  384. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/termination.py +0 -0
  385. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/simulation/user_simulator.py +0 -0
  386. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/stats.py +0 -0
  387. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/__init__.py +0 -0
  388. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/callbacks.py +0 -0
  389. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/collector.py +0 -0
  390. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/events.py +0 -0
  391. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/renderers.py +0 -0
  392. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/streaming/wire.py +0 -0
  393. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/telemetry.py +0 -0
  394. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/timing.py +0 -0
  395. {coder_eval-0.12.3 → coder_eval-0.12.5}/src/coder_eval/utils.py +0 -0
  396. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agentless_smoke_test.yaml +0 -0
  397. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/antigravity_hello_world.yaml +0 -0
  398. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
  399. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_hello_world.yaml +0 -0
  400. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_hello_world_docker.yaml +0 -0
  401. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
  402. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/claude_subagent_test.yaml +0 -0
  403. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
  404. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_hello_world.yaml +0 -0
  405. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_parallel_commands.yaml +0 -0
  406. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
  407. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_skills_test.yaml +0 -0
  408. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_string_utils.yaml +0 -0
  409. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/codex_subagent_test.yaml +0 -0
  410. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/subagent_bash_long_input.yaml +0 -0
  411. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/agents/subagent_merge_sort.yaml +0 -0
  412. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
  413. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/anti_cheat_reference/reference/solution.py +0 -0
  414. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/byod_smoke_test.yaml +0 -0
  415. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dataset_example.yaml +0 -0
  416. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/datasets/sentiment.jsonl +0 -0
  417. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
  418. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
  419. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
  420. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/environment/input.txt +0 -0
  421. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
  422. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
  423. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
  424. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
  425. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
  426. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/fibonacci_with_template.yaml +0 -0
  427. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/hello_date.yaml +0 -0
  428. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/inline_starter_example.yaml +0 -0
  429. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/internal/session_resumption.yaml +0 -0
  430. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_smoke.yaml +0 -0
  431. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
  432. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
  433. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
  434. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
  435. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
  436. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/opencode_smoke_test.yaml +0 -0
  437. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/pi_smoke_test.yaml +0 -0
  438. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
  439. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/record_cli_responses.yaml +0 -0
  440. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/run_limits/max_turns_cap.yaml +0 -0
  441. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/run_limits/turn_timeout.yaml +0 -0
  442. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
  443. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
  444. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
  445. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
  446. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
  447. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
  448. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/README.md +0 -0
  449. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
  450. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
  451. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
  452. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
  453. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
  454. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
  455. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
  456. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
  457. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
  458. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
  459. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/sentiment_classification.yaml +0 -0
  460. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_agent_judge.yaml +0 -0
  461. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_budget_exceeded.yaml +0 -0
  462. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
  463. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_llm_judge.yaml +0 -0
  464. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_negative_path.yaml +0 -0
  465. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_task_timeout.yaml +0 -0
  466. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/smoke_variants.yaml +0 -0
  467. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/test_sandbox.yaml +0 -0
  468. {coder_eval-0.12.3 → coder_eval-0.12.5}/tasks/token_check.yaml +0 -0
  469. {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/byod_smoke_test/Dockerfile +0 -0
  470. {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/README.md +0 -0
  471. {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/src/main.py +0 -0
  472. {coder_eval-0.12.3 → coder_eval-0.12.5}/templates/fibonacci-starter/tests/test_main.py +0 -0
  473. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/__init__.py +0 -0
  474. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_bracket_clock.py +0 -0
  475. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_container_contract.py +0 -0
  476. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/__init__.py +0 -0
  477. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/__init__.py +0 -0
  478. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/_scrub.py +0 -0
  479. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
  480. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
  481. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
  482. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
  483. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
  484. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
  485. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
  486. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
  487. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
  488. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
  489. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
  490. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
  491. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
  492. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
  493. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
  494. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
  495. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
  496. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
  497. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
  498. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
  499. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
  500. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
  501. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
  502. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
  503. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
  504. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
  505. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
  506. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
  507. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
  508. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
  509. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
  510. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
  511. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
  512. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
  513. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
  514. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
  515. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
  516. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
  517. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
  518. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
  519. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
  520. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
  521. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
  522. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
  523. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
  524. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
  525. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
  526. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
  527. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/live_criteria.py +0 -0
  528. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/__init__.py +0 -0
  529. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
  530. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
  531. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
  532. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
  533. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/run_full.md +0 -0
  534. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
  535. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_fixtures/timing_union_cases.json +0 -0
  536. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/_path_helpers.py +0 -0
  537. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/conftest.py +0 -0
  538. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/__init__.py +0 -0
  539. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/atif/known_good_trajectory.json +0 -0
  540. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
  541. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
  542. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/mock_agent.py +0 -0
  543. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/pi_happy_stream.jsonl +0 -0
  544. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
  545. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
  546. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
  547. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/fixtures/text_stub_agent.py +0 -0
  548. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
  549. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
  550. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
  551. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
  552. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/__init__.py +0 -0
  553. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/action_docs.py +0 -0
  554. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/dead_config_fields.py +0 -0
  555. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_env_parity.py +0 -0
  556. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_examples.py +0 -0
  557. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_indexes.py +0 -0
  558. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/doc_schema_parity.py +0 -0
  559. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/generated.py +0 -0
  560. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/live_verdict_contract.py +0 -0
  561. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/plugin_manifest_parity.py +0 -0
  562. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/plugin_reference.py +0 -0
  563. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/pricing_mirror.py +0 -0
  564. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/prose_budget.py +0 -0
  565. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/pyright_config.py +0 -0
  566. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/__init__.py +0 -0
  567. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/_layers.py +0 -0
  568. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/_model_ctor.py +0 -0
  569. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/base.py +0 -0
  570. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
  571. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
  572. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
  573. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
  574. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
  575. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
  576. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
  577. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
  578. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
  579. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
  580. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
  581. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
  582. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
  583. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
  584. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
  585. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
  586. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
  587. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
  588. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
  589. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce051_no_driver_override.py +0 -0
  590. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
  591. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
  592. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
  593. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
  594. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
  595. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
  596. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
  597. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce060_message_id_declared.py +0 -0
  598. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
  599. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
  600. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
  601. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
  602. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_agent_timing_access.py +0 -0
  603. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
  604. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
  605. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_silent_except.py +0 -0
  606. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_submodule_model_imports.py +0 -0
  607. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
  608. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
  609. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
  610. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/open_explicit_encoding.py +0 -0
  611. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
  612. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/register_criterion_required.py +0 -0
  613. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
  614. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
  615. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/runner.py +0 -0
  616. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/violation.py +0 -0
  617. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/lint/workflow_outputs.py +0 -0
  618. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_action_inputs.py +0 -0
  619. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_action_version_pin.py +0 -0
  620. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent.py +0 -0
  621. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_no_timing_fields.py +0 -0
  622. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_optional_type.py +0 -0
  623. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_registry_dispatch.py +0 -0
  624. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_config_sdk_decoupling.py +0 -0
  625. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_judge_criterion.py +0 -0
  626. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_telemetry.py +0 -0
  627. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_telemetry_advanced.py +0 -0
  628. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agent_timeout.py +0 -0
  629. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_agentless.py +0 -0
  630. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_antigravity_agent.py +0 -0
  631. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_hydrate.py +0 -0
  632. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_atif_models.py +0 -0
  633. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byoa_plugin.py +0 -0
  634. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byoa_plugin_live.py +0 -0
  635. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_byod_feature.py +0 -0
  636. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_check_all_async.py +0 -0
  637. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_checker_logging.py +0 -0
  638. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_classification_match.py +0 -0
  639. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_claude_settings_enforcement_live.py +0 -0
  640. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_backend_flag.py +0 -0
  641. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_called_criterion.py +0 -0
  642. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_empty_glob.py +0 -0
  643. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_match_parity.py +0 -0
  644. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_sdk_options.py +0 -0
  645. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_set_overrides.py +0 -0
  646. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cli_type_flag.py +0 -0
  647. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_code_review_bugs.py +0 -0
  648. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent.py +0 -0
  649. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent_live.py +0 -0
  650. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_agent_unit.py +0 -0
  651. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_codex_token_mapping.py +0 -0
  652. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_executed.py +0 -0
  653. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_statistics.py +0 -0
  654. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_command_telemetry_result_data.py +0 -0
  655. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_commands_efficiency.py +0 -0
  656. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_lineage.py +0 -0
  657. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_merge_engine.py +0 -0
  658. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_config_precedence.py +0 -0
  659. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_container_context.py +0 -0
  660. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_continuous_scoring.py +0 -0
  661. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_cost_accounting_paths.py +0 -0
  662. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_criterion_result_round_trip.py +0 -0
  663. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_dataset_expansion.py +0 -0
  664. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_debug_logging.py +0 -0
  665. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_detached_grading_guards.py +0 -0
  666. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_build_failure.py +0 -0
  667. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_litellm_env.py +0 -0
  668. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_container_death.py +0 -0
  669. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_mounts.py +0 -0
  670. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_runner_stream_limit.py +0 -0
  671. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_wildcard_env.py +0 -0
  672. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_docker_workdir_live.py +0 -0
  673. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_driver_resolver.py +0 -0
  674. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_durations.py +0 -0
  675. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_early_stop.py +0 -0
  676. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_error_handling.py +0 -0
  677. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_command.py +0 -0
  678. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_format_harbor.py +0 -0
  679. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluate_target.py +0 -0
  680. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_evaluator.py +0 -0
  681. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_event_collector.py +0 -0
  682. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_command.py +0 -0
  683. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_evaluate_loop.py +0 -0
  684. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_execute_format_harbor.py +0 -0
  685. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_cli.py +0 -0
  686. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_loader.py +0 -0
  687. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_models.py +0 -0
  688. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_reports.py +0 -0
  689. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_resolver.py +0 -0
  690. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_experiment_runner.py +0 -0
  691. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_file_check.py +0 -0
  692. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_file_contains_scoring.py +0 -0
  693. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_formatting.py +0 -0
  694. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_git_clone_failure.py +0 -0
  695. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_glob_paths_in_file_criteria.py +0 -0
  696. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_e2e_fixtures.py +0 -0
  697. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_experiment_packager.py +0 -0
  698. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_export_golden.py +0 -0
  699. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_portability.py +0 -0
  700. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_harbor_reward.py +0 -0
  701. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_heartbeat_watchdog.py +0 -0
  702. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_ignore_patterns_negation.py +0 -0
  703. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_image_from_dockerfiles.py +0 -0
  704. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_image_skew_refusal.py +0 -0
  705. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_integration.py +0 -0
  706. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_json_check.py +0 -0
  707. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_anthropic.py +0 -0
  708. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_bedrock.py +0 -0
  709. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_burn_in_live.py +0 -0
  710. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_context_builder.py +0 -0
  711. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_litellm.py +0 -0
  712. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_models.py +0 -0
  713. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_judge_persistence.py +0 -0
  714. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_lint_no_top_level_run_limits.py +0 -0
  715. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_lint_runner.py +0 -0
  716. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_config.py +0 -0
  717. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_cost.py +0 -0
  718. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_cost_logger.py +0 -0
  719. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_judge_live.py +0 -0
  720. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_litellm_route.py +0 -0
  721. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_llm_judge_criterion.py +0 -0
  722. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_log_tail_buffer.py +0 -0
  723. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_logging.py +0 -0
  724. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_logging_isolation.py +0 -0
  725. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_characterization.py +0 -0
  726. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_strategy_annotations.py +0 -0
  727. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_merge_unification.py +0 -0
  728. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_mutations.py +0 -0
  729. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_new_criteria.py +0 -0
  730. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_node_env_config.py +0 -0
  731. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_opencode_agent.py +0 -0
  732. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_optional_dependencies.py +0 -0
  733. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator.py +0 -0
  734. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator_error_log_tail.py +0 -0
  735. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_orchestrator_telemetry.py +0 -0
  736. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_overrides_engine.py +0 -0
  737. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_agent.py +0 -0
  738. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_agent_config.py +0 -0
  739. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pi_smoke_task.py +0 -0
  740. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plan_command.py +0 -0
  741. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plugin_processing.py +0 -0
  742. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_plugins.py +0 -0
  743. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_post_run.py +0 -0
  744. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pr_review_workflow.py +0 -0
  745. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pre_run.py +0 -0
  746. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pricing_mirror.py +0 -0
  747. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_pricing_registry.py +0 -0
  748. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_prose_budget.py +0 -0
  749. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_prose_budget_commands.py +0 -0
  750. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_comparison_scoring.py +0 -0
  751. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_evaluator.py +0 -0
  752. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_missing_file.py +0 -0
  753. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reference_permissions.py +0 -0
  754. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_registry.py +0 -0
  755. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_regrade.py +0 -0
  756. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_release_notes.py +0 -0
  757. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_replicate_stats.py +0 -0
  758. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_report_command.py +0 -0
  759. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports.py +0 -0
  760. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_html.py +0 -0
  761. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_junit.py +0 -0
  762. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_reports_package.py +0 -0
  763. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_resolve_task_files.py +0 -0
  764. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_result_metrics.py +0 -0
  765. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_resume.py +0 -0
  766. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_retry_logic_comprehensive.py +0 -0
  767. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_route_seam_exhaustiveness.py +0 -0
  768. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_routing.py +0 -0
  769. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_command_stdout.py +0 -0
  770. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_helpers.py +0 -0
  771. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_models.py +0 -0
  772. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_orchestrator.py +0 -0
  773. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_limits_resolver.py +0 -0
  774. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_metrics.py +0 -0
  775. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_record.py +0 -0
  776. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_run_summary_rebuild.py +0 -0
  777. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_runtime_tool_versions.py +0 -0
  778. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox.py +0 -0
  779. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_adopt.py +0 -0
  780. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_layer_builder.py +0 -0
  781. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_optional.py +0 -0
  782. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_record_cli.py +0 -0
  783. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_security.py +0 -0
  784. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_symlink_preservation.py +0 -0
  785. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_templates.py +0 -0
  786. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sandbox_venv_live.py +0 -0
  787. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_scorers.py +0 -0
  788. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_scoring_quality.py +0 -0
  789. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sdk_option_classification.py +0 -0
  790. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_seed_from_prior_result.py +0 -0
  791. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_config.py +0 -0
  792. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_integration.py +0 -0
  793. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_termination.py +0 -0
  794. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_simulation_trials.py +0 -0
  795. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_skill_triggered.py +0 -0
  796. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_stats.py +0 -0
  797. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_stats_nonfinite.py +0 -0
  798. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_agent_integration.py +0 -0
  799. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_batch.py +0 -0
  800. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_callbacks.py +0 -0
  801. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_cli.py +0 -0
  802. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_events.py +0 -0
  803. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_orchestrator.py +0 -0
  804. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_renderers.py +0 -0
  805. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_streaming_wire.py +0 -0
  806. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_sub_agent_runner.py +0 -0
  807. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_suite_rollup.py +0 -0
  808. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_summaries.py +0 -0
  809. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_tags.py +0 -0
  810. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_task_definition_unknown_fields.py +0 -0
  811. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_teardown_interrupt.py +0 -0
  812. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_telemetry.py +0 -0
  813. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_template_env_expansion.py +0 -0
  814. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_threshold_enforcement.py +0 -0
  815. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_batch.py +0 -0
  816. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_categorization.py +0 -0
  817. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_exceptions.py +0 -0
  818. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_models.py +0 -0
  819. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timeout_orchestrator.py +0 -0
  820. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_close_window.py +0 -0
  821. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_timing_union_parity.py +0 -0
  822. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_token_usage.py +0 -0
  823. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_uipath_eval.py +0 -0
  824. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_ungraded_reporting.py +0 -0
  825. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_user_simulator.py +0 -0
  826. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_utils.py +0 -0
  827. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_utterance_extraction.py +0 -0
  828. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_variant_prompt_file.py +0 -0
  829. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_verdict_tool.py +0 -0
  830. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_verify_published_workflow.py +0 -0
  831. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_visible_turn_cap.py +0 -0
  832. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_watchdog.py +0 -0
  833. {coder_eval-0.12.3 → coder_eval-0.12.5}/tests/test_yaml_migration.py +0 -0
@@ -1009,3 +1009,16 @@ re-derive from scratch.
1009
1009
  f-string placeholders are `Path`s) that an AST-only rule does not have, and the existing
1010
1010
  CLI has many pre-existing unescaped lines a literal rule would flag at once. Caught in:
1011
1011
  Phase 5 quality review.
1012
+ - [ ] **A subprocess-driven agent must force-kill before dropping its process handle on
1013
+ EVERY dead-or-dying exit path, not just the obvious ones.** `DelegateAgent`'s
1014
+ `_drain_stdout` signals EOF (posts `None`) on a genuine pipe close AND on a buffer-limit
1015
+ overrun AND on its own unexpected exception — only the first guarantees the host already
1016
+ exited. Two review passes (independently) caught `communicate()`'s EOF/`fatal` branches
1017
+ and `_read_until`'s EOF branch clearing `self._process = None` without confirming the host
1018
+ was dead first, which orphans a still-alive Node host (and its interop child) rather than
1019
+ respawning cleanly. Fixed in all three sites; `kill_sync()` also now clears the handle.
1020
+ Deferred as a lint rule because the pattern ("this branch sets `self._X = None`; was a kill
1021
+ awaited on this path first?") needs control-flow reasoning an AST-only CE0xx rule doesn't
1022
+ have, and it is a recurring class ONLY within one file so far — worth promoting to a rule
1023
+ if a second subprocess-driven agent repeats it. Caught in: final cross-phase review,
1024
+ delegate agent port.
@@ -742,3 +742,131 @@ drop per-message accounting.
742
742
  The classification is kept from failing open as the SDK grows: a test asserts EVERY field on
743
743
  the SDK's options type is classified, either typed-mirrored or framework-owned, so a new SDK
744
744
  release adding an unclassified field fails loudly instead of silently passing through.
745
+
746
+ ## Delegate agent
747
+
748
+ `DelegateAgent` drives UiPath Autopilot's Delegate agent — reasoning in the UiPath backend,
749
+ tools executing locally through the SDK's bundled interop process. Unlike every other CLI-driven
750
+ agent in this file, there is no vendor-provided stdio protocol host to spawn: `@uipath/delegate-stdio`,
751
+ the internal package a UiPath-only sibling plugin (`coder_eval_uipath`) drives, is not public. Only
752
+ `@uipath/delegate-sdk` (a programmatic library exposing a `DelegateAgent` class with
753
+ `initialize()`/`onEvent()`/`sendMessage()`/`destroy()`) and `@uipath/delegate-cli` (a terminal wrapper
754
+ around it) are. So this agent ships its own first-party Node host, `agents/delegate/delegate_host.mjs`,
755
+ which wraps the SDK class in a newline-JSON stdio protocol this framework designed, not one it had to
756
+ reverse-engineer — verified live against a real `@uipath/delegate-sdk@0.1.12` install with no token,
757
+ confirming both the plain-public-install story and that the SDK's own event vocabulary
758
+ (`session_start`/`thinking`/`message`/`tool_call`/`tool_result`/`error`/`done`/`step`) substantially
759
+ matches the internal sibling's protocol.
760
+
761
+ **No multi-generation transcript splitting.** The internal sibling reconstructs one `AssistantMessage`
762
+ per backend round-trip from an `isStepStart` flag and a `turnUsages` array on the host's terminal
763
+ message. Neither is present on `DelegateAgent.onEvent`'s payloads (confirmed absent by grepping the
764
+ installed SDK bundle's string literals), so there is no reliable per-round-trip boundary signal at this
765
+ API layer. `DelegateAgent` builds exactly ONE `AssistantMessage` per `communicate()` call instead — a
766
+ deliberate simplification, not an oversight; richer segmentation can be added once a real boundary
767
+ signal is confirmed against a live backend. `timing.close_window` still opens that one window from the
768
+ turn's own start (there is nothing to tile from), so the head and tail both measure ~0.
769
+
770
+ **Deferred, not ported speculatively.** The internal sibling's module docstring documents several
771
+ hard-won failure-signature-specific recoveries: a Cloudflare WAF-block-page rewrite, an SSE-connect-
772
+ timeout rewrite, session-conflict fresh-host recovery, and first-response stall-timeout+resend. None
773
+ are ported here — porting a marker tuned to the internal sibling's own observed failures risks matching
774
+ nothing (or the wrong thing) against the public SDK/backend's actual error surface. A crash still ends
775
+ the turn correctly as a retryable `AgentCrashError`; it is just not specially diagnosed. Port these once
776
+ the same failures are actually observed running this agent for real.
777
+
778
+ **The process handle must be cleared on every path that leaves the host dead or dying** — EOF, a host
779
+ `fatal` message, a timeout (both the top-of-loop pre-check AND a timeout elapsing while blocked inside
780
+ `asyncio.wait_for`), cooperative stop, and `max_turns` exhaustion. A real bug shipped once during this
781
+ agent's own development: a timeout elapsing mid-read fell through to the generic crash path instead of
782
+ `TurnTimeoutError`, and left the process handle set, so the NEXT `communicate()` call reused a host with
783
+ a `"send"` still nominally in flight instead of respawning — risking a stale response being consumed as
784
+ the new turn's. `tests/test_delegate_agent.py`'s `test_timeout_elapsing_mid_read_still_raises_turn_timeout_error`
785
+ pins the fix.
786
+
787
+ **Skills mapping is deliberately NOT the shared `agents/_skills.py` resolver.** That resolver enumerates
788
+ individual skill directories for a repeated `--skill <dir>`-style CLI argument (OpenCode/Pi's shape).
789
+ The Delegate SDK's `bundledSkillsPath` wants exactly ONE parent directory whose children are skill
790
+ folders — a genuinely different shape — so `_resolve_bundled_skills_path` mirrors the internal sibling's
791
+ own mapping (`<plugin.path>/skills`, first plugin wins) instead of force-fitting the shared helper.
792
+
793
+ **Registered unconditionally**, exactly like `codex`/`antigravity` — there is no conditional-registration
794
+ gate keyed on an optional-dependency extra anywhere in this codebase; `opencode`/`pi` declare an EMPTY
795
+ extra purely as packaging-metadata documentation, and `delegate` follows that same shape (no new pip
796
+ package — Node/`@uipath/delegate-sdk` is the real prerequisite, resolved lazily in `start()`).
797
+
798
+ **`environment` resolution needs org/tenant SLUGS, not just IDs — confirmed by reading the installed
799
+ SDK's own bundle, not by guessing from its error message.** When `DELEGATE_BACKEND_URL` is absent and
800
+ `DELEGATE_ENV` (-> `environment` init option) is used instead, the SDK resolves the backend URL from
801
+ `organizationName`/`orgLogicalName` and `tenantName` fields on the `auth` object passed to
802
+ `initialize()` — NOT from `ORG_SLUG`/`TENANT_SLUG` read off `process.env` directly, despite that being
803
+ exactly what the SDK's own thrown error suggests ("set ORG_SLUG and TENANT_SLUG env vars alongside
804
+ ORG_ID/TENANT_ID"). That advice describes the separate `@uipath/delegate-cli`/`delegate-stdio` wrapper's
805
+ own env-var-driven bootstrapping, not the `DelegateAgent` class itself, which we drive directly. So
806
+ `_build_init_options` forwards `ORG_SLUG`/`TENANT_SLUG` (when set) into `auth.organizationName`/
807
+ `auth.tenantName` itself — confirmed against `node_modules/@uipath/delegate-sdk/dist/index.mjs`'s own
808
+ `yie()` resolver function live in CI (`pyright`/tests can't catch this class of bug; it only surfaces
809
+ against a real backend). `tests/test_delegate_agent.py::TestStart::test_org_and_tenant_slug_forwarded_into_auth`
810
+ pins it. Passing `DELEGATE_BACKEND_URL` directly instead of `DELEGATE_ENV` skips this whole path.
811
+
812
+ **Token usage comes from two getters called after `sendMessage()` resolves, not from any event or the
813
+ resolved value itself — confirmed by reading the installed SDK's bundle, not by guessing.** A first
814
+ pass guessed at a flat `usage` dict carried on the resolved `sendMessage()` value or on a forwarded
815
+ event, tried several plausible snake_case/camelCase bucket-name spellings, and silently returned zero
816
+ tokens every turn against a real backend (`tests/test_delegate_agent_live.py::test_delegate_live_token_usage_populated`
817
+ failed live: `record.crashed is False`, real text/tool output, `token_usage=None`). Reading
818
+ `node_modules/@uipath/delegate-sdk/dist/index.mjs` directly settled it: `sendMessage()` always resolves
819
+ to a plain string (never an object), and no event this host forwards via `agent.onEvent()` ever carries
820
+ a `usage` field — the SDK's own internal event vocabulary has no `"usage"` member (that name IS used
821
+ internally, but only inside the SDK's own Zustand store reducer that updates its "Token usage" UI
822
+ panel, never re-emitted through the public `onEvent` bus). The only way to reach it is
823
+ `DelegateAgent.getLastTurnUsage(sessionId?)` (defaults to the just-used session), so
824
+ `delegate_host.mjs`'s `handleSend` calls it — and `getSessionId()` — right after `sendMessage()`
825
+ resolves, and attaches both to the `send_ok` message itself. That getter's shape, read straight off the
826
+ SDK's own `setUsage` store action, is `{promptTokens, completionTokens, promptTokensCached,
827
+ cacheCreationTokens, turnTokenUnits, contextBreakdown}` — `promptTokens` is the TOTAL input token count
828
+ (OpenAI-style, cached + uncached), `promptTokensCached` the cache-READ subset of it, so
829
+ `_parse_usage` computes `uncached_input_tokens = promptTokens - promptTokensCached`. This is now
830
+ CONFIRMED, not a guess, so `_parse_usage`'s docstring no longer marks it `# UNVERIFIED`.
831
+
832
+ ### Delegate agent pricing
833
+
834
+ Delegate-served models are keyed under the SDK's own hyphenated ids (e.g. `gpt-5-6-terra`) in
835
+ `pricing.py`'s `_PRICING` — DISTINCT keys from the dotted ids (`gpt-5.6-terra`) the claude-code/codex
836
+ harnesses use for the same physical models, because the Delegate backend echoes underscored ids
837
+ (`_` -> `-` only, never `.` -> `-`) and nothing normalizes one id family to the other. A model reachable
838
+ only through Delegate needs its own row here or `total_cost_usd` silently reports `None`. Several of
839
+ these models implicitly cache prefixes (no separate cache-write fee), so their `cache_write_per_mtok` is
840
+ `0.0` rather than mirroring input like most rows above them. Rates copied from the UiPath-only sibling
841
+ plugin's own `pricing.py`, whose own module docstring documents the same rationale.
842
+
843
+ Two things in `_DELEGATE_PRICING` look like copy errors on a skim and are not — a code review flagged
844
+ both before this line existed to point at.
845
+
846
+ `gpt-5-4` / `gpt-5-5` set `cache_write_per_mtok` equal to their OUTPUT rate (15.0 / 30.0), not a fraction
847
+ of input like every other row in the block. That is a real, documented OpenAI billing fact for these two
848
+ generations — cache writes billed at the full output rate — and their dotted twins in the main `_PRICING`
849
+ table (`gpt-5.4`, `gpt-5.5`) use the identical convention, so this is internally consistent; the numbers
850
+ are simply large. Only `gpt-5-6` introduced the cheaper 1.25x-input write convention this file's other
851
+ `gpt-5-6-*` rows use.
852
+
853
+ `gpt-5-6-sol` (5.0/30.0 here) genuinely differs from its dotted twin `gpt-5.6-sol` (4.0/20.0 in the main
854
+ table): a 2026-07-30 price cut was applied to the framework's dotted table for `terra`/`luna` and never
855
+ mirrored back into this hyphenated one (the UiPath-only sibling's own `pricing.py` carries the identical
856
+ un-mirrored gap, with the same caveat comment). The two tables can price the SAME physical model
857
+ differently until someone reconciles them — a known, pre-existing state, not something this port
858
+ introduced or should silently "fix" by picking one number over the other.
859
+
860
+ ### Delegate agent golden-master and timing-identity coverage
861
+
862
+ `AgentKind.DELEGATE` is excluded from `tests/test_agent_golden_master.py`'s `_NO_GOLDEN_COVERAGE`
863
+ allowlist rather than given fixture scenarios: a golden snapshot pins a byte-identical `TurnRecord`
864
+ for a scripted event stream, and every event field name below the confirmed `type`/`content`/
865
+ `toolName`/`sessionId`/`model`/`usage` set is a guess (see this file's own "Delegate agent" section
866
+ above and `delegate_agent.py`'s module docstring). Snapshotting a guess would make it look verified.
867
+ Add real scenarios once the fields are confirmed against a live backend.
868
+
869
+ This does NOT extend to `tests/test_timing_identity_contract.py::test_delegate_buckets_tile_the_turn`,
870
+ which IS a real, unexempted case: the ms-exact four-bucket identity depends only on this agent's own
871
+ `close_window`/`_finalize_turn` code (a single window per turn, opened at `_TurnState.__init__` and
872
+ closed at finalize), never on the SDK's field names, so there is nothing unverified for it to guess at.
@@ -391,3 +391,69 @@ with a plain synchronous call, because offloading a single fast syscall only wid
391
391
  cancellation window. The cleanup itself is deliberately synchronous: a bare `await` inside
392
392
  `finally` is cancellable, and cancelling as that line is reached would skip cleanup and leak
393
393
  the copy with no reaper.
394
+
395
+ ## System One rubric scoring
396
+
397
+ A System One model (TypeSafe's `jev`) does not generate text. It reads one state and answers
398
+ a map of typed questions — `noul` (P(yes)), `choice` (a distribution over options), `score` (a
399
+ distribution over ordered levels) — with calibrated probabilities. That inverts what a judge
400
+ criterion has to defend against. There is no prose to parse, so the whole `submit_verdict`
401
+ tool channel has no counterpart here: the response schema is fixed by the questions that were
402
+ asked, and a model that answers off-schema is a wire fault, not a grading fault. It also means
403
+ there is no system prompt to hold an identity, so the transcript's system-prompt slot carries
404
+ the rubric as sent — that, not a persona, is what a reviewer needs to replay a grade.
405
+
406
+ ### The score is ours, not the model's
407
+
408
+ The model reports a distribution; the grade is arithmetic we do on it. Each question resolves
409
+ to a value in [0.0, 1.0] through the author's own `expected` / `values`, and the criterion
410
+ score is their weighted mean. Keeping that reduction on our side buys three things a text
411
+ judge cannot have: the same answers always produce the same grade, the arithmetic is printable
412
+ (`findings` carries one line per question, with the value and the weight), and a rubric can be
413
+ re-scored from an archived transcript without another call.
414
+
415
+ `scoring: expected` weights every outcome by its probability, so a model that is genuinely
416
+ torn lands mid-scale instead of being rounded into a confident-looking verdict — the point of
417
+ a calibrated model. `argmax` exists for the case where partial credit is misleading rather
418
+ than informative: a gate. The default is `expected` because discarding the confidence is the
419
+ lossy choice and should be the one you ask for.
420
+
421
+ A distribution that is absent, non-numeric or sums to zero falls back to the point answer
422
+ (`choice` / `score` / `noul`) rather than grading as 0.0 — a broken `probabilities` block is a
423
+ provider fault, and the point answer is still a real answer. A question that is *unanswered*,
424
+ or answered with the wrong primitive, is the opposite case: it scores 0.0 at its full weight
425
+ and names itself in `findings`, because the rubric asked something the grade depends on and
426
+ dropping it would quietly inflate the mean.
427
+
428
+ ### What it does not share with `llm_judge`
429
+
430
+ It does not read `checker_context.api_route`. The eval route resolves a TEXT judge model, and
431
+ substituting one for a System One model is not a fallback, it is a different API. The
432
+ credential comes from the env var *named* by `api_key_env`, so only the name is ever stored on
433
+ the criterion or persisted into a run record. A transport failure raises
434
+ `JudgeInfrastructureError` and escalates the row, rather than following `llm_judge`'s
435
+ unconfigured-transport arm into a scored 0.0 — an ungraded row must not read as a failed one.
436
+
437
+ A 200 response whose body carries no usable `answers` map is the same class of fault. Reducing
438
+ it would score every question "no answer returned" and finalize the row as a graded 0.0, which
439
+ reads as a failure the agent earned; it escalates instead.
440
+
441
+ ### Non-finite values fail CLOSED
442
+
443
+ `json.loads` accepts the `NaN` and `Infinity` tokens, so a non-finite float arrives through an
444
+ ordinary 200 — and `base_url` may point at any gateway. NaN is unordered, so the obvious clamp
445
+ `max(0.0, min(1.0, x))` returns **1.0** for it: the naive reading of a malformed answer is FULL
446
+ credit. Every wire value is therefore checked with `math.isfinite` before it is used (`_is_number`),
447
+ `_clamp` maps a non-finite input to 0.0, and a question's `weight` is bounded and rejects inf/NaN
448
+ so the weighted mean cannot become `inf/inf`. The rule is that an unusable answer never earns
449
+ credit; it scores 0.0 and says so in `findings`.
450
+
451
+ `argmax` uses a strict `> 0.5` for `noul`. At exactly 0.5 the agreement is 0.5 whichever way
452
+ `expected` points, so `>=` passed a maximally uncertain answer in *both* directions.
453
+
454
+ ### The reference scrub runs before serialization
455
+
456
+ `system_one_judge` persists its state as `json.dumps(state)`, which escapes newlines and tabs.
457
+ `scrub_reference` matches raw file text, so scrubbing the *rendered* JSON silently misses every
458
+ multi-line reference. The state's strings are scrubbed first, then serialized — a leak shipped
459
+ exactly this way, so the leak-canary test uses a multi-line, quoted reference on purpose.
@@ -759,6 +759,25 @@ It RAISES rather than guessing when neither is conclusive. Guessing is worse tha
759
759
  grading the wrong directory makes every path-relative criterion fail as a locating
760
760
  artifact rather than as a verdict, and reports that as an ordinary score.
761
761
 
762
+ A resolved `artifacts_dir_template` is passed in as a SECOND TRUSTED ROOT and preferred as
763
+ the candidate, since that template may place artifacts outside `run_dir` entirely. Note the
764
+ direction: the roots were WIDENED, never the check relaxed — roots stay operator-supplied,
765
+ candidates stay untrusted. Without it, `--resume` over a decoupled layout failed the
766
+ containment check, fell through to a `run_dir/artifacts` that did not exist, and raised
767
+ `RegradeError`. An artifacts dir that exists outranks the recorded `sandbox_path`, which is
768
+ merely what the run claimed.
769
+
770
+ Only `--resume` (`run_command.py`'s `_grade_resumed_tasks`) passes the resolved
771
+ `artifacts_dir` — it has the run's own `BatchRunConfig` in hand, so `resolve_artifacts_dir`
772
+ needs no new state. Detached `coder-eval evaluate <run_dir>` does not: it has no
773
+ `BatchRunConfig` to resolve a template from, only the untrusted `task.json` it's grading, and
774
+ trusting THAT to widen its own containment root would defeat the check the widening exists
775
+ to keep intact. A run made with a non-default `artifacts_dir_template` therefore still needs
776
+ `--workspace` passed explicitly to `evaluate` — the same escape hatch `RegradeError` already
777
+ names. Not a regression: `evaluate` never auto-located such a workspace before this template
778
+ existed either, and the alternative (trusting the recorded path) reopens the class of bug the
779
+ previous paragraph describes.
780
+
762
781
  **Every return goes through the containment check, rooted at the RUN DIRECTORY.** Both
763
782
  `sandbox_path` and `task_id` are unvalidated strings out of the run's own `task.json`, so
764
783
  `"../../../../home/victim"` joins to a real directory `is_dir()` happily confirms. The
@@ -69,6 +69,94 @@ trajectory log the run had already paid for. `grade.docker.log` exists for the s
69
69
  one layer down: on the `run --resume` path `docker.log` is already the executed
70
70
  container's log.
71
71
 
72
+ ## The run layout as two directory templates
73
+
74
+ `logging_dir_template` and `artifacts_dir_template` (`BatchRunConfig`, resolved by
75
+ `path_utils.resolve_dir_template`) describe where a task's bookkeeping and its artifacts
76
+ go. They are resolved LATE — per task, which is the only point where `${variant}`,
77
+ `${task}` and `${repeat}` exist at all — and they are INDEPENDENT: artifacts nesting under
78
+ the logging dir is a default, not a law.
79
+
80
+ That independence is the point. Harbor puts logs in its own agent logs dir and artifacts at
81
+ the container's WORKDIR, two unrelated parts of the filesystem, and because artifacts were
82
+ never a child of the logging dir there is nothing to copy and nothing lands twice. The
83
+ previous design reached the same end state with a `--workspace-dir`/`--artifacts-dir` pair
84
+ that had to be passed the SAME path so an equality check could infer "don't copy"; a
85
+ coincidence standing in for an intention.
86
+
87
+ An override needs no special-casing anywhere, because substituting a template that contains
88
+ no placeholders is the identity function: `/work/output` in, `/work/output` out, down the
89
+ same code path as the default. The defaults spell out the historical layout, so an
90
+ unspecified run writes byte-identical paths — asserted in `test_path_utils.py` against the
91
+ literal old layout rather than against `build_task_run_dir`, which now calls the resolver
92
+ and would make the test vacuous.
93
+
94
+ Two implementation constraints, both load-bearing:
95
+
96
+ - **`string.Template`, never `re.sub`.** `re.sub` interprets backslashes in the
97
+ REPLACEMENT, so a Windows `run_dir` of `C:\runs\2026` comes out mangled.
98
+ - **`${task}` may contain a separator.** A dataset-expanded `task_id` is
99
+ `"<task>/<row>"` (`expand_dataset`, whose row ids are validated precisely because they
100
+ become directories), so it nests — on Windows too, where `pathlib` splits on both
101
+ separators.
102
+
103
+ `${task}` appears twice in the artifacts default (`.../${task}/${repeat}/artifacts/${task}`)
104
+ because that IS the layout on disk: the per-task run dir carries it, and
105
+ `preserve_to`/`capture_to`/DIRECT_WRITE each appended it again. Kept for compatibility, and
106
+ now one string to change rather than five call sites. The `*_as` variants
107
+ (`preserve_as`/`capture_as`) exist so a caller-supplied artifacts dir is used as the FINAL
108
+ path instead of having `task_id` appended to it a second time; `preserve_to`/`capture_to`
109
+ remain as the parent-relative wrappers.
110
+
111
+ ### What run_dir still owns
112
+
113
+ `${run_dir}` is only a placeholder VALUE. But run-LEVEL files — `run.json`, `run.md`,
114
+ `experiment.*`, `resume_fingerprint.json` — still follow `--run-dir`, and its default is
115
+ CWD-RELATIVE (`runs/<timestamp>`, `config.py`). Omitting `--run-dir` therefore does not
116
+ leave those files harmlessly uncollected; when cwd is the agent's WORKDIR it writes them
117
+ INSIDE the workspace, polluting the very directory `artifacts_dir_template` names.
118
+ Confirmed live: `artifacts/work/runs/<timestamp>/run.json` in a collected Harbor trial.
119
+ Harbor consequently passes `--run-dir /tmp/coder-eval-run`, a throwaway path outside the
120
+ workspace.
121
+
122
+ Anything that used to DISCOVER per-task files by walking `run_dir` had to be given the
123
+ resolved logging dirs instead, because they need not live under `run_dir` at all and the
124
+ walk silently finds nothing: `atif_emit.emit_trajectories_for_run` (which would emit no
125
+ trajectory, leaving Harbor's token/cost totals empty) and
126
+ `logging_config.aggregate_task_logs` (which would write an empty `experiment.log`).
127
+
128
+ ### A static template is single-task only
129
+
130
+ A placeholder-free template is the identity function, so every task in a multi-task
131
+ `run`/`execute` would resolve `--logging-dir`/`--artifacts-dir` to the SAME directory and
132
+ overwrite each other's `task.json`/artifacts. `run_batch` refuses this loud
133
+ (`ValueError`) when `len(resolved_tasks) > 1` and either template has no `${...}`
134
+ placeholders (`path_utils.dir_template_is_static`), mirroring the pre-existing
135
+ `--workspace-dir` + multi-task rejection. Static paths exist for exactly the single-task
136
+ case below.
137
+
138
+ ### A flat run_dir needs no special case in run_batch
139
+
140
+ Harbor's single-task, static-template mode writes `task.json`/`task.html`/`task.log`/
141
+ artifacts flat at the top-level `run_dir` instead of the usual
142
+ `<variant>/<task_id>/<NN>` nesting -- the multi-task guard above already guarantees
143
+ exactly one resolved task here, so that nesting only exists to disambiguate siblings that
144
+ can't occur. A flat `run_dir` also means `trajectory.json` (`emit_trajectories_for_run`'s
145
+ sibling write) lands at a fixed, predictable path instead of requiring a recursive glob.
146
+ `run_batch`'s `run_single` needs no `workspace_dir` special case for this: `rt.run_dir` IS
147
+ the resolved `logging_dir_template`, so "flat" is simply what a static template resolves
148
+ to, not a mode this seam has to detect.
149
+
150
+ ### CoderEvalAgent passes both templates as static paths
151
+
152
+ `harbor/agent.py`'s `CoderEvalAgent.run()` passes `--logging-dir`/`--artifacts-dir` as two
153
+ STATIC paths (Harbor's own agent logs dir, and the container's WORKDIR via `$(pwd)`) rather
154
+ than templates with placeholders — the case the identity-function property above exists for.
155
+ Because artifacts are no longer a child of the logging dir, nothing lands twice; because the
156
+ artifacts destination IS the workspace, `capture_as`'s self-referential guard makes the copy
157
+ a no-op. `--run-dir` still points at `_THROWAWAY_RUN_DIR` (`/tmp/coder-eval-run`), never
158
+ substituted into either template, for the reason in "What run_dir still owns" above.
159
+
72
160
  ## Judge persistence
73
161
 
74
162
  A judge transcript — tool calls, raw verdict, rendered prompt, system prompt — runs 10-100
@@ -453,6 +453,25 @@ container, never where the verifier looks. Confirmed live — the agent's output
453
453
  every criterion scored 0 as "file does not exist". `$(pwd)` is resolved by the container's
454
454
  shell at exec time and equals the WORKDIR because the exec is given no explicit cwd.
455
455
 
456
+ ### The artifacts default is CONTAINER_WORK_DIR, not a required field
457
+
458
+ Harbor's own artifact collection runs after the agent phase but before the verifier and
459
+ container teardown, snapshotting `task.toml`'s `artifacts` source to
460
+ `<trial>/artifacts/<source stripped of its leading slash>/` on the host.
461
+ `CoderEvalAgent`'s `--workspace-dir "$(pwd)"` runs the agent in-place at the container's
462
+ WORKDIR and skips coder-eval's own copy-out, so without an `artifacts` entry nothing the
463
+ agent produced would ever be visible on the host.
464
+
465
+ Defaults to `CONTAINER_WORK_DIR` (`/work`, coder-eval's own image WORKDIR) rather than
466
+ requiring every task/experiment to restate it — a package exported by coder-eval needs
467
+ coder-eval installed in the image, which in practice means derived from
468
+ `coder-eval-agent` (a mismatch already warns; see `_MISSING_CODER_EVAL_WARNING`). Unlike
469
+ `[environment].workdir` above — deliberately left unset so the container's own WORKDIR
470
+ decides `docker exec -w` — guessing wrong here is not fatal: a nonexistent source is a
471
+ best-effort collection miss recorded in the artifact manifest, not an exit 127. Declared
472
+ as a plain string, not an `ArtifactConfig` table, because Harbor normalizes
473
+ `artifacts = ["/x"]` to `ArtifactConfig(source="/x")` itself.
474
+
456
475
  ### What the export carries, and what it refuses to carry
457
476
 
458
477
  No Dockerfile is written unless the task sets `sandbox.docker.dockerfile_path` — only
@@ -31,6 +31,14 @@ LOG_TO_FILE=false # Set to true to enable file logging
31
31
  # BEDROCK_MODEL="eu.anthropic.claude-sonnet-4-5-20250929-v1:0"
32
32
  # BEDROCK_SMALL_MODEL="eu.anthropic.claude-haiku-4-5"
33
33
 
34
+ # TypeSafe System One (the system_one_judge criterion, model `jev`). NOT routed
35
+ # through API_BACKEND — a System One model answers typed questions with
36
+ # probabilities rather than text, so it is its own endpoint and its own key.
37
+ # The criterion stores only this variable's NAME (api_key_env), never the token.
38
+ # Unlike llm_judge, a missing key escalates the row to ERROR instead of scoring
39
+ # it 0.0: an ungraded row must not read as a failed one.
40
+ # TYPESAFE_API_KEY="<your_typesafe_api_key_here>"
41
+
34
42
  # Codex agent settings (requires the [codex] extra: `uv sync --extra codex`).
35
43
  # Only CODEX_API_KEY is read for auth (sent as a Bearer token). CODEX_BASE_URL
36
44
  # routes to a custom OpenAI-/responses-compatible endpoint; unset = standard
@@ -80,6 +88,38 @@ LOG_TO_FILE=false # Set to true to enable file logging
80
88
  # Off by default. Do NOT enable on developer workstations.
81
89
  # CODER_EVAL_REMEDIATE_HOME_PLUGINS=0
82
90
 
91
+ # Delegate agent settings (UiPath Autopilot's Delegate agent, requires Node.js
92
+ # on PATH plus `npm install @uipath/delegate-sdk` — a genuinely public package,
93
+ # no token needed). See docs/agents/DELEGATE.md.
94
+ #
95
+ # DELEGATE_SDK_NODE_MODULES / DELEGATE_SDK_PATH — override the auto-located
96
+ # install (ancestor-walk from cwd, plus home); set at most one.
97
+ # DELEGATE_SDK_NODE_MODULES="/path/to/install/root"
98
+ # DELEGATE_SDK_PATH="/path/to/node_modules/@uipath/delegate-sdk/dist/index.mjs"
99
+ #
100
+ # DELEGATE_ENV — cloud environment slug (alpha/staging/production/localhost),
101
+ # used to derive the backend URL from the auth record's org/tenant slugs.
102
+ # DELEGATE_ENV="alpha"
103
+ #
104
+ # DELEGATE_BACKEND_URL — pin the full agent-service URL directly instead
105
+ # (wins over DELEGATE_ENV when both are set).
106
+ # DELEGATE_BACKEND_URL="https://cloud.uipath.com/<org>/<tenant>/delegate_"
107
+ #
108
+ # Auth: either the token set below, or a prior `delegate-sdk`/`delegate-cli`
109
+ # login that wrote ~/.aria/sdk-auth.json (read by the Node host itself, not
110
+ # by coder_eval). Each var also accepts a DELEGATE_-namespaced spelling
111
+ # (DELEGATE_AUTH_TOKEN, DELEGATE_TENANT_ID, ...), checked first -- prefer that
112
+ # spelling in a shared environment, since the bare names collide with what
113
+ # other tooling (npm, Vault, Terraform) commonly exports.
114
+ # AUTH_TOKEN="..."
115
+ # TENANT_ID="..."
116
+ # ORG_ID="..."
117
+ # With DELEGATE_ENV (not DELEGATE_BACKEND_URL) also set these two -- the
118
+ # human-readable org/tenant names, not the GUIDs above -- or init fails with
119
+ # "--env alpha needs org/tenant slugs". See docs/agents/DELEGATE.md.
120
+ # ORG_SLUG="..."
121
+ # TENANT_SLUG="..."
122
+
83
123
  # Usage Telemetry (anonymous; on by default).
84
124
  # Disable entirely:
85
125
  # TELEMETRY_ENABLED=false
@@ -12,7 +12,7 @@
12
12
  -->
13
13
  <meta
14
14
  name="description"
15
- content="Coder Eval is Playwright for coding agents: an open-source, agent-agnostic framework for evaluating and benchmarking AI coding agents and their skills — sandboxed runs of Claude Code, Codex, Antigravity (Gemini), OpenCode, or Pi against declarative YAML tasks, with weighted scoring and CI gates. Documentation: coder-eval.com/docs"
15
+ content="Coder Eval is Playwright for coding agents: an open-source, agent-agnostic framework for evaluating and benchmarking AI coding agents and their skills — sandboxed runs of Claude Code, Codex, Antigravity (Gemini), OpenCode, Pi, or Delegate against declarative YAML tasks, with weighted scoring and CI gates. Documentation: coder-eval.com/docs"
16
16
  />
17
17
 
18
18
  <!--
@@ -227,7 +227,7 @@
227
227
  <p class="lead">
228
228
  <strong>Playwright for coding agents.</strong> An open-source, agent-agnostic framework for
229
229
  evaluating and benchmarking AI coding agents and their skills: it runs a real agent — Claude
230
- Code, Codex, Antigravity (Gemini), OpenCode, or Pi — in a sandbox against declarative YAML
230
+ Code, Codex, Antigravity (Gemini), OpenCode, Pi, or Delegate — in a sandbox against declarative YAML
231
231
  tasks, then scores the files and commands the agent actually produced.
232
232
  </p>
233
233
  <p class="notice">
@@ -0,0 +1,55 @@
1
+ """Print MATCH/NO MATCH verdicts for a ROPC-minted Delegate token's org/tenant claims.
2
+
3
+ Used by the `delegate-live-tests` job in ../workflows/pr-checks.yml. Takes the
4
+ token's base64url-encoded JWT payload (argv[1]; never the full token) and
5
+ compares its account/org and tenant claims against the DELEGATE_ORG_ID /
6
+ DELEGATE_TENANT_ID secrets (read from the environment, never printed
7
+ directly -- GitHub Actions auto-masks any exact secret value in log output,
8
+ so a raw side-by-side print would be unreliable for a human to eyeball).
9
+ """
10
+
11
+ from __future__ import annotations
12
+
13
+ import base64
14
+ import json
15
+ import os
16
+ import sys
17
+
18
+
19
+ ORG_CANDIDATES = ["account_id", "accountId", "organizationId", "organization_id"]
20
+ TENANT_CANDIDATES = ["prt_id", "tenant_id", "tenantId"]
21
+
22
+
23
+ def _decode_claims(payload: str) -> dict[str, object]:
24
+ padded = payload + "=" * (-len(payload) % 4)
25
+ decoded = json.loads(base64.urlsafe_b64decode(padded))
26
+ if not isinstance(decoded, dict):
27
+ raise SystemExit(f"token payload is {type(decoded).__name__}, not a JSON object")
28
+ return decoded
29
+
30
+
31
+ def _print_verdict(claims: dict[str, object], candidates: list[str], expected: str, label: str) -> None:
32
+ found = {k: claims[k] for k in candidates if k in claims}
33
+ if not found:
34
+ print(f"{label}: token carries none of {candidates} -- cannot verify")
35
+ return
36
+ for key, value in found.items():
37
+ verdict = "MATCH" if value == expected else "NO MATCH"
38
+ print(f"{label} claim {key}: {verdict} against DELEGATE_{label}_ID")
39
+
40
+
41
+ def main() -> None:
42
+ claims = _decode_claims(sys.argv[1])
43
+ _print_verdict(claims, ORG_CANDIDATES, os.environ["EXPECTED_ORG_ID"], "ORG")
44
+ _print_verdict(claims, TENANT_CANDIDATES, os.environ["EXPECTED_TENANT_ID"], "TENANT")
45
+ print(f"All claim keys present on token (names only, no values): {sorted(claims.keys())}")
46
+
47
+
48
+ if __name__ == "__main__":
49
+ # Advisory only: never let a diagnostic failure (a malformed argv, a
50
+ # missing EXPECTED_* var) gate the real `coder-eval run` this step exists
51
+ # to help explain, rather than mask.
52
+ try:
53
+ main()
54
+ except Exception as exc:
55
+ print(f"claims diagnostic unavailable: {exc}")