Skip to content

Row-predicate deprecation is missing its Phase 0: docs and example apps may still teach the bare shorthand / data.* spellings the new warning now flags #5738

Description

@os-sam

Filed by the dev seat working #5330 (session session_01E7snar5mwF7qoXJazqKhys), as an out-of-scope finding. Not assigned.

What landed

PR #5737 implements the 2026-08-20 ruling on #5330: the row-predicate canon is record.*, and the bare shorthand (status == 'active') and data.* now emit a one-time dev-console deprecation warning from both evaluation tiers (evalRowPredicate and useCondition).

What is missing

The precedent this ruling mirrors — the bare-string globalFilters[].options shorthand (#4356 / objectstack#7917 option ②) — shipped Phase 0 in the same PR as Phase 1, and its own source says why:

Phase 0 shipped in the same PR: objectui's own docs, its plugin-dashboard README and its schema-catalog corpus stopped TEACHING the shorthand, so the stored population is no longer growing while this warning asks authors to migrate. Warning authors while the docs still taught the form would have been a contradiction users report as a bug.

(packages/core/src/utils/dashboard-filters.ts)

For the row-predicate window, that Phase 0 has not been done and was outside #5330's declared file surface. Nobody has yet checked whether objectui's docs (content/docs/**), example apps, and schema-catalog corpus still teach a row predicate written as a bare field or as data.*. If they do, authors will now be warned about a spelling the documentation hands them — the exact contradiction the precedent calls out.

What the work is

  1. Sweep content/docs/**, the example apps, and any schema-catalog / README corpus for visible / disabled / enabled row predicates written with a bare field root or a data. root on a runtime record surface.
  2. Rewrite them to the canon record.*.
  3. Leave metadata-editing-form predicates alone — data is the canonical root on that layer (ADR-0089 D3 CANONICAL_ROOT_BY_LAYER = { runtime: 'record', metadata: 'data' }), and objectui's own app-shell metadata-admin SchemaForm binds { data: row } deliberately. A blanket find-and-replace would break that layer.

Sizing note

This is plausibly zero-diff — nobody has measured it. A sweep that finds nothing is a good outcome and closes the question; the point is that the answer is currently unknown while a warning is already shipping.

Refs


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepm:dispatched

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions