You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Plugin-manifest contributes.themes declares a theme-contribution channel nothing reads — same declared-but-unenforced shape as the retired stack themes carrier #10627
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):
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.
Found while executing #10485 (retirement of the
defineStack({ themes })carrier andThemeSchema). 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-manifestcontributesblock):A plugin manifest may declare theme contributions by
id/label/path.What is measured
themescontribution anywhere inpackages/core,packages/runtime,packages/rest,packages/services,packages/plugins(grep for.themesduring thedefineStack({ themes })is parsed, ingested and never applied — the last hop from a storedthemeitem to the theme engine does not exist #10485 sweep — the only hits were the stack carrier surfaces removed there).ThemeSchema(it points at a filepath, not an inline palette), sodefineStack({ themes })is parsed, ingested and never applied — the last hop from a storedthemeitem to the theme engine does not exist #10485 did not touch it — but with the stack carrier retired andthemeno longer a metadata kind in the URL-spelling contract, there is even less machinery apath-based theme contribution could feed.manifest.loadingblock was retired at docs/spec: PLUGIN_STANDARDS.md §5.1/§5.2/§5.4 把 Hot Reload 与 Plugin Isolation 标为 ✅,但 PluginHotReloadSchema / PluginSandboxingSchema 全仓零 runtime reader(ADR-0049) #4914 (ADR-0049; D3 entryplugin-manifest-loading-retired), so thiscontributesblock already has one recorded dead member.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
contributesblock (thekinds/menus/translations/actionssiblings may or may not have readers — not measured here) before a removal card is cut.Related: #10485 (stack
themescarrier retirement, ruled B 2026-08-21); the objectui-sideThemeComponentSchemadead surface is tracked separately on that repo per the same ruling.