A merge validates every input, requires equivalent views for a shared protocol version and equal unscoped metadata, collapses equivalent declarations, keeps differing ones as disjoint variants, renames colliding components, and fails rather than guess when inputs conflict.
Requirement
Section titled “Requirement”A merge result is valid, preserves every input protocol-version view, and fails on any conflict it cannot represent faithfully.
Details
Section titled “Details”Rule ID: mcpdesc.view.merge
Owner: mcpdesc
Surface: Effective Protocol View
Kind: mcpdesc-semantic
Requirement level: must
Protocol versions: independent of the MCP protocol version
Status: delegated · Enforcement: external
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 4.13, and the merge requirements of Sections 13, 14, and 17
- 4. Versioning: req-merge-inputs
-
- Versioning: req-merge-algorithm
-
- Versioning: req-merge-equivalence
-
- Versioning: req-merge-security
-
- Versioning: req-merge-collections
-
- Tags: req-tags-merge
-
- Specification Extensions: req-extension-merge
-
- Reusable Components and Local References: req-component-merge
-
- Reusable Components and Local References: req-component-merge-extensions
Checked by the cases in view-fixtures/; scripts/test-view-fixtures.mjs also checks the round-trip invariant of Section 4.13 for every merge result.
Examples
Section titled “Examples”Merge succeeds
Section titled “Merge succeeds”Source: view-fixtures/merge-component-name-collision.json · Selected: /expected
"expected/merge-component-name-collision.json"Merge succeeds
Section titled “Merge succeeds”Source: view-fixtures/merge-object-extensions-variants.json · Selected: /expected
"expected/merge-object-extensions-variants.json"Merge succeeds
Section titled “Merge succeeds”Source: view-fixtures/merge-protocol-scoped-primitives.json · Selected: /expected
"expected/merge-protocol-scoped-primitives.json"Merge succeeds
Section titled “Merge succeeds”Source: view-fixtures/merge-security-forms.json · Selected: /expected
"expected/merge-security-forms.json"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-component-extension-conflict.json · Selected: /expectedFailure
"req-component-merge-extensions"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-invalid-input.json · Selected: /expectedFailure
"req-merge-inputs"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-object-extension-conflict.json · Selected: /expectedFailure
"req-extension-merge"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-same-protocol-version-conflict.json · Selected: /expectedFailure
"req-merge-equivalence"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-tag-catalogue-conflict.json · Selected: /expectedFailure
"req-tags-merge"Merge fails
Section titled “Merge fails”Source: view-fixtures/merge-unscoped-conflict.json · Selected: /expectedFailure
"req-merge-equivalence"Rule Source Code
Section titled “Rule Source Code”projection.yaml at immutable tag v0.9.0-rc.3.