test(mcp): leave comparison group completeness to the runtime parser

80de3145e stopped advertising `dependentRequired` and states input groups in
the schema description instead. Passive captures with `normalization` and a
single scenario side with `normalization` therefore satisfy the advertised
projection, while the canonical parser still rejects them before any
provider call. Classify them with the other mixed groups and assert the
description carries the group guidance.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kaoru0822 2026-10-14 03:27:51 +00:00
parent 181f0f9d1c
commit 8a28df4488
1 changed files with 18 additions and 11 deletions

View File

@ -110,15 +110,6 @@ describe("browser comparison input boundary", () => {
},
{ before_scenario: {}, after_scenario: {} },
{ before_scenario: scenario.before_scenario },
{ ...passive, normalization: { rules: [] } },
{
before_scenario: scenario.before_scenario,
normalization: { rules: [] },
},
{
after_scenario: scenario.after_scenario,
normalization: { rules: [] },
},
{ ...passive, unexpected: true },
{
...scenario,
@ -133,8 +124,24 @@ describe("browser comparison input boundary", () => {
},
},
];
// The projection leaves group exclusion to the canonical runtime parser.
const mixedGroups = [{ ...passive, ...scenario }];
// Strict clients reject combinators and dependentRequired, so the
// projection states the groups in its description and leaves group
// completeness and exclusion to the canonical runtime parser.
expect(advertised.inputSchema.description).toContain(
"before + after; before_scenario + after_scenario + [normalization]",
);
const mixedGroups = [
{ ...passive, ...scenario },
{ ...passive, normalization: { rules: [] } },
{
before_scenario: scenario.before_scenario,
normalization: { rules: [] },
},
{
after_scenario: scenario.after_scenario,
normalization: { rules: [] },
},
];
for (const { input, advertisedValid, runtimeValid } of [
...[passive, scenario, withoutNormalization].map((input) => ({
input,