Conversation
|
Thanks @bradAGI. The fixture copy of The test cases hold up on a read. One suggestion, not a requirement. All five snippets use the legacy What is holding this up is coordination rather than code. MCP-027 and MCP-028 are also claimed by #135 and trustabl/agent-reliability-rules#100 for unrelated rules, so whichever pair lands first keeps the numbers and the other renumbers. A rulebook rationale doc is also needed before these ship, and we can take that or pair with you on it. |
|
Selected for merge. This pair keeps Closing trustabl/agent-reliability-rules#100 + #135, which claimed both ids for different rules (TypeScript idempotency and ambiguous tool name). Several PRs claimed the same ids independently. We are resolving each id to a single pair rather than renumbering, so the competing PRs are being closed — the rules themselves were not rejected. Merge the engine side first so a gap fails safe: a fixture for an unshipped rule is harmless, a rule with no fixture turns |
Engine half of a coordinated pair with trustabl/agent-reliability-rules#91, on a branch of the same name so the rules-sync job resolves the matching pack rather than main. Neither half should merge alone — check-rules-sync.sh fails if they do. Mirrors mcp/tool_definition.yaml into testdata/rules-fixture and adds cases to policyRuleCases, as TestPolicyRules_AllRulesCovered requires. Five cases rather than four. MCP-028 pairs description_length_lt with has_docstring so an empty description stays MCP-011's finding instead of double-reporting, and the fifth case pins that guard. Note for sequencing: rules#88 (MCP-025/026, the Python pair) appends to the same file, so whichever of the two pairs lands second needs a trivial rebase in both repos — the rule blocks and the test cases are independent and the resolution is "keep both".
e352ec1 to
9a0f0bc
Compare
What the pair adds
The TypeScript counterpart to MCP-025/026. MCP-011 only checks that a description exists, so
"TODO: describe this tool."and"Gets data."pass today while publishing no selection signal to connecting clients.Same protocol-boundary argument as the Python pair — the consumer has no fallback context, the server's authors never observe the mis-selection, and the model chooses across every connected server from these strings alone — plus the TypeScript-specific point that the Zod input schema constrains the arguments once the model has chosen this tool, not whether choosing it was right.
What this PR does
mcp/tool_definition.yamlintotestdata/rules-fixture/.policyRuleCases, asTestPolicyRules_AllRulesCoveredrequires."TODO: describe this tool.""Gets data."Five cases rather than four. MCP-028 pairs
description_length_lt: 40withhas_docstring: trueso an empty description stays MCP-011's finding rather than double-reporting. The fifth case pins that guard.Sequencing note: rules#88 / this repo's #165 (the MCP-025/026 Python pair) append to the same two files, so whichever pair lands second needs a trivial rebase in both repos — the rule blocks and test cases are independent and the resolution is "keep both." Happy to rebase on request.
Verification