Skip to content

feat: dual-era datatypes and server handling for 2026-07-28 (T4, T8) - #260

Open
sideeffffect wants to merge 2 commits into
softwaremill:2026-07-28-protocol-supportfrom
sideeffffect:feat/protocol-2026-07-28-server
Open

sideeffffect wants to merge 2 commits into
softwaremill:2026-07-28-protocol-supportfrom
sideeffffect:feat/protocol-2026-07-28-server

Conversation

@sideeffffect

@sideeffffect sideeffffect commented Sep 14, 2026

Copy link
Copy Markdown

Follow-up to #238 (T1 + T2, now merged). Targets 2026-07-28-protocol-support.

Closes #242.
Closes #246.

T4 — #242: request metadata, result type, cache hints, error codes, discover types

  • Versioning.scala: ProtocolMeta, CacheScope, DiscoverResult (+ getSupportedVersions)
  • JSONRPCErrorCodes.UnsupportedProtocolVersion (-32022)
  • ProtocolVersion.supported / isModern
  • DiscoverResultSpec + DiscoverResult / UnsupportedProtocolVersionError schema conformance

T8 — #246: serve 2026-07-28 requests next to legacy requests

  • McpHandler: server/discover, per-request modern-version validation (-32022), dual-era dispatch
  • Modern results carry the 2026-07-28 envelope: resultType: complete and serverInfo in _meta; cacheable results (tools/list, resources/*, prompts/list, ...) also carry ttlMs/cacheScope
  • McpHandlerSpec: discover, -32022, modern and legacy-path coverage
  • docs/server/capabilities.md

Server conformance for 2026-07-28

  • New CI step serverConformance/conformance server --requirements 2026-07-28, with a per-spec-version baseline (conformance-baseline-<version>.yml) selected by the sbt task
  • conformance-baseline-2026-07-28.yml lists the scenarios that still need later tickets: tasks/MRTR + input-required (T5, #243), full stateless lifecycle, and modern HTTP-header validation
  • 2025-11-25 conformance unchanged (no regression)

🤖 Generated with Claude Code

@kubinio123

Copy link
Copy Markdown
Collaborator

The T1, T2 PR is merged now. I took a first look and I am missing updates to server conformance tests, will you look into that as well? Agent does a good job on them as long as he has access to it's sources, described in server-conformance/README.md.

Stacked on top of softwaremill#238 (T1 + T2).
Carries the parts moved out of that PR at review request:

T4 (softwaremill#242) - request metadata, result type, cache hints, error codes, discover types:
- Versioning.scala: ProtocolMeta, CacheScope, DiscoverResult (+ getSupportedVersions)
- JSONRPCErrorCodes.UnsupportedProtocolVersion (-32022)
- ProtocolVersion.supported / isModern
- DiscoverResultSpec + DiscoverResult / UnsupportedProtocolVersionError schema conformance

T8 (softwaremill#246) - serve 2026-07-28 requests next to legacy requests:
- McpHandler: server/discover, per-request modern-version validation, dual-era dispatch
- McpHandlerSpec: discover, -32022, modern and legacy-path coverage
- docs/server/capabilities.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sideeffffect
sideeffffect force-pushed the feat/protocol-2026-07-28-server branch from 60aef3f to b574dd5 Compare September 16, 2026 16:59
Wrap 2026-07-28 results with the modern envelope (resultType: complete,
serverInfo in _meta; cacheable results also carry ttlMs and cacheScope) so the
server passes the modern tools/list, tools/call, resources/*, prompts/*,
completion and caching conformance scenarios.

Wire the server conformance harness for 2026-07-28: a per-spec-version baseline
(conformance-baseline-<version>.yml) selected by the sbt task, a
conformance-baseline-2026-07-28.yml capturing the scenarios that still need
later tickets (tasks/MRTR and input-required → T5 softwaremill#243; full stateless
lifecycle and modern HTTP header validation), and a CI step running it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@sideeffffect

Copy link
Copy Markdown
Author

Done — rebased onto the merged T1/T2 base (the earlier conflict is gone) and added the server conformance updates.

Server conformance for 2026-07-28:

  • Modern results now carry the 2026-07-28 envelope (resultType: complete, serverInfo in _meta; cacheable results also carry ttlMs/cacheScope), so tools/list, tools/call, resources/*, prompts/*, completion and caching pass at 2026-07-28.
  • Wired a serverConformance/conformance server --requirements 2026-07-28 CI step, with a per-spec-version baseline (conformance-baseline-2026-07-28.yml) selected by the sbt task.
  • The baselined scenarios need later tickets: tasks/MRTR + input-required (T5, T5 - MRTR (multi round trip requests) types #243), plus the full stateless lifecycle and modern HTTP-header validation.

Verified locally: 2026-07-28 server conformance passes (all remaining failures are the baselined ones); 2025-11-25 stays green (63 passed, 4 expected) — no regression.

@sideeffffect sideeffffect changed the title WIP feat: dual-era datatypes and server handling for 2026-07-28 (T4, T8) feat: dual-era datatypes and server handling for 2026-07-28 (T4, T8) Sep 17, 2026
@sideeffffect
sideeffffect marked this pull request as ready for review September 17, 2026 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants