coder-eval 0.12.8__tar.gz → 0.12.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) hide show
  1. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/pr-checks.yml +1 -1
  2. {coder_eval-0.12.8 → coder_eval-0.12.9}/CHANGELOG.md +29 -0
  3. {coder_eval-0.12.8 → coder_eval-0.12.9}/PKG-INFO +1 -1
  4. {coder_eval-0.12.8 → coder_eval-0.12.9}/action.yml +1 -1
  5. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DOCKER_ISOLATION.md +13 -2
  6. coder_eval-0.12.9/osv-scanner.toml +15 -0
  7. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
  8. {coder_eval-0.12.8 → coder_eval-0.12.9}/pyproject.toml +2 -2
  9. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/__init__.py +1 -1
  10. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/docker_runner.py +59 -23
  11. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/__init__.py +2 -0
  12. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/container_paths.py +3 -0
  13. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_container_context.py +31 -0
  14. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_mounts.py +21 -18
  15. {coder_eval-0.12.8 → coder_eval-0.12.9}/uv.lock +5 -5
  16. coder_eval-0.12.8/osv-scanner.toml +0 -11
  17. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-full.md +0 -0
  18. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review-wf.md +0 -0
  19. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-code-review.md +0 -0
  20. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-create-plan.md +0 -0
  21. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-implement-plan.md +0 -0
  22. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/commands/coder-eval-review.md +0 -0
  23. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/harness-candidates.md +0 -0
  24. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/README.md +0 -0
  25. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/agents.md +0 -0
  26. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/contracts.md +0 -0
  27. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/isolation.md +0 -0
  28. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/lint-rules.md +0 -0
  29. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/orchestration.md +0 -0
  30. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/permissions.md +0 -0
  31. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/persistence.md +0 -0
  32. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/reporting.md +0 -0
  33. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/notes/timing.md +0 -0
  34. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/axes.md +0 -0
  35. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/multi-model-review.md +0 -0
  36. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/review-rubric.md +0 -0
  37. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/shared/run-layout.md +0 -0
  38. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/workflows/cr-axis.js +0 -0
  39. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude/workflows/cr-parent.js +0 -0
  40. {coder_eval-0.12.8 → coder_eval-0.12.9}/.claude-plugin/marketplace.json +0 -0
  41. {coder_eval-0.12.8 → coder_eval-0.12.9}/.env.example +0 -0
  42. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/CODEOWNERS +0 -0
  43. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
  44. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  45. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  46. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/actionlint.yaml +0 -0
  47. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/code_review.md +0 -0
  48. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/dependabot.yml +0 -0
  49. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/pages-stub/index.html +0 -0
  50. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
  51. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/harbor_e2e.py +0 -0
  52. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/scripts/release_notes.py +0 -0
  53. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/claude-pr-review.yml +0 -0
  54. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/codeql.yml +0 -0
  55. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/conventional-commits.yml +0 -0
  56. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/docker-publish.yml +0 -0
  57. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/docs.yml +0 -0
  58. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/harbor-e2e.yml +0 -0
  59. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/publish-testpypi.yml +0 -0
  60. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/release.yml +0 -0
  61. {coder_eval-0.12.8 → coder_eval-0.12.9}/.github/workflows/verify-published-action.yml +0 -0
  62. {coder_eval-0.12.8 → coder_eval-0.12.9}/.gitignore +0 -0
  63. {coder_eval-0.12.8 → coder_eval-0.12.9}/.pre-commit-config.yaml +0 -0
  64. {coder_eval-0.12.8 → coder_eval-0.12.9}/.python-version +0 -0
  65. {coder_eval-0.12.8 → coder_eval-0.12.9}/ADOPTERS.md +0 -0
  66. {coder_eval-0.12.8 → coder_eval-0.12.9}/CLAUDE.md +0 -0
  67. {coder_eval-0.12.8 → coder_eval-0.12.9}/CODE_OF_CONDUCT.md +0 -0
  68. {coder_eval-0.12.8 → coder_eval-0.12.9}/CONTRIBUTING.md +0 -0
  69. {coder_eval-0.12.8 → coder_eval-0.12.9}/LICENSE +0 -0
  70. {coder_eval-0.12.8 → coder_eval-0.12.9}/Makefile +0 -0
  71. {coder_eval-0.12.8 → coder_eval-0.12.9}/NOTICE +0 -0
  72. {coder_eval-0.12.8 → coder_eval-0.12.9}/README.md +0 -0
  73. {coder_eval-0.12.8 → coder_eval-0.12.9}/SECURITY.md +0 -0
  74. {coder_eval-0.12.8 → coder_eval-0.12.9}/comparison.md +0 -0
  75. {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/Dockerfile +0 -0
  76. {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/Dockerfile.runtime +0 -0
  77. {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/coder_eval_entrypoint.sh +0 -0
  78. {coder_eval-0.12.8 → coder_eval-0.12.9}/docker/coder_eval_runtime_entrypoint.sh +0 -0
  79. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/AB_EXPERIMENTS.md +0 -0
  80. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/CI_GATE.md +0 -0
  81. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DATASETS.md +0 -0
  82. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/DIALOG_MODE.md +0 -0
  83. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/EXTENDING.md +0 -0
  84. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/PLUGIN.md +0 -0
  85. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/REPORT_SCHEMA.md +0 -0
  86. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/TASK_DEFINITION_GUIDE.md +0 -0
  87. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/USER_GUIDE.md +0 -0
  88. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/ANTIGRAVITY.md +0 -0
  89. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/CLAUDE_CODE.md +0 -0
  90. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/CODEX.md +0 -0
  91. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/DELEGATE.md +0 -0
  92. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/HARNESS_PARITY.md +0 -0
  93. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/OPENCODE.md +0 -0
  94. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/agents/PI.md +0 -0
  95. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/assets/hero.gif +0 -0
  96. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/comparison.md +0 -0
  97. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/index.md +0 -0
  98. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/llms.txt +0 -0
  99. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/01-first-evaluation.md +0 -0
  100. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/02-ci-pipeline.md +0 -0
  101. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/03-evalboard-local.md +0 -0
  102. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/04-writing-a-task.md +0 -0
  103. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/05-comparing-models.md +0 -0
  104. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/06-use-docker-isolation.md +0 -0
  105. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
  106. {coder_eval-0.12.8 → coder_eval-0.12.9}/docs/tutorials/README.md +0 -0
  107. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/.gitignore +0 -0
  108. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/README.md +0 -0
  109. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
  110. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
  111. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
  112. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
  113. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/col-help.tsx +0 -0
  114. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/collapsible-rail.tsx +0 -0
  115. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/harness-badge.tsx +0 -0
  116. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/harness-selector.tsx +0 -0
  117. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/scroll-table.tsx +0 -0
  118. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/search-box.tsx +0 -0
  119. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/skeleton.tsx +0 -0
  120. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/unit-toggle.tsx +0 -0
  121. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_components/version-list.tsx +0 -0
  122. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
  123. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_lib/source-param.ts +0 -0
  124. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
  125. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
  126. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
  127. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/daily-chart.tsx +0 -0
  128. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
  129. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/harness-legend.tsx +0 -0
  130. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/harness-series.ts +0 -0
  131. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/tag-rail.tsx +0 -0
  132. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
  133. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
  134. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/_overview/window-summary.tsx +0 -0
  135. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/download/route.ts +0 -0
  136. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/file/route.ts +0 -0
  137. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
  138. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/api/refresh/route.ts +0 -0
  139. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/error.tsx +0 -0
  140. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/globals.css +0 -0
  141. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/icon.png +0 -0
  142. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/layout.tsx +0 -0
  143. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/loading.tsx +0 -0
  144. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/page.tsx +0 -0
  145. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
  146. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/page.tsx +0 -0
  147. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/path-to-ga/task-table.tsx +0 -0
  148. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/scribe/page.tsx +0 -0
  149. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/scribe/run-table.tsx +0 -0
  150. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
  151. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/actions.ts +0 -0
  152. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/page.tsx +0 -0
  153. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/trends/trends-view.tsx +0 -0
  154. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
  155. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/page.tsx +0 -0
  156. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
  157. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/next-env.d.ts +0 -0
  158. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/next.config.mjs +0 -0
  159. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/package.json +0 -0
  160. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/pnpm-lock.yaml +0 -0
  161. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/postcss.config.mjs +0 -0
  162. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/antigravity.png +0 -0
  163. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/claude-code.png +0 -0
  164. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/codex.png +0 -0
  165. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/harness/pi.png +0 -0
  166. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/public/uipath.png +0 -0
  167. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/tailwind.config.ts +0 -0
  168. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/tsconfig.json +0 -0
  169. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/vitest.config.ts +0 -0
  170. {coder_eval-0.12.8 → coder_eval-0.12.9}/evalboard/vitest.setup.ts +0 -0
  171. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/default.yaml +0 -0
  172. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/early-stop-ab.yaml +0 -0
  173. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/model-comparison.yaml +0 -0
  174. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/permissions-smoke.yaml +0 -0
  175. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/plugin-comparison.yaml +0 -0
  176. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/prompt-mutations-example.yaml +0 -0
  177. {coder_eval-0.12.8 → coder_eval-0.12.9}/experiments/smoke_variants.yaml +0 -0
  178. {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/README.md +0 -0
  179. {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/cost_logger.py +0 -0
  180. {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/litellm-config.yaml +0 -0
  181. {coder_eval-0.12.8 → coder_eval-0.12.9}/litellm/start-litellm.sh +0 -0
  182. {coder_eval-0.12.8 → coder_eval-0.12.9}/mkdocs.yml +0 -0
  183. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/README.md +0 -0
  184. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/cli-setup.md +0 -0
  185. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/criteria.md +0 -0
  186. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/repo-layout.md +0 -0
  187. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/run-layout.md +0 -0
  188. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/task-rubric.md +0 -0
  189. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
  190. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
  191. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
  192. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
  193. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
  194. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/init/SKILL.md +0 -0
  195. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
  196. {coder_eval-0.12.8 → coder_eval-0.12.9}/plugins/coder-eval/skills/task/SKILL.md +0 -0
  197. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/check_commit_msg.sh +0 -0
  198. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/README.md +0 -0
  199. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/antigravity.json +0 -0
  200. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/claude-code.json +0 -0
  201. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/codex.json +0 -0
  202. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/opencode.json +0 -0
  203. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/corpus/pi.json +0 -0
  204. {coder_eval-0.12.8 → coder_eval-0.12.9}/scripts/timing/decompose_run.py +0 -0
  205. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/.gitattributes +0 -0
  206. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agent.py +0 -0
  207. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/__init__.py +0 -0
  208. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/_logging.py +0 -0
  209. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/_skills.py +0 -0
  210. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/antigravity_agent.py +0 -0
  211. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/claude_code_agent.py +0 -0
  212. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/codex_agent.py +0 -0
  213. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/.gitignore +0 -0
  214. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/delegate_host.mjs +0 -0
  215. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate/package.json +0 -0
  216. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/delegate_agent.py +0 -0
  217. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/noop_agent.py +0 -0
  218. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/opencode_agent.py +0 -0
  219. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/pi_agent.py +0 -0
  220. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/registry.py +0 -0
  221. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/agents/watchdog.py +0 -0
  222. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/analysis.py +0 -0
  223. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/argv_match.py +0 -0
  224. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/__init__.py +0 -0
  225. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/console.py +0 -0
  226. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_command.py +0 -0
  227. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/evaluate_target.py +0 -0
  228. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/execute_command.py +0 -0
  229. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/export_command.py +0 -0
  230. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/harbor_command.py +0 -0
  231. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/plan_command.py +0 -0
  232. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/report_command.py +0 -0
  233. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_command.py +0 -0
  234. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_helpers.py +0 -0
  235. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/run_task_internal_command.py +0 -0
  236. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/cli/utils.py +0 -0
  237. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/config.py +0 -0
  238. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/__init__.py +0 -0
  239. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
  240. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/agent_judge.py +0 -0
  241. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/base.py +0 -0
  242. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/classification_match.py +0 -0
  243. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/cli_called.py +0 -0
  244. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/command_executed.py +0 -0
  245. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/commands_efficiency.py +0 -0
  246. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_check.py +0 -0
  247. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_contains.py +0 -0
  248. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_exists.py +0 -0
  249. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/file_matches_regex.py +0 -0
  250. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/json_check.py +0 -0
  251. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/llm_judge.py +0 -0
  252. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/reference_comparison.py +0 -0
  253. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/run_command.py +0 -0
  254. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/skill_triggered.py +0 -0
  255. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/system_one_judge.py +0 -0
  256. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/criteria/uipath_eval.py +0 -0
  257. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/durations.py +0 -0
  258. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/__init__.py +0 -0
  259. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/agent.py +0 -0
  260. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/budget.py +0 -0
  261. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/categories.py +0 -0
  262. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/categorization.py +0 -0
  263. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/checker_misuse.py +0 -0
  264. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/executor.py +0 -0
  265. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/judge.py +0 -0
  266. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/reference.py +0 -0
  267. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/retry.py +0 -0
  268. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/errors/timeout.py +0 -0
  269. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/__init__.py +0 -0
  270. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/checker.py +0 -0
  271. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
  272. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
  273. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_context.py +0 -0
  274. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_litellm.py +0 -0
  275. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_models.py +0 -0
  276. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_persistence.py +0 -0
  277. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_system_one.py +0 -0
  278. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/judge_usage.py +0 -0
  279. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/sub_agent.py +0 -0
  280. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/summaries.py +0 -0
  281. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
  282. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/evaluation/verdict_tool.py +0 -0
  283. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/formatting.py +0 -0
  284. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/fs_permissions.py +0 -0
  285. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/__init__.py +0 -0
  286. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/agent.py +0 -0
  287. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/agent_paths.py +0 -0
  288. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_emit.py +0 -0
  289. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_hydrate.py +0 -0
  290. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/atif_models.py +0 -0
  291. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/experiment_packager.py +0 -0
  292. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/packager.py +0 -0
  293. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/portability.py +0 -0
  294. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/harbor/reward.py +0 -0
  295. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/invocation_log.py +0 -0
  296. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/__init__.py +0 -0
  297. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/isolation/eval_material.py +0 -0
  298. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/litellm_cost.py +0 -0
  299. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/logging_config.py +0 -0
  300. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/agent_config.py +0 -0
  301. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/cli_match.py +0 -0
  302. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/container_context.py +0 -0
  303. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/criteria.py +0 -0
  304. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/enums.py +0 -0
  305. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/experiment.py +0 -0
  306. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/judge.py +0 -0
  307. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/judge_defaults.py +0 -0
  308. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/limits.py +0 -0
  309. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/merge_strategy.py +0 -0
  310. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/mutations.py +0 -0
  311. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/results.py +0 -0
  312. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/routing.py +0 -0
  313. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/sandbox.py +0 -0
  314. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/system_one.py +0 -0
  315. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/tasks.py +0 -0
  316. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/telemetry.py +0 -0
  317. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/models/templates.py +0 -0
  318. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/__init__.py +0 -0
  319. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/batch.py +0 -0
  320. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/config.py +0 -0
  321. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/config_merge.py +0 -0
  322. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/early_stop.py +0 -0
  323. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/evaluation.py +0 -0
  324. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/experiment.py +0 -0
  325. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/overrides.py +0 -0
  326. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/regrade.py +0 -0
  327. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_limits.py +0 -0
  328. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
  329. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestration/task_loader.py +0 -0
  330. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/orchestrator.py +0 -0
  331. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/path_utils.py +0 -0
  332. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/plugins.py +0 -0
  333. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/pricing.py +0 -0
  334. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/py.typed +0 -0
  335. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/__init__.py +0 -0
  336. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/experiment.py +0 -0
  337. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/helpers.py +0 -0
  338. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/html.py +0 -0
  339. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/junit.py +0 -0
  340. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/reports/markdown.py +0 -0
  341. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/__init__.py +0 -0
  342. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
  343. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/resources/tags.yaml +0 -0
  344. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/result_metrics.py +0 -0
  345. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/run_record.py +0 -0
  346. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/sandbox.py +0 -0
  347. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/__init__.py +0 -0
  348. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/ast_similarity.py +0 -0
  349. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/complexity.py +0 -0
  350. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/quality.py +0 -0
  351. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/signature_similarity.py +0 -0
  352. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/similarity.py +0 -0
  353. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/scoring/token_similarity.py +0 -0
  354. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/__init__.py +0 -0
  355. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/termination.py +0 -0
  356. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/user_simulator.py +0 -0
  357. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/simulation/utterance.py +0 -0
  358. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/stats.py +0 -0
  359. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/__init__.py +0 -0
  360. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/callbacks.py +0 -0
  361. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/collector.py +0 -0
  362. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/events.py +0 -0
  363. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/renderers.py +0 -0
  364. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/streaming/wire.py +0 -0
  365. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/telemetry.py +0 -0
  366. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/timing.py +0 -0
  367. {coder_eval-0.12.8 → coder_eval-0.12.9}/src/coder_eval/utils.py +0 -0
  368. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/README.md +0 -0
  369. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agentless_smoke_test.yaml +0 -0
  370. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world.yaml +0 -0
  371. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
  372. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_hello_world.yaml +0 -0
  373. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_hello_world_docker.yaml +0 -0
  374. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
  375. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/claude_subagent_test.yaml +0 -0
  376. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
  377. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_hello_world.yaml +0 -0
  378. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_parallel_commands.yaml +0 -0
  379. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
  380. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_skills_test.yaml +0 -0
  381. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_string_utils.yaml +0 -0
  382. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/codex_subagent_test.yaml +0 -0
  383. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/subagent_bash_long_input.yaml +0 -0
  384. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/agents/subagent_merge_sort.yaml +0 -0
  385. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
  386. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/anti_cheat_reference/reference/solution.py +0 -0
  387. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/byod_smoke_test.yaml +0 -0
  388. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dataset_example.yaml +0 -0
  389. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/datasets/sentiment.jsonl +0 -0
  390. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
  391. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/delegate/hello_date_delegate.yaml +0 -0
  392. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
  393. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
  394. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
  395. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/environment/input.txt +0 -0
  396. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
  397. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
  398. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
  399. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
  400. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
  401. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/fibonacci_with_template.yaml +0 -0
  402. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/hello_date.yaml +0 -0
  403. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/inline_starter_example.yaml +0 -0
  404. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/internal/session_resumption.yaml +0 -0
  405. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_smoke.yaml +0 -0
  406. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
  407. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
  408. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
  409. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
  410. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
  411. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/opencode_smoke_test.yaml +0 -0
  412. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/pi_smoke_test.yaml +0 -0
  413. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
  414. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/record_cli_responses.yaml +0 -0
  415. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/run_limits/max_turns_cap.yaml +0 -0
  416. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/run_limits/turn_timeout.yaml +0 -0
  417. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
  418. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
  419. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
  420. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
  421. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
  422. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
  423. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/README.md +0 -0
  424. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
  425. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
  426. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
  427. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
  428. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
  429. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
  430. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
  431. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
  432. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
  433. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
  434. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/sentiment_classification.yaml +0 -0
  435. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_agent_judge.yaml +0 -0
  436. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_budget_exceeded.yaml +0 -0
  437. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
  438. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_llm_judge.yaml +0 -0
  439. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_negative_path.yaml +0 -0
  440. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_system_one_judge.yaml +0 -0
  441. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_task_timeout.yaml +0 -0
  442. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/smoke_variants.yaml +0 -0
  443. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/test_sandbox.yaml +0 -0
  444. {coder_eval-0.12.8 → coder_eval-0.12.9}/tasks/token_check.yaml +0 -0
  445. {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/byod_smoke_test/Dockerfile +0 -0
  446. {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/README.md +0 -0
  447. {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/src/main.py +0 -0
  448. {coder_eval-0.12.8 → coder_eval-0.12.9}/templates/fibonacci-starter/tests/test_main.py +0 -0
  449. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/__init__.py +0 -0
  450. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_bracket_clock.py +0 -0
  451. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_container_contract.py +0 -0
  452. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/__init__.py +0 -0
  453. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/__init__.py +0 -0
  454. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/_scrub.py +0 -0
  455. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
  456. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
  457. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
  458. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
  459. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
  460. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
  461. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
  462. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
  463. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
  464. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
  465. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
  466. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
  467. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
  468. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
  469. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
  470. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
  471. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
  472. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
  473. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
  474. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
  475. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
  476. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
  477. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
  478. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
  479. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
  480. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
  481. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
  482. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
  483. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
  484. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
  485. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
  486. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
  487. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
  488. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
  489. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
  490. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
  491. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
  492. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
  493. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
  494. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
  495. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
  496. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
  497. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
  498. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
  499. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
  500. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
  501. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
  502. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
  503. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
  504. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
  505. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/live_criteria.py +0 -0
  506. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/__init__.py +0 -0
  507. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
  508. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
  509. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
  510. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
  511. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_full.md +0 -0
  512. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/report_snapshots/run_minimal.md +0 -0
  513. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_fixtures/timing_union_cases.json +0 -0
  514. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/_path_helpers.py +0 -0
  515. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/conftest.py +0 -0
  516. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/__init__.py +0 -0
  517. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/atif/known_good_trajectory.json +0 -0
  518. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
  519. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
  520. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/mock_agent.py +0 -0
  521. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/pi_happy_stream.jsonl +0 -0
  522. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
  523. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
  524. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
  525. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/fixtures/text_stub_agent.py +0 -0
  526. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
  527. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
  528. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
  529. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
  530. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/__init__.py +0 -0
  531. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/action_docs.py +0 -0
  532. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/agent_roster_parity.py +0 -0
  533. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/dead_config_fields.py +0 -0
  534. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_env_parity.py +0 -0
  535. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_examples.py +0 -0
  536. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_indexes.py +0 -0
  537. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/doc_schema_parity.py +0 -0
  538. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/generated.py +0 -0
  539. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/live_verdict_contract.py +0 -0
  540. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/plugin_manifest_parity.py +0 -0
  541. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/plugin_reference.py +0 -0
  542. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/pricing_mirror.py +0 -0
  543. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/prose_budget.py +0 -0
  544. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/pyright_config.py +0 -0
  545. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/__init__.py +0 -0
  546. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/_layers.py +0 -0
  547. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/_model_ctor.py +0 -0
  548. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/base.py +0 -0
  549. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
  550. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
  551. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
  552. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
  553. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
  554. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
  555. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
  556. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
  557. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
  558. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
  559. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
  560. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
  561. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
  562. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
  563. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
  564. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
  565. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
  566. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
  567. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
  568. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce051_no_driver_override.py +0 -0
  569. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
  570. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
  571. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
  572. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
  573. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
  574. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
  575. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
  576. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce060_message_id_declared.py +0 -0
  577. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
  578. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
  579. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
  580. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
  581. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_agent_timing_access.py +0 -0
  582. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
  583. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
  584. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_silent_except.py +0 -0
  585. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_submodule_model_imports.py +0 -0
  586. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
  587. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
  588. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
  589. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/open_explicit_encoding.py +0 -0
  590. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
  591. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/register_criterion_required.py +0 -0
  592. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
  593. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
  594. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/runner.py +0 -0
  595. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/violation.py +0 -0
  596. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/lint/workflow_outputs.py +0 -0
  597. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_action_inputs.py +0 -0
  598. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_action_version_pin.py +0 -0
  599. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent.py +0 -0
  600. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_no_timing_fields.py +0 -0
  601. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_optional_type.py +0 -0
  602. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_registry_dispatch.py +0 -0
  603. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_config_sdk_decoupling.py +0 -0
  604. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_golden_master.py +0 -0
  605. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_judge_criterion.py +0 -0
  606. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_telemetry.py +0 -0
  607. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_telemetry_advanced.py +0 -0
  608. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agent_timeout.py +0 -0
  609. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_agentless.py +0 -0
  610. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_antigravity_agent.py +0 -0
  611. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_emit.py +0 -0
  612. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_hydrate.py +0 -0
  613. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_atif_models.py +0 -0
  614. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byoa_plugin.py +0 -0
  615. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byoa_plugin_live.py +0 -0
  616. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_byod_feature.py +0 -0
  617. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_check_all_async.py +0 -0
  618. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_checker_logging.py +0 -0
  619. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_classification_match.py +0 -0
  620. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_claude_settings_enforcement_live.py +0 -0
  621. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cleanup_preservation_guard.py +0 -0
  622. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_backend_flag.py +0 -0
  623. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_called_criterion.py +0 -0
  624. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_empty_glob.py +0 -0
  625. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_match_parity.py +0 -0
  626. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_sdk_options.py +0 -0
  627. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_set_overrides.py +0 -0
  628. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_telemetry.py +0 -0
  629. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cli_type_flag.py +0 -0
  630. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_code_review_bugs.py +0 -0
  631. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent.py +0 -0
  632. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent_live.py +0 -0
  633. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_agent_unit.py +0 -0
  634. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_codex_token_mapping.py +0 -0
  635. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_executed.py +0 -0
  636. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_statistics.py +0 -0
  637. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_command_telemetry_result_data.py +0 -0
  638. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_commands_efficiency.py +0 -0
  639. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_lineage.py +0 -0
  640. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_merge_engine.py +0 -0
  641. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_config_precedence.py +0 -0
  642. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_continuous_scoring.py +0 -0
  643. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_cost_accounting_paths.py +0 -0
  644. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_criterion_result_round_trip.py +0 -0
  645. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_custom_lint.py +0 -0
  646. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_dataset_expansion.py +0 -0
  647. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_debug_logging.py +0 -0
  648. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent.py +0 -0
  649. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_config.py +0 -0
  650. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_live.py +0 -0
  651. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_delegate_agent_registration.py +0 -0
  652. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_detached_grading_boundaries.py +0 -0
  653. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_detached_grading_guards.py +0 -0
  654. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_build_failure.py +0 -0
  655. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_litellm_env.py +0 -0
  656. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_container_death.py +0 -0
  657. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_runner_stream_limit.py +0 -0
  658. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_wildcard_env.py +0 -0
  659. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_docker_workdir_live.py +0 -0
  660. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_driver_resolver.py +0 -0
  661. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_durations.py +0 -0
  662. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_early_stop.py +0 -0
  663. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_error_handling.py +0 -0
  664. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_eval_material.py +0 -0
  665. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_command.py +0 -0
  666. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_format_harbor.py +0 -0
  667. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluate_target.py +0 -0
  668. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_evaluator.py +0 -0
  669. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_event_collector.py +0 -0
  670. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_command.py +0 -0
  671. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_evaluate_loop.py +0 -0
  672. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_execute_format_harbor.py +0 -0
  673. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_cli.py +0 -0
  674. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_loader.py +0 -0
  675. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_models.py +0 -0
  676. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_reports.py +0 -0
  677. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_resolver.py +0 -0
  678. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_experiment_runner.py +0 -0
  679. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_file_check.py +0 -0
  680. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_file_contains_scoring.py +0 -0
  681. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_formatting.py +0 -0
  682. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_git_clone_failure.py +0 -0
  683. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_glob_paths_in_file_criteria.py +0 -0
  684. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_agent.py +0 -0
  685. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_e2e_fixtures.py +0 -0
  686. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_experiment_packager.py +0 -0
  687. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_export_golden.py +0 -0
  688. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_packager.py +0 -0
  689. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_portability.py +0 -0
  690. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_harbor_reward.py +0 -0
  691. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_heartbeat_watchdog.py +0 -0
  692. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_ignore_patterns_negation.py +0 -0
  693. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_image_from_dockerfiles.py +0 -0
  694. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_image_skew_refusal.py +0 -0
  695. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_integration.py +0 -0
  696. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_json_check.py +0 -0
  697. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_anthropic.py +0 -0
  698. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_bedrock.py +0 -0
  699. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_burn_in_live.py +0 -0
  700. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_context_builder.py +0 -0
  701. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_litellm.py +0 -0
  702. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_models.py +0 -0
  703. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_persistence.py +0 -0
  704. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_judge_system_one.py +0 -0
  705. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_lint_no_top_level_run_limits.py +0 -0
  706. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_lint_runner.py +0 -0
  707. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_config.py +0 -0
  708. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_cost.py +0 -0
  709. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_cost_logger.py +0 -0
  710. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_judge_live.py +0 -0
  711. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_litellm_route.py +0 -0
  712. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_llm_judge_criterion.py +0 -0
  713. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_log_tail_buffer.py +0 -0
  714. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_logging.py +0 -0
  715. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_logging_isolation.py +0 -0
  716. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_characterization.py +0 -0
  717. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_strategy_annotations.py +0 -0
  718. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_merge_unification.py +0 -0
  719. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_models.py +0 -0
  720. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_mutations.py +0 -0
  721. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_new_criteria.py +0 -0
  722. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_node_env_config.py +0 -0
  723. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_opencode_agent.py +0 -0
  724. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_optional_dependencies.py +0 -0
  725. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator.py +0 -0
  726. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator_error_log_tail.py +0 -0
  727. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_orchestrator_telemetry.py +0 -0
  728. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_overrides_engine.py +0 -0
  729. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_parallel.py +0 -0
  730. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_path_utils.py +0 -0
  731. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_agent.py +0 -0
  732. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_agent_config.py +0 -0
  733. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pi_smoke_task.py +0 -0
  734. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plan_command.py +0 -0
  735. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plugin_processing.py +0 -0
  736. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_plugins.py +0 -0
  737. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_post_run.py +0 -0
  738. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pr_review_workflow.py +0 -0
  739. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pre_run.py +0 -0
  740. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_preservation_mode.py +0 -0
  741. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pricing_mirror.py +0 -0
  742. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_pricing_registry.py +0 -0
  743. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_prose_budget.py +0 -0
  744. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_prose_budget_commands.py +0 -0
  745. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_comparison_scoring.py +0 -0
  746. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_evaluator.py +0 -0
  747. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_missing_file.py +0 -0
  748. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_models.py +0 -0
  749. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reference_permissions.py +0 -0
  750. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_registry.py +0 -0
  751. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_regrade.py +0 -0
  752. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_release_notes.py +0 -0
  753. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_replicate_stats.py +0 -0
  754. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_report_command.py +0 -0
  755. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports.py +0 -0
  756. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_html.py +0 -0
  757. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_junit.py +0 -0
  758. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_reports_package.py +0 -0
  759. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_resolve_task_files.py +0 -0
  760. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_result_metrics.py +0 -0
  761. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_resume.py +0 -0
  762. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_retry_logic_comprehensive.py +0 -0
  763. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_route_seam_exhaustiveness.py +0 -0
  764. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_routing.py +0 -0
  765. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_command_junit.py +0 -0
  766. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_command_stdout.py +0 -0
  767. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_helpers.py +0 -0
  768. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_models.py +0 -0
  769. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_orchestrator.py +0 -0
  770. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_limits_resolver.py +0 -0
  771. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_metrics.py +0 -0
  772. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_record.py +0 -0
  773. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_summary_rebuild.py +0 -0
  774. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_run_task_internal.py +0 -0
  775. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_runtime_tool_versions.py +0 -0
  776. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox.py +0 -0
  777. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_adopt.py +0 -0
  778. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_layer_builder.py +0 -0
  779. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_optional.py +0 -0
  780. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_record_cli.py +0 -0
  781. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_security.py +0 -0
  782. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_symlink_preservation.py +0 -0
  783. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_templates.py +0 -0
  784. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sandbox_venv_live.py +0 -0
  785. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_scorers.py +0 -0
  786. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_scoring_quality.py +0 -0
  787. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sdk_option_classification.py +0 -0
  788. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_seed_from_prior_result.py +0 -0
  789. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_config.py +0 -0
  790. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_integration.py +0 -0
  791. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_termination.py +0 -0
  792. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_simulation_trials.py +0 -0
  793. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_skill_triggered.py +0 -0
  794. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_stats.py +0 -0
  795. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_stats_nonfinite.py +0 -0
  796. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_agent_integration.py +0 -0
  797. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_batch.py +0 -0
  798. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_callbacks.py +0 -0
  799. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_cli.py +0 -0
  800. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_events.py +0 -0
  801. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_orchestrator.py +0 -0
  802. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_renderers.py +0 -0
  803. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_streaming_wire.py +0 -0
  804. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_sub_agent_runner.py +0 -0
  805. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_success_criterion_union.py +0 -0
  806. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_suite_rollup.py +0 -0
  807. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_summaries.py +0 -0
  808. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_system_one_judge.py +0 -0
  809. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_system_one_judge_live.py +0 -0
  810. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_tags.py +0 -0
  811. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_task_definition_unknown_fields.py +0 -0
  812. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_teardown_interrupt.py +0 -0
  813. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_telemetry.py +0 -0
  814. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_template_env_expansion.py +0 -0
  815. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_threshold_enforcement.py +0 -0
  816. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_batch.py +0 -0
  817. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_categorization.py +0 -0
  818. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_exceptions.py +0 -0
  819. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_models.py +0 -0
  820. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timeout_orchestrator.py +0 -0
  821. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_close_window.py +0 -0
  822. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_identity_contract.py +0 -0
  823. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_timing_union_parity.py +0 -0
  824. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_token_usage.py +0 -0
  825. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_uipath_eval.py +0 -0
  826. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_ungraded_reporting.py +0 -0
  827. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_user_simulator.py +0 -0
  828. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_utils.py +0 -0
  829. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_utterance_extraction.py +0 -0
  830. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_variant_prompt_file.py +0 -0
  831. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_verdict_tool.py +0 -0
  832. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_verify_published_workflow.py +0 -0
  833. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_watchdog.py +0 -0
  834. {coder_eval-0.12.8 → coder_eval-0.12.9}/tests/test_yaml_migration.py +0 -0
@@ -123,7 +123,7 @@ jobs:
123
123
 
124
124
  # PHASE 3: Security scanning
125
125
  - name: Security - Dependency vulnerabilities (pip-audit)
126
- run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln PYSEC-2025-183 # pygments 2.19.2 ReDoS + pip 26.0.1 tar/ZIP ambiguity + pyjwt 2.12.1 weak-encryption (disputed by supplier; key length is application-chosen); no fixes available on PyPI yet — revisit quarterly
126
+ run: .venv/bin/pip-audit --desc --skip-editable --ignore-vuln CVE-2026-4539 --ignore-vuln CVE-2026-3219 --ignore-vuln CVE-2026-49265 --ignore-vuln CVE-2026-49264 # pygments 2.19.2 ReDoS + pip 26.0.1 tar/ZIP ambiguity; no fixes available on PyPI yet — revisit quarterly. oauthlib 3.3.1 PKCE timing side channel + RevocationEndpoint JSONP callback injection: both server-side OAuth endpoints, unused here (transitive via azure-monitor exporter -> msrest); fix 4.0.0 is a major bump still inside the safe-chain minimum package age — revisit next month
127
127
 
128
128
  - name: Security - OSV vulnerability scan (osv-scanner)
129
129
  # Complements pip-audit: pip-audit queries the PyPI advisory DB;
@@ -2,6 +2,35 @@
2
2
 
3
3
  <!-- version list -->
4
4
 
5
+ ## v0.12.9 (2026-09-29)
6
+
7
+ ### Bug Fixes
8
+
9
+ - **docker**: Mount plugins at /coder_eval/plugins/<i> and point the staged task there
10
+ ([#206](https://github.com/UiPath/coder_eval/pull/206),
11
+ [`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
12
+
13
+ - **docker**: Mount plugins at /work/plugins/<i> and point the staged task there
14
+ ([#206](https://github.com/UiPath/coder_eval/pull/206),
15
+ [`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
16
+
17
+ ### Chores
18
+
19
+ - **deps**: Bump pyjwt to 2.15.1 and ignore oauthlib CVE-2026-49265
20
+ ([#206](https://github.com/UiPath/coder_eval/pull/206),
21
+ [`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
22
+
23
+ - **deps**: Ignore oauthlib CVE-2026-49264 and drop the stale pyjwt ignore
24
+ ([#206](https://github.com/UiPath/coder_eval/pull/206),
25
+ [`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
26
+
27
+ ### Refactoring
28
+
29
+ - **docker**: Mount plugins under /work/plugins, not /coder_eval/plugins
30
+ ([#206](https://github.com/UiPath/coder_eval/pull/206),
31
+ [`03808c0`](https://github.com/UiPath/coder_eval/commit/03808c084cb28d72e5723a2e9fc30c714f398d14))
32
+
33
+
5
34
  ## v0.12.8 (2026-09-29)
6
35
 
7
36
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: coder-eval
3
- Version: 0.12.8
3
+ Version: 0.12.9
4
4
  Summary: Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites.
5
5
  Project-URL: Homepage, https://coder-eval.com
6
6
  Project-URL: Repository, https://github.com/UiPath/coder_eval
@@ -25,7 +25,7 @@ inputs:
25
25
  version:
26
26
  description: coder-eval version to install from PyPI, or "local" to install from the action checkout
27
27
  required: false
28
- default: "0.12.8" # <-- kept in sync with releases by release.yml
28
+ default: "0.12.9" # <-- kept in sync with releases by release.yml
29
29
  extras:
30
30
  description: >-
31
31
  Comma-separated coder-eval extras (`codex`, `antigravity,litellm`), composed
@@ -361,9 +361,20 @@ reference window's posture above; neither contains an adversarial agent.
361
361
  read-write (a `:ro` mount rejects `rm` with EROFS). `prior.json` is kept: it is
362
362
  read later on the regrade path, and a regrade runs no agent so it is not a leak.
363
363
 
364
+ - **Plugins mount at a fixed container path.** The `i`-th `agent.plugins[]` entry
365
+ is resolved on the host (a relative path against the task YAML's directory, `$VAR`
366
+ and `~` expanded) and mounted `:ro` at `/work/plugins/<i>`. The task YAML
367
+ staged into the container is rewritten to point at that path, so the in-container
368
+ agent loads the directory the host mounted, whatever form the authored path took
369
+ and whatever the container's cwd. (Before, the staged YAML kept the authored string:
370
+ a relative or `$VAR` path the container could not resolve loaded no skill, with only
371
+ a warning.) An entry that does not resolve to a host directory is neither mounted
372
+ nor rewritten. It sits under `/work`, so a `sandbox.docker.extra_mounts` destination
373
+ cannot shadow it (those are refused anywhere under `/work/`).
374
+
364
375
  - **Auto-mounted plugin trees are default-deny masked.** An `agent.plugins[].path`
365
- (or a `TemplateDirSource.path` that is itself a plugin root) is auto-mounted at
366
- its host path `:ro` so the plugin loads. Eval material colocated under that tree
376
+ (at `/work/plugins/<i>`) or a `TemplateDirSource.path` that is itself a plugin
377
+ root (at its host path) is auto-mounted `:ro` so the plugin loads. Eval material colocated under that tree
367
378
  as siblings of the skills dir — sibling task YAMLs, reference solutions, test
368
379
  fixtures — would otherwise be readable. So the runner keeps the whole root
369
380
  mounted but layers an empty `--tmpfs` over every child dir OUTSIDE the keep-set
@@ -0,0 +1,15 @@
1
+ # osv-scanner suppressions for advisories without an available fix.
2
+ #
3
+ # Mirrors the inline --ignore-vuln list passed to pip-audit in
4
+ # .github/workflows/pr-checks.yml so both scanners stay in sync. pip-audit
5
+ # accepts ignores as CLI flags; osv-scanner only reads them from this TOML.
6
+ # When an advisory is fixed upstream, drop the entry here AND remove the
7
+ # matching pip-audit flag in the same PR.
8
+
9
+ [[IgnoredVulns]]
10
+ id = "CVE-2026-49265"
11
+ reason = "oauthlib 3.3.1 PKCE timing side channel in the server-side code_challenge check, which coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
12
+
13
+ [[IgnoredVulns]]
14
+ id = "GHSA-hj66-6f7g-4r5v"
15
+ reason = "CVE-2026-49264: oauthlib 3.3.1 RevocationEndpoint JSONP callback injection (only with enable_jsonp=True), a server-side OAuth endpoint coder-eval never runs (oauthlib is transitive via azure-monitor-opentelemetry-exporter -> msrest -> requests-oauthlib). The fix, 4.0.0, is a major bump still inside the safe-chain minimum package age; revisit next month."
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "coder-eval",
4
4
  "displayName": "Coder Eval",
5
- "version": "0.12.8",
5
+ "version": "0.12.9",
6
6
  "description": "Test whether your Claude Code skills actually trigger, and benchmark any coding agent — author, run, and analyze the eval suite that proves it, locally or as a CI gate.",
7
7
  "author": { "name": "UiPath", "email": "coder-eval@uipath.com", "url": "https://github.com/UiPath/coder_eval" },
8
8
  "homepage": "https://coder-eval.com",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "coder-eval"
3
- version = "0.12.8"
3
+ version = "0.12.9"
4
4
  description = "Evaluate, benchmark, and A/B-test AI coding agents (Claude Code, Codex, Gemini/Antigravity, OpenCode, Pi, Delegate) with sandboxed, reproducible YAML task suites."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -227,7 +227,7 @@ constraint-dependencies = [
227
227
  "langgraph>=1.0.10",
228
228
  "langsmith>=0.6.3",
229
229
  "orjson>=3.11.6",
230
- "pyjwt>=2.13.0",
230
+ "pyjwt>=2.14.0",
231
231
  "python-multipart>=0.0.31",
232
232
  "requests>=2.33.0",
233
233
  "starlette>=1.3.1",
@@ -1,3 +1,3 @@
1
1
  """coder_eval - A framework for evaluating AI coding agents."""
2
2
 
3
- __version__ = "0.12.8"
3
+ __version__ = "0.12.9"
@@ -30,6 +30,7 @@ from coder_eval.models import (
30
30
  CONTAINER_GRADE_WORKSPACE,
31
31
  CONTAINER_INPUT_DIR,
32
32
  CONTAINER_OUTPUT_DIR,
33
+ CONTAINER_PLUGINS_DIR,
33
34
  CONTAINER_REFERENCE_DIR,
34
35
  CONTAINER_TASK_DIR,
35
36
  CONTAINER_WORK_DIR,
@@ -724,6 +725,17 @@ class DockerRunner:
724
725
  # Rationale: .claude/notes/orchestration.md § The host-side driver rewrite
725
726
  execution_sandbox = SandboxConfig.model_validate({**self.rt.task.sandbox.model_dump(), "driver": "tempdir"}) # noqa: CE051
726
727
  execution_task = self.rt.task.model_copy(update={"sandbox": execution_sandbox})
728
+ # Point each mounted plugin at its container path; the host path (relative,
729
+ # $VAR, or absolute) need not exist inside the container.
730
+ plugin_mounts = self._plugin_mounts()
731
+ if plugin_mounts and execution_task.agent is not None:
732
+ plugins = [
733
+ {**plugin, "path": plugin_mounts[i][1]} if i in plugin_mounts else plugin
734
+ for i, plugin in enumerate(execution_task.agent.plugins or [])
735
+ ]
736
+ execution_task = execution_task.model_copy(
737
+ update={"agent": execution_task.agent.model_copy(update={"plugins": plugins})}
738
+ )
727
739
 
728
740
  def _dump_task_yaml() -> str:
729
741
  return yaml.safe_dump(execution_task.model_dump(mode="json"), sort_keys=False)
@@ -1236,13 +1248,34 @@ class DockerRunner:
1236
1248
  expanded = self.rt.task_file.parent / expanded
1237
1249
  return expanded.resolve()
1238
1250
 
1251
+ def _plugin_mounts(self) -> dict[int, tuple[Path, str]]:
1252
+ """``agent.plugins`` index -> (host dir, container path) for every plugin whose path resolves to a dir.
1253
+
1254
+ Shared by ``_stage_inputs`` (rewrites the staged task.yaml) and
1255
+ ``_append_auto_mounts`` (emits the binds), so the two cannot disagree.
1256
+ """
1257
+ plugins = (self.rt.task.agent.plugins if self.rt.task.agent else None) or []
1258
+ mounts: dict[int, tuple[Path, str]] = {}
1259
+ for i, plugin in enumerate(plugins):
1260
+ raw_path = plugin.get("path") if isinstance(plugin, dict) else None
1261
+ if not raw_path:
1262
+ continue
1263
+ resolved = self._resolve_mount_path(raw_path)
1264
+ if resolved.is_dir():
1265
+ mounts[i] = (resolved, f"{CONTAINER_PLUGINS_DIR}/{i}")
1266
+ return mounts
1267
+
1239
1268
  def _append_auto_mounts(self, argv: list[str]) -> None:
1240
- """Bind-mount the plugin, template and system-prompt paths a task references, ``:ro`` at their host path.
1269
+ """Bind-mount the plugin, template and system-prompt paths a task references, ``:ro``.
1241
1270
 
1242
- A plugin root also gets every non-skill child dir masked with an empty tmpfs. The
1243
- reference is deliberately NOT here: it has its own mount (``_reference_mount_args``).
1271
+ Plugin ``i`` goes to ``CONTAINER_PLUGINS_DIR/i`` (see ``_plugin_mounts``); the
1272
+ rest mount at their host path. A plugin root also gets every non-skill child dir
1273
+ masked with an empty tmpfs. The reference is deliberately NOT here: it has its
1274
+ own mount (``_reference_mount_args``).
1244
1275
  """
1276
+ # Host sources bound at their host path (dedupe), and every container dest bound.
1245
1277
  mounted: set[Path] = set()
1278
+ dests: set[str] = set()
1246
1279
  # Warned, not refused: `plugin.path` / `reference.directory` /
1247
1280
  # `template_sources` are user-controlled strings, and legitimate uses exist.
1248
1281
  # Rationale: .claude/notes/isolation.md § Extra mounts and reserved destinations
@@ -1251,19 +1284,11 @@ class DockerRunner:
1251
1284
  # Lazy: eval_material imports agents._skills, whose package imports this module.
1252
1285
  from coder_eval.isolation.eval_material import mask_dirs
1253
1286
 
1254
- # Masked dir -> its plugin root. Emitted only once every bind is known, so a
1255
- # nested plugin root's bind can win over its parent's mask of the same path.
1256
- mask_targets: dict[Path, Path] = {}
1287
+ # Masked container dir -> its host plugin root. Emitted only once every bind is
1288
+ # known, so a nested plugin root's bind can win over its parent's mask of the same path.
1289
+ mask_targets: dict[str, Path] = {}
1257
1290
 
1258
- def _auto_mount(raw_path: str | None, *, dir_only: bool = True) -> None:
1259
- if not raw_path:
1260
- return
1261
- resolved = self._resolve_mount_path(raw_path)
1262
- # File paths get mounted as the parent dir so a single -v covers
1263
- # the file; container-side reads still resolve at the same path.
1264
- target = resolved if (dir_only or resolved.is_dir()) else resolved.parent
1265
- if target in mounted or not target.is_dir():
1266
- return
1291
+ def _bind(target: Path, dest: str) -> None:
1267
1292
  for sensitive in sensitive_sources:
1268
1293
  if target == sensitive or sensitive in target.parents:
1269
1294
  logger.warning(
@@ -1271,17 +1296,28 @@ class DockerRunner:
1271
1296
  target,
1272
1297
  )
1273
1298
  break
1274
- mounted.add(target)
1275
- argv.extend(["-v", f"{target}:{target}:ro"])
1299
+ dests.add(dest)
1300
+ argv.extend(["-v", f"{target}:{dest}:ro"])
1276
1301
  masks = mask_dirs(target)
1277
1302
  if not masks and (target / ".claude-plugin" / "plugin.json").is_file():
1278
1303
  logger.warning(_MASK_STANDDOWN_WARNING, target)
1279
1304
  for masked_dir in masks:
1280
- mask_targets.setdefault(masked_dir, target)
1305
+ mask_targets.setdefault(str(Path(dest) / masked_dir.relative_to(target)), target)
1281
1306
 
1282
- plugins = (self.rt.task.agent.plugins if self.rt.task.agent else None) or []
1283
- for plugin in plugins:
1284
- _auto_mount(plugin.get("path") if isinstance(plugin, dict) else None)
1307
+ def _auto_mount(raw_path: str | None, *, dir_only: bool = True) -> None:
1308
+ if not raw_path:
1309
+ return
1310
+ resolved = self._resolve_mount_path(raw_path)
1311
+ # File paths get mounted as the parent dir so a single -v covers
1312
+ # the file; container-side reads still resolve at the same path.
1313
+ target = resolved if (dir_only or resolved.is_dir()) else resolved.parent
1314
+ if target in mounted or not target.is_dir():
1315
+ return
1316
+ mounted.add(target)
1317
+ _bind(target, str(target))
1318
+
1319
+ for host_dir, dest in self._plugin_mounts().values():
1320
+ _bind(host_dir, dest)
1285
1321
 
1286
1322
  from coder_eval.models import TemplateDirSource
1287
1323
 
@@ -1299,9 +1335,9 @@ class DockerRunner:
1299
1335
  # A deeper --tmpfs wins over the enclosing :ro bind regardless of argv order;
1300
1336
  # a mask that is also a bind would be a duplicate mount point, so the bind wins.
1301
1337
  for masked_dir, root in sorted(mask_targets.items()):
1302
- if masked_dir in mounted:
1338
+ if masked_dir in dests:
1303
1339
  continue
1304
- argv.extend(["--tmpfs", str(masked_dir)])
1340
+ argv.extend(["--tmpfs", masked_dir])
1305
1341
  logger.warning(_MASK_WARNING, masked_dir, root)
1306
1342
 
1307
1343
  def _build_argv(
@@ -36,6 +36,7 @@ from coder_eval.models.container_paths import (
36
36
  CONTAINER_GRADE_WORKSPACE,
37
37
  CONTAINER_INPUT_DIR,
38
38
  CONTAINER_OUTPUT_DIR,
39
+ CONTAINER_PLUGINS_DIR,
39
40
  CONTAINER_REFERENCE_DIR,
40
41
  CONTAINER_TASK_DIR,
41
42
  CONTAINER_WORK_DIR,
@@ -324,6 +325,7 @@ __all__ = [ # noqa: RUF022 - Keep grouped by category for readability
324
325
  "CONTAINER_INPUT_DIR",
325
326
  "CONTAINER_OUTPUT_DIR",
326
327
  "CONTAINER_GRADE_WORKSPACE",
328
+ "CONTAINER_PLUGINS_DIR",
327
329
  "CONTAINER_REFERENCE_DIR",
328
330
  "IN_CONTAINER_ENV",
329
331
  "CONTAINER_TASK_DIR",
@@ -91,6 +91,8 @@ CONTAINER_REFERENCE_DIR = "/work/references"
91
91
  # Rationale: .claude/notes/isolation.md § Why the grading container gets a private scratch directory
92
92
  CONTAINER_GRADE_WORKSPACE = "/work/workspace"
93
93
 
94
+ CONTAINER_PLUGINS_DIR = "/work/plugins" # agent.plugins[i] mounts :ro at <dir>/<i>; see DOCKER_ISOLATION.md
95
+
94
96
  # Paths a task's WORKDIR must never collide with. Consumed by SandboxConfig's
95
97
  # working_dir validator and re-asserted host-side in docker_runner.
96
98
  RESERVED_CONTAINER_DIRS = frozenset(
@@ -102,5 +104,6 @@ RESERVED_CONTAINER_DIRS = frozenset(
102
104
  CONTAINER_TASK_DIR,
103
105
  CONTAINER_REFERENCE_DIR,
104
106
  CONTAINER_GRADE_WORKSPACE,
107
+ CONTAINER_PLUGINS_DIR,
105
108
  }
106
109
  )
@@ -18,6 +18,7 @@ from coder_eval import models
18
18
  from coder_eval.cli import app, run_task_internal_command
19
19
  from coder_eval.isolation.docker_runner import DockerRunner
20
20
  from coder_eval.models import (
21
+ CONTAINER_PLUGINS_DIR,
21
22
  AgentKind,
22
23
  ConfigLineageEntry,
23
24
  ContainerContext,
@@ -293,6 +294,36 @@ async def test_the_staged_task_yaml_says_tempdir(tmp_path: Path) -> None:
293
294
  assert staged.sandbox.driver == "tempdir"
294
295
 
295
296
 
297
+ async def test_the_staged_task_yaml_points_plugins_at_their_container_mounts(tmp_path: Path) -> None:
298
+ # A relative plugin path resolves against the task-file dir on the host; the
299
+ # container gets the fixed mount path instead, since that host path (or its
300
+ # $VAR) need not exist inside. An unresolvable plugin is left as authored.
301
+ (tmp_path / "plugin" / "skills" / "demo").mkdir(parents=True)
302
+ plugins = [{"type": "local", "path": "plugin"}, {"type": "local", "path": "does/not/exist"}]
303
+ task = TaskDefinition.model_validate(
304
+ {
305
+ **_authored_docker_task().model_dump(),
306
+ "initial_prompt": "go",
307
+ "agent": {"type": "claude-code", "plugins": plugins},
308
+ }
309
+ )
310
+ rt = ResolvedTask(
311
+ task=task,
312
+ task_file=tmp_path / "t.yaml",
313
+ run_dir=tmp_path / "run",
314
+ variant_id="default",
315
+ original_task_id="staged",
316
+ )
317
+ input_dir = tmp_path / "input"
318
+ input_dir.mkdir()
319
+ await DockerRunner(rt)._stage_inputs(input_dir)
320
+
321
+ staged, _ = load_task(input_dir / "task.yaml")
322
+ assert [p["path"] for p in staged.agent.plugins] == [f"{CONTAINER_PLUGINS_DIR}/0", "does/not/exist"]
323
+ # The host-side task is untouched: argv rendering still needs the host path.
324
+ assert rt.task.agent.plugins[0]["path"] == "plugin"
325
+
326
+
296
327
  async def test_the_contract_carries_the_authored_sandbox(tmp_path: Path) -> None:
297
328
  rt, _, ctx = await _stage(tmp_path)
298
329
 
@@ -25,6 +25,7 @@ from coder_eval.isolation.docker_runner import (
25
25
  CLAUDE_COPY_MAX_ATTEMPTS,
26
26
  CONTAINER_ENTRYPOINT,
27
27
  CONTAINER_OUTPUT_DIR,
28
+ CONTAINER_PLUGINS_DIR,
28
29
  CONTAINER_REFERENCE_DIR,
29
30
  CONTAINER_TASK_DIR,
30
31
  DockerRunError,
@@ -790,18 +791,18 @@ class TestAutoMountAllowlistMask:
790
791
  argv = self._argv(runner, tmp_path)
791
792
 
792
793
  tmpfs = self._tmpfs(argv)
793
- # The whole root is :ro-mounted so the plugin loads.
794
- assert f"{root.resolve()}:{root.resolve()}:ro" in self._mounts(argv)
794
+ # The whole root is :ro-mounted at plugin 0's container path so the plugin loads.
795
+ assert f"{root.resolve()}:{CONTAINER_PLUGINS_DIR}/0:ro" in self._mounts(argv)
795
796
  # Non-skill children masked; skill surface + manifest not.
796
- assert str((root / "tests").resolve()) in tmpfs
797
- assert str((root / "reference").resolve()) in tmpfs
798
- assert str((root / "node_modules").resolve()) in tmpfs
799
- assert str((root / "skills").resolve()) not in tmpfs
800
- assert str((root / ".claude-plugin").resolve()) not in tmpfs
801
-
802
- def test_tmpfs_targets_are_under_mounted_host_root(self, tmp_path: Path):
803
- # Codex symlinks / Antigravity search paths dereference the ORIGINAL
804
- # mounted host path, so the mask must sit on that path, not a copy.
797
+ assert f"{CONTAINER_PLUGINS_DIR}/0/tests" in tmpfs
798
+ assert f"{CONTAINER_PLUGINS_DIR}/0/reference" in tmpfs
799
+ assert f"{CONTAINER_PLUGINS_DIR}/0/node_modules" in tmpfs
800
+ assert f"{CONTAINER_PLUGINS_DIR}/0/skills" not in tmpfs
801
+ assert f"{CONTAINER_PLUGINS_DIR}/0/.claude-plugin" not in tmpfs
802
+
803
+ def test_tmpfs_targets_are_under_mounted_container_root(self, tmp_path: Path):
804
+ # Codex symlinks / Antigravity search paths dereference the container path
805
+ # the staged task.yaml names, so the mask must sit under that path.
805
806
  root = self._plugin_root(tmp_path / "plugin")
806
807
  (root / "skills" / "demo").mkdir(parents=True)
807
808
  (root / "tests").mkdir()
@@ -810,7 +811,7 @@ class TestAutoMountAllowlistMask:
810
811
  argv = self._argv(runner, tmp_path)
811
812
 
812
813
  for masked in self._tmpfs(argv):
813
- assert Path(masked).is_relative_to(root.resolve())
814
+ assert Path(masked).is_relative_to(f"{CONTAINER_PLUGINS_DIR}/0")
814
815
 
815
816
  def test_template_source_plugin_root_is_masked(self, tmp_path: Path):
816
817
  from coder_eval.models import TemplateDirSource
@@ -860,12 +861,14 @@ class TestAutoMountAllowlistMask:
860
861
  argv = self._argv(runner, tmp_path)
861
862
  mounts, tmpfs = self._mounts(argv), self._tmpfs(argv)
862
863
 
863
- # B is bind-mounted (so it loads) and NOT tmpfs-masked (no duplicate dest).
864
- assert f"{b.resolve()}:{b.resolve()}:ro" in mounts
865
- assert str(b.resolve()) not in tmpfs
866
- # A's own non-skill child is still masked; B masks its own.
867
- assert str((a / "tests").resolve()) in tmpfs
868
- assert str((b / "tests").resolve()) in tmpfs
864
+ # B is bind-mounted at its own container path (so it loads) and NOT
865
+ # tmpfs-masked there (no duplicate dest).
866
+ assert f"{b.resolve()}:{CONTAINER_PLUGINS_DIR}/1:ro" in mounts
867
+ assert f"{CONTAINER_PLUGINS_DIR}/1" not in tmpfs
868
+ # A's own non-skill children (B included) are masked in A's view; B masks its own.
869
+ assert f"{CONTAINER_PLUGINS_DIR}/0/tests" in tmpfs
870
+ assert f"{CONTAINER_PLUGINS_DIR}/0/nested_b" in tmpfs
871
+ assert f"{CONTAINER_PLUGINS_DIR}/1/tests" in tmpfs
869
872
  # No --tmpfs target collides with a bind destination (the M2 crash).
870
873
  bind_dests = {m.split(":")[1] for m in mounts if m.count(":") >= 2}
871
874
  assert not (set(tmpfs) & bind_dests)
@@ -14,7 +14,7 @@ constraints = [
14
14
  { name = "langgraph", specifier = ">=1.0.10" },
15
15
  { name = "langsmith", specifier = ">=0.6.3" },
16
16
  { name = "orjson", specifier = ">=3.11.6" },
17
- { name = "pyjwt", specifier = ">=2.13.0" },
17
+ { name = "pyjwt", specifier = ">=2.14.0" },
18
18
  { name = "python-multipart", specifier = ">=0.0.31" },
19
19
  { name = "requests", specifier = ">=2.33.0" },
20
20
  { name = "starlette", specifier = ">=1.3.1" },
@@ -513,7 +513,7 @@ wheels = [
513
513
 
514
514
  [[package]]
515
515
  name = "coder-eval"
516
- version = "0.12.8"
516
+ version = "0.12.9"
517
517
  source = { editable = "." }
518
518
  dependencies = [
519
519
  { name = "anthropic" },
@@ -2265,11 +2265,11 @@ wheels = [
2265
2265
 
2266
2266
  [[package]]
2267
2267
  name = "pyjwt"
2268
- version = "2.13.0"
2268
+ version = "2.15.1"
2269
2269
  source = { registry = "https://pypi.org/simple" }
2270
- sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" }
2270
+ sdist = { url = "https://files.pythonhosted.org/packages/43/ea/5194e52748b0da83d71e082d75496eaec6e58f419f5e184786ded517e6a9/pyjwt-2.15.1.tar.gz", hash = "sha256:4f259e80cdfb6b3fc18a7de51fd1ef9ec79652f25019bae68975ca2468a34df8", size = 121252, upload-time = "2026-09-28T18:40:42.598Z" }
2271
2271
  wheels = [
2272
- { url = "https://files.pythonhosted.org/packages/a3/5e/ecf12fdb62546d64385c158514e9b2b671f7832108ef2ecd2020ce0af2d1/pyjwt-2.13.0-py3-none-any.whl", hash = "sha256:66adcc2aff09b3f1bbd95fc1e1577df8ac8723c978552fd43304c8a290ac5728", size = 31274, upload-time = "2026-05-21T19:54:35.362Z" },
2272
+ { url = "https://files.pythonhosted.org/packages/50/ca/44de4e75f8aadc457f0634be3b542815078ded46dca30efb960edeecad6e/pyjwt-2.15.1-py3-none-any.whl", hash = "sha256:42d59d631f7768a1028a64c7ff581a9bf7519804daf91fc5b6c56e30eec5e193", size = 33860, upload-time = "2026-09-28T18:40:41.429Z" },
2273
2273
  ]
2274
2274
 
2275
2275
  [package.optional-dependencies]
@@ -1,11 +0,0 @@
1
- # osv-scanner suppressions for advisories without an available fix.
2
- #
3
- # Mirrors the inline --ignore-vuln list passed to pip-audit in
4
- # .github/workflows/pr-checks.yml so both scanners stay in sync. pip-audit
5
- # accepts ignores as CLI flags; osv-scanner only reads them from this TOML.
6
- # When an advisory is fixed upstream, drop the entry here AND remove the
7
- # matching pip-audit flag in the same PR.
8
-
9
- [[IgnoredVulns]]
10
- id = "PYSEC-2025-183"
11
- reason = "pyjwt 2.12.1 weak-encryption — disputed by supplier (key length is application-chosen). No fix available on PyPI; revisit quarterly."
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes