Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .changeset/19403-bare-type-display-en-echo-decisions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
"@objectstack/platform-objects": patch
---

The metadata-type chooser no longer offers a Chinese, Japanese or Spanish author six entries written in English: the display pairs of `seed`, `mapping`, `api`, `doc`, `book` and `capability` — six keys, twelve string leaves — were decided leaf by leaf and rendered in `zh-CN`, `ja-JP` and `es-ES` (#19403). These six are the **bare** metadata types: they declare no form at all, so their registry `label` and `description` are the only strings an author ever sees for them, and until now every one of those strings was its English source.

An en-echo is not automatically a defect, so every leaf carries a recorded reason in `bare-type-display-echo-decisions.test.ts`, naming the authored leaf its wording came from — and saying so out loud where no authored twin exists (`seed`, `book` and the word "export" have none, and the rows state that rather than leaning on one).

- **The population is derived, not listed.** The ledger walks `DEFAULT_METADATA_TYPE_REGISTRY` crossed with one predicate read off the catalog's shape — a type is *bare* when its entry has no `fields` and no `sections` — so a metadata type added later with an unauthored display pair lands in the population automatically. Ten types qualify; the six decided here are the six that echoed, and the other four (`job`, `datasource`, `external_catalog`, `translation`) are already authored and stay in the walk as its control.
- **Machine tokens stay English, and five near-misses were read at the schema before a word was rendered.** `package` in two of the descriptions *is* a legal `_provenance` value and the schemas really do accept it — cleared, because no form asks an author for an envelope key and these types have no form at all. `rename` is **not** a `TransformType` member (but `map` is, and "field mapping" contains it — the token guard judges word boundaries, not substrings); `publish` is not a `SeedMode`; `pipeline` is not an api `type`; `groups` is a key that takes an array. `HTTP`, `URL`, `Markdown`, `API`, `ADR-0121`, `ADR-0046 §6`, `ADR-0066 D1` are kept verbatim in all three locales. Every reading is asserted against the live schema rather than described.
- **"Capability" is decided per meaning, in three positions.** The metadata type takes 能力 / ケイパビリティ / Capacidad, agreeing with the `body.capabilities` token list by re-deriving from the same objects-catalog evidence rather than borrowing its decision, and differing from it in Spanish number because this leaf names one capability. The object panel's `Capabilities` section — feature toggles, a different concept under the same English word — is deliberately untouched, and both the agreement and the non-agreement are asserted.
- **Values only.** No key was added or removed: the full flattened key sets are identical on all four bundles (893 keys, 0 added, 0 removed) with a negative control proving the comparator sees a one-key delta in both directions, and `en` is untouched. Regenerated with `pnpm i18n:extract`, which dropped exactly the 12 provenance rows per locale that recorded these leaves as unauthored extractor fills, and added none — leaving **no** metadata type's display pair recorded as a fill in any locale.

Measured on the metadata-form catalogs: label keys echoing in all three locales fall **18 → 12** while the genuinely-translated control rises **520 → 526** (`zh-CN`) and **504 → 510** (`ja-JP`, `es-ES`), same population (893 string leaves, 538 of them labels), same run. The decidable remainder — a label plus its sibling `description`/`helpText` — falls **29 → 17**, because this round decides six labels *and* six descriptions and only the labels move the headline.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -608,12 +608,12 @@ export const esESMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
seed: {
label: "Seed Data",
description: "Fixture / initialization data applied on publish"
label: "Datos semilla",
description: "Datos predefinidos / de inicialización aplicados al publicar"
},
mapping: {
label: "Import Mapping",
description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
label: "Mapeo de importación",
description: "Mapeo de campos de importación/exportación reutilizable (renombrado + transformaciones), referenciado por nombre al importar"
},
view: {
label: "Vista",
Expand Down Expand Up @@ -1708,8 +1708,8 @@ export const esESMetadataForms: NonNullable<TranslationData['metadataForms']> =
label: "Catálogo externo"
},
api: {
label: "API Endpoint",
description: "Declarative HTTP endpointa stable URL and policy layer over an existing pipeline (ADR-0121)"
label: "Endpoint API",
description: "Endpoint HTTP declarativouna URL estable y una capa de política sobre un pipeline existente (ADR-0121)"
},
translation: {
label: "Traducción"
Expand Down Expand Up @@ -1795,12 +1795,12 @@ export const esESMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
doc: {
label: "Documentation",
description: "Package documentation — flat Markdown items (ADR-0046)"
label: "Documentación",
description: "Documentación del paquete — elementos Markdown planos (ADR-0046)"
},
book: {
label: "Documentation Book",
description: "Documentation navigation spine — ordered groups with derived membership (ADR-0046 §6)"
label: "Libro de documentación",
description: "Columna vertebral de navegación de la documentación — grupos ordenados con pertenencia derivada (ADR-0046 §6)"
},
permission: {
label: "Conjunto de permisos",
Expand Down Expand Up @@ -1875,8 +1875,8 @@ export const esESMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
capability: {
label: "Capability",
description: "Package-declared authorization capability — the DEFINITION side of ADR-0066 D1 (grants live on permission sets; requirements on resources)"
label: "Capacidad",
description: "Capacidad de autorización declarada por el paquete — el lado de la DEFINICIÓN de ADR-0066 D1 (las concesiones residen en los conjuntos de permisos; los requisitos, en los recursos)"
},
agent: {
label: "Agente de IA",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,7 @@
*/

export const esESGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.api.description": "62421e8039e013f5",
"metadataForms.api.label": "589af3fe4aab4af5",
"metadataForms.book.description": "45e72c8c74617530",
"metadataForms.book.label": "b48c719759fca087",
"metadataForms.capability.description": "1130a8a487c35f3d",
"metadataForms.capability.label": "cb58b72c5cc77632",
"metadataForms.doc.description": "f233af60238b0879",
"metadataForms.doc.label": "3f35cf5088b999ad",
"metadataForms.email_template.fields.variables.helpText": "27197774c2cda633",
"metadataForms.mapping.description": "654a322ed6e264bb",
"metadataForms.mapping.label": "9baba989f46cd1e8",
"metadataForms.object.fields.enable.activities.label": "1091422f7f3133d3",
"metadataForms.object.fields.enable.apiEnabled.label": "34396a2f6cfda5d5",
"metadataForms.object.fields.enable.clone.label": "48cbbe43b82f32c2",
Expand Down Expand Up @@ -78,8 +68,6 @@ export const esESGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.report.fields.runtimeFilter.label": "90fe0e44293633fa",
"metadataForms.report.sections.dataset_binding.description": "54650ff5f09fd1bd",
"metadataForms.report.sections.dataset_binding.label": "34d97a3093d6fc56",
"metadataForms.seed.description": "c22921feb0f06273",
"metadataForms.seed.label": "60e0e22a54230cab",
"objects.sys_account._actions.link_social.params.provider.options.apple": "cfdc41e15ed6699b",
"objects.sys_account._actions.link_social.params.provider.options.discord": "12f931cc062e76ae",
"objects.sys_account._actions.link_social.params.provider.options.facebook": "7eea009178f5b807",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -608,12 +608,12 @@ export const jaJPMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
seed: {
label: "Seed Data",
description: "Fixture / initialization data applied on publish"
label: "シードデータ",
description: "公開時に適用されるフィクスチャ/初期化データ"
},
mapping: {
label: "Import Mapping",
description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
label: "インポートマッピング",
description: "再利用可能なインポート/エクスポートのフィールドマッピング(リネーム + 変換)。インポート時に名前で参照します"
},
view: {
label: "ビュー",
Expand Down Expand Up @@ -1708,8 +1708,8 @@ export const jaJPMetadataForms: NonNullable<TranslationData['metadataForms']> =
label: "外部カタログ"
},
api: {
label: "API Endpoint",
description: "Declarative HTTP endpointa stable URL and policy layer over an existing pipeline (ADR-0121)"
label: "API エンドポイント",
description: "宣言的な HTTP エンドポイント既存のパイプラインの上に安定した URL とポリシー層を提供(ADR-0121"
},
translation: {
label: "翻訳"
Expand Down Expand Up @@ -1795,12 +1795,12 @@ export const jaJPMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
doc: {
label: "Documentation",
description: "Package documentation — flat Markdown items (ADR-0046)"
label: "ドキュメント",
description: "パッケージのドキュメント — フラットな Markdown 項目(ADR-0046"
},
book: {
label: "Documentation Book",
description: "Documentation navigation spine — ordered groups with derived membership (ADR-0046 §6)"
label: "ドキュメントブック",
description: "ドキュメントナビゲーションの骨格 — 順序付きグループと派生されたメンバーシップ(ADR-0046 §6"
},
permission: {
label: "権限セット",
Expand Down Expand Up @@ -1875,8 +1875,8 @@ export const jaJPMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
capability: {
label: "Capability",
description: "Package-declared authorization capability — the DEFINITION side of ADR-0066 D1 (grants live on permission sets; requirements on resources)"
label: "ケイパビリティ",
description: "パッケージが宣言する認可ケイパビリティ — ADR-0066 D1 の定義側(付与は権限セットに、要件はリソースに)"
},
agent: {
label: "AI エージェント",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,7 @@
*/

export const jaJPGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.api.description": "62421e8039e013f5",
"metadataForms.api.label": "589af3fe4aab4af5",
"metadataForms.book.description": "45e72c8c74617530",
"metadataForms.book.label": "b48c719759fca087",
"metadataForms.capability.description": "1130a8a487c35f3d",
"metadataForms.capability.label": "cb58b72c5cc77632",
"metadataForms.doc.description": "f233af60238b0879",
"metadataForms.doc.label": "3f35cf5088b999ad",
"metadataForms.email_template.fields.variables.helpText": "27197774c2cda633",
"metadataForms.mapping.description": "654a322ed6e264bb",
"metadataForms.mapping.label": "9baba989f46cd1e8",
"metadataForms.object.fields.enable.activities.label": "1091422f7f3133d3",
"metadataForms.object.fields.enable.apiEnabled.label": "34396a2f6cfda5d5",
"metadataForms.object.fields.enable.clone.label": "48cbbe43b82f32c2",
Expand Down Expand Up @@ -78,8 +68,6 @@ export const jaJPGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.report.fields.runtimeFilter.label": "90fe0e44293633fa",
"metadataForms.report.sections.dataset_binding.description": "54650ff5f09fd1bd",
"metadataForms.report.sections.dataset_binding.label": "34d97a3093d6fc56",
"metadataForms.seed.description": "c22921feb0f06273",
"metadataForms.seed.label": "60e0e22a54230cab",
"objects.sys_account._actions.link_social.params.provider.options.apple": "cfdc41e15ed6699b",
"objects.sys_account._actions.link_social.params.provider.options.discord": "12f931cc062e76ae",
"objects.sys_account._actions.link_social.params.provider.options.facebook": "7eea009178f5b807",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -608,12 +608,12 @@ export const zhCNMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
seed: {
label: "Seed Data",
description: "Fixture / initialization data applied on publish"
label: "种子数据",
description: "发布时应用的预置/初始化数据"
},
mapping: {
label: "Import Mapping",
description: "Reusable import/export field mapping (rename + transforms), referenced by name at import"
label: "导入映射",
description: "可复用的导入/导出字段映射(重命名 + 转换),在导入时按名称引用"
},
view: {
label: "视图",
Expand Down Expand Up @@ -1708,8 +1708,8 @@ export const zhCNMetadataForms: NonNullable<TranslationData['metadataForms']> =
label: "外部目录"
},
api: {
label: "API Endpoint",
description: "Declarative HTTP endpoint — a stable URL and policy layer over an existing pipeline (ADR-0121)"
label: "API 端点",
description: "声明式 HTTP 端点——在既有管道之上提供稳定的 URL 与策略层(ADR-0121"
},
translation: {
label: "翻译"
Expand Down Expand Up @@ -1795,12 +1795,12 @@ export const zhCNMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
doc: {
label: "Documentation",
description: "Package documentation — flat Markdown items (ADR-0046)"
label: "文档",
description: "软件包文档——扁平的 Markdown 文档项(ADR-0046"
},
book: {
label: "Documentation Book",
description: "Documentation navigation spine — ordered groups with derived membership (ADR-0046 §6)"
label: "文档手册",
description: "文档导航主干——有序分组,成员由派生确定(ADR-0046 §6"
},
permission: {
label: "权限集",
Expand Down Expand Up @@ -1875,8 +1875,8 @@ export const zhCNMetadataForms: NonNullable<TranslationData['metadataForms']> =
}
},
capability: {
label: "Capability",
description: "Package-declared authorization capability — the DEFINITION side of ADR-0066 D1 (grants live on permission sets; requirements on resources)"
label: "能力",
description: "软件包声明的授权能力——ADR-0066 D1 的定义侧(授予在权限集上;要求在资源上)"
},
agent: {
label: "AI 代理",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,6 @@
*/

export const zhCNGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.api.description": "62421e8039e013f5",
"metadataForms.api.label": "589af3fe4aab4af5",
"metadataForms.book.description": "45e72c8c74617530",
"metadataForms.book.label": "b48c719759fca087",
"metadataForms.capability.description": "1130a8a487c35f3d",
"metadataForms.capability.label": "cb58b72c5cc77632",
"metadataForms.doc.description": "f233af60238b0879",
"metadataForms.doc.label": "3f35cf5088b999ad",
"metadataForms.mapping.description": "654a322ed6e264bb",
"metadataForms.mapping.label": "9baba989f46cd1e8",
"metadataForms.object.fields.enable.activities.label": "1091422f7f3133d3",
"metadataForms.object.fields.enable.apiEnabled.label": "34396a2f6cfda5d5",
"metadataForms.object.fields.enable.clone.label": "48cbbe43b82f32c2",
Expand All @@ -45,8 +35,6 @@ export const zhCNGeneratedSourceHashes: Readonly<Record<string, string>> = {
"metadataForms.report.fields.runtimeFilter.label": "90fe0e44293633fa",
"metadataForms.report.sections.dataset_binding.description": "54650ff5f09fd1bd",
"metadataForms.report.sections.dataset_binding.label": "34d97a3093d6fc56",
"metadataForms.seed.description": "c22921feb0f06273",
"metadataForms.seed.label": "60e0e22a54230cab",
"objects.sys_account._actions.link_social.params.provider.options.apple": "cfdc41e15ed6699b",
"objects.sys_account._actions.link_social.params.provider.options.discord": "12f931cc062e76ae",
"objects.sys_account._actions.link_social.params.provider.options.facebook": "7eea009178f5b807",
Expand Down
Loading