feat(gate): P17 keeps the engine tool surface out of skill content
The first-party agent-tool layer is Experimental and its surface moves between builds. A recipe that names a toolset does not fail loudly on the next build -- the tool is simply absent, the search finds nothing, and "nothing found" reads as "no problem here". That is the exact confusion this bundle documents, so the tokens are barred rather than discouraged. Grounded in measurement against a live editor, not in reading: - the aggregator plugin lists 21 dependencies; the server reported 53 registered toolsets from 22 plugins, one dependency contributing none; - the visible tool count flips between 3 meta-tools and every tool registered natively, on one project setting. - gate.py: ENGINE_TOOL_TOKENS and check_engine_tool_surface, registered in CHECKS; rule floor raised to 17. - test_gate.py: one poison naming a toolset, a meta-tool and a host:port. - ADR-0004 records the decision, its confirmation criteria and what is deliberately deferred. - README and CONTRIBUTING state the rule where a contributor meets it. Verified: gate.py 0 violations over 17 rules; test_gate.py 17/17 redden on their fixtures, baseline clean, surface coverage intact. The token list matches nothing under skills/ today, checked before the rule landed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,6 +58,14 @@ POISONS: dict[str, tuple] = {
|
||||
# shipped entries vanish from the archive resolver without any count
|
||||
# disagreeing loudly enough to notice.
|
||||
'P16': ('copyskill', 'skills/sample-skill', 'sample-twin'),
|
||||
# The engine's own agent-tool layer is Experimental and its surface moves
|
||||
# between builds: one measured session exposed 53 toolsets, and the count
|
||||
# of visible tools flips between 3 and hundreds on a single project
|
||||
# setting. A recipe naming a toolset does not error on the next build, it
|
||||
# finds nothing -- which reads as "no problem here".
|
||||
'P17': ('append', FM,
|
||||
'\nRun this through the EditorAppToolset via call_tool at '
|
||||
'localhost:8000.\n'),
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user