Skip to content

CLICommandContributionSchema is an orphan export after the contributes.commands tombstone — retire or re-document #12007

Description

@claude

Found while executing #10724 (the contributes dead-member retirement; family PR carries the tombstones). Filed unassigned — out of that card's scope.

What

CLICommandContributionSchema / CLICommandContribution (and the co-located docblock) in packages/spec/src/kernel/cli-extension.zod.ts:66-101 describe a "CLI Command Contribution declaration in the manifest", stating the schema "is retained for backward compatibility and for describing command metadata in plugin manifests".

After #10724, manifest.contributes.commands is a retiredKey() tombstone — there is no manifest surface these entries can legally appear in, so the exported schema now advertises a shape whose only declared carrier rejects it.

Evidence

  • Zero code consumers outside spec: git grep -l CLICommandContribution returns only spec's own test, spec's generated artifacts (api-surface/kernel.json, export-origins/kernel.json) and the two generated docs pages (content/docs/references/index.mdx, references/kernel/cli-extension.mdx).
  • It was never referenced by manifest.zod.ts either — the manifest's inline commands item schema was an independent duplicate (now tombstoned).
  • The exported-schema-with-no-consumer shape is the recorded orphan-value-schema class (the PerformanceConfigSchema precedent): an exported schema with no consumer reads as a capability.

Decision needed

Retire the two exports (api-surface removal, RETIRED_DEFS_BY_MAJOR entry, changeset) or re-document them as the historical record of the oclif migration (the module docblock's migration prose at cli-extension.zod.ts:58-63 is load-bearing — it is cited by the commands tombstone — so a full-file deletion is NOT the obvious move). OclifPluginConfigSchema in the same file describes the live package.jsonoclif section and is not part of this finding.


Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions