Skip to content

Commit 18083fe

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 12844ae commit 18083fe

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=(
@@ -2617,7 +2608,11 @@ def __post_init__(self) -> None:
26172608
"A server-initiated request nested inside an in-flight call round-trips over stateful streamable HTTP."
26182609
),
26192610
transports=("streamable-http",),
2620-
note="Only observable over streamable HTTP: exercises stateful HTTP session callbacks.",
2611+
removed_in="2026-07-28",
2612+
note=(
2613+
"removed in 2026-07-28 (SEP-2322); server-initiated requests are forbidden on streamable HTTP, "
2614+
"replaced by MRTR input requests embedded in InputRequiredResult."
2615+
),
26212616
),
26222617
"transport:streamable-http:resumability": Requirement(
26232618
source=f"{SPEC_BASE_URL}/basic/transports#streamable-http",
@@ -2626,12 +2621,6 @@ def __post_init__(self) -> None:
26262621
removed_in="2026-07-28",
26272622
note="removed in 2026-07-28 (SEP-2575); Last-Event-ID resumability/redelivery dropped, no replacement.",
26282623
),
2629-
"transport:streamable-http:origin-validation": Requirement(
2630-
source=f"{SPEC_BASE_URL}/basic/transports#security-warning",
2631-
behavior="Requests with an invalid Origin header are rejected with 403 before reaching the session.",
2632-
transports=("streamable-http",),
2633-
note="Only observable over streamable HTTP: Origin is an HTTP header.",
2634-
),
26352624
"transport:sse": Requirement(
26362625
source=f"{SPEC_BASE_URL}/basic/transports#backwards-compatibility",
26372626
behavior=(
@@ -3439,14 +3428,6 @@ def __post_init__(self) -> None:
34393428
transports=("streamable-http",),
34403429
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
34413430
),
3442-
"client-transport:http:protocol-version-stored": Requirement(
3443-
source="sdk",
3444-
behavior=(
3445-
"The client transport stores the negotiated protocol version and sends it on every subsequent request."
3446-
),
3447-
transports=("streamable-http",),
3448-
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
3449-
),
34503431
"client-transport:http:reconnect-get": Requirement(
34513432
source=f"{SPEC_BASE_URL}/basic/transports#resumability-and-redelivery",
34523433
behavior=(

‎tests/interaction/transports/test_client_transport_http.py‎

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

9898

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

‎tests/interaction/transports/test_hosting_http.py‎

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

345345

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

0 commit comments

Comments
 (0)