A subscription (especially a no-expiry webhook one) can outlive the
events/list response it was created from, and nothing on the wire told the
client when its contract went stale. This adds:
- a Schema evolution note: inputSchema/payloadSchema SHOULD evolve additively
for the lifetime of an event name; breaking changes go under a new name;
- an Event Type Removal and Breaking Changes subsection: the server SHOULD end
affected push/webhook subscriptions via the existing terminated signal, with
NotFound{kind:event} for removal and Unsupported{reason:schema_changed} for
in-place change (not Forbidden), and an honest note that poll has no
server-side subscription to terminate;
- list_changed now explicitly covers descriptor changes, and no-expiry clients
are pointed at an occasional events/list alongside their refresh;
- a NOT-in-v1 bullet recording that schemaVersion/negotiation and an in-band
schema fingerprint are deferred.
Also rewords the Streamable HTTP push bullet so it no longer refers to the
transport's GET SSE stream, which SEP-2575 removed.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Nj99r48USCY7S4xKoHD1Df