Skip to content

SEP-2596: Specification Feature Lifecycle and Deprecation Policy#2596

Merged
mcp-commander[bot] merged 18 commits into
mainfrom
sep/spec-feature-lifecycle-and-deprecation
May 18, 2026
Merged

SEP-2596: Specification Feature Lifecycle and Deprecation Policy#2596
mcp-commander[bot] merged 18 commits into
mainfrom
sep/spec-feature-lifecycle-and-deprecation

Conversation

@localden
Copy link
Copy Markdown
Contributor

Establishes a formal lifecycle for individual features within the MCP specification (Active, Deprecated, Removed), with a minimum twelve-month window between deprecation and earliest removal, required @deprecated schema annotations and changelog entries, and a two-SEP procedure where deprecation and removal are each their own proposal.

This is the mechanics follow-up to the direction recorded in the April 1, 2026 Core Maintainer meeting ("formal versioning status and SDK deprecation cycle: direction agreed, mechanics TBD") and the support-window model floated at the NYC maintainer meeting. It reclassifies the two existing informal deprecations (the HTTP+SSE transport and the includeContext values thisServer/allServers) under the new policy and notes its relationship to SEP-1400 (semantic versioning) as complementary rather than overlapping.

@localden localden force-pushed the sep/spec-feature-lifecycle-and-deprecation branch from a2462b2 to fadbbab Compare April 17, 2026 17:51
@localden localden changed the title SEP: Specification Feature Lifecycle and Deprecation Policy SEP-2596: Specification Feature Lifecycle and Deprecation Policy Apr 17, 2026
@localden localden added SEP draft SEP proposal with a sponsor. labels Apr 17, 2026
@localden localden force-pushed the sep/spec-feature-lifecycle-and-deprecation branch 2 times, most recently from 4bc379a to e81fb67 Compare April 17, 2026 17:55
@localden localden self-assigned this Apr 17, 2026
@mcp-virtual-tpm mcp-virtual-tpm Bot added this to the 2026-06-30-RC milestone Apr 17, 2026
@localden localden force-pushed the sep/spec-feature-lifecycle-and-deprecation branch from e81fb67 to 3ef12c4 Compare April 17, 2026 19:42
@localden localden force-pushed the sep/spec-feature-lifecycle-and-deprecation branch from 3ef12c4 to c7d305b Compare April 17, 2026 19:42
Comment thread docs/seps/2596-spec-feature-lifecycle-and-deprecation.mdx Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
@localden localden added in-review SEP proposal ready for review. and removed draft SEP proposal with a sponsor. labels Apr 22, 2026
@localden localden moved this to In Review in SEP Review Pipeline Apr 22, 2026
Requires any named replacement to already be Active when the deprecation
lands (not just at removal time), adds an SDK-side deprecation-marking
expectation, and rewrites the Tier-1 SDK removal gate to say "users can
complete the migration" rather than the ambiguous "no longer required for
protocol conformance." Also drops the angle-bracket email from the Author
line, which was breaking MDX generation.

:house: Remote-Dev: homespace
Anchors every clock to a knowable date (deprecation SEP reaching Final
and revisions being "released as Current") so the twelve-month and
ninety-day floors can be computed without guessing a future publication
date. Points all decision steps at the governance Decision Process
section rather than SEP-932, which has no such section. Reframes
§Transition as an explicit grandfathering clause for the two
pre-existing deprecations, with their migration targets recorded so the
removal procedure has something to check.

Also: replacements must be Active in a Current revision (not just
draft), expedited shortening can be approved post-Final via the removal
SEP, the §Roles table now covers restoration and the SDK waiver, the
states table uses capital-C Current consistently, RFC 2026 swapped for
RFC 8996, and the Reference Implementation no longer promises schema.ts
tags for transport types that do not exist.

:house: Remote-Dev: homespace
…cycle-and-deprecation

# Conflicts:
#	docs/docs.json
#	docs/seps/index.mdx

:house: Remote-Dev: homespace
States explicitly that a feature is Deprecated from the moment its SEP
reaches Final rather than waiting for the next spec revision, and
explains why a feature may remain Deprecated indefinitely. Points the
roots/sampling motivation bullet at SEP-2577 instead of meeting notes,
notes Lead Maintainer veto in the Roles table, and switches three
British spellings to American.

:house: Remote-Dev: homespace
@localden localden marked this pull request as ready for review April 24, 2026 18:15
@localden localden requested review from a team as code owners April 24, 2026 18:15
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
…tifacts

Adds an explicit Relocating-to-extension subsection for low-usage
features moving out of core (the SEP-2577 case), and replaces the
undefined "stable, generally available release" bar with the concrete
SEP-2133 artifacts a sponsor can check: Extensions Track SEP at Final
and publication in an ext-* (not experimental-ext-*) repository. Also
fixes the includeContext reference-implementation note (it is a string
union, not an enum) and removes section-sign prefixes from
cross-references.

:house: Remote-Dev: homespace
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
Co-authored-by: Paul Carleton <paulcarletonjr@gmail.com>
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
localden added 2 commits May 6, 2026 15:21
The deprecation policy should establish the lifecycle states and the
two-SEP procedure without prescribing where deprecated functionality
lands. Remove the dedicated relocation-to-extension section, the
extension/SDK-specific migration-target readiness bars in the deprecation
and removal SEP requirements, the extensions carve-out in Scope, and the
SEP-2133 link reference. The general principle remains: a feature is not
deprecated while its documented replacement is still pending.

