AntFleet

Disagreement · c9663187-anthropic-7

`_excluded_methods` does not exclude `do_nothing` despite being a real LLM-callable; `sign_up` is excluded but agents do call it

solo Opus
repo 193af03f·PR #2·reviewed 1 week ago

Opus finding

`_excluded_methods` does not exclude `do_nothing` despite being a real LLM-callable; `sign_up` is excluded but agents do call it

lowmaintainabilitymedium
  • backend/wonderwall/simulations/base.py:236-238
`sign_up` is excluded from the LLM tool list, which is correct (it's invoked once at reset). However, the docstring on `do_nothing` strongly suggests it is intended as a key user-facing tool — and it IS auto-discovered (not excluded). That part is fine. The risk is that `_excluded_methods` is class-level mutable, and a subclass that adds more excludes will mutate the parent's set unless careful (e.g., `set.add` mutates in place). Subclasses should reassign `_excluded_methods = BaseAction._excluded_methods | {...}` but there's no doc enforcing this.

Recommendation

Make `_excluded_methods` a frozenset or document explicitly that subclasses must override (not mutate) it. Consider also excluding `do_nothing` from auto-discovery only when desired.

Other reviewer

The other reviewer flagged nothing in this file/line range.

Why this didn't post

This finding didn't meet AntFleet's unanimous agreement threshold. Both frontier models review every PR independently; only findings they both flag with the same severity and category are posted to the PR. This one fell through.

read the methodology →