chore(tests): drop expected_turns from every task YAML - #2711
Conversation
Nightly runs now score wall clock instead of a turn budget. The expected line is derived per task and per harness from the runs already in blob storage and stamped into run.json (coder_eval_uipath#86); the evalboard reads that stamped value (coder_eval#125). Nothing consumes expected_turns any more, so the 935 declarations here are dead weight. The field was never maintained: it was bulk-seeded from the luckiest run ever observed, 49% of the values are multiples of 5, and 204 tasks share a copy-pasted 300 against a p90 actual of 52. It also cannot compare across harnesses, since a Read and a 20-minute deploy both count as one turn. expected_turns stays accepted and ignored on RunLimits, so this lands safely in either order relative to the two PRs above. run_limits blocks left with no other key are removed outright; max_turns, turn_timeout and task_timeout are untouched. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Claude finished @bai-uipath's task in 3m 25s —— View job PR Review:
|
| Area | Status | Notes |
|---|---|---|
| Frontmatter | OK | No frontmatter changes — all edits are to run_limits blocks |
| E2E Tests | OK | No test logic changed — only the dropped field and associated comments |
| Skill Body | N/A | No skill files touched |
| References & Assets | N/A | No reference files touched |
| Repo Hygiene | OK | All changes scoped to tests/tasks/, no secrets, no unrelated edits |
Issues for Manual Review
None found.
Conclusion
Clean, well-scoped mechanical cleanup. The 930 single-pattern deletions are correct, and the 5 comment rewrites are accurate — each preserves the run-data provenance while removing references to the now-dead field. CI is green (8/8 completed checks passing, 3 in progress). No issues found — approve.
|
Claude finished @bai-uipath's task in 2m 28s —— View job Coder-eval task lint (advisory)935 task YAMLs modified; 0 Critical, 0 High, 0 Medium, 0 Low, 935 OK. Rubric: .claude/commands/lint-task.md. This check is advisory and never blocks merge. Evidence of passing run✅ Author confirms semantic preservation: "Machine-checked that the diff is semantics-preserving: each of the 935 files was loaded before and after and compared as parsed YAML, with the only permitted difference being the dropped key and the dropped empty block. Zero mismatches." and "Every one of the 1191 task YAMLs parses and validates against This PR removes a single unused metadata field ( Per-task lintAll 935 files: verdict OK — no rubric axis applies. The diff falls into exactly two mechanical patterns:
No task was changed in a way that affects any rubric axis (self-report, prompt over-specification, meaningful coverage, gameability, near-duplicate, validate-only, CLI verb reachability, sandbox config, or run-limit placement). The rubric evaluates task design quality; this PR modifies no task design. Within-PR duplicatesNo new tasks added; check not applicable. Conclusion✅ All 935 changed tasks pass the rubric. Clean mechanical removal of an unused field. The 5 comment rewrites are well-crafted. No issues found. |
|
Closing this PR as we'll keep this field for now. |
The consumer-side cleanup for Proposal: optimizing for wall clock time instead of expected turns. The producer is coder_eval_uipath#86, which derives each task's expected wall clock from run history and stamps it into
run.json; the evalboard half is coder_eval#125.expected_turnsis removed from all 935 task YAMLs that declared it. Nothing reads it any more: the expected line is now derived per task and per harness from the runs already in blob storage, so there is no number to type and none to go stale.Why the field is not worth keeping
expected_turns; six revised a value300against a p90 actual of 52, so they are permanently greenReadand a 20-minute deploy both count as oneScope
Only
expected_turnsgoes.max_turns,turn_timeoutandtask_timeoutare untouched, so every real cap and timeout in the suite is unchanged. The 239run_limitsblocks whose only key wasexpected_turnsare removed outright rather than left empty. Eight comments that justified a turn budget were rewritten or dropped so no prose is left pointing at a field that no longer exists.Safe to merge in any order relative to the two PRs above:
expected_turnsstays accepted and ignored onRunLimits, and a task without it reads as unscored rather than erroring.Testing done
TaskDefinition, and the same 12 tasks fail validation before and after this change, all for reasons unrelated torun_limits(the local venv'scoder_evalpredatesskill_triggered, advisory zero weights, andsandbox.record_cli).coder-eval planover the full suite: 1191 tasks planned, the same 12 pre-existing errors, norun_limitsorexpected_turnsdiagnostics.