Skip to content

[P2] Finish deferred portable-client record corrections from #723 without reopening native-adapter scope #728

Description

@ScriptedAlchemy

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

  • Each correction has a pinned source and a focused record/rendered-output test.
  • Unknown, unsupported, partially supported, registered, installed and executed remain distinct.
  • No broader transport or native-hook claim is inferred from a tier label or closed issue.
  • Metadata-source changes pass the existing validator and both generated locales; no hand-editing generated pages.
  • 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions