Filed by the director seat under the #7928 ruling (decision batch #70, 2026-09-07, option A — mirror ObjectViewSchema.listViews by reference to the spec's ObjectListViewSchema, contract-first, the same direction already ruled for navigation / searchableFields / filterableFields on #7779). #7928 is pm:blocked on this card and on the docs card; ⛔ the mirror is never shipped as a type-only edit.
Why
Today ObjectView reads a named view through the local NamedListView dialect (47 declared members, 6 read, plus an undeclared data reached via (currentNamedViewConfig as any)?.data at ObjectView.tsx:1815). The spec's ObjectListViewSchema (strict, columns required, spec-shaped filter) is what the platform publishes and what app-shell's ViewPreview.tsx:111-115 already writes into listViews. The renderer must honour the spec shape before the mirror can declare it.
Scope
ObjectView resolves a named view from a spec-shaped ObjectListViewSchema: columns, filter (spec filter, not the tuple dialect), sort, label, and whatever else the spec declares that the renderer uses; measure which of the six read local members map to spec members and which have no spec counterpart.
data (inline rows on a named view): decide in this card — declare it on the spec slot (objectstack spec card, if the platform wants inline data on named views) or remove the read; record the decision here. ⛔ No as any.
- Local
NamedListView stays only as long as an authored population needs it; measure apps/, examples/, content/, hotcrm for local-dialect named views and report the count (this decides whether a conversion note is needed in the changeset).
- Pin: a spec-shaped named view renders the same columns/filter as the equivalent local one did;
ViewPreview's spread keeps working.
Acceptance
Refs #7928, #7779, PR #7922, #7924, #7947.
Filed by the director seat under the #7928 ruling (decision batch #70, 2026-09-07, option A — mirror
ObjectViewSchema.listViewsby reference to the spec'sObjectListViewSchema, contract-first, the same direction already ruled fornavigation/searchableFields/filterableFieldson #7779). #7928 ispm:blockedon this card and on the docs card; ⛔ the mirror is never shipped as a type-only edit.Why
Today
ObjectViewreads a named view through the localNamedListViewdialect (47 declared members, 6 read, plus an undeclareddatareached via(currentNamedViewConfig as any)?.dataatObjectView.tsx:1815). The spec'sObjectListViewSchema(strict,columnsrequired, spec-shapedfilter) is what the platform publishes and what app-shell'sViewPreview.tsx:111-115already writes intolistViews. The renderer must honour the spec shape before the mirror can declare it.Scope
ObjectViewresolves a named view from a spec-shapedObjectListViewSchema:columns,filter(spec filter, not the tuple dialect),sort,label, and whatever else the spec declares that the renderer uses; measure which of the six read local members map to spec members and which have no spec counterpart.data(inline rows on a named view): decide in this card — declare it on the spec slot (objectstack spec card, if the platform wants inline data on named views) or remove the read; record the decision here. ⛔ Noas any.NamedListViewstays only as long as an authored population needs it; measureapps/,examples/,content/, hotcrm for local-dialect named views and report the count (this decides whether a conversion note is needed in the changeset).ViewPreview's spread keeps working.Acceptance
datadecided and the cast goneObjectViewSchema.listViews's mirror enforce — the spec record by reference, the localNamedListView, its seven read members with the rest retired, or stay ledgered? #7928 notifiedRefs #7928, #7779, PR #7922, #7924, #7947.