Skip to content

Commit bb7698c

Browse files
committed
test(platform-objects): the dataset panel decision ledger and its derived pin
One row per decided leaf with its per-locale verdict, the reason it was reached and the `en` source pinned equal to the live bundle. Carries the three deliberate properties the earlier rounds of #19403 established — the echo-reason rule as a predicate with a dark control, a population derived from the `en` catalog, and the provenance tables as a second independent witness with its own pattern-matched dark control — and adds a third blind-spot measurement: `repeater-row-properties.test.ts` covers this panel's thirteen row properties and cannot see the repeaters' own leaves. Claude-Session: https://claude.ai/code/session_01NcPSwnmJHczmTu6FG7NMjE Co-authored-by: Claude <noreply@anthropic.com>
1 parent 7e0184d commit bb7698c

5 files changed

Lines changed: 735 additions & 72 deletions

File tree

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
---
2+
"@objectstack/platform-objects": patch
3+
---
4+
5+
fix(platform-objects): decide the `dataset` panel en-echoes per leaf, and derive the panel pin (#19403)
6+
7+
The `dataset` metadata form — the ADR-0021 analytics semantic-layer editor — shipped its English
8+
source in `zh-CN`, `ja-JP` and `es-ES` on 24 string leaves: the type display pair, all four section
9+
headings, and both string leaves of its seven non-repeater fields. An author working in one of those
10+
locales read English on the whole panel while the thirteen repeater row properties inside it, and the
11+
`report` editor next to it, were translated.
12+
13+
Each leaf was decided on its own evidence, not translated wholesale: the verdicts, their per-leaf
14+
reasons and the `en` source each was judged against are recorded in
15+
`dataset-panel-echo-decisions.test.ts`, which also derives the panel population from the `en` catalog
16+
so a key added to this form is caught rather than missed.
17+
18+
Two groups of tokens stay **English**, on an authored precedent rather than by habit:
19+
20+
- the strict-enum values the measures section names — `sum/avg/count/…` (`AggregationFunction`) and
21+
`ratio/sum/difference/product` (`DerivedMeasureOp`), both `z.enum` inside a `strictObject`. Rendering
22+
them as words would tell an author in their own language to write a token the schema refuses. The
23+
precedent is `report.fields.type.helpText`, which keeps `tabular/summary/matrix/joined` verbatim in
24+
all three locales;
25+
- the machine tokens an author types — `lookup` / `master_detail`, `relationship.field`, the worked
26+
example `account.region`, and the `FROM` / `ON` SQL keywords the prose names. The precedent is
27+
`object.fields.fields.reference.helpText`, which keeps `tree` and `lookup` verbatim inside otherwise
28+
translated prose.
29+
30+
Catalog values only. No key is added, renamed or removed in any bundle (24 insertions / 24 deletions
31+
per translated bundle, a pure value replacement), no schema or export moves, and the three
32+
`*.source-hashes.generated.ts` provenance tables lose exactly the 24 rows per locale that recorded
33+
these leaves as unauthored extractor fills.
34+
35+
Why `patch` rather than `skip-changeset`: `@objectstack/platform-objects` is not private and ships
36+
`files: ["dist", …]`, and `src/metadata-translations/index.ts` imports all three translated bundles, so
37+
the new leaves are published — measured on the built output rather than assumed.

0 commit comments

Comments
 (0)