Skip to content

finding(app-shell,fields,plugin-*): one narrowed-t shape is declared 11 times under 9 names — 8 of them invisible to the one-authority gate, which matches on NAME #8203

Description

@os-justin

Blocked-by: #8261

Filed unassigned and ungraded by the objectui#8165 dev seat as an out-of-scope finding. No domain:*, no priority, no pm:* — triage's.

The fact

One function shape — i18next's t narrowed to (key, options?) => string — is declared 11 times across 6 packages under 9 distinct names. Measured on 158d75bb3 with git grep over packages/ (the exported/local split cross-checked with a fixed-string control that fires):

site name exported?
packages/app-shell/src/providers/writeWarningToast.ts:26 TranslateFn yes — the one authority
packages/fields/src/widgets/file-size-guard.ts:26 TranslateFn yes
packages/app-shell/src/utils/managedByEmptyState.ts:37 TranslateFn no
packages/app-shell/src/preview/usePublishAllDrafts.ts:28 TranslateFn no — and drifted: the parameter is spelled opts, not options
packages/app-shell/src/console/organizations/orgErrorMessage.ts:61 OrgTranslate yes
packages/app-shell/src/console/ai/AiChatPage.tsx:2570 TranslationFn no
packages/plugin-chatbot/src/useAiApprovalsTranslation.ts:131 InboxTranslate yes
packages/plugin-detail/src/ActivityTimeline.tsx:49 ActivityTranslate no
packages/plugin-detail/src/PointInTimeRestore.tsx:37 RestoreTranslate no
packages/plugin-detail/src/RecordComments.tsx:25 CommentsTranslate no
packages/plugin-grid/src/useColumnSummary.ts:131 SummaryTranslate no

Ten of the eleven are byte-identical after the name; the eleventh (usePublishAllDrafts) differs only in the parameter's name.

Why this is a separate card, and why no gate reports it

scripts/__tests__/one-authority-per-exported-name-6273.test.ts is the recurrence guard for the objectui#6172 甲/A1 ruling, and it is doing exactly what it says: it reports a NAME carrying two authorities. Both of its stated bounds exclude most of the rows above, deliberately —

  • it counts exported type-level names only, which removes the seven local ones;
  • it groups by name, so a copy that was renamed on the way out is not a collision to it at all.

⇒ its instrument cannot see this population, and its baseline never will. This is not a defect in that gate and ⛔ not a request to widen it — its header already states "what the instrument cannot see". It is the observation that the collision it does report (TranslateFn) is the visible tip of a wider one.

What objectui#8165 could and could not do about it

objectui#8165 re-pointed saveAdvisoryToast.ts at writeWarningToast.ts and shrank the baseline entry by that site. It stopped at packages/fields/src/widgets/file-size-guard.ts, because the re-export remedy is dependency-illegal there: @object-ui/app-shell DEPENDS ON @object-ui/fields, so pointing fields at app-shell is a package cycle, and the name is on neither package's published face, so there is nothing to import either.

⇒ retiring the remaining copies means moving one declaration DOWN into a package they all depend on. Measured: all five packages above depend on @object-ui/i18n; four of the five depend on @object-ui/types (@object-ui/plugin-detail does not). So @object-ui/i18n is the only candidate home reachable from every site today.

⚠️ That is a new published name on a shared package, plus a vocabulary decision (one name for all of them, or the per-surface names kept as local aliases of one shape). Nobody has ruled on it, which is why this is filed rather than done.

Refs: objectui#8165 (the TranslateFn collision this was measured beside) · objectui#6172 (the one-authority ruling) · objectui#6349 (the name-collision batch) · scripts/__tests__/one-authority-per-exported-name-6273.test.ts


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:blockedpriority:p2tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions