[Klaud Cold] chore(evals): disable agentic evals repo-wide behind AGENTIC_EVALS_DISABLED / 全仓库停用智能体评测(AGENTIC_EVALS_DISABLED 开关) - #2451
Conversation
…SABLED [skip-sweep] Agentic (SWE-bench) evals are turned off until the agentic eval path is fixed. TODO(@adibarra) to re-enable, owner back the week of 2026-08-03. One choke point covers both dispatch paths. run-sweep.yml's sweep-agentic-evals reads search-space-config.agentic_evals, which process_changelog.py fills from agentic-coding rows carrying run-eval: True, and e2e-tests.yml's test-sweep-agentic-evals filters the same flag, so suppressing the mark in generate_sweep_configs.py leaves both with an empty matrix and both skip. Note process_changelog.py always runs a second --evals-only pass per changelog entry, so agentic evals were dispatching on every agentic PR regardless of labels; the switch wins over --evals-only, --all-evals, and the evals-only / all-evals PR labels alike. Blast radius, measured on configs/nvidia-master.yaml: agentic eval rows for glm5.2-fp4-b300-sglang-agentic under --evals-only go 1 -> 0, fixed-seq-len eval rows for dsv4-fp4-b200-vllm stay at 4, and the default throughput matrix is byte-identical. Re-enabling is one line. The selection policy keeps its coverage behind the _agentic_evals_enabled() helper in test_generate_sweep_configs.py, and two new tests pin the switch so it cannot be bypassed by --evals-only / --all-evals. 中文:在 AGENTIC_EVALS_DISABLED 开关后全仓库停用智能体(SWE-bench)评测,直至该路径修复; 待 @adibarra 下周回来后将其翻回 False 即可重新启用。该开关是两条派发路径的唯一收敛点, 优先级高于 --evals-only、--all-evals 以及同名 PR 标签。智能体吞吐覆盖与定长序列评测均不受影响: 实测 glm5.2-fp4-b300-sglang-agentic 的智能体评测行由 1 降为 0,dsv4-fp4-b200-vllm 的定长评测行 仍为 4,默认吞吐矩阵完全一致。原有选择策略的测试覆盖保留在 _agentic_evals_enabled() 辅助函数中, 另新增两项测试锁定该开关。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
@adibarra — TODO for when you're back next week: fix the agentic eval path and re-enable this. This is a temporary repo-wide disable, not a removal. To turn agentic (SWE-bench) evals back on, flip The selection policy you're re-enabling still has test coverage: the two original tests now run behind the One thing you may not have known and that is worth fixing at the same time: Assigning you and requesting review so this does not get lost. |
There was a problem hiding this comment.
LGTM — a well-scoped, defensively-implemented kill switch for agentic evals with test coverage to match.
What was reviewed: the two AGENTIC_EVALS_DISABLED guards in mark_eval_entries() and mark_all_eval_entries(), confirming both dispatch paths (--evals-only/--all-evals and the default include_agentic path used by process_changelog.py's second pass) are covered; ran the updated test suite locally (104 passed); and checked the EVALS.md doc contradiction flagged by the bug hunter — the new Status section explicitly says the rest of the doc describes pre-flag behavior, so it's not a real contradiction.
Extended reasoning...
Overview
This PR adds a single module-level boolean flag, AGENTIC_EVALS_DISABLED = True, in utils/matrix_logic/generate_sweep_configs.py, guards it into the two places agentic-coding rows get marked run-eval (mark_eval_entries()'s include_agentic branch, and mark_all_eval_entries()'s unconditional single-node agentic marking), and documents the change in EVALS.md. Test file changes add a _agentic_evals_enabled() context manager so the pre-existing policy tests keep exercising the real selection logic, plus two new tests that pin the disabled state overriding --evals-only/--all-evals.
Security risks
None. This is a pure CI/config-generation change with no runtime, auth, or data-handling implications — it only affects which matrix rows get marked for an eval job in generated sweep configs.
Level of scrutiny
Low-to-moderate. The change is small, additive, and reversible (the PR body and code comments both point at the single line to flip back), it ships with new unit tests that specifically pin the guarded behavior, and I independently ran the full test file (104 passed) to confirm. I also traced the third dispatch path mentioned in the PR description — process_changelog.py's per-changelog-entry --evals-only pass — and confirmed it funnels through the same mark_eval_entries(include_agentic=True) call that the new flag now gates, so the fix is complete across all three paths the author identified.
Other factors
No workflow YAML changes, no config or perf-changelog entries, and the commit is tagged [skip-sweep], so blast radius is limited to CI matrix generation logic with existing test coverage. The bug-hunting system found no real issues; the one candidate (an apparent contradiction in EVALS.md between the new Status section and older selection-policy text) was correctly ruled out since the Status section explicitly frames the older text as describing behavior that returns once the flag is cleared.
Turns agentic (SWE-bench) evals off repo-wide behind a single flag, until the agentic eval path is fixed.
@adibarra — TODO
Re-enable is one line: flip
AGENTIC_EVALS_DISABLEDtoFalseinutils/matrix_logic/generate_sweep_configs.py(or delete it and the twoif AGENTIC_EVALS_DISABLEDguards). Nothing else has to change. TheTODO(@adibarra)marker is on the flag itself and inutils/evals/EVALS.md.The existing selection policy keeps its test coverage behind the new
_agentic_evals_enabled()helper intest_generate_sweep_configs.py, so the behaviour you're turning back on is already asserted — you should see those tests go green against the real code path the moment you flip it.Why one flag is enough
Both dispatch paths key off the same thing — an
agentic-codingrow carryingrun-eval: True:run-sweep.yml→sweep-agentic-evalsreadssearch-space-config.agentic_evals, whichprocess_changelog.pyfills by splitting eval rows onscenario-type == 'agentic-coding'.e2e-tests.yml→test-sweep-agentic-evalsfiltersget-jobsoutput on the same flag.So suppressing the mark in
generate_sweep_configs.pyleaves both jobs with an empty matrix, and both skip on their existing!= '[]'guards. No workflow YAML changes.Worth knowing:
process_changelog.pyruns a second--evals-onlypass for every changelog entry (utils/process_changelog.py, theeval_groupsloop), and--evals-onlysetsinclude_agentic=True. That is why agentic eval jobs were dispatching on every agentic PR regardless of labels — e.g. #2447 and #2448 each got one without asking. The flag wins over--evals-only,--all-evals, and theevals-only/all-evalsPR labels alike.Blast radius
Measured against
configs/nvidia-master.yaml, before vs after:glm5.2-fp4-b300-sglang-agentic --evals-onlydsv4-fp4-b200-vllm --evals-onlyAgentic throughput coverage is untouched, and
gsm8k/gpqa/ 8k1kswebenchare untouched. Only the agentic eval job goes away.Changes
utils/matrix_logic/generate_sweep_configs.pyAGENTIC_EVALS_DISABLED = True+ two guards: theinclude_agenticblock inmark_eval_entries()and the unconditional agentic marking inmark_all_eval_entries().utils/matrix_logic/test_generate_sweep_configs.py_agentic_evals_enabled()context manager so the two existing policy tests keep testing the policy; two new tests pin that the switch beats--evals-onlyand--all-evals.utils/evals/EVALS.mdNo config, no
perf-changelog.yamlentry, no GPU jobs —[skip-sweep]on the head commit.Validation
pytest utils/— 570 passed, 104 of them intest_generate_sweep_configs.py. Two failures inutils/evals/test_run_eval_dispatch.py(test_agentic_generation_invokes_mini_swe_agent,test_agent_sandbox_cpu_knob) reproduce identically on a cleanmainin this environment — a missing localmini-swe-agentfixture, not this change.