Skip to content
{mcpdesc}

Merge protocol views without guessing

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.

A merge result is valid, preserves every input protocol-version view, and fails on any conflict it cannot represent faithfully.

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

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.

Source: view-fixtures/merge-component-name-collision.json · Selected: /expected

"expected/merge-component-name-collision.json"

Source: view-fixtures/merge-object-extensions-variants.json · Selected: /expected

"expected/merge-object-extensions-variants.json"

Source: view-fixtures/merge-protocol-scoped-primitives.json · Selected: /expected

"expected/merge-protocol-scoped-primitives.json"

Source: view-fixtures/merge-security-forms.json · Selected: /expected

"expected/merge-security-forms.json"

Source: view-fixtures/merge-component-extension-conflict.json · Selected: /expectedFailure

"req-component-merge-extensions"

Source: view-fixtures/merge-invalid-input.json · Selected: /expectedFailure

"req-merge-inputs"

Source: view-fixtures/merge-object-extension-conflict.json · Selected: /expectedFailure

"req-extension-merge"

Source: view-fixtures/merge-same-protocol-version-conflict.json · Selected: /expectedFailure

"req-merge-equivalence"

Source: view-fixtures/merge-tag-catalogue-conflict.json · Selected: /expectedFailure

"req-tags-merge"

Source: view-fixtures/merge-unscoped-conflict.json · Selected: /expectedFailure

"req-merge-equivalence"

projection.yaml at immutable tag v0.9.0-rc.3.