Skip to content

Commit 10f8178

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 008c784 commit 10f8178

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=(
@@ -2635,7 +2626,11 @@ def __post_init__(self) -> None:
26352626
"A server-initiated request nested inside an in-flight call round-trips over stateful streamable HTTP."
26362627
),
26372628
transports=("streamable-http",),
2638-
note="Only observable over streamable HTTP: exercises stateful HTTP session callbacks.",
2629+
removed_in="2026-07-28",
2630+
note=(
2631+
"removed in 2026-07-28 (SEP-2322); server-initiated requests are forbidden on streamable HTTP, "
2632+
"replaced by MRTR input requests embedded in InputRequiredResult."
2633+
),
26392634
),
26402635
"transport:streamable-http:resumability": Requirement(
26412636
source=f"{SPEC_BASE_URL}/basic/transports#streamable-http",
@@ -2644,12 +2639,6 @@ def __post_init__(self) -> None:
26442639
removed_in="2026-07-28",
26452640
note="removed in 2026-07-28 (SEP-2575); Last-Event-ID resumability/redelivery dropped, no replacement.",
26462641
),
2647-
"transport:streamable-http:origin-validation": Requirement(
2648-
source=f"{SPEC_BASE_URL}/basic/transports#security-warning",
2649-
behavior="Requests with an invalid Origin header are rejected with 403 before reaching the session.",
2650-
transports=("streamable-http",),
2651-
note="Only observable over streamable HTTP: Origin is an HTTP header.",
2652-
),
26532642
"transport:sse": Requirement(
26542643
source=f"{SPEC_BASE_URL}/basic/transports#backwards-compatibility",
26552644
behavior=(
@@ -3468,14 +3457,6 @@ def __post_init__(self) -> None:
34683457
transports=("streamable-http",),
34693458
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
34703459
),
3471-
"client-transport:http:protocol-version-stored": Requirement(
3472-
source="sdk",
3473-
behavior=(
3474-
"The client transport stores the negotiated protocol version and sends it on every subsequent request."
3475-
),
3476-
transports=("streamable-http",),
3477-
note="Only observable over HTTP: MCP-Protocol-Version is an HTTP header.",
3478-
),
34793460
"client-transport:http:reconnect-get": Requirement(
34803461
source=f"{SPEC_BASE_URL}/basic/transports#resumability-and-redelivery",
34813462
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)