Skip to content

Commit 3c0bfda

Browse files
committed
Retire three redundant interaction-manifest entries; era-bound a fourth
client-transport:http:protocol-version-stored and transport:streamable-http:origin-validation were second labels on assertions their tests already pin under client-transport:http:protocol-version-header and hosting:http:dns-rebinding respectively (decorators removed, tests kept). lifecycle:stateless:no-initialize described a pin API that no longer exists, deferred against coverage that does not exist, and bound no tests. transport:streamable-http:server-to-client is NOT deleted: the underlying behaviour is real 2025-era wire truth that 2026 forbids (SEP-2322), so it gets removed_in="2026-07-28" with the supersession note; the MRTR successor link lands with the era pass. Cells unchanged (830 before and after).
1 parent 0033409 commit 3c0bfda

3 files changed

Lines changed: 5 additions & 26 deletions

File tree

‎tests/interaction/_requirements.py‎

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -359,15 +359,6 @@ def __post_init__(self) -> None:
359359
),
360360
added_in="2026-07-28",
361361
),
362-
"lifecycle:stateless:no-initialize": Requirement(
363-
source=f"{SPEC_2026_BASE_URL}/basic/lifecycle#stateless-operation",
364-
behavior=(
365-
"A ClientSession pinned to 2026-07-28 is born initialized: initialize() is idempotent "
366-
"and returns the synthesized result without any frame sent."
367-
),
368-
added_in="2026-07-28",
369-
deferred="covered by a tests/client/ unit test; not observable as an interaction",
370-
),
371362
"lifecycle:stateless:caller-meta-preserved": Requirement(
372363
source=f"{SPEC_2026_BASE_URL}/basic#_meta",
373364
behavior=(
@@ -2522,7 +2513,11 @@ def __post_init__(self) -> None:
25222513
"A server-initiated request nested inside an in-flight call round-trips over stateful streamable HTTP."
25232514
),
25242515
transports=("streamable-http",),
2525-
note="Only observable over streamable HTTP: exercises stateful HTTP session callbacks.",
2516+
removed_in="2026-07-28",
2517+
note=(
2518+
"removed in 2026-07-28 (SEP-2322); server-initiated requests are forbidden on streamable HTTP, "
2519+
"replaced by MRTR input requests embedded in InputRequiredResult."
2520+
),
25262521
),
25272522
"transport:streamable-http:resumability": Requirement(
25282523
source=f"{SPEC_BASE_URL}/basic/transports#streamable-http",
@@ -2531,12 +2526,6 @@ def __post_init__(self) -> None:
25312526
removed_in="2026-07-28",
25322527
note="removed in 2026-07-28 (SEP-2575); Last-Event-ID resumability/redelivery dropped, no replacement.",
25332528
),
2534-
"transport:streamable-http:origin-validation": Requirement(
2535-
source=f"{SPEC_BASE_URL}/basic/transports#security-warning",
2536-
behavior="Requests with an invalid Origin header are rejected with 403 before reaching the session.",
2537-
transports=("streamable-http",),
2538-
note="Only observable over streamable HTTP: Origin is an HTTP header.",
2539-
),
25402529
"transport:sse": Requirement(
25412530
source=f"{SPEC_BASE_URL}/basic/transports#backwards-compatibility",
25422531
behavior=(
@@ -3318,14 +3307,6 @@ def __post_init__(self) -> None:
33183307
transports=("streamable-http",),
33193308
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
33203309
),
3321-
"client-transport:http:protocol-version-stored": Requirement(
3322-
source="sdk",
3323-
behavior=(
3324-
"The client transport stores the negotiated protocol version and sends it on every subsequent request."
3325-
),
3326-
transports=("streamable-http",),
3327-
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
3328-
),
33293310
"client-transport:http:reconnect-get": Requirement(
33303311
source=f"{SPEC_BASE_URL}/basic/transports#resumability-and-redelivery",
33313312
behavior=(

‎tests/interaction/transports/test_client_transport_http.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ async def test_every_request_after_initialize_carries_the_issued_session_id(reco
9595
assert session_id
9696

9797

98-
@requirement("client-transport:http:protocol-version-stored")
9998
@requirement("client-transport:http:protocol-version-header")
10099
async def test_every_request_after_initialize_carries_the_negotiated_protocol_version(
101100
recorded: list[httpx.Request],

‎tests/interaction/transports/test_hosting_http.py‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,6 @@ async def read_standalone_stream() -> None:
345345

346346

347347
@requirement("hosting:http:dns-rebinding")
348-
@requirement("transport:streamable-http:origin-validation")
349348
async def test_origin_validation_rejects_disallowed_origins_when_enabled() -> None:
350349
"""A disallowed Origin returns 403 (and Host 421) with protection enabled; disabled lets both through.
351350

0 commit comments

Comments
 (0)