From fa1c5e796f3558739559e1dd1ef70ef6f4bc9e6b Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 4 Oct 2026 04:20:00 +0000 Subject: [PATCH] docs(skills): `schema-expressions.md` states `{ condition, style }` as the only authorable conditional-formatting rule on every list carrier (objectui#11534) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "CEL predicates over a row record" bullet said the native `{ field, operator, value }` form and the `{ expression: "${…}" }` template form "still work and are rewritten to CEL transparently". Since objectui#11522 (kanban) and objectui#11533 (grid, list view) every list carrier's schema door refuses both forms by name with the `{ condition, style }` respelling, so the bullet over-promised to authors. The bullet now says authoring takes `{ condition, style }` only, names the native and `{ expression }` forms as retired and refused at the schema door, and keeps two renderer-side facts that still hold: a STORED legacy rule still renders through the shared evaluator (a compatibility read, not an authoring form), and a `condition` string in legacy-only syntax still routes to the old engine with a one-time deprecation warning. One bullet changed, nothing else in the guide. No changeset: `skills/**` is outside the released packages' guarded source. Claude-Session: https://claude.ai/code/session_01CB6W87z22K2yjUCDyVrJRk Co-authored-by: Claude --- skills/objectui/guides/schema-expressions.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/skills/objectui/guides/schema-expressions.md b/skills/objectui/guides/schema-expressions.md index eda0e5610f..ad06c39b06 100644 --- a/skills/objectui/guides/schema-expressions.md +++ b/skills/objectui/guides/schema-expressions.md @@ -329,13 +329,14 @@ Three renderer-side facts that live nowhere else: closed** (a broken predicate hides the action and warns), matching the record-header `ActionEngine`; `disabled` fails soft (not disabled, warns); a field-level `visibleWhen` fails open. Do not generalise from one to another. -- **Legacy shapes are translated, with a one-time warning.** The native - `{ field, operator, value }` form (`operator` in `equals` / `not_equals` / - `greater_than` / `less_than` / `contains` / `in`) and the - `{ expression: "${…}" }` template form still work and are rewritten to CEL - transparently. A string carrying legacy-only syntax (`${…}`, `===`, `?.`, - `.includes()`) is routed to the old engine with a **one-time deprecation - warning** -- rewrite it as CEL (`==`, `record.x`, `.contains()`). +- **Authoring takes `{ condition, style }` only.** On every list carrier (grid, + list view, kanban) a rule is `{ condition, style }`; the native `{ field, + operator, value }` form and the `{ expression: "${…}" }` template form are + retired, refused at the schema door by name with the respelling. A STORED + legacy rule still renders through the shared evaluator (a compatibility read, + not an authoring form); a `condition` in legacy-only syntax (`${…}`, `===`, + `.includes()`) still routes to the old engine with a one-time deprecation + warning -- write CEL. - **`data.*` is the trap in a row predicate.** A row predicate binds ONE root, `record.*`; a bare `status` or `data.status` is retired there and faults on the runtime engine (`Unknown variable`), under each surface's existing error