Current scope and baseline
Follow-up to merged #721/#723/#727, checked against main b5cf7575e0bcfa6da23e12d2c5628146bdbe5cb1. This is a records/rendering/conformance correction, not another host-adapter project. #723's self-review explicitly deferred the items below; current source still contains them. Source/document review only; no native clients or local test suite were executed during this reconciliation.
Closed host-research issues are not proof of native adapters. The delivered feature describes how clients consume the existing portable artifact. Preserve that distinction and the per-surface limits. Amp's native implementation remains #711. Aider #713 and Jules #712 remain not planned and excluded.
Existing implementation to reuse
Corrections still required
1. Copilot CLI (#698): precedence and evidence scope
clients.copilot-cli.discovery.shadowedBy is empty. The official plugin reference orders .plugin/plugin.json before root plugin.json; the current VS Code record even notes this Copilot contrast. Record the appropriate affected surfaces and add a composite fixture rather than claiming both manifests are read independently.
The MCP support evidence attached to this record is a listed stdio server, not an executed remote/streamable-http server. Qualify the supported subset or add pinned evidence for the broader claim; do not promote static listing into successful launch or authenticated operation. Keep the recorded local-install deprecation and unverified placeholder launch visible.
2. CodeWhale (#709): remote policy restrictions
Its narrowed MCP reason currently describes only environment-value restrictions. The pinned upstream MCP guide also imposes endpoint-host, remote-header, secret-bearing URL and redirect restrictions at the plugin boundary.
Reflect the applicable network_hosts/endpoint agreement and other material limits in the record. If ordinary portable output lacks a required native declaration, say so; never invent a new portable schema field or silently relax the host's trust policy. A general transport capability is not proof that this particular plugin configuration is accepted.
3. VS Code (#706): registration is not copying installation
The record labels chat.pluginLocations as action role install, although both its own evidence and the official local-plugin documentation describe loading an existing directory in place. Use the already-supported register role so generated instructions distinguish it from a copied/install-managed source.
Cline (#705) must be checked in the same test but not changed mechanically: its recorded cp -R action creates a copy, so install remains appropriate unless the actual action changes. A role change must follow behavior, not consistency of wording.
4. Hermes (#697): Git repository source is not a marketplace source
The action is hermes plugins install <owner>/<repository> --no-enable, but install.source is marketplace. The official plugin guide distinguishes explicit repository/Git inputs from indexed names. Represent the actual source using the smallest compatible metadata change; preserve disabled-by-default installation and do not claim a local-directory command exists without proof.
5. Lock the records to concrete per-client output
Add per-client assertions for tier, affected paths, action role/source and degraded/unknown explanations. Cover empty, skills-only, MCP-only and combined inventories plus relevant composite shadows. Assert emitted INSTALL.md text and generated English/Chinese reference behavior, not merely JSON shape.
Already fixed — do not repeat
#727 removed nine duplicate authored client keys, restored Pi's live-probed skills-tier record, and added a duplicate-key regression. It also fixed Swival's registration/precedence and stopped claiming that its skills registration reads mcp.json. Preserve those tests. Qoder's install-versus-validation order and optional-inventory gating are also already implemented.
Acceptance / boundaries
No new adapter registry, universal discovery interpreter, host cache writer, account requirement, automatic enablement, broad AB4106 removal, or reimplementation of #651/#652.
Current scope and baseline
Follow-up to merged #721/#723/#727, checked against main
b5cf7575e0bcfa6da23e12d2c5628146bdbe5cb1. This is a records/rendering/conformance correction, not another host-adapter project. #723's self-review explicitly deferred the items below; current source still contains them. Source/document review only; no native clients or local test suite were executed during this reconciliation.Closed host-research issues are not proof of native adapters. The delivered feature describes how clients consume the existing portable artifact. Preserve that distinction and the per-surface limits. Amp's native implementation remains #711. Aider #713 and Jules #712 remain not planned and excluded.
Existing implementation to reuse
packages/agent-bundle/tests/{portable-adapter,install-surface}.test.tsCorrections still required
1. Copilot CLI (#698): precedence and evidence scope
clients.copilot-cli.discovery.shadowedByis empty. The official plugin reference orders.plugin/plugin.jsonbefore rootplugin.json; the current VS Code record even notes this Copilot contrast. Record the appropriate affected surfaces and add a composite fixture rather than claiming both manifests are read independently.The MCP support evidence attached to this record is a listed stdio server, not an executed remote/streamable-http server. Qualify the supported subset or add pinned evidence for the broader claim; do not promote static listing into successful launch or authenticated operation. Keep the recorded local-install deprecation and unverified placeholder launch visible.
2. CodeWhale (#709): remote policy restrictions
Its narrowed MCP reason currently describes only environment-value restrictions. The pinned upstream MCP guide also imposes endpoint-host, remote-header, secret-bearing URL and redirect restrictions at the plugin boundary.
Reflect the applicable
network_hosts/endpoint agreement and other material limits in the record. If ordinary portable output lacks a required native declaration, say so; never invent a new portable schema field or silently relax the host's trust policy. A general transport capability is not proof that this particular plugin configuration is accepted.3. VS Code (#706): registration is not copying installation
The record labels
chat.pluginLocationsas action roleinstall, although both its own evidence and the official local-plugin documentation describe loading an existing directory in place. Use the already-supportedregisterrole so generated instructions distinguish it from a copied/install-managed source.Cline (#705) must be checked in the same test but not changed mechanically: its recorded
cp -Raction creates a copy, soinstallremains appropriate unless the actual action changes. A role change must follow behavior, not consistency of wording.4. Hermes (#697): Git repository source is not a marketplace source
The action is
hermes plugins install <owner>/<repository> --no-enable, butinstall.sourceismarketplace. The official plugin guide distinguishes explicit repository/Git inputs from indexed names. Represent the actual source using the smallest compatible metadata change; preserve disabled-by-default installation and do not claim a local-directory command exists without proof.5. Lock the records to concrete per-client output
Add per-client assertions for tier, affected paths, action role/source and degraded/unknown explanations. Cover empty, skills-only, MCP-only and combined inventories plus relevant composite shadows. Assert emitted
INSTALL.mdtext and generated English/Chinese reference behavior, not merely JSON shape.Already fixed — do not repeat
#727 removed nine duplicate authored client keys, restored Pi's live-probed skills-tier record, and added a duplicate-key regression. It also fixed Swival's registration/precedence and stopped claiming that its skills registration reads
mcp.json. Preserve those tests. Qoder's install-versus-validation order and optional-inventory gating are also already implemented.Acceptance / boundaries
pnpm build, typecheck/lint, the affected unit tests and the docsite gate pass on the corrected head; report native runs separately if any occur.No new adapter registry, universal discovery interpreter, host cache writer, account requirement, automatic enablement, broad AB4106 removal, or reimplementation of #651/#652.