ticket: approve mcp list changed handling
This commit is contained in:
parent
d67f4023e1
commit
fccef54cd6
|
|
@ -2,7 +2,7 @@
|
||||||
title: 'MCP: handle list_changed notifications safely'
|
title: 'MCP: handle list_changed notifications safely'
|
||||||
state: 'inprogress'
|
state: 'inprogress'
|
||||||
created_at: '2026-06-20T05:30:04Z'
|
created_at: '2026-06-20T05:30:04Z'
|
||||||
updated_at: '2026-06-20T10:26:52Z'
|
updated_at: '2026-06-20T10:31:26Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
readiness: 'implementation_ready'
|
readiness: 'implementation_ready'
|
||||||
risk_flags: ['mcp', 'notifications', 'tool-schema', 'prompt-cache', 'refresh']
|
risk_flags: ['mcp', 'notifications', 'tool-schema', 'prompt-cache', 'refresh']
|
||||||
|
|
|
||||||
|
|
@ -169,3 +169,47 @@ Review dispatch:
|
||||||
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
|
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- event: review author: yoi-reviewer-00001KVHR3WSW-r1 at: 2026-06-20T10:31:26Z status: approve -->
|
||||||
|
|
||||||
|
## Review: approve
|
||||||
|
|
||||||
|
Verdict: `approve`
|
||||||
|
|
||||||
|
確認範囲:
|
||||||
|
- Ticket `00001KVHR3WSW` item/thread、Orchestrator IntentPacket、binding invariants。
|
||||||
|
- Diff: `d31b8907..e33dee19`。
|
||||||
|
- 主な対象:
|
||||||
|
- `crates/mcp/src/stdio.rs`
|
||||||
|
- `crates/mcp/tests/stdio_lifecycle.rs`
|
||||||
|
- `crates/mcp/tests/fixtures/mock_server.rs`
|
||||||
|
- `crates/pod/src/feature/mcp.rs`
|
||||||
|
- Hidden context/history append、post-registration live ToolRegistry mutation、notification param usage/leakage、sampling/elicitation/remote transport scope creep の有無を確認。
|
||||||
|
|
||||||
|
Blocking issues: none。
|
||||||
|
|
||||||
|
Approval evidence:
|
||||||
|
- `crates/mcp/src/stdio.rs` は `notifications/tools/list_changed`, `notifications/resources/list_changed`, `notifications/prompts/list_changed` を bounded enum state としてのみ記録している。
|
||||||
|
- Notification `params` は incoming message shape として deserialize されるが、保存・render・behavior には使われない。
|
||||||
|
- Startup discovery は model-visible tool registration 前に `tools/list_changed` を検出した場合、`tools/list` refresh を最大 1 回だけ行う。
|
||||||
|
- Refresh 後も changes が続く場合は restart-required diagnostic を出し、post-registration ToolRegistry/schema mutation は行わない。
|
||||||
|
- Runtime MCP tool/resource/prompt operations は list-change notification を ordinary Tool output の bounded warning として明示的に返す。Hidden resource/prompt content injection はない。
|
||||||
|
- Sampling / elicitation / remote transport scope creep はない。
|
||||||
|
- Tests は kind-only notification state、safe-boundary tool refresh、continued-change restart diagnostic、resources/prompts warnings、malicious notification params が漏れないことを cover している。
|
||||||
|
|
||||||
|
Non-blocking follow-ups:
|
||||||
|
- Runtime diagnostic wording に “restart the Pod or start a new run to rediscover tools” とある。MCP discovery が Pod-startup scoped であるなら、将来 “restart/reinitialize the Pod” のみに絞るとより明確。
|
||||||
|
- Resources/prompts `list_changed` notifications observed during startup discovery は、explicit resource/prompt tool operations 中でない限り別途 surface されない。ただし resources/prompts lists は startup で cache されないため、この Ticket では blocking ではない。将来 persistent resource cache を持つなら明示 diagnostics が必要。
|
||||||
|
|
||||||
|
Reviewer validation:
|
||||||
|
- `cargo fmt --all --check`: passed。
|
||||||
|
- `git diff --check d31b8907..HEAD`: passed。
|
||||||
|
- `cargo test -p mcp list_changed -- --nocapture`: passed。
|
||||||
|
- `cargo test -p pod mcp::tests:: -- --nocapture`: passed, 16 tests。
|
||||||
|
- `cargo test -p mcp`: passed, 13 tests。
|
||||||
|
- `cargo check --workspace`: passed。
|
||||||
|
- `nix build .#yoi --no-link`: not run by Reviewer。
|
||||||
|
|
||||||
|
Worktree status at review end: source tree clean; ignored `target/` only。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user