Skip to content

[Compatibility] Gate any retirement of legacy MCP eras and deprecated features #388

Description

@mohanagy

Context

Miftah currently supports the modern MCP 2026-07-28 era and the initialized legacy 2025-11-25 era. Legacy compatibility includes initialized serving, sessionful Streamable HTTP, capability-gated Roots behavior, resource subscriptions/list-changed notifications where supported, and upstream transport: "sse" configuration.

MCP ecosystem deprecation is a signal, not sufficient evidence to remove shipped Miftah behavior. This issue is the mandatory decision gate for any retirement; it does not authorize removal by itself.

Trigger

Start the retirement decision only when concrete usage and compatibility evidence exists. Until then:

  • do not remove or silently change a legacy path
  • do not make new features depend on deprecated behavior
  • keep modern and initialized legacy release gates green
  • keep migration guidance accurate

Required evidence before implementation

  • Inventory every public protocol, transport, configuration, CLI, library, and runtime behavior proposed for retirement.
  • Record usage/compatibility evidence for affected clients and configurations, including exact versions, transport, protocol era, operations tested, and known limitations.
  • Define an exact migration for every affected configuration and workflow, including stable diagnostics and operator actions.
  • Prove rollback to the last compatible release from packaged artifacts without corrupting configuration, profile state, approvals, OAuth state, or audit data.
  • Document security and privacy effects, especially session ownership, Roots-derived routing context, subscriptions, cancellation, and audit behavior.
  • Define the release boundary. Any intentional public incompatibility must ship in a new major version under the post-1.0 SemVer policy.
  • Create a separate implementation issue with bounded scope, acceptance criteria, tests, documentation, and release gates.
  • Obtain explicit maintainer approval on the evidence-backed retirement decision before implementation begins.

Implementation acceptance gates

The later implementation PR must:

  • target development
  • preserve an actionable compatibility failure and migration path
  • update the protocol/client matrix, configuration docs, changelog, and threat/security documentation
  • cover source and installed-package behavior across the supported OS/Node matrix
  • pass the locked MCP TypeScript client and pinned MCP Inspector gates for every retained path
  • include current-head CI and review approval before merge
  • be released only through a protected development to main major-version promotion

Out of scope for this gate

  • adopting new features on deprecated protocol surfaces
  • claiming named-host runtime compatibility from generated configuration alone
  • treating a deprecation notice or lack of reported failures as usage evidence
  • removing standalone downstream SSE, which Miftah does not implement

Current status

Deferred pending evidence. The compatibility source of truth is docs/mcp-compatibility.md; actual retirement requires a separate implementation issue and major release plan.

Activity

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

Metadata

Metadata

Assignees

Labels

area:mcpMCP protocol server and proxy behaviorarea:releaseCI, packaging, releases, and project healthbreaking-changeMay require config or API migrationdocumentationImprovements or additions to documentationpriority:p3Future or demand-gated work

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions