Context
Issue #14783 requires the Neural Link capability matrix to name v13.2+ gap entries and ensure each gap is filed as a leaf before the matrix merges. The tour-runner gap is already covered by #14640. The remaining explicit gap is the keeper parity boundary recorded in #14765: keeper-created instances get pane chrome in that lane, while external Neural Link create_component inserts intentionally stay bare in v1.
This ticket makes that boundary executable instead of tribal: the implementation must prove whether external create_component inserts should remain bare, gain a registration bridge, or expose a separate handoff path.
The Problem
The keeper creation pipeline and the Neural Link create_component tool both materialize live components, but they do not currently promise the same product affordances. #14765 deliberately scopes pane chrome to keeper-created instances and names external/NL-created chrome as a recorded follow-up. Without a parity proof, later journey work can assume the wrong thing: either treating an external NL insert as keeper-owned when it is not, or preserving a bare insert when the product journey expects keeper chrome.
The Architectural Reality
create_component is a Neural Link write-locked tool in ai/mcp/server/neural-link/openapi.yaml, dispatched through ComponentService.createComponent.
- Keeper materialization owns registry provenance, title binding, dispose, promote, and
paneRef semantics in the #14765 lane.
- The safe boundary is not a hidden equivalence. External NL insertion has no keeper provenance stamp today; the parity decision must be explicit and test-backed.
The Fix
Add the smallest proof lane that compares keeper-created and external-NL-created materialization:
- Build a focused fixture or test rig that creates one keeper-owned component and one external
create_component insert into the same stage/root.
- Assert the current boundary explicitly: which one receives keeper chrome/registry affordances, which one does not, and why.
- If product parity is required, add the narrow registration/handoff path that converts an external NL insert into a keeper-owned record; otherwise document the boundary in the keeper/Neural Link reference surface.
- Feed the outcome back into the Neural Link capability matrix so the
create_component row and gap section stay truthful.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback |
Docs |
Evidence |
create_component external insert |
ai/mcp/server/neural-link/openapi.yaml + ComponentService.createComponent |
Creates a live component without silently claiming keeper provenance |
Structured tool error on invalid config/target |
Neural Link capability matrix |
Unit/e2e proof for external insert boundary |
| Keeper materialized pane |
#14765 |
Registry-owned instances receive title/dispose/promote chrome |
Bare render if no keeper ownership exists |
Keeper docs or matrix notes |
Parity fixture compares keeper vs external insert |
Decision Record impact
none. This is a parity/proof leaf under the existing keeper and Neural Link architecture; it does not amend an ADR.
Acceptance Criteria
Out of Scope
Changing create_component schema vocabulary · broad keeper UX redesign · implementing tour-runner primitives (covered by #14640) · generic dock operation parity.
Avoided Traps
Do not make create_component silently mint keeper registry state just because the rendered outcome looks similar. Provenance is the contract; if parity exists, the handoff must be explicit and test-backed.
Related
Parent matrix: #14783. Existing recorded boundary: #14765. Keeper live-generation consumer: #14762. Tour-runner gap already filed: #14640.
Live latest-open sweep: checked latest 20 open issues at 2026-07-04T18:11:39Z; no equivalent keeper external create_component parity ticket found. A2A in-flight sweep: checked last 30 messages at 2026-07-04T18:11:39Z; no competing claim for this scope.
Origin Session ID: 6439a7c5-5f2f-4658-9226-835c317c7a0b
Retrieval Hint: "keeper external create_component parity chrome provenance registry handoff"
Context
Issue #14783 requires the Neural Link capability matrix to name v13.2+ gap entries and ensure each gap is filed as a leaf before the matrix merges. The tour-runner gap is already covered by #14640. The remaining explicit gap is the keeper parity boundary recorded in #14765: keeper-created instances get pane chrome in that lane, while external Neural Link
create_componentinserts intentionally stay bare in v1.This ticket makes that boundary executable instead of tribal: the implementation must prove whether external
create_componentinserts should remain bare, gain a registration bridge, or expose a separate handoff path.The Problem
The keeper creation pipeline and the Neural Link
create_componenttool both materialize live components, but they do not currently promise the same product affordances. #14765 deliberately scopes pane chrome to keeper-created instances and names external/NL-created chrome as a recorded follow-up. Without a parity proof, later journey work can assume the wrong thing: either treating an external NL insert as keeper-owned when it is not, or preserving a bare insert when the product journey expects keeper chrome.The Architectural Reality
create_componentis a Neural Linkwrite-lockedtool inai/mcp/server/neural-link/openapi.yaml, dispatched throughComponentService.createComponent.paneRefsemantics in the #14765 lane.The Fix
Add the smallest proof lane that compares keeper-created and external-NL-created materialization:
create_componentinsert into the same stage/root.create_componentrow and gap section stay truthful.Contract Ledger Matrix
create_componentexternal insertai/mcp/server/neural-link/openapi.yaml+ComponentService.createComponentDecision Record impact
none. This is a parity/proof leaf under the existing keeper and Neural Link architecture; it does not amend an ADR.
Acceptance Criteria
create_componentinsert against the same materialization surface.paneRefbehavior where applicable.Out of Scope
Changing
create_componentschema vocabulary · broad keeper UX redesign · implementing tour-runner primitives (covered by #14640) · generic dock operation parity.Avoided Traps
Do not make
create_componentsilently mint keeper registry state just because the rendered outcome looks similar. Provenance is the contract; if parity exists, the handoff must be explicit and test-backed.Related
Parent matrix: #14783. Existing recorded boundary: #14765. Keeper live-generation consumer: #14762. Tour-runner gap already filed: #14640.
Live latest-open sweep: checked latest 20 open issues at 2026-07-04T18:11:39Z; no equivalent keeper external
create_componentparity ticket found. A2A in-flight sweep: checked last 30 messages at 2026-07-04T18:11:39Z; no competing claim for this scope.Origin Session ID: 6439a7c5-5f2f-4658-9226-835c317c7a0b Retrieval Hint: "keeper external create_component parity chrome provenance registry handoff"