fix(sep-2243): collapse check IDs to one-per-requirement (#287)

The sep-2243 scenario check IDs drifted from the requirement-traceability
yaml in #259 — the code emitted one ID per test case while the yaml
declares one per normative requirement, so the IDs no longer matched.

Rename the emitted IDs so a check ID maps to a single MUST/SHOULD and is
emitted once per case (the per-case detail moves to name/description),
matching the repo's existing 'same id, vary status/message' convention:

- mcp-method-header-* / mcp-name-header-*  -> client-includes-standard-headers
- reject-invalid-tool-* / keep-valid-tool  -> client-reject-invalid-tool
- server-accepts-{lower,upper}case-name    -> header-name-case-insensitive
- server reject status checks (mismatch/missing/case x method/name)
                                            -> server-reject-invalid-headers
- their error-code variants                 -> server-reject-error-code

Merge the yaml's server-reject-mismatch + server-reject-status into one
server-reject-invalid-headers MUST (HTTP 400 on a header-validation
failure); keep server-reject-error-code as the SHOULD. Base64/custom-header
rejection checks keep their own param-validation IDs (out of scope here).

Gates and the whitespace-acceptance check keep their scenario-matching
names. No behavior change — only check IDs, descriptions, and the yaml.
This commit is contained in:
Paul Carleton 2026-05-19 21:48:31 +01:00 • committed by GitHub
commit 70f7ba0004
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,10 +5,8 @@ requirements:
text: 'The client MUST include the standard MCP request headers on each POST request. These headers are REQUIRED for compliance.'
- check: sep-2243-header-name-case-insensitive
text: 'Clients and servers MUST use case-insensitive comparisons for header names.'
- check: sep-2243-server-reject-mismatch
text: 'Servers that process the request body MUST reject requests where the values specified in the headers do not match the corresponding values in the request body.'
- check: sep-2243-server-reject-status
text: 'When rejecting a request due to header validation failure, servers MUST return HTTP status 400 Bad Request.'
- check: sep-2243-server-reject-invalid-headers
text: 'Servers that process the request body MUST reject requests with mismatched or missing standard-header values, returning HTTP 400 Bad Request.'
- check: sep-2243-server-reject-error-code
text: 'When rejecting a request due to header validation failure, servers SHOULD include a JSON-RPC error response using error code -32001.'
- check: sep-2243-client-supports-custom-headers