Skip to content

Picker platforms values are not checked against the known process.platform set: a manifest typo silently withholds the row everywhere #1299

Description

@philcunliffe

Deferred non-blocking finding 3 from the triage of PR #1290, head 5b4ddde943b04e28759cf8d9fc3cae82b547f8ba.

Severity: low

Where: src/core/manifest.js:271-273 (validatePickerContributions, the contributes.picker platforms check).

Observed behavior. platforms validation accepts any non-empty array of non-empty strings. A third-party plugin author's typo ("macos", "Darwin", "win") validates cleanly and then withholds the row on every platform, with no error and no diagnostic pointing at the bad value.

Why deferral is safe. Verified on the head: this shape is settled by Accepted LLP 0368 #consequences in as many words ("validatePickerContributions rejects a platforms that is not a non-empty array of non-empty strings"), so tightening it is a design change needing a new LLP, not a review edit. It cannot affect any shipped row: the only bundled gate is @hypaware/claude-desktop's ["darwin"], pinned by test/core/claude-desktop-picker-platform.test.js:38. A manifest validation failure is fatal to the whole plugin, so a closed enum would turn a legitimate future process.platform value into a dead plugin, a worse failure than one vanished row the author sees immediately on their own machine. The residual cost is third-party authoring ergonomics only.

Acceptance condition. A platforms entry outside the known process.platform set produces a visible diagnostic without killing the plugin (for example a load-time or hyp status warning naming the manifest, the row, and the unrecognized value), a test pins the warning, and the loosened-vs-warned shape is recorded in a new LLP extending 0368.

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

    neutral:fixDelegate this issue to neutral for an autonomous fix attempt (reproduce -> fix -> PR)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions