Skip to content

Bridge era-mismatched client×backend cells in vMCP + live dual-era e2e #5912

Description

@jhrozek

Part of #5756. Design: RFC THV-0083 (D3, Phase 4, Testing Strategy); arch doc §"The dual-era matrix" + §"Testing strategy". Mirrors the transport-proxy e2e issue #5837.

Bridge the two era-mismatched client×backend cells RFC-0081 defers to vMCP, and close with a live dual-era e2e suite. Both cells are single-request-scoped on one pod — no durable store required.

Changes

  • Legacy-client → Modern-backend (easy cell): terminate the client session with existing machinery, re-originate stateless calls downstream (no Mcp-Session-Id).
  • Modern-client → Legacy-backend (hard cell, confused-deputy boundary): synthesize and hold a backend session for the duration of the single request (pod-local; ephemeral for a bare tool call), initialized with the calling principal's per-request outgoing auth (existing OBO / header-injection / token-exchange strategies), partitioned by (principal, backend) — never shared across principals.
  • Live dual-era e2e suite: out-of-process go-sdk v1.7 peers (do NOT import go-sdk v1.7 into the module — run separate binaries/containers over the wire, as the Add MCP conformance CI job for thv run proxy #5806 conformance job does) plus a raw-HTTP client; exercise all four matrix cells; concurrency- and confidentiality-focused.

Dependencies

#5910 (server-side Modern path) and #5911 (client-side per-backend dual protocol).

Verification

  • Both bridge cells end-to-end.
  • Hard cell: (principal, backend) partition prevents cross-principal session reuse; the synthesized initialize presents the calling principal's OBO, not a shared vMCP identity.
  • Legacy↔Legacy and Modern↔Modern cells; concurrency cross-delivery safety.

Notes

Split into PRs: easy cell, hard cell, e2e suite. The hard cell is security-critical and should not share a PR with anything else.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions