Activate mrtr-tasks-composition (mrtr-08)#7
Closed
panyam wants to merge 1 commit into
Closed
Conversation
Base automatically changed from
feat/raw-session-cleanup-and-mcp-param
to
feat/tasks-mrtr-extension
May 28, 2026 23:26
Replaces the long-standing SKIPPED placeholder for the SEP-2663
composition flow with a real end-to-end check. The scenario drives a
fixture tool that:
1. returns InputRequiredResult on round 1 (no inputResponses) to
gather user_name via elicitation/create;
2. on round 2 (with the elicit response echoed back) returns
CreateTaskResult, escalating to async;
3. completes the task in a continuation; the final result reflects the
answer gathered during the MRTR phase.
Spec-separation assertions kept observable per SEP-2663:
- round 1 (MRTR) MUST NOT carry taskId;
- round 2 (CreateTaskResult) MUST NOT carry requestState or
inputRequests (those belong on DetailedTask returned by tasks/get) —
the MRTR phase's requestState does not leak into the task envelope,
so clients do not deduplicate across the two flows;
- final tasks/get result reflects the MRTR-phase answer end-to-end.
The fixture used is panyam/mcpkit examples/mrtr — see test_tool_with_task
(TaskSupport=required). Tracking issue panyam/mcpkit 347 locked in the
Option-2 design (GoAsync sentinel) that makes this composition possible
on a reference server.
Wire matrix: passes on legacy. Stateless wire still surfaces the
MRTR-over-stateless gap (callToolForStateless does not parse
inputResponses / requestState or reshape IsInputRequired) — tracked in
panyam/mcpkit issue 452.
0ea286e to
ad4f267
Compare
Comment on lines
+535
to
+538
| { | ||
| id: 'SEP-2663', | ||
| url: 'https://github.com/modelcontextprotocol/specification/pull/2663' | ||
| } |
There was a problem hiding this comment.
nit: we should pull this to a shared value as well, since we need it in all the other 2663 tests
LucaButBoring
approved these changes
May 29, 2026
panyam
added a commit
that referenced
this pull request
May 30, 2026
Folds PR 7 (panyam/mcpconformance) into PR 262: - Cherry-picks the mrtr-tasks-composition activation from feat/sep-2663-mrtr-08-composition (ad4f267 upstream): real end-to-end check driving the SEP-2663 commit 451f5e1 promotion flow (InputRequiredResult rounds gather user_name via elicitation/create, then CreateTaskResult on the final round escalates to async; the final tasks/get result reflects the answer gathered during MRTR). - Addresses LucaButBoring's PR 7 nit: replaces the inline SEP-2663 reference literal with the shared SEP_2663_REF constant (now also pointing at the rendered SEP page). - Renames the scenario's emitted check ID from `mrtr-tasks-composition` to `sep-2663-mrtr-synchronous-before-task-creation` to match the corresponding row in sep-2663.yaml — closes the gap between declared requirement and implementing check. - Updates mrtr/README.md: refreshes the Specs-covered table and the per-check description table for the new slug, and drops the "Open issues" section (both blockers are resolved — discriminator value aligned upstream; mcpkit middleware refactored per panyam/mcpkit#347). - Updates the sep-2663.yaml flow-gate comment block to note that the ephemeral mrtr-* flow gates also fall into the untracked category for the same reason as the tasks-* flow gates. One fewer skipped check on PR 262. Verified 123/123 server-suite tests pass against mcpkit's tasks-v2 + mrtr fixtures (post panyam/mcpkit#499 + #501). Closes #7.
Owner
Author
|
Folded into PR 262 — see commit 62b41cf. Includes your nit (inline SEP-2663 literal replaced with the shared
Verified 123/123 server-suite tests pass against mcpkit's tasks-v2 + mrtr fixtures (post Closing this PR — the work continues as part of PR 262. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changes
Replaces the long-standing SKIPPED placeholder for SEP-2663 composition with a real end-to-end conformance check (
mrtr-tasks-composition, the 8th MRTR scenario). The scenario drives a fixture tool that:InputRequiredResulton round 1 (noinputResponses) to gatheruser_nameviaelicitation/create,CreateTaskResult— escalating to async,Stacked on PR 6 (
feat/raw-session-cleanup-and-mcp-param) so the new check uses the hoisted_shared/raw-session.tsimport paths cleanly.Spec separation kept observable
Per SEP-2663:
inputRequests(+ optionalrequestState) and MUST NOT carrytaskId.CreateTaskResult) MUST carrytaskId+statusand MUST NOT carryrequestStateorinputRequests— the merged SEP-2663 removedrequestStatefrom the v2 wire shape, so the MRTR phase's token does not leak into the task envelope and clients do not deduplicate across the two flows.resultreflects the MRTR-phase answer end-to-end.All three are asserted in the new check.
Wire matrix
feat/sep-2663-mrtr-tasks-composition(the matching mcpkit PR — adds the GoAsync sentinel +test_tool_with_taskfixture). 8/8 MRTR scenarios green.callToolForStatelessdoesn't parseinputResponses/requestStateor reshapeIsInputRequiredinto wire-shapeInputRequiredResult. Tracked at panyam/mcpkit issue 452 (now unblocked since 444 closed). Not introduced by this PR — same gap surfaces today on PR 6 HEAD without this PR.Reviewer's guide
TASKS_EXTENSION_IDandwaitForTerminalplus plumbingopts?.statelessinto the dedicated session the check opens (it needs to declare the tasks extension in_meta.clientCapabilities, distinct from the elicitation/sampling/roots session checks 1-7 use).Test plan
npm run typecheckclean.MCP_WIRE_MODES=legacy make testconf-mrtr(run from the mcpkit repo against the matching fixture) → 8/8.