You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: the manifest understated the "full" tool surface by ten (v0.1.3) (#1)
`full` binds 38 tools, not ~28. v0.1.1 verified the real count against
driver 0.8.3 and corrected driver.py; the manifest kept the original
estimate in two places and nothing caught it:
- protoagent.plugin.yaml:29 a yaml comment
- protoagent.plugin.yaml:70 the tool_surface SETTINGS DESCRIPTION —
the text an operator reads in the console *before* flipping to
"full", i.e. the one surface where the number is load-bearing
The ten unlisted tools are the dangerous end of the surface, so the
description now names what "full" adds rather than only counting it:
kill_app, bring_to_front, set_config, check_for_update (driver
self-update, which ADR 0084 keeps operator-driven).
Why it drifted: test_stated_tool_count_matches_the_code already pinned
the "17 tools" claim in that same sentence — its docstring even says
"numbers in prose drift silently — pin it to the list" — but the "full"
half of the sentence was unpinned, so only the guarded half survived.
- driver.py: VERIFIED_DRIVER_VERSION / VERIFIED_PUBLISHED_TOOLS
promote the count from a comment to something a test can hold.
- test_stated_full_surface_count_matches_the_code pins the rendered
description, the way the core count is pinned.
- test_manifest_states_no_approximate_tool_counts holds the RAW file:
yaml comments never reach the parsed manifest, so the :29 copy was
invisible to any fixture-based test. It bans `~<digits>` — the
un-pinnable form is the actual tell.
Both new guards verified RED against the pre-fix manifest before being
kept; an earlier version of the second one passed against the bug (it
required the word "tools" after the number, and the stale text read
"~28)" / "~28 and") and was rewritten.
No behavior change — tool_filter and CORE_TOOLS are untouched.
Claude-Session: https://claude.ai/code/session_01Qjyu1YKjvmuga7sFtaxzUw
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
0 commit comments