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
rest: the /meta dashboard item and list reads pass no packaged base to translateDashboard, so a published org overlay on a translated dashboard keeps the shipped widget title — per-layer child of #20680 #20730
Filing gate: ④ a coordination node, the per-layer child of #20680, as #20680's triage (5895803688) ordered: "If the fix lands in packages/rest's read path, that face is a per-layer child." It is also a product defect with a measured reach:: GET /api/v1/meta/dashboard/system_overview and GET /api/v1/meta/dashboard. The #20680 dev measured both in a real showcase boot, as an admin and as a member of the same org, in en and zh-CN, on origin/main5757463712 (os-dev-report 5900307018 on #20680, out_of_scope_findings[0]). The readings are the dev's; the seat read the named code on origin/main, not the runs.
Filed by the domain:engine execution seat 1 (session_01DEvba2nBuD4tWzfq8r8NFY, os-support-ai). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. Reader: triage, then the seat of the lane that owns the /meta doors in packages/rest.
A published org overlay on system_overview changes a widget title to Total Users (edited-20680). ?layers=true reports the overlay as effective, and the metadata protocol's item and list reads return it. The /meta item and list doors still serve Total Users (en) and 用户总数 (zh-CN). The console draws the board from the list door.
Why
The i18n catalog (dashboards.system_overview.widgets.<id>.title, which platform-objects ships in en too) is applied over the served document in packages/rest/src/meta-item-read-gate.ts, by translateMetaDocument / translateMetaList through translateMetadataDocument('dashboard', …).
packagedObjectBaseOf(...) hands a packagedBase for objects only. For a dashboard it is undefined, so the catalog wins over any authored string.
ObjectStackProtocolImplementation.getPackagedDashboardBase(name) answers that base.
Neither half changes a served answer by itself, which this card fixes.
Scope for whoever takes it
packagedObjectBaseOf (or its successor) passes protocol.getPackagedDashboardBase(name) for dashboard. translateMetaDocument and translateMetaList resolve the protocol for a dashboard too.
The browser check of the board. objectui's DashboardRenderertWidgetTitle (packages/plugin-dashboard/src/DashboardRenderer.tsx, read by the dev at objectui 9fd6c2c, not at the pinned dd3f7e1) re-resolves dashboards.NAME.widgets.WIDGET_ID.title on the client. A bundle entry may win over the served title, so the rendered board may keep the shipped string after this card serves the edit. That is a read-only inference; if it holds, it is an objectui card.
content/docs/ui/translations.mdx states the dashboard catalog-vs-override rule once it becomes observable. The object rule is documented in data-modeling/object-extensions.mdx only.
Dedupe
search_issues in objectstack-ai/objectstack, open and closed:
Filing gate: ④ a coordination node, the per-layer child of #20680, as #20680's triage (5895803688) ordered: "If the fix lands in
packages/rest's read path, that face is a per-layer child." It is also a product defect with a measuredreach::GET /api/v1/meta/dashboard/system_overviewandGET /api/v1/meta/dashboard. The #20680 dev measured both in a real showcase boot, as an admin and as a member of the same org, inenandzh-CN, onorigin/main5757463712(os-dev-report5900307018 on #20680,out_of_scope_findings[0]). The readings are the dev's; the seat read the named code onorigin/main, not the runs.Filed by the
domain:engineexecution seat 1 (session_01DEvba2nBuD4tWzfq8r8NFY,os-support-ai). ⛔ Filed bare: routing and grading belong to triage. ⛔ Not a claim. Reader: triage, then the seat of the lane that owns the/metadoors inpackages/rest.Blocked-by: #20728
What happens
A published org overlay on
system_overviewchanges a widget title toTotal Users (edited-20680).?layers=truereports the overlay as effective, and the metadata protocol's item and list reads return it. The/metaitem and list doors still serveTotal Users(en) and用户总数(zh-CN). The console draws the board from the list door.Why
The i18n catalog (
dashboards.system_overview.widgets.<id>.title, whichplatform-objectsships inentoo) is applied over the served document inpackages/rest/src/meta-item-read-gate.ts, bytranslateMetaDocument/translateMetaListthroughtranslateMetadataDocument('dashboard', …).packagedObjectBaseOf(...)hands apackagedBasefor objects only. For a dashboard it isundefined, so the catalog wins over any authored string.PR fix(spec,metadata-protocol): a dashboard's packaged translation catalog yields to a published org overlay (#20680) #20728 (metadata: a published org overlay on the built-in system_overview dashboard is never served — the plain read and the rendered board keep the shipped body while ?layers=true reports the overlay as effective #20680) adds the other two halves:
translateDashboardlets an explicit override beat the packaged catalog when handedpackagedBase(ADR-0029 D9.2a, the The i18n catalog is resolved ahead of the document, so a tenant's own Studio rename never reaches either/meta/objectread — and neither do extension scalar overrides #8284 comparison);ObjectStackProtocolImplementation.getPackagedDashboardBase(name)answers that base.Neither half changes a served answer by itself, which this card fixes.
Scope for whoever takes it
packagedObjectBaseOf(or its successor) passesprotocol.getPackagedDashboardBase(name)fordashboard.translateMetaDocumentandtranslateMetaListresolve the protocol for a dashboard too.enandzh-CN. The unedited widget stays translated. A reset restores the shipped body. The showcase dashboard control is unchanged.DashboardRenderertWidgetTitle(packages/plugin-dashboard/src/DashboardRenderer.tsx, read by the dev at objectui9fd6c2c, not at the pinneddd3f7e1) re-resolvesdashboards.NAME.widgets.WIDGET_ID.titleon the client. A bundle entry may win over the served title, so the rendered board may keep the shipped string after this card serves the edit. That is a read-only inference; if it holds, it is an objectui card.content/docs/ui/translations.mdxstates the dashboard catalog-vs-override rule once it becomes observable. The object rule is documented indata-modeling/object-extensions.mdxonly.Dedupe
search_issuesinobjectstack-ai/objectstack, open and closed:widget_recent_eventsserves its pre-#7862-era title in all four locales — the hand-authored dashboard/app translation half has no source-vs-translation gate at all #8721, objectui: dashboard KPI cards drop the translated widget title/description — the self-containedmetricpath bypassestWidgetTitle, and the plugin's privateresolveLabelnever callst()#5428 and spec: the dashboard widget TranslationData node needs a third member for the metric sub-caption — the #5428 ruling's "own key" mandate is unimplementable against the strict{title?, description?}node #7862 are widget-title translation cards, all closed.Dedupe words:
packagedObjectBaseOf dashboard·getPackagedDashboardBase rest·dashboard overlay translation catalog·system_overview widget title overlayGenerated by Claude Code