Skip to content

46 exported type names carry a second authority — 42 of them are named by no family card #6349

Description

@os-warren

Filed unassigned out of #6273, whose gate re-measured the collision population the 2026-08-25 family ruling (decision 甲/A1 on #6172) is about. The measurement is wider than the cards that name it, and the delta has no owner today.

The fact

Measured on 79ebf30d1 by scripts/__tests__/one-authority-per-exported-name-6273.test.ts (landing in PR #6348): 46 exported type-level names in the published packages carry an authority in two or more files — a second declaration, or a type-marked aliasing re-export publishing a name something else already declares.

The family cards name four of them. 42 are named by nobody.

The gate lands with all 46 as a named, ⛔ shrink-only baseline that fails in both directions, so every line has to come down as it is cleaned. Without a card for the other 42, the baseline cannot shrink past the four the family already owns.

Two facts worth separating out

The population

export interface / export type / export enum declarations, plus export type { A as X } aliases, in tracked .ts/.tsx under a non-private package's src/ (tests, specs and stories excluded). Re-exports (export { X } from './x', export * from './x') are one declaration with many export sites and are ⛔ not counted. Derivation, bounds and controls are documented in the gate's header.

namefilessitesnamed by
ActionContext2packages/core/src/actions/ActionRunner.ts · packages/types/src/ui-action.ts
ActionResult2packages/core/src/actions/ActionRunner.ts · packages/types/src/ui-action.ts
ActionSchema2packages/types/src/crud.ts · packages/types/src/ui-action.ts
AggregationConfig2packages/plugin-grid/src/useGroupedData.ts · packages/types/src/data-protocol.ts
AppShellProps2packages/app-shell/src/types.ts · packages/layout/src/AppShell.tsx
BreadcrumbItem2packages/types/src/data-display.ts · packages/types/src/navigation.ts
BreadcrumbSchema2packages/types/src/data-display.ts · packages/types/src/navigation.ts
CalendarEvent2packages/plugin-calendar/src/index.tsx · packages/types/src/complex.ts#5044 (ruled deprecation shim)
CalendarSchema2packages/plugin-calendar/src/ObjectCalendar.tsx · packages/types/src/form.ts
ChatMessage2packages/plugin-chatbot/src/ChatbotEnhanced.tsx · packages/types/src/complex.ts
ChatToolInvocation2packages/plugin-chatbot/src/ChatbotEnhanced.tsx · packages/types/src/complex.ts
ComboboxOption2packages/components/src/custom/combobox.tsx · packages/types/src/form.ts
ComponentConfig2packages/core/src/registry/Registry.ts · packages/types/src/base.ts
ComponentMeta2packages/core/src/registry/Registry.ts · packages/types/src/base.ts
ConditionalFormattingRule3packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/types/src/objectql.ts
ConfirmDialogState2packages/app-shell/src/views/ActionConfirmDialog.tsx · packages/plugin-designer/src/hooks/useConfirmDialog.ts
ConnectionState2packages/collaboration/src/useRealtimeSubscription.ts · packages/data-objectstack/src/index.ts
DataSource2packages/app-shell/src/types.ts · packages/types/src/data.ts
Diagnostic3packages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts · packages/cli/src/commands/doctor.ts · packages/sdui-parser/src/types.ts
DiagnosticLevel2packages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts · packages/cli/src/commands/doctor.ts
DomProps2packages/core/src/utils/dom-props.ts · packages/fields/src/widgets/toDomProps.ts
FilterBuilderCondition2packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts
FilterBuilderOperator2packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts
FilterGroup2packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts
FormFieldSpec2packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts
FormSectionSpec2packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts
FormViewSpec2packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts
KanbanCard4packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts#6155
KanbanColumn4packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts
KanbanSchema2packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts#6172
MarkdownSchema2packages/plugin-markdown/src/types.ts · packages/types/src/data-display.ts#6172
MenuItem2packages/types/src/app.ts · packages/types/src/overlay.ts
MetadataTypeStatus2packages/app-shell/src/providers/MetadataProvider.tsx · packages/react/src/context/AppShellContext.tsx
NamedActionDef2packages/plugin-grid/src/resolveBulkActions.ts · packages/plugin-grid/src/resolveLegacyRowActions.ts
OrgTranslate2packages/app-shell/src/console/organizations/orgErrorMessage.ts · packages/app-shell/src/console/organizations/orgRoleLabel.ts
PageHeaderComponentProps2packages/app-shell/src/layout/PageHeader.tsx · packages/layout/src/PageHeader.tsx
RecordDetailDrawerProps2packages/plugin-dashboard/src/RecordDetailDrawer.tsx · packages/plugin-detail/src/RecordDetailDrawer.tsx
SchemaNode2packages/sdui-parser/src/types.ts · packages/types/src/base.ts
ThemeProviderProps2packages/providers/src/types.ts · packages/react/src/context/ThemeContext.tsx
TranslateFn3packages/app-shell/src/providers/saveAdvisoryToast.ts · packages/app-shell/src/providers/writeWarningToast.ts · packages/fields/src/widgets/file-size-guard.ts
UndoRedoState2packages/plugin-designer/src/hooks/useUndoRedo.ts · packages/types/src/ui-action.ts
UserDataAdapter2packages/app-shell/src/context/UserStateAdapters.tsx · packages/data-objectstack/src/userState.ts
ValidationFunction2packages/types/src/data-protocol.ts · packages/types/src/field-types.ts
VersionEntry2packages/collaboration/src/useConflictResolution.ts · packages/plugin-designer/src/components/VersionHistory.tsx
ViewSwitcherProps2packages/plugin-list/src/ViewSwitcher.tsx · packages/plugin-view/src/ViewSwitcher.tsx
ViewType2packages/plugin-list/src/ViewSwitcher.tsx · packages/types/src/views.ts

Two of them collide inside packages/types itselfActionSchema (crud.ts vs ui-action.ts) and BreadcrumbItem / BreadcrumbSchema (data-display.ts vs navigation.ts) — where a consumer importing from the package barrel has no way to say which one it meant except by whichever one the barrel happens to re-export.

The remedy, which is the same for every line

Pick the ONE authority, re-point the others at it (export type { X } from '<the-owner>' is a re-export, not a second declaration, and the gate does not count it). Where the two shapes really are different things, rename one — MenuItem as AppMenuItem at packages/types/src/index.ts:59 and ValidationFunction as FieldValidationFunction at :429 are this repo's worked examples, and the 2026-08-19 ruling on #5044 is the precedent for choosing which name survives. Then delete the line from KNOWN_COLLISIONS in the same PR.

Batching is the PM's call; the table sorts naturally by owning package.

Reproduce

pnpm exec vitest run --project unit scripts/__tests__/one-authority-per-exported-name-6273.test.ts

Refs: #6273 (the gate) · PR #6348 · #6172 · #6155 · #6086 · #5044

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:queue

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions