Oxidaner opened a new issue, #1576:
URL: https://github.com/apache/dubbo-admin/issues/1576

   Parent: #1491
   
   Phase 2 — exact operation resolution, schema generation and position-based 
parameter binding.
   
   ### Scope
   
   - Exact operation resolver over the unified Resource catalog. A method is 
uniquely identified by `mesh + serviceName + group + version + methodName + 
ordered parameterTypes`.
   - `inputSchema` builder driven by parameter types and recursively reachable 
type definitions. Java POJOs and Go structs stay JSON objects; real object 
realization remains the job of the provider's existing generic filter.
   - Input/output contract fingerprints (split by direction).
   - Position-based parameter bindings (`MCPParameterBinding{Position, Alias, 
Description}`): alias and description are user-editable, position is immutable.
   - Recursive argument decoding and validation errors/warnings.
   
   ### Acceptance criteria
   
   - Overloaded methods are distinguished precisely by method name plus ordered 
parameter types.
   - Binding is strictly position-based: at runtime the JSON value is read by 
alias and written to `args[position]`. The implementation must not depend on 
JSON object traversal order, must not match positions by type, and must not 
infer a position back from an `argN` string. The only source of the RPC type is 
`parameterTypes[position]`.
   - A stable `argN` is generated when Java parameter names are unavailable, 
and a user alias restores the correct RPC position.
   - Schema generation rejects, before publish: raw collections, open types, 
unresolvable type references, non-string map keys, and types without a stable 
JSON representation.
   - Each published binding keeps an immutable schema snapshot plus 
input/output fingerprints.
   - Contract drift: an incompatible **input** contract hides and disables only 
the affected Tool, without rewriting the published schema and without affecting 
other Tools on the same server. A **return value** contract change produces a 
warning only and does not affect `tools/list` or `tools/call`.
   - Unknown nested fields are rejected before RPC dispatch.
   - A 19-digit `long` nested in a POJO or in a `List` is passed as a string 
and received by the provider with full precision.
   
   ### PR
   
   - PR-2 — resolver, fingerprints, schema builder.
   - PR-3 — recursive argument decoding and Tool contract tests (may be 
developed in parallel; PR-2 merges first).
   
   Dependency: Phase 1 (PR-1).
   
   Detailed design: [proposal §15 (line 
1243)](https://github.com/Oxidaner/dubbo-admin/blob/213bd38dbcfbe0c5bac64c7c8b949651f1633ca9/docs/proposal/mcp-server-proposal.md?plain=1#L1243)
 — design PR #1541.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to