Skip to content

docs: specify stateless MCP Streamable HTTP transport (COD-510) - #15

Merged
shivros merged 1 commit into
mainfrom
runner/COD-510-mcp-http
Sep 23, 2026
Merged

shivros merged 1 commit into
mainfrom
runner/COD-510-mcp-http

Conversation

@shivros

@shivros shivros commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add the OpenSpec contract for Hydra's reusable stateless MCP Streamable HTTP server runtime.
  • Define the 2026-07-28 POST-only protocol boundary, per-request metadata, exact Origin policy, safe errors, no sessions/GET/CORS-PNA behavior, and fail-closed x-mcp-header handling.
  • Specify the shared generated-tool/consumer-dispatch boundary and the Notes loopback acceptance path for the later implementation slice.

Scope

This is intentionally a specification-only PR. It changes no workspace manifests, runtime code, generated artifacts, consumer code, dependency versions, release state, or deployment configuration. Runtime implementation remains blocked until this contract lands on main.

Verification

  • python3 /opt/data/tmp/validate_cod510.py — structural OpenSpec validation passed (4 required files, 5 requirements, 11 scenarios).
  • openspec CLI — unavailable in the hosted runner; structural validation was used as required by the ticket.
  • git diff --check — passed before commit.
  • Commit is signed as Shiv Rossi <shiv@fastmail.com>; signature verified locally with the approved hosted GPG home.

Review focus

Please review the protocol contract and the explicit implementation gates before any runtime slice starts. The design intentionally does not add legacy initialize, sessions, GET/DELETE handling, SSE delivery, CORS/PNA preflight, authentication policy, or AnkiMCP-specific code.

@shivros

shivros commented Sep 22, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Automated Review Panel

Reviewer A — delegated Codex review

APPROVE

The four-file OpenSpec-only diff is aligned with COD-510. It defines a reusable, consumer-mounted Axum MCP-over-HTTP runtime, preserves generated mcp.json tools and one consumer-owned dispatch boundary, and explicitly rejects name inference, duplicate business definitions, sessions, GET/SSE delivery, and AnkiMCP-specific code. It covers protocol/media/header/version/origin validation, manifest security, stateless behavior, tool errors, and undeclared-tool rejection. The future Notes loopback acceptance path and CORS/PNA/x-mcp-header boundaries are concrete and the task gates correctly keep runtime work behind spec review.

No blocking correctness, protocol-contract, architectural, goal-alignment, or convention issue found. Runtime absence is intentional for this spec-first PR.

Optional nits for the later implementation review: make HTTP-status versus JSON-RPC error semantics and exact Accept negotiation behavior explicit in the runtime implementation.

Reviewer B — Gemini 3 Flash via OpenRouter

APPROVE

The contract is complete, aligns with the goal, and respects Hydra's spec-first scope. Strengths called out: strict transport-only boundary, secure-by-default Origin policy, accurate 2026-07-28 protocol/error handling, fail-closed x-mcp-header handling, and real loopback Notes integration evidence.

Optional nit: requiring both application/json and text/event-stream in Accept is stricter than the protocol's client guidance, though it is a safe compatibility choice for this unary-only slice. Base64 Mcp-Name sentinel handling was also noted positively.

Panel conclusion

Both independent reviewers found no blocking issue. No source, workspace, generated artifact, dependency, release, deployment, or live behavior was changed in this spec-only PR.

@shivros
shivros marked this pull request as ready for review September 22, 2026 18:01
@shivros
shivros merged commit a7ce4bd into main Sep 23, 2026
2 checks passed
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.

1 participant