coder-eval 0.11.0__tar.gz → 0.11.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/pr-checks.yml +7 -7
  2. {coder_eval-0.11.0 → coder_eval-0.11.1}/CHANGELOG.md +29 -0
  3. {coder_eval-0.11.0 → coder_eval-0.11.1}/PKG-INFO +3 -2
  4. {coder_eval-0.11.0 → coder_eval-0.11.1}/action.yml +1 -1
  5. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/default.yaml +5 -3
  6. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
  7. {coder_eval-0.11.0 → coder_eval-0.11.1}/pyproject.toml +9 -2
  8. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/__init__.py +1 -1
  9. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/codex_agent.py +7 -2
  10. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_anthropic.py +15 -3
  11. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_bedrock.py +4 -4
  12. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/verdict_tool.py +2 -2
  13. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/telemetry.py +10 -0
  14. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/renderers.py +6 -2
  15. coder_eval-0.11.1/tests/lint/rules/ce043_no_command_output_truncation.py +75 -0
  16. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/runner.py +2 -0
  17. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_codex_agent_unit.py +25 -0
  18. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_custom_lint.py +42 -0
  19. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_anthropic.py +37 -4
  20. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_bedrock.py +15 -18
  21. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_burn_in_live.py +2 -2
  22. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_renderers.py +22 -0
  23. {coder_eval-0.11.0 → coder_eval-0.11.1}/uv.lock +52 -13
  24. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-code-review-full.md +0 -0
  25. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-code-review-wf.md +0 -0
  26. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-code-review.md +0 -0
  27. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-create-plan.md +0 -0
  28. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-implement-plan.md +0 -0
  29. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/commands/coder-eval-review.md +0 -0
  30. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/harness-candidates.md +0 -0
  31. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/shared/axes.md +0 -0
  32. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/shared/multi-model-review.md +0 -0
  33. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/shared/review-rubric.md +0 -0
  34. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/shared/run-layout.md +0 -0
  35. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/workflows/cr-axis.js +0 -0
  36. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude/workflows/cr-parent.js +0 -0
  37. {coder_eval-0.11.0 → coder_eval-0.11.1}/.claude-plugin/marketplace.json +0 -0
  38. {coder_eval-0.11.0 → coder_eval-0.11.1}/.env.example +0 -0
  39. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/CODEOWNERS +0 -0
  40. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
  41. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  42. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  43. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/actionlint.yaml +0 -0
  44. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/code_review.md +0 -0
  45. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/dependabot.yml +0 -0
  46. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/pages-stub/index.html +0 -0
  47. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/scripts/release_notes.py +0 -0
  48. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/claude-pr-review.yml +0 -0
  49. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/codeql.yml +0 -0
  50. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/conventional-commits.yml +0 -0
  51. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/docker-publish.yml +0 -0
  52. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/docs.yml +0 -0
  53. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/publish-testpypi.yml +0 -0
  54. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/release.yml +0 -0
  55. {coder_eval-0.11.0 → coder_eval-0.11.1}/.github/workflows/verify-published-action.yml +0 -0
  56. {coder_eval-0.11.0 → coder_eval-0.11.1}/.gitignore +0 -0
  57. {coder_eval-0.11.0 → coder_eval-0.11.1}/.pre-commit-config.yaml +0 -0
  58. {coder_eval-0.11.0 → coder_eval-0.11.1}/.python-version +0 -0
  59. {coder_eval-0.11.0 → coder_eval-0.11.1}/ADOPTERS.md +0 -0
  60. {coder_eval-0.11.0 → coder_eval-0.11.1}/CLAUDE.md +0 -0
  61. {coder_eval-0.11.0 → coder_eval-0.11.1}/CODE_OF_CONDUCT.md +0 -0
  62. {coder_eval-0.11.0 → coder_eval-0.11.1}/CONTRIBUTING.md +0 -0
  63. {coder_eval-0.11.0 → coder_eval-0.11.1}/LICENSE +0 -0
  64. {coder_eval-0.11.0 → coder_eval-0.11.1}/Makefile +0 -0
  65. {coder_eval-0.11.0 → coder_eval-0.11.1}/NOTICE +0 -0
  66. {coder_eval-0.11.0 → coder_eval-0.11.1}/README.md +0 -0
  67. {coder_eval-0.11.0 → coder_eval-0.11.1}/SECURITY.md +0 -0
  68. {coder_eval-0.11.0 → coder_eval-0.11.1}/comparison.md +0 -0
  69. {coder_eval-0.11.0 → coder_eval-0.11.1}/docker/Dockerfile +0 -0
  70. {coder_eval-0.11.0 → coder_eval-0.11.1}/docker/Dockerfile.runtime +0 -0
  71. {coder_eval-0.11.0 → coder_eval-0.11.1}/docker/coder_eval_entrypoint.sh +0 -0
  72. {coder_eval-0.11.0 → coder_eval-0.11.1}/docker/coder_eval_runtime_entrypoint.sh +0 -0
  73. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/AB_EXPERIMENTS.md +0 -0
  74. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/CI_GATE.md +0 -0
  75. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/DATASETS.md +0 -0
  76. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/DIALOG_MODE.md +0 -0
  77. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/DOCKER_ISOLATION.md +0 -0
  78. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/EXTENDING.md +0 -0
  79. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/PLUGIN.md +0 -0
  80. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/REPORT_SCHEMA.md +0 -0
  81. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/TASK_DEFINITION_GUIDE.md +0 -0
  82. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/USER_GUIDE.md +0 -0
  83. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/agents/ANTIGRAVITY.md +0 -0
  84. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/agents/CLAUDE_CODE.md +0 -0
  85. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/agents/CODEX.md +0 -0
  86. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/agents/HARNESS_PARITY.md +0 -0
  87. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/assets/hero.gif +0 -0
  88. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/comparison.md +0 -0
  89. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/index.md +0 -0
  90. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/llms.txt +0 -0
  91. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/01-first-evaluation.md +0 -0
  92. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/02-ci-pipeline.md +0 -0
  93. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/03-evalboard-local.md +0 -0
  94. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/04-writing-a-task.md +0 -0
  95. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/05-comparing-models.md +0 -0
  96. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/06-use-docker-isolation.md +0 -0
  97. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
  98. {coder_eval-0.11.0 → coder_eval-0.11.1}/docs/tutorials/README.md +0 -0
  99. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/.gitignore +0 -0
  100. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/README.md +0 -0
  101. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
  102. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
  103. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
  104. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/col-help.tsx +0 -0
  105. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/collapsible-rail.tsx +0 -0
  106. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/harness-badge.tsx +0 -0
  107. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/harness-selector.tsx +0 -0
  108. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/scroll-table.tsx +0 -0
  109. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/search-box.tsx +0 -0
  110. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/unit-toggle.tsx +0 -0
  111. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_components/version-list.tsx +0 -0
  112. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
  113. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_lib/source-param.ts +0 -0
  114. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
  115. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
  116. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/daily-chart.tsx +0 -0
  117. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/harness-legend.tsx +0 -0
  118. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/harness-series.ts +0 -0
  119. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/tag-rail.tsx +0 -0
  120. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
  121. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/_overview/window-summary.tsx +0 -0
  122. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/api/download/route.ts +0 -0
  123. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/api/file/route.ts +0 -0
  124. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
  125. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/api/refresh/route.ts +0 -0
  126. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/error.tsx +0 -0
  127. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/globals.css +0 -0
  128. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/icon.png +0 -0
  129. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/layout.tsx +0 -0
  130. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/page.tsx +0 -0
  131. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
  132. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/path-to-ga/page.tsx +0 -0
  133. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/path-to-ga/task-table.tsx +0 -0
  134. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/scribe/page.tsx +0 -0
  135. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/scribe/run-table.tsx +0 -0
  136. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
  137. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/trends/actions.ts +0 -0
  138. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/trends/page.tsx +0 -0
  139. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/trends/trends-view.tsx +0 -0
  140. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
  141. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/watchlist/page.tsx +0 -0
  142. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
  143. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/next-env.d.ts +0 -0
  144. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/next.config.mjs +0 -0
  145. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/package.json +0 -0
  146. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/pnpm-lock.yaml +0 -0
  147. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/postcss.config.mjs +0 -0
  148. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/public/harness/antigravity.png +0 -0
  149. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/public/harness/claude-code.png +0 -0
  150. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/public/harness/codex.png +0 -0
  151. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/public/uipath.png +0 -0
  152. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/tailwind.config.ts +0 -0
  153. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/tsconfig.json +0 -0
  154. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/vitest.config.ts +0 -0
  155. {coder_eval-0.11.0 → coder_eval-0.11.1}/evalboard/vitest.setup.ts +0 -0
  156. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/early-stop-ab.yaml +0 -0
  157. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/model-comparison.yaml +0 -0
  158. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/permissions-smoke.yaml +0 -0
  159. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/plugin-comparison.yaml +0 -0
  160. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/prompt-mutations-example.yaml +0 -0
  161. {coder_eval-0.11.0 → coder_eval-0.11.1}/experiments/smoke_variants.yaml +0 -0
  162. {coder_eval-0.11.0 → coder_eval-0.11.1}/litellm/README.md +0 -0
  163. {coder_eval-0.11.0 → coder_eval-0.11.1}/litellm/cost_logger.py +0 -0
  164. {coder_eval-0.11.0 → coder_eval-0.11.1}/litellm/litellm-config.yaml +0 -0
  165. {coder_eval-0.11.0 → coder_eval-0.11.1}/litellm/start-litellm.sh +0 -0
  166. {coder_eval-0.11.0 → coder_eval-0.11.1}/mkdocs.yml +0 -0
  167. {coder_eval-0.11.0 → coder_eval-0.11.1}/osv-scanner.toml +0 -0
  168. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/README.md +0 -0
  169. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/cli-setup.md +0 -0
  170. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/criteria.md +0 -0
  171. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/repo-layout.md +0 -0
  172. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/run-layout.md +0 -0
  173. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/task-rubric.md +0 -0
  174. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
  175. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
  176. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
  177. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
  178. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
  179. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/init/SKILL.md +0 -0
  180. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
  181. {coder_eval-0.11.0 → coder_eval-0.11.1}/plugins/coder-eval/skills/task/SKILL.md +0 -0
  182. {coder_eval-0.11.0 → coder_eval-0.11.1}/scripts/check_commit_msg.sh +0 -0
  183. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/.gitattributes +0 -0
  184. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agent.py +0 -0
  185. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/__init__.py +0 -0
  186. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/_logging.py +0 -0
  187. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/antigravity_agent.py +0 -0
  188. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/claude_code_agent.py +0 -0
  189. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/noop_agent.py +0 -0
  190. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/registry.py +0 -0
  191. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/agents/watchdog.py +0 -0
  192. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/analysis.py +0 -0
  193. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/__init__.py +0 -0
  194. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/aggregate_command.py +0 -0
  195. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/console.py +0 -0
  196. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/evaluate_command.py +0 -0
  197. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/plan_command.py +0 -0
  198. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/report_command.py +0 -0
  199. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/run_command.py +0 -0
  200. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/run_helpers.py +0 -0
  201. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/run_task_internal_command.py +0 -0
  202. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/cli/utils.py +0 -0
  203. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/config.py +0 -0
  204. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/__init__.py +0 -0
  205. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
  206. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/agent_judge.py +0 -0
  207. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/base.py +0 -0
  208. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/classification_match.py +0 -0
  209. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/cli_called.py +0 -0
  210. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/command_executed.py +0 -0
  211. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/commands_efficiency.py +0 -0
  212. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/file_check.py +0 -0
  213. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/file_contains.py +0 -0
  214. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/file_exists.py +0 -0
  215. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/file_matches_regex.py +0 -0
  216. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/json_check.py +0 -0
  217. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/llm_judge.py +0 -0
  218. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/reference_comparison.py +0 -0
  219. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/run_command.py +0 -0
  220. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/skill_triggered.py +0 -0
  221. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/criteria/uipath_eval.py +0 -0
  222. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/__init__.py +0 -0
  223. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/agent.py +0 -0
  224. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/budget.py +0 -0
  225. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/categories.py +0 -0
  226. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/categorization.py +0 -0
  227. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/checker_misuse.py +0 -0
  228. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/executor.py +0 -0
  229. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/judge.py +0 -0
  230. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/reference.py +0 -0
  231. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/retry.py +0 -0
  232. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/errors/timeout.py +0 -0
  233. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/__init__.py +0 -0
  234. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/checker.py +0 -0
  235. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_context.py +0 -0
  236. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_models.py +0 -0
  237. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_persistence.py +0 -0
  238. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/judge_usage.py +0 -0
  239. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/sub_agent.py +0 -0
  240. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/evaluation/summaries.py +0 -0
  241. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/formatting.py +0 -0
  242. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/fs_permissions.py +0 -0
  243. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/invocation_log.py +0 -0
  244. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/isolation/__init__.py +0 -0
  245. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/isolation/docker_runner.py +0 -0
  246. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/litellm_cost.py +0 -0
  247. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/logging_config.py +0 -0
  248. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/__init__.py +0 -0
  249. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/agent_config.py +0 -0
  250. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/container_paths.py +0 -0
  251. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/criteria.py +0 -0
  252. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/enums.py +0 -0
  253. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/experiment.py +0 -0
  254. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/judge.py +0 -0
  255. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/judge_defaults.py +0 -0
  256. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/limits.py +0 -0
  257. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/merge_strategy.py +0 -0
  258. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/mutations.py +0 -0
  259. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/results.py +0 -0
  260. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/routing.py +0 -0
  261. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/sandbox.py +0 -0
  262. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/tasks.py +0 -0
  263. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/models/templates.py +0 -0
  264. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/__init__.py +0 -0
  265. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/batch.py +0 -0
  266. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/config.py +0 -0
  267. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/config_merge.py +0 -0
  268. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/early_stop.py +0 -0
  269. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/evaluation.py +0 -0
  270. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/experiment.py +0 -0
  271. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/overrides.py +0 -0
  272. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/run_limits.py +0 -0
  273. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestration/task_loader.py +0 -0
  274. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/orchestrator.py +0 -0
  275. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/path_utils.py +0 -0
  276. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/plugins.py +0 -0
  277. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/pricing.py +0 -0
  278. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/py.typed +0 -0
  279. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/reports.py +0 -0
  280. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/reports_experiment.py +0 -0
  281. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/reports_html.py +0 -0
  282. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/reports_junit.py +0 -0
  283. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/reports_stats.py +0 -0
  284. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/resources/__init__.py +0 -0
  285. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
  286. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/resources/tags.yaml +0 -0
  287. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/sandbox.py +0 -0
  288. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/__init__.py +0 -0
  289. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/ast_similarity.py +0 -0
  290. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/complexity.py +0 -0
  291. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/quality.py +0 -0
  292. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/signature_similarity.py +0 -0
  293. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/similarity.py +0 -0
  294. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/scoring/token_similarity.py +0 -0
  295. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/simulation/__init__.py +0 -0
  296. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/simulation/termination.py +0 -0
  297. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/simulation/user_simulator.py +0 -0
  298. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/__init__.py +0 -0
  299. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/callbacks.py +0 -0
  300. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/collector.py +0 -0
  301. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/events.py +0 -0
  302. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/streaming/wire.py +0 -0
  303. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/telemetry.py +0 -0
  304. {coder_eval-0.11.0 → coder_eval-0.11.1}/src/coder_eval/utils.py +0 -0
  305. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/README.md +0 -0
  306. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agentless_smoke_test.yaml +0 -0
  307. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/antigravity_hello_world.yaml +0 -0
  308. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
  309. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/claude_hello_world.yaml +0 -0
  310. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/claude_hello_world_docker.yaml +0 -0
  311. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
  312. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/claude_subagent_test.yaml +0 -0
  313. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
  314. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_hello_world.yaml +0 -0
  315. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_parallel_commands.yaml +0 -0
  316. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
  317. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_skills_test.yaml +0 -0
  318. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_string_utils.yaml +0 -0
  319. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/codex_subagent_test.yaml +0 -0
  320. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/subagent_bash_long_input.yaml +0 -0
  321. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/agents/subagent_merge_sort.yaml +0 -0
  322. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
  323. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/anti_cheat_reference/reference/solution.py +0 -0
  324. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/byod_smoke_test.yaml +0 -0
  325. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dataset_example.yaml +0 -0
  326. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/datasets/sentiment.jsonl +0 -0
  327. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
  328. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
  329. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
  330. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/environment/input.txt +0 -0
  331. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
  332. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
  333. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
  334. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
  335. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
  336. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/fibonacci_with_template.yaml +0 -0
  337. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/hello_date.yaml +0 -0
  338. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/inline_starter_example.yaml +0 -0
  339. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/internal/session_resumption.yaml +0 -0
  340. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_smoke.yaml +0 -0
  341. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
  342. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
  343. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
  344. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
  345. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
  346. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
  347. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/run_limits/max_turns_cap.yaml +0 -0
  348. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/run_limits/turn_timeout.yaml +0 -0
  349. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
  350. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
  351. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
  352. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
  353. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
  354. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
  355. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/README.md +0 -0
  356. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
  357. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
  358. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
  359. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
  360. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
  361. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
  362. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
  363. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
  364. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
  365. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
  366. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/sentiment_classification.yaml +0 -0
  367. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_agent_judge.yaml +0 -0
  368. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_budget_exceeded.yaml +0 -0
  369. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
  370. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_llm_judge.yaml +0 -0
  371. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_negative_path.yaml +0 -0
  372. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_task_timeout.yaml +0 -0
  373. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/smoke_variants.yaml +0 -0
  374. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/test_sandbox.yaml +0 -0
  375. {coder_eval-0.11.0 → coder_eval-0.11.1}/tasks/token_check.yaml +0 -0
  376. {coder_eval-0.11.0 → coder_eval-0.11.1}/templates/byod_smoke_test/Dockerfile +0 -0
  377. {coder_eval-0.11.0 → coder_eval-0.11.1}/templates/fibonacci-starter/README.md +0 -0
  378. {coder_eval-0.11.0 → coder_eval-0.11.1}/templates/fibonacci-starter/src/main.py +0 -0
  379. {coder_eval-0.11.0 → coder_eval-0.11.1}/templates/fibonacci-starter/tests/test_main.py +0 -0
  380. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/__init__.py +0 -0
  381. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/__init__.py +0 -0
  382. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/__init__.py +0 -0
  383. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/_scrub.py +0 -0
  384. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
  385. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
  386. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
  387. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
  388. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
  389. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
  390. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
  391. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
  392. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
  393. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
  394. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
  395. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
  396. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
  397. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
  398. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
  399. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
  400. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
  401. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
  402. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
  403. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
  404. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/live_criteria.py +0 -0
  405. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/__init__.py +0 -0
  406. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
  407. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
  408. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
  409. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
  410. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/run_full.md +0 -0
  411. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
  412. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/_path_helpers.py +0 -0
  413. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/conftest.py +0 -0
  414. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/__init__.py +0 -0
  415. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
  416. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
  417. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/mock_agent.py +0 -0
  418. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
  419. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
  420. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
  421. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/fixtures/text_stub_agent.py +0 -0
  422. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/__init__.py +0 -0
  423. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/action_docs.py +0 -0
  424. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/dead_config_fields.py +0 -0
  425. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/doc_env_parity.py +0 -0
  426. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/doc_examples.py +0 -0
  427. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/doc_indexes.py +0 -0
  428. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/doc_schema_parity.py +0 -0
  429. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/generated.py +0 -0
  430. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/live_verdict_contract.py +0 -0
  431. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/plugin_reference.py +0 -0
  432. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/pyright_config.py +0 -0
  433. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/__init__.py +0 -0
  434. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/base.py +0 -0
  435. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
  436. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
  437. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
  438. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
  439. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
  440. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
  441. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
  442. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
  443. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
  444. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce023_no_proxy_shim_import.py +0 -0
  445. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
  446. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
  447. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
  448. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
  449. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
  450. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_agent_timing_access.py +0 -0
  451. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
  452. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
  453. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_silent_except.py +0 -0
  454. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_submodule_model_imports.py +0 -0
  455. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
  456. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
  457. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
  458. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/open_explicit_encoding.py +0 -0
  459. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
  460. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/register_criterion_required.py +0 -0
  461. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
  462. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
  463. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/violation.py +0 -0
  464. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/lint/workflow_outputs.py +0 -0
  465. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_action_version_pin.py +0 -0
  466. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent.py +0 -0
  467. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_config_no_timing_fields.py +0 -0
  468. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_config_optional_type.py +0 -0
  469. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_config_registry_dispatch.py +0 -0
  470. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_config_sdk_decoupling.py +0 -0
  471. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_golden_master.py +0 -0
  472. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_judge_criterion.py +0 -0
  473. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_telemetry.py +0 -0
  474. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_telemetry_advanced.py +0 -0
  475. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agent_timeout.py +0 -0
  476. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_agentless.py +0 -0
  477. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_aggregate.py +0 -0
  478. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_antigravity_agent.py +0 -0
  479. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_byoa_plugin.py +0 -0
  480. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_byoa_plugin_live.py +0 -0
  481. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_byod_feature.py +0 -0
  482. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_check_all_async.py +0 -0
  483. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_checker_logging.py +0 -0
  484. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_classification_match.py +0 -0
  485. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_claude_settings_enforcement_live.py +0 -0
  486. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cleanup_preservation_guard.py +0 -0
  487. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_backend_flag.py +0 -0
  488. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_called_criterion.py +0 -0
  489. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_empty_glob.py +0 -0
  490. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_sdk_options.py +0 -0
  491. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_set_overrides.py +0 -0
  492. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_telemetry.py +0 -0
  493. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cli_type_flag.py +0 -0
  494. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_code_review_bugs.py +0 -0
  495. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_codex_agent.py +0 -0
  496. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_codex_agent_live.py +0 -0
  497. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_codex_token_mapping.py +0 -0
  498. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_command_executed.py +0 -0
  499. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_command_statistics.py +0 -0
  500. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_command_telemetry_result_data.py +0 -0
  501. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_commands_efficiency.py +0 -0
  502. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_config_lineage.py +0 -0
  503. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_config_merge_engine.py +0 -0
  504. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_config_precedence.py +0 -0
  505. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_continuous_scoring.py +0 -0
  506. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_cost_accounting_paths.py +0 -0
  507. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_criterion_result_round_trip.py +0 -0
  508. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_dataset_expansion.py +0 -0
  509. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_debug_logging.py +0 -0
  510. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_build_failure.py +0 -0
  511. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_litellm_env.py +0 -0
  512. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_runner_container_death.py +0 -0
  513. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_runner_mounts.py +0 -0
  514. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_runner_stream_limit.py +0 -0
  515. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_wildcard_env.py +0 -0
  516. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_docker_workdir_live.py +0 -0
  517. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_driver_resolver.py +0 -0
  518. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_early_stop.py +0 -0
  519. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_error_handling.py +0 -0
  520. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_evaluate_command.py +0 -0
  521. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_evaluator.py +0 -0
  522. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_event_collector.py +0 -0
  523. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_cli.py +0 -0
  524. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_loader.py +0 -0
  525. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_models.py +0 -0
  526. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_reports.py +0 -0
  527. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_resolver.py +0 -0
  528. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_experiment_runner.py +0 -0
  529. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_file_check.py +0 -0
  530. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_file_contains_scoring.py +0 -0
  531. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_formatting.py +0 -0
  532. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_git_clone_failure.py +0 -0
  533. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_glob_paths_in_file_criteria.py +0 -0
  534. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_heartbeat_watchdog.py +0 -0
  535. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_ignore_patterns_negation.py +0 -0
  536. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_image_from_dockerfiles.py +0 -0
  537. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_integration.py +0 -0
  538. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_json_check.py +0 -0
  539. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_context_builder.py +0 -0
  540. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_models.py +0 -0
  541. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_judge_persistence.py +0 -0
  542. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_lint_no_top_level_run_limits.py +0 -0
  543. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_lint_runner.py +0 -0
  544. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_litellm_config.py +0 -0
  545. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_litellm_cost.py +0 -0
  546. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_litellm_cost_logger.py +0 -0
  547. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_litellm_route.py +0 -0
  548. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_llm_judge_criterion.py +0 -0
  549. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_log_tail_buffer.py +0 -0
  550. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_logging.py +0 -0
  551. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_logging_isolation.py +0 -0
  552. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_merge_characterization.py +0 -0
  553. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_merge_strategy_annotations.py +0 -0
  554. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_merge_unification.py +0 -0
  555. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_models.py +0 -0
  556. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_mutations.py +0 -0
  557. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_new_criteria.py +0 -0
  558. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_node_env_config.py +0 -0
  559. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_optional_dependencies.py +0 -0
  560. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_orchestrator.py +0 -0
  561. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_orchestrator_error_log_tail.py +0 -0
  562. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_orchestrator_telemetry.py +0 -0
  563. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_overrides_engine.py +0 -0
  564. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_parallel.py +0 -0
  565. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_path_utils.py +0 -0
  566. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_plan_command.py +0 -0
  567. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_plugin_processing.py +0 -0
  568. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_plugins.py +0 -0
  569. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_post_run.py +0 -0
  570. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_pr_review_workflow.py +0 -0
  571. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_pre_run.py +0 -0
  572. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_preservation_mode.py +0 -0
  573. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_pricing_registry.py +0 -0
  574. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reference_comparison_scoring.py +0 -0
  575. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reference_evaluator.py +0 -0
  576. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reference_missing_file.py +0 -0
  577. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reference_models.py +0 -0
  578. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reference_permissions.py +0 -0
  579. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_registry.py +0 -0
  580. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_release_notes.py +0 -0
  581. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_replicate_stats.py +0 -0
  582. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_report_command.py +0 -0
  583. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports.py +0 -0
  584. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports_experiment.py +0 -0
  585. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports_html.py +0 -0
  586. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports_junit.py +0 -0
  587. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports_stats.py +0 -0
  588. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_reports_stats_nonfinite.py +0 -0
  589. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_resolve_task_files.py +0 -0
  590. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_resume.py +0 -0
  591. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_retry_logic_comprehensive.py +0 -0
  592. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_route_seam_exhaustiveness.py +0 -0
  593. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_routing.py +0 -0
  594. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_command_junit.py +0 -0
  595. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_command_stdout.py +0 -0
  596. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_limits_models.py +0 -0
  597. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_limits_orchestrator.py +0 -0
  598. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_limits_resolver.py +0 -0
  599. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_run_metrics.py +0 -0
  600. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_runtime_tool_versions.py +0 -0
  601. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox.py +0 -0
  602. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_layer_builder.py +0 -0
  603. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_optional.py +0 -0
  604. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_record_cli.py +0 -0
  605. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_security.py +0 -0
  606. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_symlink_preservation.py +0 -0
  607. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sandbox_templates.py +0 -0
  608. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_scorers.py +0 -0
  609. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_scoring_quality.py +0 -0
  610. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sdk_option_classification.py +0 -0
  611. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_simulation_config.py +0 -0
  612. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_simulation_integration.py +0 -0
  613. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_simulation_termination.py +0 -0
  614. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_simulation_trials.py +0 -0
  615. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_skill_triggered.py +0 -0
  616. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_agent_integration.py +0 -0
  617. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_batch.py +0 -0
  618. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_callbacks.py +0 -0
  619. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_cli.py +0 -0
  620. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_events.py +0 -0
  621. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_orchestrator.py +0 -0
  622. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_streaming_wire.py +0 -0
  623. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_sub_agent_runner.py +0 -0
  624. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_success_criterion_union.py +0 -0
  625. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_suite_rollup.py +0 -0
  626. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_summaries.py +0 -0
  627. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_tags.py +0 -0
  628. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_task_definition_unknown_fields.py +0 -0
  629. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_teardown_interrupt.py +0 -0
  630. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_telemetry.py +0 -0
  631. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_template_env_expansion.py +0 -0
  632. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_threshold_enforcement.py +0 -0
  633. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_timeout_batch.py +0 -0
  634. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_timeout_categorization.py +0 -0
  635. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_timeout_exceptions.py +0 -0
  636. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_timeout_models.py +0 -0
  637. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_timeout_orchestrator.py +0 -0
  638. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_token_usage.py +0 -0
  639. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_uipath_eval.py +0 -0
  640. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_user_simulator.py +0 -0
  641. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_utils.py +0 -0
  642. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_utterance_extraction.py +0 -0
  643. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_variant_prompt_file.py +0 -0
  644. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_verdict_tool.py +0 -0
  645. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_verify_published_workflow.py +0 -0
  646. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_visible_turn_cap.py +0 -0
  647. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_watchdog.py +0 -0
  648. {coder_eval-0.11.0 → coder_eval-0.11.1}/tests/test_yaml_migration.py +0 -0
@@ -76,7 +76,7 @@ jobs:
76
76
 
77
77
  - name: Install uv
78
78
  run: |
79
- python -m pip install --upgrade pip
79
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
80
80
  pip install uv
81
81
 
82
82
  - name: Install project dependencies (hash-verified from uv.lock)
@@ -297,7 +297,7 @@ jobs:
297
297
 
298
298
  - name: Install uv
299
299
  run: |
300
- python -m pip install --upgrade pip
300
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
301
301
  pip install uv
302
302
 
303
303
  - name: Install project without [uipath] extra
@@ -381,7 +381,7 @@ jobs:
381
381
 
382
382
  - name: Install uv
383
383
  run: |
384
- python -m pip install --upgrade pip
384
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
385
385
  pip install uv
386
386
 
387
387
  - name: Install project dependencies (hash-verified from uv.lock)
@@ -527,7 +527,7 @@ jobs:
527
527
 
528
528
  - name: Install uv
529
529
  run: |
530
- python -m pip install --upgrade pip
530
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
531
531
  pip install uv
532
532
 
533
533
  - name: Install project dependencies (hash-verified from uv.lock)
@@ -697,7 +697,7 @@ jobs:
697
697
 
698
698
  - name: Install uv
699
699
  run: |
700
- python -m pip install --upgrade pip
700
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
701
701
  pip install uv
702
702
 
703
703
  - name: Install project dependencies (hash-verified from uv.lock)
@@ -840,7 +840,7 @@ jobs:
840
840
 
841
841
  - name: Install uv
842
842
  run: |
843
- python -m pip install --upgrade pip
843
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
844
844
  pip install uv
845
845
 
846
846
  - name: Install project dependencies (with codex extra)
@@ -919,7 +919,7 @@ jobs:
919
919
 
920
920
  - name: Install uv
921
921
  run: |
922
- python -m pip install --upgrade pip
922
+ python -m pip install --upgrade "pip>=26.2" # PYSEC-2026-3721 fix floor
923
923
  pip install uv
924
924
 
925
925
  - name: Install project dependencies (hash-verified from uv.lock)
@@ -2,6 +2,35 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.11.1 (2026-08-21)
6
+
7
+ ### Bug Fixes
8
+
9
+ - **ci**: Pin pip floor to 26.2 to close PYSEC-2026-3721
10
+ ([#133](https://github.com/UiPath/coder_eval/pull/133),
11
+ [`beecedd`](https://github.com/UiPath/coder_eval/commit/beeceddc521957d3cb53f944b7877dada1155548))
12
+
13
+ - **codex**: Store command output whole in result_summary (+ code-review fixes)
14
+ ([#127](https://github.com/UiPath/coder_eval/pull/127),
15
+ [`3d09f0f`](https://github.com/UiPath/coder_eval/commit/3d09f0f4d966f619405058aca44aa982b1ba265a))
16
+
17
+ - **deps**: Address PR #133 review — anthropic 1.0.0 dropped temperature kwarg
18
+ ([#133](https://github.com/UiPath/coder_eval/pull/133),
19
+ [`beecedd`](https://github.com/UiPath/coder_eval/commit/beeceddc521957d3cb53f944b7877dada1155548))
20
+
21
+ - **deps**: Bump anthropic to 1.0.0 and migrate Bedrock judge path to httpx2
22
+ ([#133](https://github.com/UiPath/coder_eval/pull/133),
23
+ [`beecedd`](https://github.com/UiPath/coder_eval/commit/beeceddc521957d3cb53f944b7877dada1155548))
24
+
25
+ - **deps**: Bump anthropic to 1.0.0, migrate Bedrock judge path to httpx2
26
+ ([#133](https://github.com/UiPath/coder_eval/pull/133),
27
+ [`beecedd`](https://github.com/UiPath/coder_eval/commit/beeceddc521957d3cb53f944b7877dada1155548))
28
+
29
+ - **deps**: Re-lock pip to 26.2.1 to actually close PYSEC-2026-3721
30
+ ([#133](https://github.com/UiPath/coder_eval/pull/133),
31
+ [`beecedd`](https://github.com/UiPath/coder_eval/commit/beeceddc521957d3cb53f944b7877dada1155548))
32
+
33
+
5
34
  ## v0.11.0 (2026-08-19)
6
35
 
7
36
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: coder-eval
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity) with sandboxed, reproducible YAML task suites.
5
5
  Project-URL: Homepage, https://coder-eval.com
6
6
  Project-URL: Repository, https://github.com/UiPath/coder_eval
@@ -23,11 +23,12 @@ Classifier: Topic :: Software Development :: Quality Assurance
23
23
  Classifier: Topic :: Software Development :: Testing
24
24
  Classifier: Typing :: Typed
25
25
  Requires-Python: >=3.13
26
- Requires-Dist: anthropic>=0.86.0
26
+ Requires-Dist: anthropic<2.0.0,>=1.0.0
27
27
  Requires-Dist: anyio>=4.13.0
28
28
  Requires-Dist: azure-monitor-opentelemetry-exporter<1.1.0,>=1.0.0b30
29
29
  Requires-Dist: claude-agent-sdk>=0.2.124
30
30
  Requires-Dist: click>=8.3.3
31
+ Requires-Dist: httpx2<3.0.0,>=2.12.0
31
32
  Requires-Dist: jmespath>=1.1.0
32
33
  Requires-Dist: jsonschema>=4.26.0
33
34
  Requires-Dist: opentelemetry-sdk<2.0.0,>=1.30.0
@@ -41,7 +41,7 @@ inputs:
41
41
  version:
42
42
  description: coder-eval version to install from PyPI, or "local" to install from the action checkout
43
43
  required: false
44
- default: "0.11.0" # <-- kept in sync with releases by release.yml
44
+ default: "0.11.1" # <-- kept in sync with releases by release.yml
45
45
  run-dir:
46
46
  description: Run directory (--run-dir)
47
47
  required: false
@@ -18,9 +18,11 @@ defaults:
18
18
  # Per-row dataset multiplication: a 100-row task with max_usd: 0.10 permits up to
19
19
  # $10 cumulative spend.
20
20
  run_limits:
21
- # Maximum agent inner-loop turns per iteration (null = SDK default).
22
- # Typical range in tasks: 3-18 depending on complexity.
23
- max_turns: 20
21
+ # Hard safety ceiling on agent inner-loop turns per iteration (null = SDK
22
+ # default). Set well above the typical 3-18 turns a task needs so it only
23
+ # trips on runaway loops; task_timeout / turn_timeout below are the practical
24
+ # guards. Override per-task when a task legitimately needs more.
25
+ max_turns: 100
24
26
  # Soft target: when cumulative SDK turns across all iterations of a task
25
27
  # exceed this, the orchestrator logs a one-shot warning and the report
26
28
  # surfaces a badge. Does NOT abort the run (max_turns is the hard cap).
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coder-eval",
3
- "version": "0.11.0",
3
+ "version": "0.11.1",
4
4
  "description": "Author, run, and analyze coder-eval suites — including whether your Claude Code skills actually trigger.",
5
5
  "author": { "name": "UiPath", "url": "https://github.com/UiPath/coder_eval" },
6
6
  "homepage": "https://coder-eval.com",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "coder-eval"
3
- version = "0.11.0"
3
+ version = "0.11.1"
4
4
  description = "Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity) with sandboxed, reproducible YAML task suites."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -34,7 +34,14 @@ dependencies = [
34
34
  "click>=8.3.3",
35
35
  "rich>=14.3.3",
36
36
  "python-dotenv>=1.2.2",
37
- "anthropic>=0.86.0",
37
+ # Cap the major: 1.0.0 already proved a major can drop call kwargs
38
+ # (temperature/top_p/top_k off messages.create — see judge_anthropic.py).
39
+ "anthropic>=1.0.0,<2.0.0",
40
+ # anthropic>=1.0.0 migrated its HTTP layer from httpx to httpx2 (its own
41
+ # exceptions, e.g. APIConnectionError, now carry an httpx2.Request). Declared
42
+ # explicitly since our code/tests construct httpx2 types directly. Capped to
43
+ # mirror anthropic's own bound on it (`httpx2<3,>=2.0.0`).
44
+ "httpx2>=2.12.0,<3.0.0",
38
45
  "claude-agent-sdk>=0.2.124",
39
46
  "anyio>=4.13.0",
40
47
  "radon>=6.0.1",
@@ -1,3 +1,3 @@
1
1
  """coder_eval - A framework for evaluating AI coding agents."""
2
2
 
3
- __version__ = "0.11.0"
3
+ __version__ = "0.11.1"
@@ -2178,10 +2178,15 @@ class CodexAgent(Agent[CodexAgentConfig]):
2178
2178
  # Determine result status from exit code
2179
2179
  result_status = "success" if exit_code == 0 else "error" if exit_code is not None else "unknown"
2180
2180
 
2181
- # Build result summary with output if available
2181
+ # Build result summary with output if available. Store the output WHOLE:
2182
+ # CommandTelemetry.result_summary is the untruncated tool-result body (its
2183
+ # length drives CommandTelemetry.result_tokens), so truncating here would
2184
+ # under-report tool-output size for every command (see CE043). The output is
2185
+ # already bounded by the Codex harness's own exec-output truncation; any
2186
+ # further trimming for display belongs in the renderers/reports, not capture.
2182
2187
  summary_parts = [f"Exit code: {exit_code}" if exit_code is not None else "Command executed"]
2183
2188
  if output and len(output.strip()) > 0:
2184
- summary_parts.append(f"Output: {output[:100]}")
2189
+ summary_parts.append(f"Output: {output}")
2185
2190
  result_summary = " | ".join(summary_parts)
2186
2191
 
2187
2192
  # Try to parse output as JSON
@@ -40,7 +40,14 @@ async def invoke_anthropic_judge_async(
40
40
  Returns the SDK response converted to a dict via ``model_dump`` so the
41
41
  caller can reuse ``extract_verdict_from_anthropic_response`` — Anthropic's
42
42
  native shape (content blocks with ``type: tool_use``) is identical
43
- between this SDK call and the Bedrock httpx-direct call.
43
+ between this SDK call and the Bedrock httpx2-direct call.
44
+
45
+ ``temperature`` is forwarded via ``extra_body`` rather than as a top-level
46
+ kwarg: anthropic 1.0.0 dropped ``temperature``/``top_p``/``top_k`` from
47
+ ``AsyncMessages.create``'s typed signature, but the Messages API itself
48
+ still accepts ``temperature`` in the raw JSON body — the same body shape
49
+ the Bedrock path already sends it in — so ``extra_body`` keeps both judge
50
+ backends honoring ``LLMJudgeCriterion.temperature`` identically.
44
51
  """
45
52
  alias = to_anthropic_alias(model)
46
53
  client = AsyncAnthropic(timeout=timeout_seconds)
@@ -51,12 +58,17 @@ async def invoke_anthropic_judge_async(
51
58
  system=system,
52
59
  messages=[{"role": "user", "content": user}],
53
60
  max_tokens=max_tokens,
54
- temperature=temperature,
55
- tools=[tool_spec], # type: ignore[arg-type]
61
+ tools=[tool_spec], # pyright: ignore[reportArgumentType]
56
62
  tool_choice={"type": "tool", "name": tool_spec["name"]},
63
+ extra_body={"temperature": temperature},
57
64
  )
58
65
  except APIError as e:
59
66
  # The SDK already retries transient failures internally (2 attempts
60
67
  # by default) — do not add another retry loop here.
61
68
  raise JudgeInfrastructureError(f"Anthropic judge API error: {e}") from e
69
+ except Exception as e:
70
+ # A signature/contract break (e.g. a removed or renamed kwarg after an
71
+ # SDK bump) must not be scored as an agent failure — see CLAUDE.md's
72
+ # CE039 rationale: an eval-infra fault is not the agent's fault.
73
+ raise JudgeInfrastructureError(f"Anthropic judge call failed: {e}") from e
62
74
  return response.model_dump()
@@ -14,7 +14,7 @@ agent_judge uses the Claude Code SDK subprocess instead — the two paths
14
14
  intentionally do not share an HTTP client.
15
15
 
16
16
  Async on purpose: this is llm_judge's only implementation of the network
17
- call (there is no sync twin) — ``httpx.AsyncClient`` lets the call yield the
17
+ call (there is no sync twin) — ``httpx2.AsyncClient`` lets the call yield the
18
18
  event loop instead of blocking a thread-pool thread for the wait, so
19
19
  ``SuccessChecker.check_all_async`` awaits it directly without pinning a
20
20
  thread. (``check_all_async`` currently runs criteria sequentially; running
@@ -27,7 +27,7 @@ import asyncio
27
27
  import logging
28
28
  from typing import Any
29
29
 
30
- import httpx
30
+ import httpx2
31
31
 
32
32
  from coder_eval.errors import JudgeInfrastructureError
33
33
  from coder_eval.errors.categories import RetryConfig
@@ -90,13 +90,13 @@ async def invoke_bedrock_judge_async(
90
90
  attempts = _JUDGE_RETRY.max_retries + 1
91
91
  last_failure = ""
92
92
  last_exc: Exception | None = None
93
- async with httpx.AsyncClient() as client:
93
+ async with httpx2.AsyncClient() as client:
94
94
  for attempt in range(attempts):
95
95
  if attempt:
96
96
  await asyncio.sleep(compute_backoff(_JUDGE_RETRY, attempt - 1))
97
97
  try:
98
98
  response = await client.post(url, headers=headers, json=body, timeout=timeout_seconds)
99
- except httpx.HTTPError as e:
99
+ except httpx2.HTTPError as e:
100
100
  last_failure = f"Bedrock invoke transport error: {e}"
101
101
  last_exc = e
102
102
  logger.warning("Bedrock judge attempt %d/%d failed: %s", attempt + 1, attempts, last_failure)
@@ -40,7 +40,7 @@ SUBMIT_VERDICT_ANTHROPIC_TOOL: dict[str, Any] = {
40
40
  "description": _SUBMIT_VERDICT_DESCRIPTION,
41
41
  "input_schema": JudgeVerdict.model_json_schema(),
42
42
  }
43
- """Anthropic-native tool spec for the Bedrock httpx-direct path and Anthropic SDK calls.
43
+ """Anthropic-native tool spec for the Bedrock httpx2-direct path and Anthropic SDK calls.
44
44
 
45
45
  Note: Anthropic uses ``input_schema``, not OpenAI's ``parameters``.
46
46
  """
@@ -132,7 +132,7 @@ def extract_verdict_from_anthropic_response(
132
132
  ``{"type": "tool_use", "name": "submit_verdict"}`` and validates the last
133
133
  one's ``input`` against ``JudgeVerdict``. Used by:
134
134
 
135
- * The Bedrock httpx path (``invoke_bedrock_judge_async``) — raw JSON dict.
135
+ * The Bedrock httpx2 path (``invoke_bedrock_judge_async``) — raw JSON dict.
136
136
  * The Anthropic SDK Direct path (``invoke_anthropic_judge_async``) —
137
137
  response converted via ``Message.model_dump()``.
138
138
 
@@ -410,6 +410,16 @@ class CommandTelemetry(BaseModel):
410
410
  result size from prompt-cache growth (which is unavailable when caching is
411
411
  disabled). Approximate, not the API's exact tokenizer count, but
412
412
  deterministic and always present. 0 when the tool returned no content.
413
+
414
+ This measure is only meaningful while ``result_summary`` stays whole: an
415
+ agent that truncates a command's output before recording it (as the Codex
416
+ agent once did with ``output[:100]``) silently under-reports that command's
417
+ result. Lint rule CE043 forbids truncating captured command output
418
+ (stdout/stderr) in the agents, so the "untruncated" contract holds for
419
+ command results across agents. (One-line summaries of non-command tool
420
+ items — e.g. collab/MCP status lines built by ``_summarize_tool_item`` —
421
+ are intentionally brief and out of scope.) Trim for DISPLAY in the
422
+ renderers/reports instead.
413
423
  """
414
424
  if not self.result_summary:
415
425
  return 0
@@ -104,14 +104,18 @@ class RichStreamRenderer:
104
104
  return f"[cyan]>>> TOOL: {escape(event.tool.tool_name)}[/cyan] | {params_str}"
105
105
 
106
106
  if isinstance(event, ToolEndEvent):
107
- preview = escape(event.tool.result_summary or "")
107
+ # result_summary is stored WHOLE (untruncated) at capture; cap it here
108
+ # for the terse live feed so a large command output doesn't flood the
109
+ # console. The reported char count reflects the true (full) length.
110
+ full = event.tool.result_summary or ""
111
+ preview = escape(_truncate(full, _MAX_RESULT_LEN))
108
112
  if event.status == ToolEndStatus.OK:
109
113
  tag = "[green]<<< OK[/green]"
110
114
  elif event.status == ToolEndStatus.UNRESOLVED:
111
115
  tag = "[yellow]<<< UNRESOLVED:[/yellow]"
112
116
  else:
113
117
  tag = f"[red]<<< {escape(event.status.value.upper())}:[/red]"
114
- return f"{tag} ({len(preview)} chars) {preview}"
118
+ return f"{tag} ({len(full)} chars) {preview}"
115
119
 
116
120
  if isinstance(event, TextChunkEvent):
117
121
  return f"[dim]{escape(event.text)}[/dim]"
@@ -0,0 +1,75 @@
1
+ """CE043: Agents must not truncate a command's output when recording it.
2
+
3
+ ``CommandTelemetry.result_summary`` is contractually the *untruncated* tool-result
4
+ body, and its length drives the ``result_tokens`` computed field (the cost
5
+ simulator's cache-independent measure of tool-output size). An agent that clips a
6
+ command's captured output before storing it silently under-reports every tool
7
+ result — exactly the bug the Codex agent shipped with (``f"Output: {output[:100]}"``),
8
+ which pinned ~77% of its Bash results at ~31 tokens and skewed the cost model.
9
+
10
+ This rule flags, inside ``src/coder_eval/agents/``, a constant-upper-bound slice
11
+ (``x[:N]``) applied to a value that denotes captured command output:
12
+
13
+ * a name whose id is/ends with ``output`` / ``stdout`` / ``stderr``
14
+ (e.g. ``output[:100]``, ``aggregated_output[:512]``, ``proc_stdout[:80]``)
15
+ * an attribute access ``.aggregated_output`` / ``.output`` / ``.stdout`` / ``.stderr``
16
+ (e.g. ``command_item.aggregated_output[:100]``)
17
+
18
+ Store the output whole (it is already bounded by the harness's own exec-output
19
+ truncation) and trim for DISPLAY in the renderers/reports instead.
20
+
21
+ Add ``# noqa: CE043`` on the offending line for a genuinely non-recorded use
22
+ (e.g. slicing stdout only to build a short crash/log message that never becomes a
23
+ ``result_summary``), with a comment explaining why.
24
+ """
25
+
26
+ import ast
27
+
28
+ from tests.lint.rules.base import BaseRule
29
+
30
+
31
+ _OUTPUT_NAMES = {"output", "stdout", "stderr", "aggregated_output"}
32
+
33
+
34
+ def _denotes_output(value: ast.AST) -> str | None:
35
+ """Return the output-ish identifier being sliced, or None."""
36
+ if isinstance(value, ast.Name):
37
+ low = value.id.lower()
38
+ if low in _OUTPUT_NAMES or low.endswith("_output") or low.endswith("_stdout") or low.endswith("_stderr"):
39
+ return value.id
40
+ elif isinstance(value, ast.Attribute):
41
+ if value.attr.lower() in _OUTPUT_NAMES:
42
+ return value.attr
43
+ return None
44
+
45
+
46
+ def _is_const_upper_slice(sl: ast.AST) -> bool:
47
+ """True for ``[:N]`` / ``[:N:...]`` with a constant int upper bound."""
48
+ return (
49
+ isinstance(sl, ast.Slice)
50
+ and sl.lower is None
51
+ and isinstance(sl.upper, ast.Constant)
52
+ and isinstance(sl.upper.value, int)
53
+ )
54
+
55
+
56
+ class NoCommandOutputTruncation(BaseRule):
57
+ id = "CE043"
58
+
59
+ def check(self, tree: ast.AST) -> list:
60
+ # Scope to the agent implementations — only they record CommandTelemetry.
61
+ if "/agents/" not in self.filepath.replace("\\", "/"):
62
+ return []
63
+ self.visit(tree)
64
+ return self.violations
65
+
66
+ def visit_Subscript(self, node: ast.Subscript) -> None:
67
+ name = _denotes_output(node.value)
68
+ if name is not None and _is_const_upper_slice(node.slice):
69
+ self.violation(
70
+ node,
71
+ f"Do not truncate command output ({name}[:...]); CommandTelemetry.result_summary "
72
+ "must stay whole (it drives result_tokens). Store the full output and trim for "
73
+ "display in the renderers/reports instead.",
74
+ )
75
+ self.generic_visit(node)
@@ -24,6 +24,7 @@ from tests.lint.rules.ce032_criteria_path_seam import CriteriaPathSeam
24
24
  from tests.lint.rules.ce037_no_dead_private_helper import NoDeadPrivateHelper
25
25
  from tests.lint.rules.ce038_acquire_inside_try import AcquireInsideTry
26
26
  from tests.lint.rules.ce039_config_error_escalates import ConfigErrorEscalates
27
+ from tests.lint.rules.ce043_no_command_output_truncation import NoCommandOutputTruncation
27
28
  from tests.lint.rules.no_agent_timing_access import NoAgentTimingAccess
28
29
  from tests.lint.rules.no_blocking_io_in_async import NoBlockingIoInAsync
29
30
  from tests.lint.rules.no_cli_imports_in_core import NoCliImportsInCore
@@ -71,6 +72,7 @@ ALL_RULES: list[RuleClass] = [
71
72
  NoDeadPrivateHelper,
72
73
  AcquireInsideTry,
73
74
  ConfigErrorEscalates,
75
+ NoCommandOutputTruncation,
74
76
  ]
75
77
 
76
78
  # Anti-shadow invariant (mirrors AgentRegistry / register_pricing): every CE rule
@@ -104,3 +104,28 @@ class TestCodexTurnState:
104
104
  # A tool_use block was recorded into the open buffer (cut at the next
105
105
  # tokenUsage flush, not here), joinable to the command by tool_id.
106
106
  assert any(b.block_type == "tool_use" and b.tool_use_id == "c1" for b in state.open_blocks)
107
+
108
+ def test_command_output_recorded_whole_not_truncated(self):
109
+ # Regression for the Codex `output[:100]` bug (CE043): result_summary must
110
+ # carry the FULL command output so result_tokens reflects real tool-output
111
+ # size instead of being pinned at a ~31-token, 100-char cap.
112
+ agent = CodexAgent(parse_agent_config(type=AgentKind.CODEX, model="gpt-5-codex"))
113
+ state, commands, _messages = self._state(agent)
114
+
115
+ big_output = "X" * 4000 # far beyond the old 100-char clip
116
+ cmd_root = SimpleNamespace(
117
+ type="commandExecution",
118
+ id="c2",
119
+ command="cat big.txt",
120
+ exit_code=0,
121
+ aggregated_output=big_output,
122
+ duration_ms=5,
123
+ )
124
+ state.on_item_started(_item_notification("item/started", cmd_root))
125
+ state.on_item_completed(_item_notification("item/completed", cmd_root))
126
+
127
+ cmd = commands[0]
128
+ assert big_output in (cmd.result_summary or ""), "full output must be recorded, not truncated"
129
+ # result_tokens (ceil(len/4)) must scale with the real output, not ~31.
130
+ assert cmd.result_tokens >= len(big_output) // 4
131
+ assert cmd.result_tokens > 100
@@ -60,6 +60,48 @@ class TestCE016NoComputedTokenUsageKwargs:
60
60
  assert not self._run("ReconciliationMessage(input_tokens=-5)")
61
61
 
62
62
 
63
+ @pytest.mark.lint
64
+ class TestCE043NoCommandOutputTruncation:
65
+ """CE043 flags truncation of captured command output inside agents/, only."""
66
+
67
+ @staticmethod
68
+ def _run(src: str, *, in_agents: bool = True):
69
+ import ast
70
+
71
+ from tests.lint.rules.ce043_no_command_output_truncation import NoCommandOutputTruncation
72
+
73
+ path = "src/coder_eval/agents/codex_agent.py" if in_agents else "src/coder_eval/reports_html.py"
74
+ return NoCommandOutputTruncation(path).check(ast.parse(src))
75
+
76
+ @pytest.mark.parametrize(
77
+ "expr",
78
+ [
79
+ "output[:100]",
80
+ "aggregated_output[:512]",
81
+ "command_item.aggregated_output[:100]",
82
+ "proc_stdout[:80]",
83
+ "result.stderr[:200]",
84
+ 'f"Output: {output[:100]}"',
85
+ ],
86
+ )
87
+ def test_flags_output_truncation_in_agents(self, expr: str):
88
+ assert self._run(f"x = {expr}"), f"expected CE043 to flag {expr!r}"
89
+
90
+ def test_allows_untruncated_output(self):
91
+ assert not self._run('summary = f"Output: {output}"')
92
+ assert not self._run("summary = aggregated_output")
93
+
94
+ def test_ignores_non_output_slices(self):
95
+ # Legit error/orchestration summaries that are NOT captured command output.
96
+ assert not self._run("detail = summary.result[:200]")
97
+ assert not self._run("msg = content_str[:200]")
98
+ assert not self._run("s = '; '.join(messages)[:200]")
99
+
100
+ def test_scoped_to_agents_only(self):
101
+ # The same pattern outside agents/ is not this rule's concern (display code).
102
+ assert not self._run("preview = output[:100]", in_agents=False)
103
+
104
+
63
105
  @pytest.mark.lint
64
106
  class TestCE017ModelsLazyAgentImports:
65
107
  """CE017 flags only module-level agents/plugins imports inside models/."""
@@ -10,6 +10,7 @@ from typing import Any
10
10
  from unittest.mock import AsyncMock, MagicMock, patch
11
11
 
12
12
  import pytest
13
+ from anthropic.resources.messages import AsyncMessages
13
14
 
14
15
  from coder_eval.evaluation.judge_anthropic import invoke_anthropic_judge_async
15
16
  from coder_eval.evaluation.verdict_tool import SUBMIT_VERDICT_ANTHROPIC_TOOL
@@ -29,12 +30,25 @@ def _make_response(*, score: float = 0.5, rationale: str = "ok") -> MagicMock:
29
30
 
30
31
  def _make_client(response: MagicMock | None = None) -> MagicMock:
31
32
  client = MagicMock()
32
- client.messages.create = AsyncMock(return_value=response if response is not None else _make_response())
33
+ # spec-bound to the real ``AsyncMessages.create`` signature so a kwarg the
34
+ # installed SDK no longer accepts (e.g. a removed ``temperature``) fails
35
+ # here instead of silently passing against an unconstrained MagicMock.
36
+ client.messages = MagicMock(spec=AsyncMessages)
37
+ client.messages.create = AsyncMock(
38
+ wraps=lambda **kwargs: _bind_and_return(response if response is not None else _make_response(), **kwargs)
39
+ )
33
40
  client.__aenter__ = AsyncMock(return_value=client)
34
41
  client.__aexit__ = AsyncMock(return_value=None)
35
42
  return client
36
43
 
37
44
 
45
+ def _bind_and_return(response: MagicMock, **kwargs: Any) -> MagicMock:
46
+ import inspect
47
+
48
+ inspect.signature(AsyncMessages.create).bind(MagicMock(), **kwargs)
49
+ return response
50
+
51
+
38
52
  async def _invoke(**overrides):
39
53
  defaults = {
40
54
  "model": "anthropic.claude-sonnet-4-6",
@@ -79,24 +93,43 @@ async def test_invoke_anthropic_judge_raises_on_empty_model() -> None:
79
93
 
80
94
 
81
95
  async def test_invoke_anthropic_judge_passes_temperature_and_max_tokens() -> None:
96
+ """``temperature`` travels via ``extra_body`` — anthropic 1.0.0 dropped it as a
97
+ top-level ``messages.create`` kwarg, but the Messages API still accepts it in
98
+ the raw JSON body (the same body shape the Bedrock path sends it in)."""
82
99
  client = _make_client()
83
100
  with patch("coder_eval.evaluation.judge_anthropic.AsyncAnthropic", return_value=client):
84
101
  await _invoke(temperature=0.7, max_tokens=321, system="sys", user="usr")
85
102
  kwargs: dict[str, Any] = client.messages.create.call_args.kwargs
86
- assert kwargs["temperature"] == 0.7
103
+ assert "temperature" not in kwargs
104
+ assert kwargs["extra_body"] == {"temperature": 0.7}
87
105
  assert kwargs["max_tokens"] == 321
88
106
  assert kwargs["system"] == "sys"
89
107
  assert kwargs["messages"] == [{"role": "user", "content": "usr"}]
90
108
 
91
109
 
110
+ async def test_invoke_anthropic_judge_escalates_on_signature_break() -> None:
111
+ """A kwarg the installed SDK no longer accepts must escalate as infra, not
112
+ silently score the row 0.0 (see judge_bedrock.py's parallel retry/escalation
113
+ contract and CLAUDE.md's CE039 rationale)."""
114
+ from coder_eval.errors import JudgeInfrastructureError
115
+
116
+ client = _make_client()
117
+ client.messages.create.side_effect = TypeError("create() got an unexpected keyword argument 'temperature'")
118
+ with (
119
+ patch("coder_eval.evaluation.judge_anthropic.AsyncAnthropic", return_value=client),
120
+ pytest.raises(JudgeInfrastructureError, match="Anthropic judge call failed"),
121
+ ):
122
+ await _invoke()
123
+
124
+
92
125
  async def test_invoke_anthropic_judge_wraps_api_error() -> None:
93
- import httpx
126
+ import httpx2
94
127
  from anthropic import APIConnectionError
95
128
 
96
129
  from coder_eval.errors import JudgeInfrastructureError
97
130
 
98
131
  client = _make_client()
99
- sdk_error = APIConnectionError(request=httpx.Request("POST", "https://api.anthropic.com"))
132
+ sdk_error = APIConnectionError(request=httpx2.Request("POST", "https://api.anthropic.com"))
100
133
  client.messages.create.side_effect = sdk_error
101
134
  with (
102
135
  patch("coder_eval.evaluation.judge_anthropic.AsyncAnthropic", return_value=client),