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.
| name |
files |
sites |
named by |
ActionContext |
2 |
packages/core/src/actions/ActionRunner.ts · packages/types/src/ui-action.ts |
|
ActionResult |
2 |
packages/core/src/actions/ActionRunner.ts · packages/types/src/ui-action.ts |
|
ActionSchema |
2 |
packages/types/src/crud.ts · packages/types/src/ui-action.ts |
|
AggregationConfig |
2 |
packages/plugin-grid/src/useGroupedData.ts · packages/types/src/data-protocol.ts |
|
AppShellProps |
2 |
packages/app-shell/src/types.ts · packages/layout/src/AppShell.tsx |
|
BreadcrumbItem |
2 |
packages/types/src/data-display.ts · packages/types/src/navigation.ts |
|
BreadcrumbSchema |
2 |
packages/types/src/data-display.ts · packages/types/src/navigation.ts |
|
CalendarEvent |
2 |
packages/plugin-calendar/src/index.tsx · packages/types/src/complex.ts |
#5044 (ruled deprecation shim) |
CalendarSchema |
2 |
packages/plugin-calendar/src/ObjectCalendar.tsx · packages/types/src/form.ts |
|
ChatMessage |
2 |
packages/plugin-chatbot/src/ChatbotEnhanced.tsx · packages/types/src/complex.ts |
|
ChatToolInvocation |
2 |
packages/plugin-chatbot/src/ChatbotEnhanced.tsx · packages/types/src/complex.ts |
|
ComboboxOption |
2 |
packages/components/src/custom/combobox.tsx · packages/types/src/form.ts |
|
ComponentConfig |
2 |
packages/core/src/registry/Registry.ts · packages/types/src/base.ts |
|
ComponentMeta |
2 |
packages/core/src/registry/Registry.ts · packages/types/src/base.ts |
|
ConditionalFormattingRule |
3 |
packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/types/src/objectql.ts |
|
ConfirmDialogState |
2 |
packages/app-shell/src/views/ActionConfirmDialog.tsx · packages/plugin-designer/src/hooks/useConfirmDialog.ts |
|
ConnectionState |
2 |
packages/collaboration/src/useRealtimeSubscription.ts · packages/data-objectstack/src/index.ts |
|
DataSource |
2 |
packages/app-shell/src/types.ts · packages/types/src/data.ts |
|
Diagnostic |
3 |
packages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts · packages/cli/src/commands/doctor.ts · packages/sdui-parser/src/types.ts |
|
DiagnosticLevel |
2 |
packages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts · packages/cli/src/commands/doctor.ts |
|
DomProps |
2 |
packages/core/src/utils/dom-props.ts · packages/fields/src/widgets/toDomProps.ts |
|
FilterBuilderCondition |
2 |
packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts |
|
FilterBuilderOperator |
2 |
packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts |
|
FilterGroup |
2 |
packages/components/src/custom/filter-builder.tsx · packages/types/src/complex.ts |
|
FormFieldSpec |
2 |
packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts |
|
FormSectionSpec |
2 |
packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts |
|
FormViewSpec |
2 |
packages/app-shell/src/views/metadata-admin/form-spec.ts · packages/react/src/spec-bridge/bridges/form-view.ts |
|
KanbanCard |
4 |
packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts |
#6155 |
KanbanColumn |
4 |
packages/plugin-kanban/src/KanbanEnhanced.tsx · packages/plugin-kanban/src/KanbanImpl.tsx · packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts |
|
KanbanSchema |
2 |
packages/plugin-kanban/src/types.ts · packages/types/src/complex.ts |
#6172 |
MarkdownSchema |
2 |
packages/plugin-markdown/src/types.ts · packages/types/src/data-display.ts |
#6172 |
MenuItem |
2 |
packages/types/src/app.ts · packages/types/src/overlay.ts |
|
MetadataTypeStatus |
2 |
packages/app-shell/src/providers/MetadataProvider.tsx · packages/react/src/context/AppShellContext.tsx |
|
NamedActionDef |
2 |
packages/plugin-grid/src/resolveBulkActions.ts · packages/plugin-grid/src/resolveLegacyRowActions.ts |
|
OrgTranslate |
2 |
packages/app-shell/src/console/organizations/orgErrorMessage.ts · packages/app-shell/src/console/organizations/orgRoleLabel.ts |
|
PageHeaderComponentProps |
2 |
packages/app-shell/src/layout/PageHeader.tsx · packages/layout/src/PageHeader.tsx |
|
RecordDetailDrawerProps |
2 |
packages/plugin-dashboard/src/RecordDetailDrawer.tsx · packages/plugin-detail/src/RecordDetailDrawer.tsx |
|
SchemaNode |
2 |
packages/sdui-parser/src/types.ts · packages/types/src/base.ts |
|
ThemeProviderProps |
2 |
packages/providers/src/types.ts · packages/react/src/context/ThemeContext.tsx |
|
TranslateFn |
3 |
packages/app-shell/src/providers/saveAdvisoryToast.ts · packages/app-shell/src/providers/writeWarningToast.ts · packages/fields/src/widgets/file-size-guard.ts |
|
UndoRedoState |
2 |
packages/plugin-designer/src/hooks/useUndoRedo.ts · packages/types/src/ui-action.ts |
|
UserDataAdapter |
2 |
packages/app-shell/src/context/UserStateAdapters.tsx · packages/data-objectstack/src/userState.ts |
|
ValidationFunction |
2 |
packages/types/src/data-protocol.ts · packages/types/src/field-types.ts |
|
VersionEntry |
2 |
packages/collaboration/src/useConflictResolution.ts · packages/plugin-designer/src/components/VersionHistory.tsx |
|
ViewSwitcherProps |
2 |
packages/plugin-list/src/ViewSwitcher.tsx · packages/plugin-view/src/ViewSwitcher.tsx |
|
ViewType |
2 |
packages/plugin-list/src/ViewSwitcher.tsx · packages/types/src/views.ts |
|
Two of them collide inside packages/types itself — ActionSchema (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
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
79ebf30d1byscripts/__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 atype-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
FormFieldis already clean — one declaration,packages/types/src/form.ts:911. finding(types): three more type names are declared twice with disagreeing shapes —FormField,MarkdownSchema,KanbanSchema— and one doc assertsFormFieldis declared once #6172 cites it; that instance is done.KanbanColumncollides across the exact same four files asKanbanCard, and no card mentions it. finding(types):KanbanCard/KanbanColumnare declared four times in this tree and the published copies disagree (cardsvsitems,badgesvslabels) #6155 measuredKanbanCard ×4; whoever takes that one is standing in front of the second half already.The population
export interface/export type/export enumdeclarations, plusexport type { A as X }aliases, in tracked.ts/.tsxunder a non-private package'ssrc/(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.ActionContextpackages/core/src/actions/ActionRunner.ts·packages/types/src/ui-action.tsActionResultpackages/core/src/actions/ActionRunner.ts·packages/types/src/ui-action.tsActionSchemapackages/types/src/crud.ts·packages/types/src/ui-action.tsAggregationConfigpackages/plugin-grid/src/useGroupedData.ts·packages/types/src/data-protocol.tsAppShellPropspackages/app-shell/src/types.ts·packages/layout/src/AppShell.tsxBreadcrumbItempackages/types/src/data-display.ts·packages/types/src/navigation.tsBreadcrumbSchemapackages/types/src/data-display.ts·packages/types/src/navigation.tsCalendarEventpackages/plugin-calendar/src/index.tsx·packages/types/src/complex.tsCalendarSchemapackages/plugin-calendar/src/ObjectCalendar.tsx·packages/types/src/form.tsChatMessagepackages/plugin-chatbot/src/ChatbotEnhanced.tsx·packages/types/src/complex.tsChatToolInvocationpackages/plugin-chatbot/src/ChatbotEnhanced.tsx·packages/types/src/complex.tsComboboxOptionpackages/components/src/custom/combobox.tsx·packages/types/src/form.tsComponentConfigpackages/core/src/registry/Registry.ts·packages/types/src/base.tsComponentMetapackages/core/src/registry/Registry.ts·packages/types/src/base.tsConditionalFormattingRulepackages/plugin-kanban/src/KanbanEnhanced.tsx·packages/plugin-kanban/src/KanbanImpl.tsx·packages/types/src/objectql.tsConfirmDialogStatepackages/app-shell/src/views/ActionConfirmDialog.tsx·packages/plugin-designer/src/hooks/useConfirmDialog.tsConnectionStatepackages/collaboration/src/useRealtimeSubscription.ts·packages/data-objectstack/src/index.tsDataSourcepackages/app-shell/src/types.ts·packages/types/src/data.tsDiagnosticpackages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts·packages/cli/src/commands/doctor.ts·packages/sdui-parser/src/types.tsDiagnosticLevelpackages/app-shell/src/views/metadata-admin/previews/simulator/flow-sim-types.ts·packages/cli/src/commands/doctor.tsDomPropspackages/core/src/utils/dom-props.ts·packages/fields/src/widgets/toDomProps.tsFilterBuilderConditionpackages/components/src/custom/filter-builder.tsx·packages/types/src/complex.tsFilterBuilderOperatorpackages/components/src/custom/filter-builder.tsx·packages/types/src/complex.tsFilterGrouppackages/components/src/custom/filter-builder.tsx·packages/types/src/complex.tsFormFieldSpecpackages/app-shell/src/views/metadata-admin/form-spec.ts·packages/react/src/spec-bridge/bridges/form-view.tsFormSectionSpecpackages/app-shell/src/views/metadata-admin/form-spec.ts·packages/react/src/spec-bridge/bridges/form-view.tsFormViewSpecpackages/app-shell/src/views/metadata-admin/form-spec.ts·packages/react/src/spec-bridge/bridges/form-view.tsKanbanCardpackages/plugin-kanban/src/KanbanEnhanced.tsx·packages/plugin-kanban/src/KanbanImpl.tsx·packages/plugin-kanban/src/types.ts·packages/types/src/complex.tsKanbanColumnpackages/plugin-kanban/src/KanbanEnhanced.tsx·packages/plugin-kanban/src/KanbanImpl.tsx·packages/plugin-kanban/src/types.ts·packages/types/src/complex.tsKanbanSchemapackages/plugin-kanban/src/types.ts·packages/types/src/complex.tsMarkdownSchemapackages/plugin-markdown/src/types.ts·packages/types/src/data-display.tsMenuItempackages/types/src/app.ts·packages/types/src/overlay.tsMetadataTypeStatuspackages/app-shell/src/providers/MetadataProvider.tsx·packages/react/src/context/AppShellContext.tsxNamedActionDefpackages/plugin-grid/src/resolveBulkActions.ts·packages/plugin-grid/src/resolveLegacyRowActions.tsOrgTranslatepackages/app-shell/src/console/organizations/orgErrorMessage.ts·packages/app-shell/src/console/organizations/orgRoleLabel.tsPageHeaderComponentPropspackages/app-shell/src/layout/PageHeader.tsx·packages/layout/src/PageHeader.tsxRecordDetailDrawerPropspackages/plugin-dashboard/src/RecordDetailDrawer.tsx·packages/plugin-detail/src/RecordDetailDrawer.tsxSchemaNodepackages/sdui-parser/src/types.ts·packages/types/src/base.tsThemeProviderPropspackages/providers/src/types.ts·packages/react/src/context/ThemeContext.tsxTranslateFnpackages/app-shell/src/providers/saveAdvisoryToast.ts·packages/app-shell/src/providers/writeWarningToast.ts·packages/fields/src/widgets/file-size-guard.tsUndoRedoStatepackages/plugin-designer/src/hooks/useUndoRedo.ts·packages/types/src/ui-action.tsUserDataAdapterpackages/app-shell/src/context/UserStateAdapters.tsx·packages/data-objectstack/src/userState.tsValidationFunctionpackages/types/src/data-protocol.ts·packages/types/src/field-types.tsVersionEntrypackages/collaboration/src/useConflictResolution.ts·packages/plugin-designer/src/components/VersionHistory.tsxViewSwitcherPropspackages/plugin-list/src/ViewSwitcher.tsx·packages/plugin-view/src/ViewSwitcher.tsxViewTypepackages/plugin-list/src/ViewSwitcher.tsx·packages/types/src/views.tsTwo of them collide inside
packages/typesitself —ActionSchema(crud.tsvsui-action.ts) andBreadcrumbItem/BreadcrumbSchema(data-display.tsvsnavigation.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 AppMenuItematpackages/types/src/index.ts:59andValidationFunction as FieldValidationFunctionat:429are 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 fromKNOWN_COLLISIONSin the same PR.Batching is the PM's call; the table sorts naturally by owning package.
Reproduce
Refs: #6273 (the gate) · PR #6348 · #6172 · #6155 · #6086 · #5044