21 review-001 tasks across server/adapters/client/gateway/websocket/infra, chunked from the 7-unit remediation plan in docs/reviews/001-initial-implementation-review.md. - Scope split by mechanism, not one-per-finding: 15 tasks in generation 1 (parallelizable), 6 sequenced after their file-sharing precursors - Deliberately deferred until dependent fixes land: projection/doc fidelity partial (Unit 6 beyond dependency hygiene), coverage backfills (COV-01..07 via in-task acceptance for forward.rs), and per-finding minors (OAI-06/07, HY-02/04/06/10/11, CON-08) - Cross-crate WS-12 (alkcall demux 4 GiB discard alloc) noted for filing in alkcall, not here taskgraph: validate clean, no cycles, 6 generations
2.5 KiB
2.5 KiB
id, name, status, depends_on, scope, risk, impact, level, tags
| id | name | status | depends_on | scope | risk | impact | level | tags | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| review-001-mcp-tool-fidelity | MCP tool-gateway runtime fidelity (PRJ-07, PRJ-08, PRJ-09, PRJ-10, PRJ-13) | pending |
|
narrow | low | component | implementation |
|
Description
Review 001 MCP projection findings in src/adapters/to_mcp.rs (the
schema-ACL half of the MCP story is review-001-schema-internal-visibility;
this task covers the rest of the tool surface):
- PRJ-07: the
searchtool advertises an optional substringqueryfilter butcall_tooldropsargumentsentirely (:382) — an LLM passing{"query": "fs"}gets the full unfiltered listing (context waste/overflow in big registries). Honor the filter. - PRJ-08:
searchexcludes onlySub, notPub(:268-274), contradicting ADR-068 ("excludes both"). A discovered Pub op can never be invoked via thecalltool — the advertised discovery surface is a lie for the whole Pub class. (The"subscription"/"Sub"match arms are dead —op_type_stronly emits lowercase.) - PRJ-09: batch item shape
{"isError", "output"|"error"}contradicts the tool description ("each shaped like acallresult") — fix the description or the shape. - PRJ-10:
structuredContentpasses output through verbatim, so string/array/null outputs produce non-objectstructuredContent(strict MCP clients may reject; batch returns a top-level array). Wrap or document. - PRJ-13: hand-rolled argument errors omit
retryable(required by the OpenAPI error schemas, always present onCallError), and a non-stringoperationreports the misleading "missing required field". Build argument errors in theCallErrorwire shape.
Acceptance Criteria
searchrespects aqueryargument (test);Pubops excluded from results (test)- Batch item doc matches the emitted shape (or shape changed to match — one way or the other, tested)
- Non-object outputs wrapped into objects or documented as an exception; batch shape consistent
- MCP argument errors carry
retryableand truthful messages cargo test --all-featurespasses
References
- docs/reviews/001-initial-implementation-review.md (Part F, PRJ-07..PRJ-10, PRJ-13)
- docs/architecture/decisions/041-mcp-tool-gateway-pattern.md
- docs/architecture/decisions/068-gateway-publish-endpoint.md
Notes
Agent fills during implementation. Depends on the visibility task because both rework the
schematool into_mcp.rs.
Summary
Filled on completion.