Skip to content

Plugin-manifest contributes.themes declares a theme-contribution channel nothing reads — same declared-but-unenforced shape as the retired stack themes carrier #10627

Description

@os-elon

Found while executing #10485 (retirement of the defineStack({ themes }) carrier and ThemeSchema). Filed, not fixed — a separate declared surface, out of that card's ruled scope.

What is declared

packages/spec/src/kernel/manifest.zod.ts (~line 351, inside the plugin-manifest contributes block):

/** Register Custom Themes. */themes: z.array(z.object({id: z.string(),label: z.string(),path: z.string(),})).optional().describe('Theme contributions'),

A plugin manifest may declare theme contributions by id/label/path.

What is measured

Why filed

ADR-0049 enforce-or-remove: a declared contribution channel with no reader is the same silent no-op shape #10485 just removed one level up. Needs its own liveness verdict on the whole contributes block (the kinds/menus/translations/actions siblings may or may not have readers — not measured here) before a removal card is cut.

Related: #10485 (stack themes carrier retirement, ruled B 2026-08-21); the objectui-side ThemeComponentSchema dead surface is tracked separately on that repo per the same ruling.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions