Skip to content

fix: gate task-tool tasksets on harness support (SUPPORTS_TASK_TOOLS) - #1603

Merged
mikasenghaas merged 3 commits into
feat/nano-as-v1from
fix/harness-supports-task-tools
Jun 10, 2026
Merged

fix: gate task-tool tasksets on harness support (SUPPORTS_TASK_TOOLS)#1603
mikasenghaas merged 3 commits into
feat/nano-as-v1from
fix/harness-supports-task-tools

Conversation

@mikasenghaas

@mikasenghaas mikasenghaas commented Jun 10, 2026

Copy link
Copy Markdown
Member

Summary

  • 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 ClassVar on Harness (default True). RLMHarness sets False (rlm drives its own tools, no MCP client); DefaultHarness and CompactingHarness support task tools (compact wires mcp_urls into its bundled MCP client).
  • Environment.__init__ now raises an informative ValueError when a taskset that declares tools (overrides Taskset.tools) is paired with a harness whose SUPPORTS_TASK_TOOLS is False — 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 rlm ran with the task's MCP tools silently dropped.

After: it fails fast with

Harness 'rlm' does not support task tools, but taskset 'wikispeedia-v1' exposes tool servers (MCP). Run it with a harness that supports task tools (e.g. --harness.id default), or use a taskset without tools.

Note

Gate task-tool tasksets on harness SUPPORTS_TASK_TOOLS flag

  • Adds SUPPORTS_TASK_TOOLS: ClassVar[bool] = True to the base Harness class in harness.py, defaulting all harnesses to supporting task tools.
  • Sets SUPPORTS_TASK_TOOLS = False on RLMHarness and SUPPORTS_TASK_TOOLS = True on CompactingHarness to declare their capabilities explicitly.
  • Adds a validation in Environment.__init__ (env.py) that raises ValueError when a harness with SUPPORTS_TASK_TOOLS = False is paired with a taskset that overrides Taskset.tools.
  • Behavioral Change: RLMHarness now 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_TOOLS on the base Harness (default True) so each harness declares whether it can wire a task’s MCP tool servers into the model. RLMHarness sets it to False (no MCP client; rlm uses its own tools). CompactingHarness sets True explicitly.

Environment now fails at construction with a clear ValueError when a harness with SUPPORTS_TASK_TOOLS=False is paired with a taskset that overrides Taskset.tools (i.e. exposes MCP servers). Incompatible combos like rlm + 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.

mikasenghaas and others added 3 commits June 10, 2026 17:23
…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
mikasenghaas marked this pull request as ready for review June 10, 2026 17:26
@mikasenghaas
mikasenghaas merged commit 6f1f934 into feat/nano-as-v1 Jun 10, 2026
3 checks passed
@mikasenghaas
mikasenghaas deleted the fix/harness-supports-task-tools branch June 10, 2026 17:27
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant