modelcontextprotocol / modelcontextprotocol/conformance
tasks-lifecycle accepts completed status from its cancellable fixture
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 127
- Forks
- 101
- Avg merge
- 6d 1h
- Merged PRs (30d)
- 7
Description
The tasks-lifecycle scenario requires its slow_compute fixture to settle to
cancelled when tasks/cancel arrives while it is running. The implementation
waits for a terminal status but records that status only in details. A server
that settles to completed therefore passes the cancellation check.
Minimal reproduction:
tasks/cancel -> {"resultType":"complete"}
tasks/get -> {"resultType":"complete","taskId":"lifecycle-cancel","status":"completed","result":{"content":[{"type":"text","text":"done"}]}}
npm test -- --run src/scenarios/server/tasks/lifecycle.test.ts
A regression test expecting
sep-2663-tasks-get-status-cancelled currently fails because the scenario never
emits that declared check:
AssertionError: expected undefined to match object
Test Files 1 failed (1)
Tests 1 failed | 1 passed (2)
The smallest fix is to emit the existing check after waitForTerminal and fail
it unless this deterministic fixture settles to cancelled. The cancellation
acknowledgement remains a separate check.
References:
- Fixture contract: https://github.com/modelcontextprotocol/conformance/blob/74edef34d674f563537be8c6587cebaa58e830ca/src/scenarios/server/tasks/lifecycle.ts#L64-L75
- Current diagnostic-only check: https://github.com/modelcontextprotocol/conformance/blob/74edef34d674f563537be8c6587cebaa58e830ca/src/scenarios/server/tasks/lifecycle.ts#L452-L477
- Declared traceability check: https://github.com/modelcontextprotocol/conformance/blob/74edef34d674f563537be8c6587cebaa58e830ca/src/seps/sep-2663.yaml#L53-L55
- Original review requiring deterministic cancellation: https://github.com/modelcontextprotocol/conformance/pull/262#discussion_r3270564690
- SEP-2663 cancelled response: https://github.com/modelcontextprotocol/ext-tasks/blob/0d0a6bd4c258b35caa3c810a1dd506cf105b1501/specification/2026-07-28/tasks.md#L326-L332
I have a small fix and regression test locally. I will wait for assignment,
help wanted, or explicit maintainer approval before opening a pull request.
AI assistance disclosure: GitHub Copilot CLI was used to inspect the public
specification and repository history, identify the missing conformance check,
prepare the reproducer, and draft this issue. I reviewed the evidence and can
explain the failure and proposed fix.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/scenarios/server/tasks/lifecycle.test.ts and the tasks-lifecycle fixture contract in src/scenarios/server/tasks/lifecycle.ts, then run the focused npm test command. Verify that the declared sep-2663-tasks-get-status-cancelled check is emitted after terminal-state handling and that the deterministic fixture reports cancelled while the cancellation acknowledgement remains separate.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100