:house: Remote-Dev: homespace
…tions

Address ecosystem-effects feedback: the lifecycle is only effective if
the deprecation signal reaches implementers. Pull the Tier 1 SDK
deprecation-marking bullet out of the spec-side artifact list into its
own section, upgrade SHOULD to MUST for the language-native deprecation
marker, and add a SHOULD for a runtime warning when a deprecated feature
is exercised (the testable signal for the conformance suite). Make
persistent non-compliance grounds for the SEP-1730 Tier Relegation
Process.

Strengthen the revision-support-window open question with the arithmetic
argument: a Tier 1 support window shorter than the twelve-month
deprecation floor lets an SDK consumer leapfrog the Deprecated state
entirely. Recommend the SEP-1730 amendment be pursued alongside this SEP.

Rename the "Runtime deprecation signal" open question to "Wire-level
deprecation signal" since the SDK-side runtime warning is now in the
policy body; the remaining gap is consumers without an official SDK.

:house: Remote-Dev: homespace
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md Outdated
@sep-automation-bot
Copy link
Copy Markdown

Maintainer Activity Check

Hi @localden!

You're assigned to this SEP but there hasn't been any activity from you in 16 days.

Please provide an update on:

  • Current status of your review/work
  • Any blockers or concerns
  • Expected timeline for next steps

If you're no longer able to sponsor this SEP, please let us know so we can find another maintainer.


This is an automated message from the SEP lifecycle bot.

@localden localden added accepted SEP accepted by core maintainers, but still requires final wording and reference implementation. and removed in-review SEP proposal ready for review. labels May 13, 2026
localden and others added 6 commits May 16, 2026 23:45
Co-authored-by: David Soria Parra <167242713+dsp-ant@users.noreply.github.com>
Address review feedback on the lifecycle mechanics:

- Measure the minimum deprecation window from the release of the revision
  that carries the deprecation rather than from the SEP-Final date, so
  every feature deprecated in the same revision shares one earliest
  removal. Resolves the internal inconsistency with the Tier 1 section,
  which was already release-anchored, and matches SEP-2577.
- Remove the second (removal) SEP. Removal is a Core Maintainer decision
  at release preparation with the migration/SDK confirmations recorded
  alongside the changelog entry. A SEP is now reserved for extending the
  window, restoring a feature, or expedited removal.
- Add docs/specification/draft/deprecated.mdx as a standing registry of
  Deprecated features and wire it into the deprecation artifacts.
- Transition: three-month grace for HTTP+SSE (already deprecated well
  over twelve months); includeContext values follow the SEP-2577
  Sampling deprecation rather than an independent clock.
- Reconcile Rationale, Roles, Transition, and Backward Compatibility
  with the above; point the SEP-2577 reference at the rendered page.

:house: Remote-Dev: homespace
…nsition

This is a Process SEP with no separate reference-implementation PR. Move
the schema/prose/changelog/registry edits into Transition as direct
draft/ changes when the SEP reaches Final, and reduce the Reference
Implementation section to a pointer.

:house: Remote-Dev: homespace
SEP-1730 already requires Tier-1 SDKs to implement new protocol features
within six months, and the replacement has been Active for at least the
twelve-month window before removal is eligible, so a separate
release-prep check that SDKs have shipped the migration is implied by
existing conformance. Replace the confirmation with a sentence noting
that, drop the waiver row from the Roles table, and rebase the
twelve-month rationale on removal being permissive rather than on the
removed check.

:house: Remote-Dev: homespace
… Removed

Relax the migration-target rule so the replacement and the deprecation
may land in the same revision (the twelve-month window from that
revision's release is the proving period; matches the
2025-03-26 Streamable HTTP precedent). State that Removed does not
oblige an SDK to drop the feature from releases supporting an earlier
revision, and that the SDK deprecation marker is intentionally
revision-agnostic.

:house: Remote-Dev: homespace
Regenerated docs/seps/index.mdx to resolve the conflict from new SEPs
landing on main.

:house: Remote-Dev: homespace
dsp-ant
dsp-ant previously approved these changes May 18, 2026
Comment thread seps/2596-spec-feature-lifecycle-and-deprecation.md
Copy link
Copy Markdown
Member

@dsp-ant dsp-ant left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR should include docs/specification/draft/deprecated.mdx

Replace the rationale-heavy prose with the agreed two-point structure:
removal at Core Maintainer discretion after the window, SEPs only for
changes to the schedule. Note indefinite deprecation is allowed and that
removal adds no SDK requirements beyond the tiering system.
Resolve generated-file conflicts in docs/docs.json and docs/seps/index.mdx
by regenerating SEP docs from source (npm run generate:seps) so SEP-2596
lists alongside SEP-2106, SEP-2164, SEP-2468, and SEP-2484 from main.

:house: Remote-Dev: homespace
@localden
Copy link
Copy Markdown
Contributor Author

/lgtm force

Chatted with DSP, good to merge.

@mcp-commander mcp-commander Bot moved this from In Review to Accepted in SEP Review Pipeline May 18, 2026
Copy link
Copy Markdown

@mcp-commander mcp-commander Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved on behalf of @localden via /lgtm force.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

accepted SEP accepted by core maintainers, but still requires final wording and reference implementation. SEP

Projects

Status: Accepted

Development

Successfully merging this pull request may close these issues.

8 participants