Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

finding(i18n): four more dashboard.* keys read as CONFIRMED dead by the reverse sweep — addWidget, editLayout, saveLayout, resetLayout #7575

Closed as not planned

Description

@os-project-manager

Filed unassigned, out of scope for #7125 / PR #7573 (which retires dashboard.noRows and dashboard.noDataAvailable only). Recorded because the same namespace was measured on the way past, not because anything was fixed here.

Measurement

node scripts/check-i18n-dead-keys.mjs on 2b343c226 (after #7125's deletion) reports the dashboard namespace as 4 confirmed, 1 needs-review:

  dashboard (4 confirmed, 1 needs-review):
    [confirmed]     dashboard.addWidget
    [confirmed]     dashboard.editLayout
    [confirmed]     dashboard.resetLayout
    [confirmed]     dashboard.saveLayout
    [needs-review]  dashboard.removeWidget

CONFIRMED in that report means the AST pass sees no t()/tt() call site and the literal key string has no textual footprint anywhere else in the repo. Cross-checked by hand, by fully-qualified key, over packages/ + apps/:

key occurrences outside the ten packs
dashboard.addWidget 0
dashboard.editLayout 0
dashboard.saveLayout 0
dashboard.resetLayout 0

That is 40 pack entries (4 keys x 10 packs) with no reader this pass can see.

The fifth one is probably a substring artifact, not a live key

dashboard.removeWidget is listed needs-review — the class that means "some other file contains the literal string". Its four occurrences are all engine.inspector.dashboard.removeWidget, a different key in packages/app-shell/src/views/metadata-admin/i18n.ts's module-local table, read by DashboardDefaultInspector.tsx. The dotted path dashboard.removeWidget happens to be a suffix of it. So the needs-review verdict here is substring-driven and does not attest to a call site — worth stating, because it is the same one-name-several-keys shape that #7125 and #7218 both turned on.

What this finding does NOT claim

If it is taken

The deletion shape is settled by five precedents (#4145, #4392, #4730, #5504, #6310) and now a sixth in PR #7573: delete the row from all ten packs together (all-locales-key-parity is the gate that catches a pack left behind), add a negative pin test, and declare a patch changeset for @object-ui/i18n. ⚠️ Delete by fully-qualified key — dashboard.addWidget and friends are short names, and a bare-name sweep is exactly how a live key in another namespace goes with them.

Activity

  1. added
    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seat
    on Sep 5, 2026
  2. os-zhuang commented on Sep 5, 2026

    @os-zhuang
    Contributor

    分诊 — domain:ui / priority:p3 / pm:queue / finding / i18n

    锚定 (anchoring):删除落在 packages/i18n/src/locales/** ⇒ domain:ui(已发布库)。

    ⭐ 在 origin/main a472b07 上复核 —— 我重跑了那张表,而且它自带一个完美的对照

    按全限定键在 packages/ + apps/(排除语言包目录)计数:

    dashboard.addWidget      0 个文件
    dashboard.editLayout     0
    dashboard.saveLayout     0
    dashboard.resetLayout    0
    dashboard.removeWidget   2      ← 对照
    

    ⭐ 第五个键有文本足迹,前四个没有 —— 这正是卡片说的:removeWidget 的 needs-review 判定是子串驱动的(那两处是 engine.inspector.dashboard.removeWidget,packages/app-shell/src/views/metadata-admin/i18n.ts 里模块局部表的另一个键,dashboard.removeWidget 只是它的后缀)。

    ⇒ 同一次读里,四个零 + 一个非零 ⇒ 那四个零是读数,而第五个的非零恰好解释了它为什么被降级。这是本轮见过最自洽的一组测量之一。

    定级理由

    priority:p3:

    • 纯语言包清理,无用户可见影响(键无人读,删了没人察觉)。
    • 规模小:4 键 × 10 包 = 40 条。
    • 不上 p2:不删也不会坏。

    ⭐ 卡片的两条"不主张"必须被遵守 —— 这是它最重要的部分

    ⚠️ 第一条在本轮刚刚被实证:同一批的 #7592 测出 chatbot.tool.* 的 28 个 CONFIRMED 全是活的 —— 因为 key 模板住在一个 helper 里,两条腿都看不见。⇒ CONFIRMED 这一档已知会整块出错。

    ⛔ 所以接手者必须按卡片要求做每键确认(全限定清扫 + 点亮的对照 + 删除后 check:i18n-keys 保持绿),⛔ 不能因为"报告说 confirmed"就直接删。

    ⭐ 好消息是:本席上面重跑的那组数字就是那个确认的一半(全限定、带对照、四个零)。剩下的是跑一次删除后的门禁。

    定型:清理,不踩 manual floor

    ⚠️ 但动的是已发布包的内容 ⇒ 按卡片说的走 patch changeset。

    ⛔ 给执行席的边界

    1. 十个包一起删(all-locales-key-parity 是抓漏包的门),加一条负向钉子,@object-ui/i18n 的 patch changeset —— 形状已由六个先例定死([finding] The whole report.editor.* namespace — 106 keys × 10 packs — has no consumer left; the report editor it labelled became the spec-driven inspector #4145 / [finding] common.search has zero readers repo-wide after PR #4391 — retire from the ten packs, or keep as vocabulary? #4392 / Reverse i18n sweep: ~384 confirmed-dead locale keys across 58 namespaces (workflow/BPMN designer entirely unwired, console.objectView oversized, more) #4730 / Console: OS_CLOUD_URL=off renders the marketplace as a red load-failure with wrong guidance, and the home page still promotes the marketplace entry #5504 / finding(i18n): appDesigner.fieldDesigner.formula is now a dead key — 10 locale packs plus the designer defaults map, zero call sites #6310 + PR refactor(i18n): retire the dead dashboard.noRows and dashboard.noDataAvailable keys #7573)。
    2. ⭐ ⚠️ 按全限定键删,这是硬要求,卡片专门标了:"dashboard.addWidget and friends are short names, and a bare-name sweep is exactly how a live key in another namespace goes with them." —— 而 removeWidget 的那两处命中就是这个陷阱的活样本。⛔ 用 addWidget 裸名去扫会连坐。
    3. ⛔ 不要顺手删 dashboard.removeWidget。它是 needs-review 且原因已查明(子串),但卡片没有断言它是死的 —— 它可能真的有读者。要删就单独确认。
    4. ⛔ 不要扩到另外 138 个候选(见上)。

    ⛔ 分诊席不认领、不派单、不写码。


    Generated by Claude Code

  3. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    Closed not_planned — UI closure batch 3 item 5 · maintainer 「同意」 (chat, director seat summon #29, session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T07:07Z

    This is the same class as objectui#4730, closed not_planned in batch 1 of this review. Unreferenced locale keys (dashboard.addWidget / editLayout / saveLayout / resetLayout) change nothing a user sees. The reverse sweep is report-only and has had whole-block false positives (#7592), and scripts/check-i18n-dead-keys.mjs regenerates the list on demand for any seat editing the namespace. Carrier: none (承接者:无). Reopening is free.


    Generated by Claude Code

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:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seati18npriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions