diff --git a/.changeset/9365-bridgelistview-present-tense.md b/.changeset/9365-bridgelistview-present-tense.md new file mode 100644 index 0000000000..d477163c6b --- /dev/null +++ b/.changeset/9365-bridgelistview-present-tense.md @@ -0,0 +1,38 @@ +--- +'@object-ui/types': patch +--- + +Date the dead `bridgeListView` producer evidence in `BaseSchema` instead of +letting it read as live (objectui#9365). + +`base.ts` stated the factual basis of objectui#4580's revised Q1 ruling in the +PRESENT tense — "that is what a spec producer already writes into this slot: +`bridgeListView` assigns `node.label = spec.label`", and the same shape one slot +over for `description`. Both sentences were TRUE when PR #4608 wrote them on +2026-08-13: at that commit `packages/react/src/spec-bridge/bridges/list-view.ts` +exported `bridgeListView` and carried `if (spec.label) node.label = spec.label;` +and `if (spec.description) node.description = spec.description;` at exactly the +addresses cited. objectui#6366 (PR #6632, 2026-08-29) then removed the WHOLE +spec-bridge — `SpecBridge`, `bridgeListView`, `bridgeFormView` — from +`@object-ui/react` as a declared BREAKING CHANGE, and the producer, its module +and those addresses went with it. + +They are therefore ROTTED, not born false, and the repair matches: the original +sentences are KEPT, quoted, dated to the commit that wrote them, and followed by +a dated note naming objectui#6366 as what falsified them. Overwriting them would +erase that objectui#4580 ever had a stated rationale, which is a false record of +its own. + +What the docblocks now assert instead points at an instrument rather than at a +retired producer: the widening is re-derived on every run by +`inline-locale-declared-face-9092.test.ts` in this package, under both `tsc` and +vitest, and the read half by the renderer pins in `@object-ui/components` and +`@object-ui/plugin-dashboard`. No figure is written down (AGENTS.md #9). +objectui#4580's ruling itself is untouched and is not re-litigated here. + +⛔ Nothing executable moves — the diff is comment-only: no declaration, accept +set, assertion, behaviour or export changes. It is graded `patch` rather than a +no-release changeset because the published bytes move: these docblocks ship in +`dist/base.d.ts`, which this package's `files[]` publishes, measured after a +build with a positive control on neighbouring prose in the same emitted file and +a minted-token absent control. diff --git a/packages/components/src/__tests__/inline-locale-label-read-sites.test.tsx b/packages/components/src/__tests__/inline-locale-label-read-sites.test.tsx index 62358a9f50..51c260bc1f 100644 --- a/packages/components/src/__tests__/inline-locale-label-read-sites.test.tsx +++ b/packages/components/src/__tests__/inline-locale-label-read-sites.test.tsx @@ -12,8 +12,24 @@ * `BaseSchema.label` and `.description` accept `string | I18nLabel` since * #4580's revised Q1 ruling (comment 5284973826) — `I18nLabel` being the spec's * INLINE locale MAP (`string | Record` in `@objectstack/spec` - * 17.0.0-rc.6), the shape a spec producer already writes: `bridgeListView` - * assigns `node.label = spec.label` at `list-view.ts:180`. + * 17.0.0-rc.6). The DECLARED half of that is re-derived by + * `inline-locale-declared-face-9092.test.ts` in `@object-ui/types`; the READ + * half is re-derived by the cases below. + * + * ⚠️ The producer sentence this header carried is DEAD — quoted and dated, + * not deleted. As written on 2026-08-13 (#4580, PR #4608) it read, truly of the + * tree at that commit: + * + * > the shape a spec producer already writes: `bridgeListView` assigns + * > `node.label = spec.label` at `list-view.ts:180` + * + * ⛔ FALSIFIED on 2026-08-29 by objectui#6366 (PR #6632), which removed the + * whole spec-bridge — `SpecBridge`, `bridgeListView`, `bridgeFormView` — from + * `@object-ui/react` as a declared BREAKING CHANGE. ⛔ Nothing re-derives that + * sentence, so it is quoted rather than left reading as live (AGENTS.md #9): a + * test header is the worst place for a confident sentence about a producer that + * is gone, and reading it as live already cost objectui#9092 a + * premise-falsification round. * * Resolution happens at READ time, here, against the display locale — NOT at * the spec bridge. PR #4603 measured the bridge unable to do it: it is a plain diff --git a/packages/types/src/base.ts b/packages/types/src/base.ts index 82e3861286..bcebba9b90 100644 --- a/packages/types/src/base.ts +++ b/packages/types/src/base.ts @@ -93,15 +93,41 @@ export interface BaseSchema { * Often used in forms, cards, and other UI elements. * * Accepts the spec's INLINE LOCALE MAP as well as a plain string - * (objectui#4580, revised Q1 ruling — option A), because that is what a spec - * producer already writes into this slot: `bridgeListView` assigns - * `node.label = spec.label` at - * `packages/react/src/spec-bridge/bridges/list-view.ts:180`, and `ListView`'s - * own `label` is the spec's `I18nLabel`. Under the old `string` declaration - * that assignment was a type error the moment `SchemaNode` stopped being - * core's index-signature interface — the defect this widening resolves, not a + * (objectui#4580, revised Q1 ruling — option A), because `ListView`'s own + * `label` is the spec's `I18nLabel`: under the old `string` declaration that + * assignment was a type error the moment `SchemaNode` stopped being core's + * index-signature interface — the defect this widening resolves, not a * capability being invented here. * + * The instrument that re-derives the widening is + * `inline-locale-declared-face-9092.test.ts` in this package's `__tests__`: + * it assigns the map to this slot and to {@link BaseSchema.description}, each + * paired with a `@ts-expect-error` control on a genuinely plain-`string` + * sibling, and it runs under both `tsc -p packages/types/tsconfig.test.json` + * and vitest. ⛔ Read that file rather than any figure written here. + * + * ## ⚠️ The producer evidence this slot was widened on is DEAD + * + * It is quoted and dated rather than deleted, because it is the rationale + * objectui#4580 was decided on and overwriting it would erase that the ruling + * ever had one. As written on 2026-08-13 (#4580, PR #4608) this paragraph + * said, and the tree at that commit bore it out: + * + * > that is what a spec producer already writes into this slot: + * > `bridgeListView` assigns `node.label = spec.label` at + * > `packages/react/src/spec-bridge/bridges/list-view.ts:180` + * + * ⛔ FALSIFIED on 2026-08-29 by objectui#6366 (PR #6632), which removed the + * WHOLE spec-bridge — `SpecBridge`, `bridgeListView`, `bridgeFormView` — from + * `@object-ui/react` as a declared BREAKING CHANGE. That producer, the module + * it lived in and the address it is cited at are all gone, and ⛔ nothing + * re-derives the sentence — which is why it is quoted here instead of left + * reading as live (AGENTS.md #9). The RULING is not in question: its live + * basis is the declared-face pin named above, the spec's own `I18nLabel` + * declaration this file imports, and the read-site pins in + * `@object-ui/components` and `@object-ui/plugin-dashboard`. Reading the dead + * sentence as live already cost objectui#9092 a premise-falsification round. + * * ## Which vocabulary this is, and who resolves it * * This slot — and {@link BaseSchema.description} two lines down — carries the @@ -152,12 +178,23 @@ export interface BaseSchema { * * Accepts the spec's INLINE LOCALE MAP as well as a plain string on exactly * the {@link BaseSchema.label} evidence one slot over (objectui#4580, revised - * Q1 ruling): `bridgeListView` assigns `node.description = spec.description` - * at `packages/react/src/spec-bridge/bridges/list-view.ts:224`, where the - * spec's `ListView.description` is an `I18nLabel`. Same vocabulary, same - * resolver (`resolveI18nLabel` against the display locale), same - * confusability warning against {@link BaseSchema.ariaLabel}'s keyed form — - * see {@link BaseSchema.label} for the full statement. + * Q1 ruling), where the spec's `ListView.description` is an `I18nLabel`. Same + * vocabulary, same resolver (`resolveI18nLabel` against the display locale), + * same confusability warning against {@link BaseSchema.ariaLabel}'s keyed + * form — see {@link BaseSchema.label} for the full statement, and for the + * instrument that re-derives this widening. + * + * ⚠️ The producer half of that evidence is DEAD, quoted and dated. As + * written on 2026-08-13 (#4580, PR #4608), and true of the tree at that + * commit: + * + * > `bridgeListView` assigns `node.description = spec.description` at + * > `packages/react/src/spec-bridge/bridges/list-view.ts:224` + * + * ⛔ FALSIFIED on 2026-08-29 by objectui#6366 (PR #6632), which removed + * `SpecBridge` / `bridgeListView` / `bridgeFormView` from `@object-ui/react` + * as a declared BREAKING CHANGE. Nothing re-derives it; see + * {@link BaseSchema.label} for why it is quoted rather than deleted. * * @example "Shown below the field" * @example { en: 'Shown below the field', 'zh-CN': '显示在字段下方' }