php-sdk/tests/Conformance/conformance-baseline-2026-07-28.yml
Christopher Hertel de35ca40bf
[Server][Tests] Validate the standard MCP request headers (SEP-2243) (#445)
The revision puts the method, the subject name and the mirrored arguments in
headers so an intermediary can route and cache without parsing the body. A
header that contradicts the body it travels with therefore has to be
refused, not ignored: StandardHeaderValidator compares each against the
request and answers -32020 on a mismatch.

Set with Builder::setHeaderValidator(); a transport with no header layer is
unaffected.
2026-08-18 22:27:05 +02:00

59 lines
3.3 KiB
YAML

# Expected conformance failures for spec revision 2026-07-28.
#
# Separate from conformance-baseline.yml because the two revisions exercise
# different lifecycles against different endpoints: the dated baseline covers
# the handshake era served at /, this one covers the modern (SEP-2575) era
# served at /stateless.
#
# Entries are per-check (scenario:check-id) rather than whole scenarios, so a
# scenario that is mostly conformant keeps reporting the parts that work and a
# new regression inside it still fails the run.
#
# Run with:
# make conformance-draft-server
#
# Absent by design, because they pass in full: server-stateless (the SEP-2575
# lifecycle), caching (SEP-2549 hints), both SEP-2243 header-validation
# scenarios, and every wire-schema-valid check bar one noted below.
server:
# --- SEP-2322: the MRTR retry half -----------------------------------------
# InputRequiredResult exists and tools/call can answer with one — that is what
# makes server-stateless green. What is missing is the second round trip: the
# SDK does not read inputResponses, verify requestState integrity, or resume a
# call from it. Until it does, every scenario that retries fails at the retry.
- input-required-result-basic-elicitation:sep-2322-elicitation-incomplete
- input-required-result-basic-list-roots:sep-2322-list-roots-incomplete
- input-required-result-basic-sampling:sep-2322-sampling-incomplete
- input-required-result-capability-check:sep-2322-respect-client-capabilities
- input-required-result-multi-round:sep-2322-multi-round-r1
- input-required-result-multiple-input-requests:sep-2322-multiple-inputs-incomplete
- input-required-result-non-tool-request:sep-2322-non-tool-incomplete
- input-required-result-request-state:sep-2322-request-state-incomplete
- input-required-result-result-type:sep-2322-result-type-included
- input-required-result-tampered-state:sep-2322-reject-tampered-state
# --- SHOULD-level warnings -------------------------------------------------
# These report WARNING rather than FAILURE (the severity follows the spec
# keyword), so the run summary counts them as passed — but the baseline
# evaluator still wants them declared, and declaring them is right: each is a
# SHOULD the SDK does not yet honour.
- input-required-result-ignore-extra-params:sep-2322-ignore-unexpected-params
- input-required-result-missing-input-response:sep-2322-missing-response-rerequests
- sep-2164-resource-not-found:sep-2164-data-uri
- sep-2164-resource-not-found:sep-2164-error-code
# --- Pre-existing, not lifecycle-specific ----------------------------------
# Each of these fails identically on the handshake endpoint at /, so none is
# caused by (or fixable in) the modern lifecycle. Listed so the draft run is
# honest, not to excuse them — resources-templates-read in particular is the
# single wire-schema failure left, a resource-template URI the fixture emits
# in a shape the schema rejects on both revisions.
- dns-rebinding-protection:localhost-host-rebinding-rejected
- json-schema-2020-12:json-schema-2020-12-tool-found
- prompts-get-embedded-resource:prompts-get-embedded-resource
- prompts-get-with-image:prompts-get-with-image
- resources-templates-read:wire-schema-valid
- tools-call-with-progress:tools-call-with-progress
client: []