1. Unknown things are ignored, never rejected
- Unknown fields in any object MUST be ignored by the receiver.
- Unknown capability keys (and unknown fields inside a known capability) are informational and ignored.
- Unknown
notifications/*methods are silently dropped — they have noid, so there is nothing to answer.
filter field names are validated against the advertised
set, because a silently-ignored filter would return wrong results.
2. The three name spaces
Core
The method names, capability keys, enum values, and error codes in this
spec. Reserved — only a future RCP revision may add to core.
Vendor
Anyone may add experimental surface with the
x-<vendor> convention, no
coordination required._meta
Free-form side-band data attached to any params/result, never affecting core
semantics.
Vendor extensions
Any implementer MAY introduce proprietary surface without central coordination:- Extension methods are named
x-<vendor>/<name>— e.g.x-acme/rerank-v2. - Extension capability keys and fields are named
x-<vendor>orx-<vendor>-<name>.
x--prefixed name it does not understand. Extension
methods are still gated: a client MUST NOT call x-acme/* unless the
server advertised a matching x-acme capability.
A name that proves broadly useful SHOULD be proposed for core registration in
a later revision, at which point it drops its
x- prefix. Capability
negotiation is the discovery mechanism — there is no runtime registry service.3. The _meta channel
Every params and result object MAY carry a _meta object for
implementation-specific data that never changes core meaning:
Keys are implementation-defined; unknown keys are ignored. This keeps the core
namespace clean while giving implementations room to move.
See §4.4 and §6.2 of the specification for the
normative extension and registration policy.