Surfaced while executing #7344 (the per-key consumer measurement for AppActionSchema.onClick), measured on origin/main d88e20f55. Filed unassigned; observation class (dead declared surface), not a defect card — triage decides.
What was measured
packages/types/src/app.ts declares AppComponentSchema.actions?: AppAction[] ("Global Actions (User Profile, Settings, etc)"), and packages/types/src/zod/app.zod.ts mirrors it as AppActionSchema (type: 'button' | 'dropdown' | 'user', label, icon, avatar, description, items, shortcut, variant, size).
- Zero references to
AppAction outside packages/types (git grep -nE "\bAppAction\b" -- packages apps examples ':!packages/types', docs and changelogs excluded).
- Every consumer of
AppComponentSchema / AppSchema (12 files: layout/src/AppShell.tsx, AppSchemaRenderer.tsx, NavigationRenderer.tsx, app-shell UnifiedSidebar.tsx, useNavActionDispatch.ts, the metadata-admin AppPreview.tsx / AppNavCanvas.tsx / clientValidation.ts, studio-design/*, console AppManagementPage.tsx) reads navigation, areas, layout, theme — none reads .actions. Control on the same files: AppSchemaRenderer.tsx reads navigation 25 times.
- The only
.actions readers in app-shell are objectDef.actions (server-declared OBJECT actions — DeclaredActionsBar, ObjectView, InterfaceListPage) and notification.actions; header-bar.tsx's schema.actions is HeaderBarSchema, a different declaration.
So a value authored under actions[] on an app node is parsed, kept, and rendered by nothing.
Why it matters
content/docs/core/app-schema.mdx ("Global Actions") documents the array as "global toolbar buttons" with a typed const crm: AppComponentSchema example that carries one — an author copying the page gets a green parse and no button. PR #7468 (#7344) retired the array's onClick member (the handler-expression string dialect, #6182 ruling) and edited that page's AppAction row and example line only as far as two gates forced; the rest of the section still teaches the array.
Same class as the liveness findings under ADR-0049 enforce-or-remove (declared but unenforced, zero readers). Not part of #7344's population (that card is the handler keys, not the container).
Options for triage (not a recommendation — this is a finding)
Dedupe: MCP search_issues (REST search is 403 on this session) for "AppComponentSchema actions AppAction global toolbar actions no reader app-shell layout dead declared key" → 28 results, none about this container (nearest: #4841 app-shell schema-path slots, #7437 inert action:button bag, #4418 action renderers vs ActionSchema); control query on the #6182 title wording hit #6182 / #7344 / #5927.
Refs: #7344 · PR #7468 · #6182 · #4895 (the retirement route precedent) · ADR-0049.
Surfaced while executing #7344 (the per-key consumer measurement for
AppActionSchema.onClick), measured onorigin/maind88e20f55. Filed unassigned; observation class (dead declared surface), not a defect card — triage decides.What was measured
packages/types/src/app.tsdeclaresAppComponentSchema.actions?: AppAction[]("Global Actions (User Profile, Settings, etc)"), andpackages/types/src/zod/app.zod.tsmirrors it asAppActionSchema(type: 'button' | 'dropdown' | 'user',label,icon,avatar,description,items,shortcut,variant,size).AppActionoutsidepackages/types(git grep -nE "\bAppAction\b" -- packages apps examples ':!packages/types', docs and changelogs excluded).AppComponentSchema/AppSchema(12 files:layout/src/AppShell.tsx,AppSchemaRenderer.tsx,NavigationRenderer.tsx, app-shellUnifiedSidebar.tsx,useNavActionDispatch.ts, the metadata-adminAppPreview.tsx/AppNavCanvas.tsx/clientValidation.ts,studio-design/*, consoleAppManagementPage.tsx) readsnavigation,areas,layout,theme— none reads.actions. Control on the same files:AppSchemaRenderer.tsxreadsnavigation25 times..actionsreaders in app-shell areobjectDef.actions(server-declared OBJECT actions —DeclaredActionsBar,ObjectView,InterfaceListPage) andnotification.actions;header-bar.tsx'sschema.actionsisHeaderBarSchema, a different declaration.So a value authored under
actions[]on an app node is parsed, kept, and rendered by nothing.Why it matters
content/docs/core/app-schema.mdx("Global Actions") documents the array as "global toolbar buttons" with a typedconst crm: AppComponentSchemaexample that carries one — an author copying the page gets a green parse and no button. PR #7468 (#7344) retired the array'sonClickmember (the handler-expression string dialect, #6182 ruling) and edited that page'sAppActionrow and example line only as far as two gates forced; the rest of the section still teaches the array.Same class as the liveness findings under ADR-0049 enforce-or-remove (declared but unenforced, zero readers). Not part of #7344's population (that card is the handler keys, not the container).
Options for triage (not a recommendation — this is a finding)
AppComponentSchema.actions/AppAction/AppActionSchemaon both faces (tombstone + docs section removed), the finding(docs/types):content/docs/blocks/block-schema.mdx教的整族 block 词汇表(含节点位置的slot)没有任何 renderer #4895 route.actions[]in the app-shell chrome header (the documented intent) — a feature card, needs a real business pull.Dedupe: MCP
search_issues(REST search is 403 on this session) for "AppComponentSchema actions AppAction global toolbar actions no reader app-shell layout dead declared key" → 28 results, none about this container (nearest: #4841 app-shell schema-path slots, #7437 inertaction:buttonbag, #4418 action renderers vsActionSchema); control query on the #6182 title wording hit #6182 / #7344 / #5927.Refs: #7344 · PR #7468 · #6182 · #4895 (the retirement route precedent) · ADR-0049.