coder-eval 0.12.11__tar.gz → 0.12.13__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 (845) hide show
  1. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/README.md +1 -0
  2. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/agents.md +154 -97
  3. coder_eval-0.12.13/.claude/notes/context-window.md +170 -0
  4. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/lint-rules.md +1 -1
  5. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/timing.md +6 -1
  6. {coder_eval-0.12.11 → coder_eval-0.12.13}/.env.example +18 -21
  7. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/pr-checks.yml +21 -24
  8. {coder_eval-0.12.11 → coder_eval-0.12.13}/CHANGELOG.md +202 -0
  9. {coder_eval-0.12.11 → coder_eval-0.12.13}/PKG-INFO +1 -1
  10. {coder_eval-0.12.11 → coder_eval-0.12.13}/action.yml +1 -1
  11. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/AB_EXPERIMENTS.md +23 -0
  12. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/EXTENDING.md +16 -0
  13. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/REPORT_SCHEMA.md +27 -3
  14. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/TASK_DEFINITION_GUIDE.md +23 -10
  15. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/USER_GUIDE.md +1 -1
  16. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/CLAUDE_CODE.md +5 -2
  17. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/CODEX.md +7 -0
  18. coder_eval-0.12.13/docs/agents/DELEGATE.md +210 -0
  19. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/HARNESS_PARITY.md +63 -33
  20. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/default.yaml +2 -1
  21. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/.claude-plugin/plugin.json +1 -1
  22. {coder_eval-0.12.11 → coder_eval-0.12.13}/pyproject.toml +2 -2
  23. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/__init__.py +1 -1
  24. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/__init__.py +1 -1
  25. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/claude_code_agent.py +104 -10
  26. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/codex_agent.py +4 -0
  27. coder_eval-0.12.13/src/coder_eval/agents/delegate/package.json +9 -0
  28. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/delegate_agent.py +560 -282
  29. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/categorization.py +17 -6
  30. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/agent_config.py +109 -11
  31. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/results.py +4 -2
  32. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/overrides.py +18 -4
  33. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/pricing.py +6 -2
  34. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/experiment.py +6 -2
  35. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/html.py +28 -4
  36. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/markdown.py +76 -9
  37. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/result_metrics.py +24 -0
  38. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/run_record.py +7 -1
  39. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/delegate/hello_date_delegate.yaml +1 -1
  40. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_bracket_clock.py +2 -2
  41. coder_eval-0.12.13/tests/_fixtures/golden_streams/delegate_fixtures.py +321 -0
  42. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_a_tool_call.json +101 -0
  43. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_b_max_turns_cut.json +112 -0
  44. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_c_error_frame_crash.json +92 -0
  45. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_d_orphaned_tool.json +92 -0
  46. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_e_tool_only_call_crosses_cap.json +112 -0
  47. coder_eval-0.12.13/tests/_fixtures/golden_streams/expected/delegate_f_batched_tools_in_sequence.json +150 -0
  48. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/run_full.md +10 -9
  49. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/run_minimal.md +2 -2
  50. coder_eval-0.12.13/tests/test_agent_context_window.py +152 -0
  51. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_golden_master.py +22 -4
  52. coder_eval-0.12.13/tests/test_delegate_agent.py +1253 -0
  53. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_config.py +16 -4
  54. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_live.py +38 -16
  55. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_characterization.py +1 -1
  56. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_overrides_engine.py +32 -2
  57. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports.py +65 -4
  58. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_retry_logic_comprehensive.py +16 -0
  59. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_record.py +30 -0
  60. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_identity_contract.py +17 -16
  61. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_token_usage.py +135 -0
  62. {coder_eval-0.12.11 → coder_eval-0.12.13}/uv.lock +115 -78
  63. coder_eval-0.12.11/docs/agents/DELEGATE.md +0 -192
  64. coder_eval-0.12.11/src/coder_eval/agents/delegate/delegate_host.mjs +0 -175
  65. coder_eval-0.12.11/src/coder_eval/agents/delegate/package.json +0 -9
  66. coder_eval-0.12.11/tests/test_delegate_agent.py +0 -651
  67. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review-full.md +0 -0
  68. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review-wf.md +0 -0
  69. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-code-review.md +0 -0
  70. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-create-plan.md +0 -0
  71. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-implement-plan.md +0 -0
  72. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/commands/coder-eval-review.md +0 -0
  73. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/harness-candidates.md +0 -0
  74. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/contracts.md +0 -0
  75. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/isolation.md +0 -0
  76. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/orchestration.md +0 -0
  77. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/permissions.md +0 -0
  78. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/persistence.md +0 -0
  79. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/notes/reporting.md +0 -0
  80. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/axes.md +0 -0
  81. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/multi-model-review.md +0 -0
  82. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/review-rubric.md +0 -0
  83. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/shared/run-layout.md +0 -0
  84. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/workflows/cr-axis.js +0 -0
  85. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude/workflows/cr-parent.js +0 -0
  86. {coder_eval-0.12.11 → coder_eval-0.12.13}/.claude-plugin/marketplace.json +0 -0
  87. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/CODEOWNERS +0 -0
  88. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/adopter.yml +0 -0
  89. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  90. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  91. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/actionlint.yaml +0 -0
  92. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/code_review.md +0 -0
  93. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/dependabot.yml +0 -0
  94. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/pages-stub/index.html +0 -0
  95. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/diagnose_delegate_token_claims.py +0 -0
  96. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/harbor_e2e.py +0 -0
  97. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/scripts/release_notes.py +0 -0
  98. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/claude-pr-review.yml +0 -0
  99. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/codeql.yml +0 -0
  100. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/conventional-commits.yml +0 -0
  101. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/docker-publish.yml +0 -0
  102. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/docs.yml +0 -0
  103. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/harbor-e2e.yml +0 -0
  104. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/publish-testpypi.yml +0 -0
  105. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/release.yml +0 -0
  106. {coder_eval-0.12.11 → coder_eval-0.12.13}/.github/workflows/verify-published-action.yml +0 -0
  107. {coder_eval-0.12.11 → coder_eval-0.12.13}/.gitignore +0 -0
  108. {coder_eval-0.12.11 → coder_eval-0.12.13}/.pre-commit-config.yaml +0 -0
  109. {coder_eval-0.12.11 → coder_eval-0.12.13}/.python-version +0 -0
  110. {coder_eval-0.12.11 → coder_eval-0.12.13}/ADOPTERS.md +0 -0
  111. {coder_eval-0.12.11 → coder_eval-0.12.13}/CLAUDE.md +0 -0
  112. {coder_eval-0.12.11 → coder_eval-0.12.13}/CODE_OF_CONDUCT.md +0 -0
  113. {coder_eval-0.12.11 → coder_eval-0.12.13}/CONTRIBUTING.md +0 -0
  114. {coder_eval-0.12.11 → coder_eval-0.12.13}/LICENSE +0 -0
  115. {coder_eval-0.12.11 → coder_eval-0.12.13}/Makefile +0 -0
  116. {coder_eval-0.12.11 → coder_eval-0.12.13}/NOTICE +0 -0
  117. {coder_eval-0.12.11 → coder_eval-0.12.13}/README.md +0 -0
  118. {coder_eval-0.12.11 → coder_eval-0.12.13}/SECURITY.md +0 -0
  119. {coder_eval-0.12.11 → coder_eval-0.12.13}/comparison.md +0 -0
  120. {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/Dockerfile +0 -0
  121. {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/Dockerfile.runtime +0 -0
  122. {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/coder_eval_entrypoint.sh +0 -0
  123. {coder_eval-0.12.11 → coder_eval-0.12.13}/docker/coder_eval_runtime_entrypoint.sh +0 -0
  124. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/CI_GATE.md +0 -0
  125. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DATASETS.md +0 -0
  126. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DIALOG_MODE.md +0 -0
  127. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/DOCKER_ISOLATION.md +0 -0
  128. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/PLUGIN.md +0 -0
  129. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/ANTIGRAVITY.md +0 -0
  130. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/OPENCODE.md +0 -0
  131. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/agents/PI.md +0 -0
  132. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/assets/hero.gif +0 -0
  133. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/comparison.md +0 -0
  134. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/index.md +0 -0
  135. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/llms.txt +0 -0
  136. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/01-first-evaluation.md +0 -0
  137. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/02-ci-pipeline.md +0 -0
  138. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/03-evalboard-local.md +0 -0
  139. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/04-writing-a-task.md +0 -0
  140. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/05-comparing-models.md +0 -0
  141. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/06-use-docker-isolation.md +0 -0
  142. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/07-plugin-in-claude-code.md +0 -0
  143. {coder_eval-0.12.11 → coder_eval-0.12.13}/docs/tutorials/README.md +0 -0
  144. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/.gitignore +0 -0
  145. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/README.md +0 -0
  146. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/harness-badge.test.tsx +0 -0
  147. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/harness-selector.test.tsx +0 -0
  148. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/search-box.test.tsx +0 -0
  149. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/__tests__/skeleton.test.tsx +0 -0
  150. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/col-help.tsx +0 -0
  151. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/collapsible-rail.tsx +0 -0
  152. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/harness-badge.tsx +0 -0
  153. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/harness-selector.tsx +0 -0
  154. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/scroll-table.tsx +0 -0
  155. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/search-box.tsx +0 -0
  156. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/skeleton.tsx +0 -0
  157. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/unit-toggle.tsx +0 -0
  158. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_components/version-list.tsx +0 -0
  159. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_lib/__tests__/source-param.test.ts +0 -0
  160. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_lib/source-param.ts +0 -0
  161. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/efficiency-charts.test.tsx +0 -0
  162. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/harness-legend.test.tsx +0 -0
  163. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/__tests__/harness-series.test.ts +0 -0
  164. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/daily-chart.tsx +0 -0
  165. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/efficiency-charts.tsx +0 -0
  166. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/harness-legend.tsx +0 -0
  167. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/harness-series.ts +0 -0
  168. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/tag-rail.tsx +0 -0
  169. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/turn-budget-chart.tsx +0 -0
  170. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/wall-clock-chart.tsx +0 -0
  171. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/_overview/window-summary.tsx +0 -0
  172. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/download/route.ts +0 -0
  173. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/file/route.ts +0 -0
  174. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/refresh/__tests__/route.test.ts +0 -0
  175. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/api/refresh/route.ts +0 -0
  176. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/error.tsx +0 -0
  177. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/globals.css +0 -0
  178. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/icon.png +0 -0
  179. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/layout.tsx +0 -0
  180. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/loading.tsx +0 -0
  181. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/page.tsx +0 -0
  182. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/__tests__/task-table.test.tsx +0 -0
  183. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/page.tsx +0 -0
  184. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/path-to-ga/task-table.tsx +0 -0
  185. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/scribe/page.tsx +0 -0
  186. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/scribe/run-table.tsx +0 -0
  187. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/__tests__/trends-view.test.tsx +0 -0
  188. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/actions.ts +0 -0
  189. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/page.tsx +0 -0
  190. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/trends/trends-view.tsx +0 -0
  191. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/__tests__/watchlist-view.test.tsx +0 -0
  192. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/page.tsx +0 -0
  193. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/app/watchlist/watchlist-view.tsx +0 -0
  194. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/next-env.d.ts +0 -0
  195. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/next.config.mjs +0 -0
  196. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/package.json +0 -0
  197. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/pnpm-lock.yaml +0 -0
  198. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/postcss.config.mjs +0 -0
  199. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/antigravity.png +0 -0
  200. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/claude-code.png +0 -0
  201. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/codex.png +0 -0
  202. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/harness/pi.png +0 -0
  203. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/public/uipath.png +0 -0
  204. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/tailwind.config.ts +0 -0
  205. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/tsconfig.json +0 -0
  206. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/vitest.config.ts +0 -0
  207. {coder_eval-0.12.11 → coder_eval-0.12.13}/evalboard/vitest.setup.ts +0 -0
  208. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/early-stop-ab.yaml +0 -0
  209. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/model-comparison.yaml +0 -0
  210. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/permissions-smoke.yaml +0 -0
  211. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/plugin-comparison.yaml +0 -0
  212. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/prompt-mutations-example.yaml +0 -0
  213. {coder_eval-0.12.11 → coder_eval-0.12.13}/experiments/smoke_variants.yaml +0 -0
  214. {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/README.md +0 -0
  215. {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/cost_logger.py +0 -0
  216. {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/litellm-config.yaml +0 -0
  217. {coder_eval-0.12.11 → coder_eval-0.12.13}/litellm/start-litellm.sh +0 -0
  218. {coder_eval-0.12.11 → coder_eval-0.12.13}/mkdocs.yml +0 -0
  219. {coder_eval-0.12.11 → coder_eval-0.12.13}/osv-scanner.toml +0 -0
  220. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/README.md +0 -0
  221. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/cli-setup.md +0 -0
  222. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/criteria.md +0 -0
  223. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/repo-layout.md +0 -0
  224. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/run-layout.md +0 -0
  225. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/task-rubric.md +0 -0
  226. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/templates/activation-rows.jsonl +0 -0
  227. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/reference/templates/activation.yaml +0 -0
  228. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/analyze/SKILL.md +0 -0
  229. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/check-skill/SKILL.md +0 -0
  230. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/ci/SKILL.md +0 -0
  231. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/init/SKILL.md +0 -0
  232. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/lint-tasks/SKILL.md +0 -0
  233. {coder_eval-0.12.11 → coder_eval-0.12.13}/plugins/coder-eval/skills/task/SKILL.md +0 -0
  234. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/check_commit_msg.sh +0 -0
  235. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/README.md +0 -0
  236. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/antigravity.json +0 -0
  237. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/claude-code.json +0 -0
  238. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/codex.json +0 -0
  239. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/opencode.json +0 -0
  240. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/corpus/pi.json +0 -0
  241. {coder_eval-0.12.11 → coder_eval-0.12.13}/scripts/timing/decompose_run.py +0 -0
  242. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/.gitattributes +0 -0
  243. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agent.py +0 -0
  244. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/_logging.py +0 -0
  245. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/_skills.py +0 -0
  246. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/antigravity_agent.py +0 -0
  247. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/delegate/.gitignore +0 -0
  248. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/noop_agent.py +0 -0
  249. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/opencode_agent.py +0 -0
  250. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/pi_agent.py +0 -0
  251. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/registry.py +0 -0
  252. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/agents/watchdog.py +0 -0
  253. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/analysis.py +0 -0
  254. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/argv_match.py +0 -0
  255. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/__init__.py +0 -0
  256. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/console.py +0 -0
  257. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/evaluate_command.py +0 -0
  258. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/evaluate_target.py +0 -0
  259. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/execute_command.py +0 -0
  260. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/export_command.py +0 -0
  261. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/harbor_command.py +0 -0
  262. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/plan_command.py +0 -0
  263. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/report_command.py +0 -0
  264. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_command.py +0 -0
  265. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_helpers.py +0 -0
  266. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/run_task_internal_command.py +0 -0
  267. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/cli/utils.py +0 -0
  268. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/config.py +0 -0
  269. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/__init__.py +0 -0
  270. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/_classification_aggregate.py +0 -0
  271. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/agent_judge.py +0 -0
  272. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/base.py +0 -0
  273. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/classification_match.py +0 -0
  274. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/cli_called.py +0 -0
  275. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/command_executed.py +0 -0
  276. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/commands_efficiency.py +0 -0
  277. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_check.py +0 -0
  278. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_contains.py +0 -0
  279. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_exists.py +0 -0
  280. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/file_matches_regex.py +0 -0
  281. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/json_check.py +0 -0
  282. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/llm_judge.py +0 -0
  283. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/reference_comparison.py +0 -0
  284. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/run_command.py +0 -0
  285. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/skill_triggered.py +0 -0
  286. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/system_one_judge.py +0 -0
  287. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/criteria/uipath_eval.py +0 -0
  288. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/durations.py +0 -0
  289. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/__init__.py +0 -0
  290. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/agent.py +0 -0
  291. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/budget.py +0 -0
  292. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/categories.py +0 -0
  293. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/checker_misuse.py +0 -0
  294. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/executor.py +0 -0
  295. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/judge.py +0 -0
  296. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/reference.py +0 -0
  297. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/retry.py +0 -0
  298. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/errors/timeout.py +0 -0
  299. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/__init__.py +0 -0
  300. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/checker.py +0 -0
  301. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_anthropic.py +0 -0
  302. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_bedrock.py +0 -0
  303. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_context.py +0 -0
  304. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_litellm.py +0 -0
  305. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_models.py +0 -0
  306. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_persistence.py +0 -0
  307. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_system_one.py +0 -0
  308. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/judge_usage.py +0 -0
  309. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/sub_agent.py +0 -0
  310. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/summaries.py +0 -0
  311. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/system_one_scoring.py +0 -0
  312. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/evaluation/verdict_tool.py +0 -0
  313. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/formatting.py +0 -0
  314. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/fs_permissions.py +0 -0
  315. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/__init__.py +0 -0
  316. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/agent.py +0 -0
  317. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/agent_paths.py +0 -0
  318. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_emit.py +0 -0
  319. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_hydrate.py +0 -0
  320. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/atif_models.py +0 -0
  321. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/experiment_packager.py +0 -0
  322. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/packager.py +0 -0
  323. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/portability.py +0 -0
  324. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/harbor/reward.py +0 -0
  325. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/invocation_log.py +0 -0
  326. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/__init__.py +0 -0
  327. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/docker_runner.py +0 -0
  328. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/isolation/eval_material.py +0 -0
  329. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/litellm_cost.py +0 -0
  330. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/logging_config.py +0 -0
  331. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/__init__.py +0 -0
  332. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/cli_match.py +0 -0
  333. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/container_context.py +0 -0
  334. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/container_paths.py +0 -0
  335. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/criteria.py +0 -0
  336. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/enums.py +0 -0
  337. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/experiment.py +0 -0
  338. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/judge.py +0 -0
  339. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/judge_defaults.py +0 -0
  340. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/limits.py +0 -0
  341. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/merge_strategy.py +0 -0
  342. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/mutations.py +0 -0
  343. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/routing.py +0 -0
  344. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/sandbox.py +0 -0
  345. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/system_one.py +0 -0
  346. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/tasks.py +0 -0
  347. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/telemetry.py +0 -0
  348. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/models/templates.py +0 -0
  349. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/__init__.py +0 -0
  350. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/batch.py +0 -0
  351. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/config.py +0 -0
  352. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/config_merge.py +0 -0
  353. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/early_stop.py +0 -0
  354. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/evaluation.py +0 -0
  355. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/experiment.py +0 -0
  356. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/regrade.py +0 -0
  357. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/run_limits.py +0 -0
  358. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/run_summary_rebuild.py +0 -0
  359. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestration/task_loader.py +0 -0
  360. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/orchestrator.py +0 -0
  361. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/path_utils.py +0 -0
  362. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/plugins.py +0 -0
  363. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/py.typed +0 -0
  364. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/__init__.py +0 -0
  365. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/helpers.py +0 -0
  366. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/reports/junit.py +0 -0
  367. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/__init__.py +0 -0
  368. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/default_ignore_patterns.yaml +0 -0
  369. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/resources/tags.yaml +0 -0
  370. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/sandbox.py +0 -0
  371. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/__init__.py +0 -0
  372. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/ast_similarity.py +0 -0
  373. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/complexity.py +0 -0
  374. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/quality.py +0 -0
  375. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/signature_similarity.py +0 -0
  376. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/similarity.py +0 -0
  377. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/scoring/token_similarity.py +0 -0
  378. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/__init__.py +0 -0
  379. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/termination.py +0 -0
  380. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/user_simulator.py +0 -0
  381. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/simulation/utterance.py +0 -0
  382. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/stats.py +0 -0
  383. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/__init__.py +0 -0
  384. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/callbacks.py +0 -0
  385. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/collector.py +0 -0
  386. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/events.py +0 -0
  387. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/renderers.py +0 -0
  388. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/streaming/wire.py +0 -0
  389. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/telemetry.py +0 -0
  390. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/timing.py +0 -0
  391. {coder_eval-0.12.11 → coder_eval-0.12.13}/src/coder_eval/utils.py +0 -0
  392. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/README.md +0 -0
  393. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agentless_smoke_test.yaml +0 -0
  394. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/antigravity_hello_world.yaml +0 -0
  395. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/antigravity_hello_world_docker.yaml +0 -0
  396. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_hello_world.yaml +0 -0
  397. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_hello_world_docker.yaml +0 -0
  398. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_parallel_single_gen.yaml +0 -0
  399. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/claude_subagent_test.yaml +0 -0
  400. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_disallowed_tools_test.yaml +0 -0
  401. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_hello_world.yaml +0 -0
  402. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_parallel_commands.yaml +0 -0
  403. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_parallel_single_gen.yaml +0 -0
  404. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_skills_test.yaml +0 -0
  405. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_string_utils.yaml +0 -0
  406. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/codex_subagent_test.yaml +0 -0
  407. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/subagent_bash_long_input.yaml +0 -0
  408. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/agents/subagent_merge_sort.yaml +0 -0
  409. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/anti_cheat_reference/anti_cheat_reference.yaml +0 -0
  410. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/anti_cheat_reference/reference/solution.py +0 -0
  411. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/byod_smoke_test.yaml +0 -0
  412. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dataset_example.yaml +0 -0
  413. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/datasets/sentiment.jsonl +0 -0
  414. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/delegate/fizzbuzz_delegate.yaml +0 -0
  415. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/dockerfile_build_example.yaml +0 -0
  416. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/Dockerfile +0 -0
  417. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/Dockerfile.workdir +0 -0
  418. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/environment/input.txt +0 -0
  419. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/working_dir_auto_example.yaml +0 -0
  420. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/dockerfile_build_example/working_dir_concrete_example.yaml +0 -0
  421. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_decision_budget_exceeded.yaml +0 -0
  422. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_weighted_high_weight_kills_run.yaml +0 -0
  423. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/early_stop_weighted_low_weight_absorbed.yaml +0 -0
  424. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/fibonacci_with_template.yaml +0 -0
  425. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/hello_date.yaml +0 -0
  426. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/inline_starter_example.yaml +0 -0
  427. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/internal/session_resumption.yaml +0 -0
  428. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_smoke.yaml +0 -0
  429. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/README.md +0 -0
  430. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/echo_args +0 -0
  431. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/fixtures/config.json +0 -0
  432. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/mock-cli-bins/mocks/say_hello +0 -0
  433. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/mock_path_dirs_template_dir/task.yaml +0 -0
  434. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/opencode_smoke_test.yaml +0 -0
  435. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/pi_smoke_test.yaml +0 -0
  436. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/python_cli_simulated_judged/echo_simulated_judged.yaml +0 -0
  437. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/record_cli_responses.yaml +0 -0
  438. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/run_limits/max_turns_cap.yaml +0 -0
  439. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/run_limits/turn_timeout.yaml +0 -0
  440. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/3d-scan-calc.yaml +0 -0
  441. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/Dockerfile +0 -0
  442. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/material_density_table.md +0 -0
  443. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/environment/scan_data.stl +0 -0
  444. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/verifier/test.sh +0 -0
  445. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/3d-scan-calc/verifier/test_outputs.py +0 -0
  446. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/README.md +0 -0
  447. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/court-form-filling.yaml +0 -0
  448. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/environment/Dockerfile +0 -0
  449. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/environment/sc100-blank.pdf +0 -0
  450. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/verifier/test.sh +0 -0
  451. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/court-form-filling/verifier/test_outputs.py +0 -0
  452. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/dialogue-parser.yaml +0 -0
  453. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/environment/Dockerfile +0 -0
  454. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/environment/script.txt +0 -0
  455. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/verifier/test.sh +0 -0
  456. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/samples/skillsbench/dialogue-parser/verifier/test_outputs.py +0 -0
  457. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/sentiment_classification.yaml +0 -0
  458. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_agent_judge.yaml +0 -0
  459. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_budget_exceeded.yaml +0 -0
  460. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_cost_budget_exceeded.yaml +0 -0
  461. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_llm_judge.yaml +0 -0
  462. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_negative_path.yaml +0 -0
  463. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_system_one_judge.yaml +0 -0
  464. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_task_timeout.yaml +0 -0
  465. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/smoke_variants.yaml +0 -0
  466. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/test_sandbox.yaml +0 -0
  467. {coder_eval-0.12.11 → coder_eval-0.12.13}/tasks/token_check.yaml +0 -0
  468. {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/byod_smoke_test/Dockerfile +0 -0
  469. {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/README.md +0 -0
  470. {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/src/main.py +0 -0
  471. {coder_eval-0.12.11 → coder_eval-0.12.13}/templates/fibonacci-starter/tests/test_main.py +0 -0
  472. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/__init__.py +0 -0
  473. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_container_contract.py +0 -0
  474. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/__init__.py +0 -0
  475. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/__init__.py +0 -0
  476. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/_scrub.py +0 -0
  477. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/antigravity_fixtures.py +0 -0
  478. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/claude_fixtures.py +0 -0
  479. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/codex_fixtures.py +0 -0
  480. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_a_single_text_turn.json +0 -0
  481. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_b_tool_call_resolved.json +0 -0
  482. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_c_thinking_and_tool_same_generation.json +0 -0
  483. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_d_orphaned_tool.json +0 -0
  484. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/antigravity_e_multi_generation.json +0 -0
  485. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_a_single_text_turn.json +0 -0
  486. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_b_tool_use_result.json +0 -0
  487. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_c_multi_emission_delta.json +0 -0
  488. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_d_subagent_terminal.json +0 -0
  489. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_e_model_usage_and_backfill.json +0 -0
  490. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_f_orphaned_tool.json +0 -0
  491. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_g_crash_format_placeholder.json +0 -0
  492. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_h1_timeout_process_error.json +0 -0
  493. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_h2_process_error_crash.json +0 -0
  494. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/claude_i_in_loop_deadline_break.json +0 -0
  495. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_a_agent_message_only.json +0 -0
  496. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_b_command_execution.json +0 -0
  497. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_c_reasoning_placeholder.json +0 -0
  498. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_d_cross_flush_is_error.json +0 -0
  499. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_e_orphan_tool.json +0 -0
  500. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_f_collab_fallback.json +0 -0
  501. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_g_items_rebuild.json +0 -0
  502. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/codex_h_no_turn_completed_crash.json +0 -0
  503. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_a_single_text_turn.json +0 -0
  504. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_b_tool_call_resolved.json +0 -0
  505. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_c_multi_step_tiling.json +0 -0
  506. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_d_orphaned_tool.json +0 -0
  507. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/opencode_e_error_after_generation.json +0 -0
  508. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_a_single_text_turn.json +0 -0
  509. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_b_tool_call_resolved.json +0 -0
  510. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_c_multi_turn_tiling.json +0 -0
  511. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_d_orphaned_tool.json +0 -0
  512. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_e_error_after_generation.json +0 -0
  513. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/expected/pi_f_duplicate_turn_end.json +0 -0
  514. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/opencode_fixtures.py +0 -0
  515. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/golden_streams/pi_fixtures.py +0 -0
  516. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/Dockerfile +0 -0
  517. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/docker-compose.yaml +0 -0
  518. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/environment/task.yaml +0 -0
  519. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/instruction.md +0 -0
  520. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/task.toml +0 -0
  521. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/reference/greeting.txt +0 -0
  522. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/task.yaml +0 -0
  523. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/expected/tests/test.sh +0 -0
  524. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/environment/Dockerfile +0 -0
  525. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/reference/greeting.txt +0 -0
  526. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/harbor_export_golden/source_task/task.yaml +0 -0
  527. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/live_criteria.py +0 -0
  528. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/__init__.py +0 -0
  529. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/_snapshot.py +0 -0
  530. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_2variant.md +0 -0
  531. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_3variant.md +0 -0
  532. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/report_snapshots/experiment_replicates.md +0 -0
  533. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_fixtures/timing_union_cases.json +0 -0
  534. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/_path_helpers.py +0 -0
  535. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/conftest.py +0 -0
  536. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/__init__.py +0 -0
  537. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/atif/known_good_trajectory.json +0 -0
  538. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/byoa_demo_plugin/byoa_demo.py +0 -0
  539. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/byoa_demo_plugin/pyproject.toml +0 -0
  540. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/mock_agent.py +0 -0
  541. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/pi_happy_stream.jsonl +0 -0
  542. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_informational_criterion.yaml +0 -0
  543. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_multiple_criteria.yaml +0 -0
  544. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/tasks/test_task_pass.yaml +0 -0
  545. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/fixtures/text_stub_agent.py +0 -0
  546. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/docker_baseline.yaml +0 -0
  547. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/llm_judge.yaml +0 -0
  548. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/template_sources.yaml +0 -0
  549. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/harbor_e2e/fixtures/trajectory_criteria.yaml +0 -0
  550. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/__init__.py +0 -0
  551. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/action_docs.py +0 -0
  552. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/agent_roster_parity.py +0 -0
  553. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/dead_config_fields.py +0 -0
  554. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_env_parity.py +0 -0
  555. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_examples.py +0 -0
  556. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_indexes.py +0 -0
  557. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/doc_schema_parity.py +0 -0
  558. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/generated.py +0 -0
  559. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/live_verdict_contract.py +0 -0
  560. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/plugin_manifest_parity.py +0 -0
  561. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/plugin_reference.py +0 -0
  562. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/pricing_mirror.py +0 -0
  563. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/prose_budget.py +0 -0
  564. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/pyright_config.py +0 -0
  565. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/__init__.py +0 -0
  566. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/_layers.py +0 -0
  567. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/_model_ctor.py +0 -0
  568. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/base.py +0 -0
  569. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce014_merge_strategy_declared.py +0 -0
  570. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce015_create_subprocess_limit.py +0 -0
  571. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce016_no_computed_tokenusage_kwargs.py +0 -0
  572. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce017_models_lazy_agent_imports.py +0 -0
  573. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce018_no_final_status_name_denylist.py +0 -0
  574. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce019_telemetry_non_fatal.py +0 -0
  575. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce020_no_sdk_typed_base_agent_fields.py +0 -0
  576. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce021_guarded_evaluationresult_parse.py +0 -0
  577. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce022_dialog_loop_statement_cap.py +0 -0
  578. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce024_discriminated_unions.py +0 -0
  579. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce032_criteria_path_seam.py +0 -0
  580. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce037_no_dead_private_helper.py +0 -0
  581. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce038_acquire_inside_try.py +0 -0
  582. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce039_config_error_escalates.py +0 -0
  583. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce043_no_command_output_truncation.py +0 -0
  584. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce046_env_info_spreads_super.py +0 -0
  585. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce048_no_in_process_typer_command_call.py +0 -0
  586. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce049_no_score_or_zero.py +0 -0
  587. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce050_no_union_getattr_probe.py +0 -0
  588. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce051_no_driver_override.py +0 -0
  589. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce052_process_lethal_must_be_container_gated.py +0 -0
  590. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce053_run_record_filename_literal.py +0 -0
  591. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce054_env_info_key_round_trip.py +0 -0
  592. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce056_no_container_env_literal.py +0 -0
  593. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce057_sidecar_shim_stdlib_only.py +0 -0
  594. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce058_no_timing_literal.py +0 -0
  595. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce059_generation_window_is_two_reads.py +0 -0
  596. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce060_message_id_declared.py +0 -0
  597. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce061_window_via_close_window.py +0 -0
  598. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce063_no_busy_ms_in_agents.py +0 -0
  599. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce064_turn_bracket_on_the_clock.py +0 -0
  600. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/ce066_no_report_imports_in_core.py +0 -0
  601. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_agent_timing_access.py +0 -0
  602. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_blocking_io_in_async.py +0 -0
  603. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_cli_imports_in_core.py +0 -0
  604. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_silent_except.py +0 -0
  605. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_submodule_model_imports.py +0 -0
  606. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_top_level_run_limits_access.py +0 -0
  607. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_transcript_regex_in_eval.py +0 -0
  608. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/no_type_name_string_dispatch.py +0 -0
  609. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/open_explicit_encoding.py +0 -0
  610. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/read_text_explicit_encoding.py +0 -0
  611. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/register_criterion_required.py +0 -0
  612. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/subprocess_run_explicit_encoding.py +0 -0
  613. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/rules/yaml_models_forbid_extras.py +0 -0
  614. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/runner.py +0 -0
  615. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/violation.py +0 -0
  616. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/lint/workflow_outputs.py +0 -0
  617. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_action_inputs.py +0 -0
  618. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_action_version_pin.py +0 -0
  619. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent.py +0 -0
  620. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_no_timing_fields.py +0 -0
  621. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_optional_type.py +0 -0
  622. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_registry_dispatch.py +0 -0
  623. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_config_sdk_decoupling.py +0 -0
  624. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_judge_criterion.py +0 -0
  625. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_telemetry.py +0 -0
  626. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_telemetry_advanced.py +0 -0
  627. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agent_timeout.py +0 -0
  628. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_agentless.py +0 -0
  629. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_antigravity_agent.py +0 -0
  630. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_emit.py +0 -0
  631. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_hydrate.py +0 -0
  632. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_atif_models.py +0 -0
  633. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byoa_plugin.py +0 -0
  634. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byoa_plugin_live.py +0 -0
  635. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_byod_feature.py +0 -0
  636. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_check_all_async.py +0 -0
  637. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_checker_logging.py +0 -0
  638. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_classification_match.py +0 -0
  639. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_claude_settings_enforcement_live.py +0 -0
  640. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cleanup_preservation_guard.py +0 -0
  641. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_backend_flag.py +0 -0
  642. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_called_criterion.py +0 -0
  643. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_empty_glob.py +0 -0
  644. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_match_parity.py +0 -0
  645. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_sdk_options.py +0 -0
  646. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_set_overrides.py +0 -0
  647. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_telemetry.py +0 -0
  648. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cli_type_flag.py +0 -0
  649. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_code_review_bugs.py +0 -0
  650. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent.py +0 -0
  651. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent_live.py +0 -0
  652. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_agent_unit.py +0 -0
  653. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_codex_token_mapping.py +0 -0
  654. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_executed.py +0 -0
  655. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_statistics.py +0 -0
  656. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_command_telemetry_result_data.py +0 -0
  657. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_commands_efficiency.py +0 -0
  658. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_lineage.py +0 -0
  659. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_merge_engine.py +0 -0
  660. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_config_precedence.py +0 -0
  661. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_container_context.py +0 -0
  662. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_continuous_scoring.py +0 -0
  663. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_cost_accounting_paths.py +0 -0
  664. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_criterion_result_round_trip.py +0 -0
  665. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_custom_lint.py +0 -0
  666. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_dataset_expansion.py +0 -0
  667. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_debug_logging.py +0 -0
  668. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_delegate_agent_registration.py +0 -0
  669. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_detached_grading_boundaries.py +0 -0
  670. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_detached_grading_guards.py +0 -0
  671. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_build_failure.py +0 -0
  672. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_litellm_env.py +0 -0
  673. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_container_death.py +0 -0
  674. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_mounts.py +0 -0
  675. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_runner_stream_limit.py +0 -0
  676. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_wildcard_env.py +0 -0
  677. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_docker_workdir_live.py +0 -0
  678. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_driver_resolver.py +0 -0
  679. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_durations.py +0 -0
  680. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_early_stop.py +0 -0
  681. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_error_handling.py +0 -0
  682. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_eval_material.py +0 -0
  683. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_command.py +0 -0
  684. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_format_harbor.py +0 -0
  685. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluate_target.py +0 -0
  686. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_evaluator.py +0 -0
  687. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_event_collector.py +0 -0
  688. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_command.py +0 -0
  689. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_evaluate_loop.py +0 -0
  690. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_execute_format_harbor.py +0 -0
  691. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_cli.py +0 -0
  692. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_loader.py +0 -0
  693. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_models.py +0 -0
  694. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_reports.py +0 -0
  695. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_resolver.py +0 -0
  696. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_experiment_runner.py +0 -0
  697. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_file_check.py +0 -0
  698. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_file_contains_scoring.py +0 -0
  699. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_formatting.py +0 -0
  700. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_git_clone_failure.py +0 -0
  701. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_glob_paths_in_file_criteria.py +0 -0
  702. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_agent.py +0 -0
  703. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_e2e_fixtures.py +0 -0
  704. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_experiment_packager.py +0 -0
  705. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_export_golden.py +0 -0
  706. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_packager.py +0 -0
  707. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_portability.py +0 -0
  708. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_harbor_reward.py +0 -0
  709. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_heartbeat_watchdog.py +0 -0
  710. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_ignore_patterns_negation.py +0 -0
  711. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_image_from_dockerfiles.py +0 -0
  712. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_image_skew_refusal.py +0 -0
  713. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_integration.py +0 -0
  714. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_json_check.py +0 -0
  715. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_anthropic.py +0 -0
  716. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_bedrock.py +0 -0
  717. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_burn_in_live.py +0 -0
  718. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_context_builder.py +0 -0
  719. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_litellm.py +0 -0
  720. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_models.py +0 -0
  721. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_persistence.py +0 -0
  722. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_judge_system_one.py +0 -0
  723. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_lint_no_top_level_run_limits.py +0 -0
  724. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_lint_runner.py +0 -0
  725. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_config.py +0 -0
  726. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_cost.py +0 -0
  727. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_cost_logger.py +0 -0
  728. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_judge_live.py +0 -0
  729. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_litellm_route.py +0 -0
  730. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_llm_judge_criterion.py +0 -0
  731. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_log_tail_buffer.py +0 -0
  732. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_logging.py +0 -0
  733. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_logging_isolation.py +0 -0
  734. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_strategy_annotations.py +0 -0
  735. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_merge_unification.py +0 -0
  736. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_models.py +0 -0
  737. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_mutations.py +0 -0
  738. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_new_criteria.py +0 -0
  739. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_node_env_config.py +0 -0
  740. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_opencode_agent.py +0 -0
  741. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_optional_dependencies.py +0 -0
  742. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator.py +0 -0
  743. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator_error_log_tail.py +0 -0
  744. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_orchestrator_telemetry.py +0 -0
  745. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_parallel.py +0 -0
  746. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_path_utils.py +0 -0
  747. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_agent.py +0 -0
  748. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_agent_config.py +0 -0
  749. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pi_smoke_task.py +0 -0
  750. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plan_command.py +0 -0
  751. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plugin_processing.py +0 -0
  752. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_plugins.py +0 -0
  753. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_post_run.py +0 -0
  754. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pr_review_workflow.py +0 -0
  755. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pre_run.py +0 -0
  756. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_preservation_mode.py +0 -0
  757. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pricing_mirror.py +0 -0
  758. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_pricing_registry.py +0 -0
  759. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_prose_budget.py +0 -0
  760. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_prose_budget_commands.py +0 -0
  761. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_comparison_scoring.py +0 -0
  762. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_evaluator.py +0 -0
  763. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_missing_file.py +0 -0
  764. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_models.py +0 -0
  765. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reference_permissions.py +0 -0
  766. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_registry.py +0 -0
  767. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_regrade.py +0 -0
  768. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_release_notes.py +0 -0
  769. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_replicate_stats.py +0 -0
  770. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_report_command.py +0 -0
  771. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_html.py +0 -0
  772. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_junit.py +0 -0
  773. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_reports_package.py +0 -0
  774. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_resolve_task_files.py +0 -0
  775. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_result_metrics.py +0 -0
  776. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_resume.py +0 -0
  777. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_route_seam_exhaustiveness.py +0 -0
  778. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_routing.py +0 -0
  779. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_command_junit.py +0 -0
  780. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_command_stdout.py +0 -0
  781. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_helpers.py +0 -0
  782. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_models.py +0 -0
  783. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_orchestrator.py +0 -0
  784. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_limits_resolver.py +0 -0
  785. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_metrics.py +0 -0
  786. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_summary_rebuild.py +0 -0
  787. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_run_task_internal.py +0 -0
  788. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_runtime_tool_versions.py +0 -0
  789. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox.py +0 -0
  790. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_adopt.py +0 -0
  791. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_layer_builder.py +0 -0
  792. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_optional.py +0 -0
  793. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_record_cli.py +0 -0
  794. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_security.py +0 -0
  795. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_symlink_preservation.py +0 -0
  796. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_templates.py +0 -0
  797. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sandbox_venv_live.py +0 -0
  798. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_scorers.py +0 -0
  799. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_scoring_quality.py +0 -0
  800. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sdk_option_classification.py +0 -0
  801. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_seed_from_prior_result.py +0 -0
  802. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_config.py +0 -0
  803. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_integration.py +0 -0
  804. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_termination.py +0 -0
  805. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_simulation_trials.py +0 -0
  806. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_skill_triggered.py +0 -0
  807. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_stats.py +0 -0
  808. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_stats_nonfinite.py +0 -0
  809. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_agent_integration.py +0 -0
  810. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_batch.py +0 -0
  811. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_callbacks.py +0 -0
  812. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_cli.py +0 -0
  813. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_events.py +0 -0
  814. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_orchestrator.py +0 -0
  815. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_renderers.py +0 -0
  816. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_streaming_wire.py +0 -0
  817. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_sub_agent_runner.py +0 -0
  818. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_success_criterion_union.py +0 -0
  819. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_suite_rollup.py +0 -0
  820. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_summaries.py +0 -0
  821. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_system_one_judge.py +0 -0
  822. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_system_one_judge_live.py +0 -0
  823. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_tags.py +0 -0
  824. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_task_definition_unknown_fields.py +0 -0
  825. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_teardown_interrupt.py +0 -0
  826. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_telemetry.py +0 -0
  827. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_template_env_expansion.py +0 -0
  828. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_threshold_enforcement.py +0 -0
  829. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_batch.py +0 -0
  830. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_categorization.py +0 -0
  831. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_exceptions.py +0 -0
  832. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_models.py +0 -0
  833. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timeout_orchestrator.py +0 -0
  834. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_close_window.py +0 -0
  835. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_timing_union_parity.py +0 -0
  836. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_uipath_eval.py +0 -0
  837. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_ungraded_reporting.py +0 -0
  838. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_user_simulator.py +0 -0
  839. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_utils.py +0 -0
  840. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_utterance_extraction.py +0 -0
  841. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_variant_prompt_file.py +0 -0
  842. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_verdict_tool.py +0 -0
  843. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_verify_published_workflow.py +0 -0
  844. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_watchdog.py +0 -0
  845. {coder_eval-0.12.11 → coder_eval-0.12.13}/tests/test_yaml_migration.py +0 -0
@@ -13,6 +13,7 @@ rule docstrings in `tests/lint/rules/`, then the guides under `docs/`.
13
13
  ## Contents
14
14
 
15
15
  - [agents.md](agents.md) — agent adapters, the turn lifecycle, token reconciliation, harness parity
16
+ - [context-window.md](context-window.md) — the `agent.context_window` cap, per harness
16
17
  - [contracts.md](contracts.md) — criteria, datasets, aggregation, judging
17
18
  - [isolation.md](isolation.md) — the docker driver, the sandbox, detached grading
18
19
  - [lint-rules.md](lint-rules.md) — why each CE lint rule exists
@@ -306,6 +306,15 @@ cost bills it at the input rate and the cache buckets separately.
306
306
  id), and the `usage` snapshot the last resort. Cost is backfilled from the rate card
307
307
  when a turn was timed out or killed, so there is no terminal `ResultMessage` — the
308
308
  tokens are already captured, so this is pure pricing.
309
+ `model_usage` and `total_cost_usd` count the whole SESSION: a CLI resumed with
310
+ `resume=` restores the running totals it saved on exit, so a dialog's turn N reports
311
+ turns 1..N (`usage` and `num_turns` stay per-turn). `_turn_usage_slice` subtracts what
312
+ the same session last reported, from any ResultMessage, error or not, since the CLI
313
+ saves on every exit. Summing unsliced snapshots shows as a reconciliation row equal to
314
+ the previous turn's total (200/200 multi-turn tasks of a 2026-10-07 Haiku 5.5 run),
315
+ and inflates the simulator's tokens the same way. A counter that moved
316
+ backwards means no restore, and the snapshot is booked whole. A killed turn reports
317
+ nothing, so if its CLI saved totals, the next turn absorbs its usage.
309
318
  - **Codex/OpenAI** report `input_tokens` INCLUSIVE of the cached prefix, and bill no
310
319
  separate cache-write fee. So the fresh slice is `input - cached`, `cache_creation` is 0,
311
320
  and `cache_read` is `cached`.
@@ -558,7 +567,7 @@ shell-aware `parameters["command"]` extraction in `criteria/command_executed.py`
558
567
  to raw-JSON matching — so the same task scores differently per harness. Unknown names pass
559
568
  through unchanged.
560
569
 
561
- Three cases are worth knowing:
570
+ Four cases are worth knowing:
562
571
 
563
572
  - **OpenCode's tool set varies by MODEL within the one harness.** A live 174-task run
564
573
  showed DeepSeek using `write`/`edit` 199 times and `apply_patch` 0, while GPT-5.6 used
@@ -571,6 +580,11 @@ Three cases are worth knowing:
571
580
  - **Pi's search tool is `find`** (glob-by-pattern), not `glob`; there is no `glob` tool in
572
581
  its built-in set, so mapping `find` to the canonical `Glob` is what keeps
573
582
  `command_executed` and `commands_efficiency` comparable.
583
+ - **Delegate's host maps most names itself, but not `LoadSkill`.** `delegate-stdio` reports
584
+ `ReadFile` as `Read` and `ExecuteSkillApi` as `Skill`, so `DelegateAgent` maps only
585
+ `LoadSkill {name}` to `Skill {skill}`; without it `skill_triggered` never sees a Delegate skill
586
+ load. The rename is keyed by the host's name: keyed by `Skill`, it would also turn
587
+ ExecuteSkillApi's `name`, an API call, into a skill engagement.
574
588
 
575
589
  Antigravity additionally strips the result payload out of a tool call's arguments: the
576
590
  harness folds result fields into the same `args` dict at DONE. Beyond a static key list,
@@ -801,89 +815,134 @@ release adding an unclassified field fails loudly instead of silently passing th
801
815
 
802
816
  ## Delegate agent
803
817
 
804
- `DelegateAgent` drives UiPath Autopilot's Delegate agent — reasoning in the UiPath backend,
805
- tools executing locally through the SDK's bundled interop process. Unlike every other CLI-driven
806
- agent in this file, there is no vendor-provided stdio protocol host to spawn: `@uipath/delegate-stdio`,
807
- the internal package a UiPath-only sibling plugin (`coder_eval_uipath`) drives, is not public. Only
808
- `@uipath/delegate-sdk` (a programmatic library exposing a `DelegateAgent` class with
809
- `initialize()`/`onEvent()`/`sendMessage()`/`destroy()`) and `@uipath/delegate-cli` (a terminal wrapper
810
- around it) are. So this agent ships its own first-party Node host, `agents/delegate/delegate_host.mjs`,
811
- which wraps the SDK class in a newline-JSON stdio protocol this framework designed, not one it had to
812
- reverse-engineer — verified live against a real `@uipath/delegate-sdk@0.1.12` install with no token,
813
- confirming both the plain-public-install story and that the SDK's own event vocabulary
814
- (`session_start`/`thinking`/`message`/`tool_call`/`tool_result`/`error`/`done`/`step`) substantially
815
- matches the internal sibling's protocol.
816
-
817
- **No multi-generation transcript splitting.** The internal sibling reconstructs one `AssistantMessage`
818
- per backend round-trip from an `isStepStart` flag and a `turnUsages` array on the host's terminal
819
- message. Neither is present on `DelegateAgent.onEvent`'s payloads (confirmed absent by grepping the
820
- installed SDK bundle's string literals), so there is no reliable per-round-trip boundary signal at this
821
- API layer. `DelegateAgent` builds exactly ONE `AssistantMessage` per `communicate()` call instead — a
822
- deliberate simplification, not an oversight; richer segmentation can be added once a real boundary
823
- signal is confirmed against a live backend. `timing.close_window` still opens that one window from the
824
- turn's own start (there is nothing to tile from), so the head and tail both measure ~0.
825
-
826
- **Deferred, not ported speculatively.** The internal sibling's module docstring documents several
827
- hard-won failure-signature-specific recoveries: a Cloudflare WAF-block-page rewrite, an SSE-connect-
828
- timeout rewrite, session-conflict fresh-host recovery, and first-response stall-timeout+resend. None
829
- are ported here — porting a marker tuned to the internal sibling's own observed failures risks matching
830
- nothing (or the wrong thing) against the public SDK/backend's actual error surface. A crash still ends
831
- the turn correctly as a retryable `AgentCrashError`; it is just not specially diagnosed. Port these once
832
- the same failures are actually observed running this agent for real.
833
-
834
- **The process handle must be cleared on every path that leaves the host dead or dying** — EOF, a host
835
- `fatal` message, a timeout (both the top-of-loop pre-check AND a timeout elapsing while blocked inside
836
- `asyncio.wait_for`), cooperative stop, and `max_turns` exhaustion. A real bug shipped once during this
837
- agent's own development: a timeout elapsing mid-read fell through to the generic crash path instead of
838
- `TurnTimeoutError`, and left the process handle set, so the NEXT `communicate()` call reused a host with
839
- a `"send"` still nominally in flight instead of respawning — risking a stale response being consumed as
840
- the new turn's. `tests/test_delegate_agent.py`'s `test_timeout_elapsing_mid_read_still_raises_turn_timeout_error`
841
- pins the fix.
842
-
843
- **Skills mapping is deliberately NOT the shared `agents/_skills.py` resolver.** That resolver enumerates
844
- individual skill directories for a repeated `--skill <dir>`-style CLI argument (OpenCode/Pi's shape).
845
- The Delegate SDK's `bundledSkillsPath` wants exactly ONE parent directory whose children are skill
846
- folders — a genuinely different shape — so `_resolve_bundled_skills_path` mirrors the internal sibling's
847
- own mapping (`<plugin.path>/skills`, first plugin wins) instead of force-fitting the shared helper.
848
-
849
- **Registered unconditionally**, exactly like `codex`/`antigravity` — there is no conditional-registration
850
- gate keyed on an optional-dependency extra anywhere in this codebase; `opencode`/`pi` declare an EMPTY
851
- extra purely as packaging-metadata documentation, and `delegate` follows that same shape (no new pip
852
- package — Node/`@uipath/delegate-sdk` is the real prerequisite, resolved lazily in `start()`).
853
-
854
- **`environment` resolution needs org/tenant SLUGS, not just IDs — confirmed by reading the installed
855
- SDK's own bundle, not by guessing from its error message.** When `DELEGATE_BACKEND_URL` is absent and
856
- `DELEGATE_ENV` (-> `environment` init option) is used instead, the SDK resolves the backend URL from
857
- `organizationName`/`orgLogicalName` and `tenantName` fields on the `auth` object passed to
858
- `initialize()` — NOT from `ORG_SLUG`/`TENANT_SLUG` read off `process.env` directly, despite that being
859
- exactly what the SDK's own thrown error suggests ("set ORG_SLUG and TENANT_SLUG env vars alongside
860
- ORG_ID/TENANT_ID"). That advice describes the separate `@uipath/delegate-cli`/`delegate-stdio` wrapper's
861
- own env-var-driven bootstrapping, not the `DelegateAgent` class itself, which we drive directly. So
862
- `_build_init_options` forwards `ORG_SLUG`/`TENANT_SLUG` (when set) into `auth.organizationName`/
863
- `auth.tenantName` itself — confirmed against `node_modules/@uipath/delegate-sdk/dist/index.mjs`'s own
864
- `yie()` resolver function live in CI (`pyright`/tests can't catch this class of bug; it only surfaces
865
- against a real backend). `tests/test_delegate_agent.py::TestStart::test_org_and_tenant_slug_forwarded_into_auth`
866
- pins it. Passing `DELEGATE_BACKEND_URL` directly instead of `DELEGATE_ENV` skips this whole path.
867
-
868
- **Token usage comes from two getters called after `sendMessage()` resolves, not from any event or the
869
- resolved value itself — confirmed by reading the installed SDK's bundle, not by guessing.** A first
870
- pass guessed at a flat `usage` dict carried on the resolved `sendMessage()` value or on a forwarded
871
- event, tried several plausible snake_case/camelCase bucket-name spellings, and silently returned zero
872
- tokens every turn against a real backend (`tests/test_delegate_agent_live.py::test_delegate_live_token_usage_populated`
873
- failed live: `record.crashed is False`, real text/tool output, `token_usage=None`). Reading
874
- `node_modules/@uipath/delegate-sdk/dist/index.mjs` directly settled it: `sendMessage()` always resolves
875
- to a plain string (never an object), and no event this host forwards via `agent.onEvent()` ever carries
876
- a `usage` field — the SDK's own internal event vocabulary has no `"usage"` member (that name IS used
877
- internally, but only inside the SDK's own Zustand store reducer that updates its "Token usage" UI
878
- panel, never re-emitted through the public `onEvent` bus). The only way to reach it is
879
- `DelegateAgent.getLastTurnUsage(sessionId?)` (defaults to the just-used session), so
880
- `delegate_host.mjs`'s `handleSend` calls it — and `getSessionId()` — right after `sendMessage()`
881
- resolves, and attaches both to the `send_ok` message itself. That getter's shape, read straight off the
882
- SDK's own `setUsage` store action, is `{promptTokens, completionTokens, promptTokensCached,
883
- cacheCreationTokens, turnTokenUnits, contextBreakdown}` — `promptTokens` is the TOTAL input token count
884
- (OpenAI-style, cached + uncached), `promptTokensCached` the cache-READ subset of it, so
885
- `_parse_usage` computes `uncached_input_tokens = promptTokens - promptTokensCached`. This is now
886
- CONFIRMED, not a guess, so `_parse_usage`'s docstring no longer marks it `# UNVERIFIED`.
818
+ `DelegateAgent` drives UiPath Autopilot's Delegate agent: reasoning in the UiPath backend, tools run
819
+ locally. It spawns the host from the public `@uipath/delegate-stdio` npm package
820
+ (`dist/delegate_stdio.mjs`), which pulls in `@uipath/delegate-sdk` and the interop binaries. The
821
+ package README is the wire-protocol SSOT. `agents/delegate/package.json` sets the floor at `1.203.0`, the
822
+ first release with the `auth` init option and the `usage` frame (UiPath/Autopilot#6656). The other frame
823
+ shapes were confirmed against a live `1.202.1` transcript; the frame builders in
824
+ `tests/_fixtures/golden_streams/delegate_fixtures.py` replay those shapes. (An earlier first-party
825
+ `delegate_host.mjs` wrapper is gone; see git history.)
826
+
827
+ **Auth goes to the host as the `auth` init option, not through its env.** `_env` reads the
828
+ `DELEGATE_*` name first, then the bare `AUTH_TOKEN` / `TENANT_ID` / `ORG_ID` / `ORG_SLUG` /
829
+ `TENANT_SLUG`. `DELEGATE_BACKEND_URL` → `backendUrl`, `DELEGATE_ENV` → `env`. We do not adopt the
830
+ host's own names (`ORG_LOGICAL_NAME`, `BACKEND_URL`, …): bare names collide with other tooling, and CI
831
+ secrets use the `DELEGATE_*` names. `_HOST_ENV_REMOVED` strips the host's names and the token from the
832
+ host env, because the agent's shells inherit it (token leak to code under test) and a stray
833
+ `BACKEND_URL` would reroute the host. A refresh source still writes the fresh token into the host's
834
+ own `process.env.AUTH_TOKEN`. `_INIT_CONFIG_ERROR_HINT` names our variables beside the host's message,
835
+ which names the host's own. `env=<slug>` without org/tenant
836
+ slugs fails init.
837
+
838
+ **`LLMGW_*` leaves the host env only when a token file is set.** Without a token file, the host's
839
+ `selectTokenSource` uses that S2S pair to refresh, so stripping it always would end refresh after an
840
+ hour. `_strip_redundant_gateway_creds` mirrors the host's lookup exactly
841
+ (`DELEGATE_AUTH_TOKEN_FILE ?? AUTH_TOKEN_FILE`, path-delimiter split, blanks ignored).
842
+
843
+ **Effort rides `sdk_options.effort`** — the same key as Claude Code, so one `-D` drives both.
844
+ `get_sdk_options()` returns the whole `init` dict (so the reports show Model and Effort), with
845
+ credentials redacted: `auth` → its field names, `backendUrl` → its host (`None` when `urlparse` cannot
846
+ parse the URL: the orchestrator reads it while it persists `task.json`, so a raise there would lose
847
+ the file and hide the original error). It is persisted in
848
+ `task.json`.
849
+
850
+ **`enableSkills` must be sent explicitly**: the host default is `false`, so `bundledSkillsPath` alone
851
+ loads nothing. `_resolve_bundled_skills_path` maps `<plugin.path>/skills` (first plugin wins), not the
852
+ shared `agents/_skills.py` resolver: the SDK wants ONE parent directory, not a list of skill dirs.
853
+
854
+ **`max_turns` stays client-side.** The host's `maxSteps` does not stop the turn (live: `maxSteps: 2`
855
+ ran 7 steps). The adapter counts calls from the event stream and abandons the host when call N+1
856
+ opens; `len(turnUsages)` from the `result` then replaces the estimate as `num_turns`.
857
+
858
+ **A call opens on its first text, or on its `usage` frame when it streams none — never on a tool
859
+ event.** The host streams a call's text, flushes the call's `usage` frame, then runs the call's
860
+ tools, and it runs a batched reply's tools one at a time: `tool_call`, `tool_result`, `tool_call`,
861
+ `tool_result`. The adapter once opened call N+1 when every open tool had returned. With that order
862
+ the open set empties after each tool, so every tool counted as a call: a downstream suite saw a turn
863
+ with 16 round-trips and 96 tool calls cut at `max_turns: 80`. Now a `thinking` or `message` event
864
+ opens a call unless the open call has already streamed text, and a `usage` frame opens one only for
865
+ a call that streamed none. A crossing call that streams text is cut at that text, before any of its
866
+ tools. A tool-only crossing call is cut at its own frame, and its first tool can start before the kill:
867
+ the host starts a call's tools right after the frame, and the stream gives no earlier boundary. A host
868
+ without `usage` frames counts only the calls that stream text; such a host is below the 1.203.0 floor,
869
+ which is also the first release that takes the `auth` init option.
870
+ Only `_TurnState.on_text` / `on_tool_event` / `on_usage_frame` / `on_result` write the count, so the rule
871
+ lives in one place. `on_result` compares the live count with `len(turnUsages)` and warns when they
872
+ differ: the order is read from the 1.203.1 host and SDK source, not from a live transcript, so a host
873
+ release that reorders the frames shows up in the logs instead of silently moving the cap.
874
+
875
+ **A cut turn keeps the usage of its finished calls.** A turn cut by `max_turns` or a stop gets no
876
+ `result`, so the adapter sums the per-round-trip `usage` frames; the `result`'s total replaces the sum
877
+ when it arrives. Ordering (from the host and SDK source, not a live transcript): call N's `usage` frame
878
+ precedes every tool event of call N. A crossing call that streams text is cut at that text, so its usage
879
+ is dropped; a tool-only crossing call is cut at its own frame, so its usage is booked. The adapter warns
880
+ when a cut turn had finished calls but no usage.
881
+
882
+ **One `AssistantMessage` per `communicate()`.** `isStepStart` and `turnUsages` would allow a
883
+ per-round-trip split; today `isStepStart` only merges streamed deltas. `close_window` opens the one
884
+ window at turn start, so head and tail measure ~0.
885
+
886
+ **Known host failures are recategorized** in `_describe_host_error` / `_crash_on_host_error`, ported
887
+ from the out-of-tree `delegate-sdk` adapter that drove the same host and backend:
888
+
889
+ - **Cloudflare WAF block page** (`<title>Continue with UiPath Platform</title>` or "not available in
890
+ your country"): a WAF rule matched shell-like text in the request, not a geo/auth block. A retry
891
+ is blocked again, so the reason carries "content filter" (`AGENT_INVALID_OUTPUT`). Two markers,
892
+ because the host truncates near 50 KB and the country sentence sits after ~48 KB of CSS.
893
+ - **SSE connect timeout**: no response headers, so the backend never started the turn. Rewritten to
894
+ "connection" (`AGENT_API_ERROR`, retried) with "timeout" removed, which would be `AGENT_TIMEOUT`
895
+ (not retried).
896
+ - **Session conflict** ("A reply is already being generated", 409): `_session_id` is dropped so the
897
+ retry starts a new conversation, but only while no turn of that conversation has finished
898
+ (`_conversation_has_history`). On a later turn a new conversation would continue the task without
899
+ the earlier turns, and the row would still be graded as one trajectory. So the retry keeps the
900
+ session. The 409 is short-lived: the backend cancels the reply when the killed host's stream
901
+ disconnects, then releases its turn claim, so the 5 s and 10 s `AGENT_CRASH` retries usually
902
+ succeed. A claim it fails to release expires after `TURN_CLAIM_TTL_SECONDS` (900 s), and the task
903
+ ends as an error. A `session_id` pinned in config counts as history, and dropping it would not
904
+ help anyway: each respawn sends it in `init`, and the SDK falls back to it when `send` carries no
905
+ `sessionId` (`sessionId || this.options.sessionId` in the SDK's `sendMessage`).
906
+
907
+ Not ported: stall-timeout+resend and the S2S token-file refresher. Port them when the need shows.
908
+
909
+ **No crash reason carries the stderr tail.** Categorization matches substrings of the reason, and the
910
+ tail holds incidental text (the sandbox path, so the task id). In build 13599116 "guardrail" in a task
911
+ path turned a transient error into non-retryable `AGENT_INVALID_OUTPUT`. `_log_stderr_tail` logs the
912
+ tail at WARNING instead.
913
+
914
+ **Only an init error that a retry cannot fix is non-retryable.** `AgentConfigError` only on
915
+ `_INIT_CONFIG_ERROR_MARKERS` (auth missing/rejected, missing slugs, unknown env) or on a whole-word
916
+ 401/403. A bare `"401"` substring also matched ports and GUIDs, such as `127.0.0.1:54013`, and ended a
917
+ transient failure with no retry. Any other init error and the 60 s init deadline raise a retryable
918
+ `AgentCrashError`. The shared categorizer matches status codes as whole words too
919
+ (`errors/categorization.py::_mentions_status`): the `AgentCrashError` goes through `categorize_error`,
920
+ whose raw `"401"` substring made the same port and GUID cases a non-retryable auth error. A mid-run
921
+ respawn keeps the same classification: it once made every `AgentConfigError` retryable, so an expired
922
+ token ended the task at `start()` but was retried later.
923
+
924
+ **Clear the process handle on every path that leaves the host dead or dying** — EOF, `error` frame,
925
+ timeout (pre-check AND mid-`wait_for`), stop, `max_turns`. A shipped bug left it set after a mid-read
926
+ timeout, so the next turn reused a host with a `send` in flight
927
+ (`test_timeout_elapsing_mid_read_still_raises_turn_timeout_error` pins it). `_force_kill_host` clears
928
+ the handle before its reap. The adapter never reuses a host after a failed `send`, so no late event
929
+ leaks into the retry.
930
+
931
+ **Registered unconditionally**, like `codex`/`antigravity`; its extra is empty. Node and
932
+ `@uipath/delegate-stdio` are the real prerequisite, resolved lazily in `start()`.
933
+
934
+ **Host resolution: `DELEGATE_STDIO_PATH`, then local installs, then a global one.** Local means
935
+ the cwd, its ancestors and `agents/delegate/`; a local install wins, as in Node. A global install
936
+ is found through the package's `delegate-stdio` bin shim on `PATH`, not `npm root -g`, so the
937
+ resolver runs no npm subprocess. On POSIX the shim is a symlink to the bundle. On Windows it is a
938
+ `.cmd` file beside the prefix's `node_modules`. We never execute the `.cmd`: that would make
939
+ `cmd.exe` parse the arguments again. The home probe and `DELEGATE_SDK_NODE_MODULES` are gone. The
940
+ global search covers "install once, run from anywhere", and the root override only repeated the
941
+ path override. The explicit path stays for CI: a source build has no install root, and an install
942
+ in a temporary directory for each run keeps the runs on a shared host on their own versions.
943
+
944
+ **Windows path length**: an install root that pushes the interop binary path past 260 characters makes
945
+ the spawn fail with `ENOENT`. The docs tell users to install into a short path.
887
946
 
888
947
  ### Delegate agent pricing
889
948
 
@@ -913,16 +972,14 @@ un-mirrored gap, with the same caveat comment). The two tables can price the SAM
913
972
  differently until someone reconciles them — a known, pre-existing state, not something this port
914
973
  introduced or should silently "fix" by picking one number over the other.
915
974
 
916
- ### Delegate agent golden-master and timing-identity coverage
917
-
918
- `AgentKind.DELEGATE` is excluded from `tests/test_agent_golden_master.py`'s `_NO_GOLDEN_COVERAGE`
919
- allowlist rather than given fixture scenarios: a golden snapshot pins a byte-identical `TurnRecord`
920
- for a scripted event stream, and every event field name below the confirmed `type`/`content`/
921
- `toolName`/`sessionId`/`model`/`usage` set is a guess (see this file's own "Delegate agent" section
922
- above and `delegate_agent.py`'s module docstring). Snapshotting a guess would make it look verified.
923
- Add real scenarios once the fields are confirmed against a live backend.
924
-
925
- This does NOT extend to `tests/test_timing_identity_contract.py::test_delegate_buckets_tile_the_turn`,
926
- which IS a real, unexempted case: the ms-exact four-bucket identity depends only on this agent's own
927
- `close_window`/`_finalize_turn` code (a single window per turn, opened at `_TurnState.__init__` and
928
- closed at finalize), never on the SDK's field names, so there is nothing unverified for it to guess at.
975
+ ### Delegate agent golden-master coverage
976
+
977
+ `tests/_fixtures/golden_streams/delegate_fixtures.py` scripts the host's stdout frames for six
978
+ scenarios: a tool call, a `max_turns` cut, an `error`-frame crash, an orphaned tool, a tool-only call
979
+ that crosses the cap, and a batched reply whose tools run one at a time. The `event`,
980
+ `result` and `error` frames mirror the live `1.202.1` transcript. The `usage` frame and the `result`
981
+ fields new in `1.203.0` follow the host source of UiPath/Autopilot#6656 (`src/usage.ts` and
982
+ `handleSend`): every usage object carries all four buckets with `input_tokens` exclusive of cache,
983
+ the frames flush before each event and before the `result` or `error`, and `result.usage` is the sum
984
+ of `turnUsages`. No live `1.203.0` transcript has been compared yet. If one differs, change the
985
+ builders and regenerate the snapshots with `GOLDEN_REGEN=1`.
@@ -0,0 +1,170 @@
1
+ # Capping the agent's context window
2
+
3
+ Analysis and design for `agent.context_window`: one harness-neutral field that caps the
4
+ context window an agent works within, set per agent config or per experiment variant.
5
+
6
+ ## Problem and evidence
7
+
8
+ A benchmark of Claude Code on Sonnet 5 (Bedrock, 1M-token window) let runs grow to
9
+ 250k-480k tokens of context. Above about 150k tokens each extended-thinking step got
10
+ about 10x slower, so most runs hit the 2-hour task limit. The operator wants to measure
11
+ pass rate and cost at several context caps, for example one variant at 200k and one at
12
+ 400k, on the same tasks.
13
+
14
+ Before this change no harness-neutral way existed:
15
+
16
+ - **claude-code**: `claude_settings` (`--settings`) could carry `autoCompactWindow`. That
17
+ works for one harness only, and when `claude_settings` is a file path a variant cannot
18
+ merge one key into it.
19
+ - **codex**: `CodexAgentConfig` has no pass-through. `CodexAgent._build_thread_options`
20
+ builds the thread `config` dict itself, so no value reached Codex.
21
+ - **antigravity, opencode, pi, delegate**: no knob is wired.
22
+
23
+ ## How each harness controls its window
24
+
25
+ ### claude-code
26
+
27
+ Verified in the CLI the SDK spawns. `claude-agent-sdk` runs its **bundled** CLI before it
28
+ looks for `claude` on `PATH` (`SubprocessCLITransport._find_cli`), so the CLI that runs is
29
+ the one the SDK wheel bundles, not the one the agent image installs with npm:
30
+
31
+ | coder_eval | claude-agent-sdk (uv.lock) | bundled CLI | image npm CLI |
32
+ |---|---|---|---|
33
+ | 0.12.1 | 0.2.124 | 2.1.216 | 2.1.177 |
34
+ | 0.12.12 | 0.2.159 | 2.1.281 | 2.1.281 |
35
+
36
+ `environment_info.claude_code_cli` records `claude -v` from `PATH`, so a 0.12.1 run
37
+ records 2.1.177 while 2.1.216 ran. That is a separate defect and is not fixed here.
38
+
39
+ Three inputs set the auto-compact window. Both bundled CLIs (2.1.216 and 2.1.281) contain
40
+ the same resolution function. The highest precedence comes first:
41
+
42
+ 1. `CLAUDE_CODE_AUTO_COMPACT_WINDOW` environment variable: a plain token count. It
43
+ outranks the flag and every settings scope.
44
+ 2. `--autocompact <auto|tokens>`: added in 2.1.221 (CLI reference). It is absent from
45
+ 2.1.216 as a parsed option.
46
+ 3. `autoCompactWindow` settings key. The settings schema is
47
+ `int().min(100000).max(1000000).optional().catch(undefined)`, so an out-of-range
48
+ value is **silently dropped**.
49
+
50
+ The effective window is `min(model context window, configured value)`. Auto-compaction
51
+ starts when the context approaches that window.
52
+
53
+ ### codex
54
+
55
+ Verified in the `openai-codex-cli-bin` 0.156.1 binary (the pin) and its source at tag
56
+ `rust-v0.156.1`:
57
+
58
+ - `model_context_window` ("Size of the context window for the model, in tokens"):
59
+ `with_config_overrides` sets the model's `context_window` to
60
+ `min(value, max_context_window)`. Three things follow from it. The default
61
+ auto-compact limit becomes 90% of it. The hard cap, which forces compaction, becomes
62
+ `context_window * effective_context_window_percent / 100`. The remaining-window figure
63
+ the model is shown also changes.
64
+ - `model_auto_compact_token_limit` ("Token usage threshold triggering auto-compaction"):
65
+ the trigger only, clamped to 90% of the resolved window. It does not change the window.
66
+ - `model_auto_compact_token_limit_scope` (`total` by default, or `body_after_prefix`) and
67
+ `model_post_turn_compact_threshold_percent` (turn-end compaction, off by default) tune
68
+ when compaction starts. They are not caps.
69
+
70
+ The thread `config` dict `thread_start` takes is the same override surface that
71
+ coder_eval already uses for `enabled_tools` and `model_providers`.
72
+
73
+ ### antigravity, opencode, pi, delegate
74
+
75
+ None of them has a context-window knob wired in coder_eval. They are out of scope, and
76
+ they reject the field.
77
+
78
+ ## Options considered
79
+
80
+ **Per-harness pass-through** (a Codex `config` pass-through next to `claude_settings`).
81
+ It is flexible, but a variant would have to name a different key per harness, and the
82
+ recorded value would mean something different on each. It also opens a free-form
83
+ pass-through on Codex with no denylist. Rejected.
84
+
85
+ **A field under `run_limits`.** Run limits are caps that the orchestrator or the agent
86
+ enforces on a run (turns, time, tokens, USD), and the parity table lists them. A context
87
+ window is not a spend cap. It is a harness setting that changes what the agent does, and
88
+ it depends on the agent type, which `run_limits` does not know. The guide also says that
89
+ `agent:` holds no run-time caps. Rejected.
90
+
91
+ **A field on the agent config.** One name, accepted on a type-less config so that
92
+ experiment defaults and variants can set it, and validated against the concrete type
93
+ when the config resolves. **Chosen.**
94
+
95
+ Naming: `context_window`, in tokens. It names the quantity the operator caps, matches
96
+ Codex's `model_context_window`, and avoids "auto-compact", which describes a mechanism of
97
+ one harness. `max_context_tokens` was considered, but it reads as a per-request input
98
+ limit, which neither harness enforces.
99
+
100
+ ## Recommended design
101
+
102
+ `BaseAgentConfig.context_window: int | None` (default `None`, `gt=0`).
103
+
104
+ - Each config class declares `_context_window_range: ClassVar[tuple[int, int | None] |
105
+ None]`. `None` (the base default) means that the harness cannot apply the field.
106
+ `ClaudeCodeAgentConfig` declares `(100_000, 1_000_000)` and `CodexAgentConfig` declares
107
+ `(32_768, None)`.
108
+ - `check_context_window_supported` (model validator) rejects an unsupported type or an
109
+ out-of-range value as soon as the type is known. A plugin agent inherits `None`, so it
110
+ also rejects the field until it opts in.
111
+ - The field uses the default `replace` merge strategy. It is set at any of the five
112
+ layers, and with `-D agent.context_window=N`.
113
+
114
+ Per-harness mapping:
115
+
116
+ - **claude-code**: `CLAUDE_CODE_AUTO_COMPACT_WINDOW=<N>` in the SDK `env`. The
117
+ environment variable was chosen over the settings key and the flag for four reasons.
118
+ It has the highest precedence, so host, project and `claude_settings` values cannot
119
+ override the cap. It works whether `claude_settings` is a dict or a file path. Both
120
+ bundled CLIs read it, which the flag does not. `extra_args` stays framework-owned.
121
+ `claude_settings.autoCompactWindow` together with `context_window` is a load error,
122
+ because the environment variable would silently override it.
123
+ - **codex**: `model_context_window: <N>` in the thread `config`. No trigger key is set,
124
+ so Codex compacts at its default 90% of the window.
125
+
126
+ ## Validation
127
+
128
+ - `gt=0` on every config, so a type-less config rejects nonsense as well.
129
+ - claude-code: 100000-1000000, the CLI's documented range. Outside that range the CLI
130
+ drops a settings value silently, so coder_eval enforces the range itself.
131
+ - codex: 32768 and up. Codex clamps the value to the model's catalog maximum, and the
132
+ floor rejects a window too small to work in, such as a YAML `yes` coerced to 1.
133
+ - every other type: rejected at load, naming the supported types. A variant that
134
+ switches `type` to an unsupported harness fails when the experiment resolves.
135
+
136
+ ## Recording
137
+
138
+ The resolved agent config is persisted as `agent_config` on every task row (`run.json`
139
+ and `task.json`). `agent.context_window` therefore appears per task, and config lineage
140
+ records which layer set it (for example, the variant). The experiment report groups by
141
+ variant, so a cap per variant groups without new report code. On claude-code the
142
+ `sdk_options` dump also shows the environment variable in `env`.
143
+
144
+ ## Open questions
145
+
146
+ - **A silent clamp to the model's window.** Neither harness reports that the model's
147
+ window lowered the cap. A cap above the model's window runs at the model's window.
148
+ Recording the effective window would need a per-model catalog in coder_eval.
149
+ - **Trigger points differ.** Codex compacts at 90% of the window. Claude Code compacts
150
+ when the context approaches the window, minus an internal buffer. Equal caps therefore
151
+ do not compact at exactly the same token count. A separate harness-neutral trigger
152
+ field is possible, but it is not added until a benchmark needs it.
153
+ - **A host `CLAUDE_CODE_AUTO_COMPACT_WINDOW` and uncapped runs.** Decided: the SDK starts
154
+ the CLI with `os.environ` underneath `options.env`, so when the field is unset the
155
+ claude-code agent blanks a host value. A run recorded as uncapped is never capped by
156
+ the host. This changes every claude-code run on a host that sets the variable,
157
+ including runs that never set `context_window`. Codex has no equivalent: an unset
158
+ field leaves a host `model_context_window` in `$CODEX_HOME/config.toml` in effect.
159
+ - **The recorded CLI version is wrong.** See the version table above:
160
+ `environment_info.claude_code_cli` should record the bundled CLI version.
161
+ - **Other harnesses.** Pi can lower a model's window with
162
+ `providers.<provider>.modelOverrides.<model>.contextWindow` in `models.json`. A mapping
163
+ was written and then reverted (d1757a60), because no live run backed it and no task
164
+ uses `type: pi`; it comes back with a live test. OpenCode (`limit.context` and
165
+ `limit.input` in provider config) needs a `limit.output` coder_eval does not know, and
166
+ an unpinned CLI. Antigravity's `CompactionConfig(token_threshold=N)` only moves the
167
+ trigger. Delegate keeps its history in the backend. Each needs its own verification
168
+ before it opts in.
169
+ - **How often a run compacted is not recorded.** A cap A/B cannot yet tell "cap never
170
+ reached" from "compacted N times" from the task row alone.
@@ -845,7 +845,7 @@ assertion for each. A defaulted `AgentStartEvent` lands ~365 days before the clo
845
845
  first window, so the head blows any sane UPPER bound by the whole offset. A defaulted
846
846
  `AgentEndEvent` lands ~365 days BEFORE its own last message, so `decompose_turn` clamps the
847
847
  negative to `0.0` — "measured, and instant", which passes an upper bound. Only a strict
848
- `> 0.0` catches it. It holds on all three clocked harnesses because real work separates a
848
+ `> 0.0` catches it. It holds on every clocked harness because real work separates a
849
849
  turn's last flush from its end event. The margin is smallest on antigravity, which holds
850
850
  its process across turns: it measures 0.007-0.035 ms there, 7-35 ticks of the 1 us
851
851
  resolution that both `datetime` and `time.monotonic()` have on Linux, macOS and Windows.
@@ -16,6 +16,11 @@ removes:
16
16
  transition or an NTP step inside a turn lands directly in a generation window — an
17
17
  hour-long jump in a millisecond field. Nightly runs start at 04:18 and run for hours,
18
18
  so it is reachable rather than theoretical. A monotonic-derived stamp cannot express it.
19
+ - Delegate stamped its one window and its tool spans with raw `datetime.now()` but measured
20
+ `duration_seconds` with `time.monotonic()`. On Windows the wall clock moved 0.24-0.37 ms
21
+ further than the monotonic one inside a sub-millisecond turn, so the tail alone came out
22
+ longer than the whole turn and `test_delegate_golden[a_tool_call]` failed at random. One
23
+ window has no inter-window drift to correct, but it still shares the turn's duration.
19
24
 
20
25
  It is an EXTRACTION, not an invention: antigravity already captured this exact pair at
21
26
  the top of `communicate` and simply did not use it for later stamps.
@@ -205,7 +210,7 @@ Magnitudes are only real where a scripted clock makes them real, so each case dr
205
210
  harness's own reducer with a hand-moved clock and feeds its output through a real
206
211
  `EventCollector`, the seam production uses to compute the head and the tail. The module
207
212
  reuses the three clock-injection idioms the per-harness suites already use rather than
208
- inventing a fourth: an injected `TurnClock` stand-in (pi, antigravity, claude-code), a
213
+ inventing a fourth: an injected `TurnClock` stand-in (pi, antigravity, claude-code, delegate), a
209
214
  `datetime` subclass patched onto the module (opencode), and scripted SDK epoch-millisecond
210
215
  stamps (codex). OpenCode needs a `datetime` SUBCLASS rather than a stub because the
211
216
  reducer also calls `datetime.fromtimestamp` through the same module global to convert the
@@ -89,36 +89,33 @@ LOG_TO_FILE=false # Set to true to enable file logging
89
89
  # CODER_EVAL_REMEDIATE_HOME_PLUGINS=0
90
90
 
91
91
  # Delegate agent settings (UiPath Autopilot's Delegate agent, requires Node.js
92
- # on PATH plus `npm install @uipath/delegate-sdk` — a genuinely public package,
93
- # no token needed). See docs/agents/DELEGATE.md.
92
+ # on PATH plus `npm install -g @uipath/delegate-stdio`, a release that accepts the
93
+ # `auth` init option). coder_eval finds the install itself. See docs/agents/DELEGATE.md.
94
94
  #
95
- # DELEGATE_SDK_NODE_MODULES / DELEGATE_SDK_PATH — override the auto-located
96
- # install (ancestor-walk from cwd, plus home); set at most one.
97
- # DELEGATE_SDK_NODE_MODULES="/path/to/install/root"
98
- # DELEGATE_SDK_PATH="/path/to/node_modules/@uipath/delegate-sdk/dist/index.mjs"
99
- #
100
- # DELEGATE_ENV — cloud environment slug (alpha/staging/production/localhost),
101
- # used to derive the backend URL from the auth record's org/tenant slugs.
95
+ # DELEGATE_ENV — cloud environment slug (alpha/staging/production),
96
+ # used to derive the backend URL from the org/tenant slugs.
102
97
  # DELEGATE_ENV="alpha"
103
98
  #
104
99
  # DELEGATE_BACKEND_URL — pin the full agent-service URL directly instead
105
100
  # (wins over DELEGATE_ENV when both are set).
106
101
  # DELEGATE_BACKEND_URL="https://cloud.uipath.com/<org>/<tenant>/delegate_"
107
102
  #
108
- # Auth: either the token set below, or a prior `delegate-sdk`/`delegate-cli`
109
- # login that wrote ~/.aria/sdk-auth.json (read by the Node host itself, not
110
- # by coder_eval). Each var also accepts a DELEGATE_-namespaced spelling
111
- # (DELEGATE_AUTH_TOKEN, DELEGATE_TENANT_ID, ...), checked first -- prefer that
112
- # spelling in a shared environment, since the bare names collide with what
113
- # other tooling (npm, Vault, Terraform) commonly exports.
114
- # AUTH_TOKEN="..."
115
- # TENANT_ID="..."
116
- # ORG_ID="..."
103
+ # Auth: either the token set below, or a prior `delegate-cli login`
104
+ # that wrote ~/.aria/sdk-auth.json (read by the Node host itself, not
105
+ # by coder_eval). coder_eval sends these values to the host as its `auth`
106
+ # init option, so the token stays out of the environment that the agent's
107
+ # shell tools inherit. Each var also accepts the bare spelling (AUTH_TOKEN,
108
+ # TENANT_ID, ORG_ID, ORG_SLUG, TENANT_SLUG) as a fallback -- prefer the
109
+ # DELEGATE_ spelling in a shared environment, since the bare names collide
110
+ # with what other tooling (npm, Vault, Terraform) commonly exports.
111
+ # DELEGATE_AUTH_TOKEN="..."
112
+ # DELEGATE_TENANT_ID="..."
113
+ # DELEGATE_ORG_ID="..."
117
114
  # With DELEGATE_ENV (not DELEGATE_BACKEND_URL) also set these two -- the
118
115
  # human-readable org/tenant names, not the GUIDs above -- or init fails with
119
- # "--env alpha needs org/tenant slugs". See docs/agents/DELEGATE.md.
120
- # ORG_SLUG="..."
121
- # TENANT_SLUG="..."
116
+ # 'env="alpha" requires org/tenant slugs'. See docs/agents/DELEGATE.md.
117
+ # DELEGATE_ORG_SLUG="..."
118
+ # DELEGATE_TENANT_SLUG="..."
122
119
 
123
120
  # Usage Telemetry (anonymous; on by default).
124
121
  # Disable entirely: