You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
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
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:
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.
⛔ Not a claim about the other 138 CONFIRMED candidates the same report lists across 47 namespaces. Only this namespace was looked at.
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.
⭐ ⚠️按全限定键删,这是硬要求,卡片专门标了:"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 裸名去扫会连坐。
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.
Activity
os-zhuang commentedon Sep 5, 2026
分诊 —
domain:ui/priority:p3/pm:queue/finding/i18n锚定 (anchoring):删除落在
packages/i18n/src/locales/**⇒domain:ui(已发布库)。⭐ 在
origin/maina472b07上复核 —— 我重跑了那张表,而且它自带一个完美的对照按全限定键在
packages/+apps/(排除语言包目录)计数:⭐ 第五个键有文本足迹,前四个没有 —— 这正是卡片说的:
removeWidget的needs-review判定是子串驱动的(那两处是engine.inspector.dashboard.removeWidget,packages/app-shell/src/views/metadata-admin/i18n.ts里模块局部表的另一个键,dashboard.removeWidget只是它的后缀)。⇒ 同一次读里,四个零 + 一个非零 ⇒ 那四个零是读数,而第五个的非零恰好解释了它为什么被降级。这是本轮见过最自洽的一组测量之一。
定级理由
priority:p3:⭐ 卡片的两条"不主张"必须被遵守 —— 这是它最重要的部分
chatbot.tool.*的 28 个 CONFIRMED 全是活的 —— 因为 key 模板住在一个 helper 里,两条腿都看不见。⇒ CONFIRMED 这一档已知会整块出错。⛔ 所以接手者必须按卡片要求做每键确认(全限定清扫 + 点亮的对照 + 删除后
check:i18n-keys保持绿),⛔ 不能因为"报告说 confirmed"就直接删。⭐ 好消息是:本席上面重跑的那组数字就是那个确认的一半(全限定、带对照、四个零)。剩下的是跑一次删除后的门禁。
定型:清理,不踩 manual floor
patchchangeset。⛔ 给执行席的边界
all-locales-key-parity是抓漏包的门),加一条负向钉子,@object-ui/i18n的patchchangeset —— 形状已由六个先例定死([finding] The wholereport.editor.*namespace — 106 keys × 10 packs — has no consumer left; the report editor it labelled became the spec-driven inspector #4145 / [finding]common.searchhas 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=offrenders the marketplace as a red load-failure with wrong guidance, and the home page still promotes the marketplace entry #5504 / finding(i18n):appDesigner.fieldDesigner.formulais now a dead key — 10 locale packs plus the designer defaults map, zero call sites #6310 + PR refactor(i18n): retire the deaddashboard.noRowsanddashboard.noDataAvailablekeys #7573)。dashboard.addWidgetand friends are short names, and a bare-name sweep is exactly how a live key in another namespace goes with them." —— 而removeWidget的那两处命中就是这个陷阱的活样本。⛔ 用addWidget裸名去扫会连坐。dashboard.removeWidget。它是needs-review且原因已查明(子串),但卡片没有断言它是死的 —— 它可能真的有读者。要删就单独确认。⛔ 分诊席不认领、不派单、不写码。
Generated by Claude Code
objectstack-fleet commentedon Sep 24, 2026
Closed
not_planned— UI closure batch 3 item 5 · maintainer 「同意」 (chat, director seat summon #29,session_01EcrTi7s5oDYPHS4Pi7h31d) 2026-09-24T07:07ZThis is the same class as objectui#4730, closed
not_plannedin 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), andscripts/check-i18n-dead-keys.mjsregenerates the list on demand for any seat editing the namespace. Carrier: none (承接者:无). Reopening is free.Generated by Claude Code