fix: gate task-tool tasksets on harness support (SUPPORTS_TASK_TOOLS) - #1603
Merged
Conversation
…OOLS)
A harness without an MCP client (e.g. rlm) silently ignored a task's tool servers
instead of refusing the run. Add a `SUPPORTS_TASK_TOOLS` class flag on `Harness`
(default True; False on rlm, which drives its own tools), and have
`Environment.__init__` raise an informative error when a taskset that declares
tools is paired with a harness that can't expose them.
So `eval wikispeedia-v1 --harness.id rlm` now fails fast with a clear message
("Harness 'rlm' does not support task tools, but taskset 'wikispeedia-v1' exposes
tool servers (MCP). Run it with a harness that supports task tools ...") rather
than silently dropping the MCP tools.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tory rlm comments Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mikasenghaas
marked this pull request as ready for review
June 10, 2026 17:26
pull Bot
pushed a commit
to Stars1233/verifiers
that referenced
this pull request
Jun 23, 2026
…PrimeIntellect-ai#1603) * feat(v1): gate task-tool tasksets on harness support (SUPPORTS_TASK_TOOLS) A harness without an MCP client (e.g. rlm) silently ignored a task's tool servers instead of refusing the run. Add a `SUPPORTS_TASK_TOOLS` class flag on `Harness` (default True; False on rlm, which drives its own tools), and have `Environment.__init__` raise an informative error when a taskset that declares tools is paired with a harness that can't expose them. So `eval wikispeedia-v1 --harness.id rlm` now fails fast with a clear message ("Harness 'rlm' does not support task tools, but taskset 'wikispeedia-v1' exposes tool servers (MCP). Run it with a harness that supports task tools ...") rather than silently dropping the MCP tools. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore(v1): drop the SUPPORTS_TASK_TOOLS test Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * feat(v1): mark compact harness SUPPORTS_TASK_TOOLS; drop self-explanatory rlm comments Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rlm) silently ignored a task's tool servers instead of refusing the run.SUPPORTS_TASK_TOOLSClassVar onHarness(defaultTrue).RLMHarnesssetsFalse(rlm drives its own tools, no MCP client);DefaultHarnessandCompactingHarnesssupport task tools (compactwiresmcp_urlsinto its bundled MCP client).Environment.__init__now raises an informativeValueErrorwhen a taskset that declares tools (overridesTaskset.tools) is paired with a harness whoseSUPPORTS_TASK_TOOLSisFalse— so the incompatible combo fails fast at env construction instead of dropping the tools mid-run.Verification
Before:
uv run eval wikispeedia-v1 -n 1 --harness.id rlmran with the task's MCP tools silently dropped.After: it fails fast with
Note
Gate task-tool tasksets on harness
SUPPORTS_TASK_TOOLSflagSUPPORTS_TASK_TOOLS: ClassVar[bool] = Trueto the baseHarnessclass in harness.py, defaulting all harnesses to supporting task tools.SUPPORTS_TASK_TOOLS = FalseonRLMHarnessandSUPPORTS_TASK_TOOLS = TrueonCompactingHarnessto declare their capabilities explicitly.Environment.__init__(env.py) that raisesValueErrorwhen a harness withSUPPORTS_TASK_TOOLS = Falseis paired with a taskset that overridesTaskset.tools.RLMHarnessnow rejects tasksets that expose MCP tool servers at environment initialization time rather than failing silently at runtime.Macroscope summarized c7f60a2.
Note
Low Risk
Configuration-time validation only; incompatible harness/taskset pairs that previously ran without tools now raise at env init.
Overview
Introduces
SUPPORTS_TASK_TOOLSon the baseHarness(defaultTrue) so each harness declares whether it can wire a task’s MCP tool servers into the model.RLMHarnesssets it toFalse(no MCP client; rlm uses its own tools).CompactingHarnesssetsTrueexplicitly.Environmentnow fails at construction with a clearValueErrorwhen a harness withSUPPORTS_TASK_TOOLS=Falseis paired with a taskset that overridesTaskset.tools(i.e. exposes MCP servers). Incompatible combos likerlm+ a tool-bearing taskset no longer run with tools silently dropped.Reviewed by Cursor Bugbot for commit c7f60a2. Bugbot is set up for automated code reviews on this repo. Configure here.