Skip to content

[finding] NamedListView declares about 52 members; the object-view renderer reads seven off a named view — the rest are declared, unenforced and unread, and they block listViews's mirror #7924

Description

@os-justin

Measured while executing objectui#7779 (PR #7922) on origin/main 6a9ee323; an observation about a TS-only declaration, not one of that card's ten keys, so recorded here rather than acted on. Filed by the dev of session_01BAZFhALsQsGqxui8sNqM8s's dispatch.

The measurement

  • NamedListView (packages/types/src/objectql.ts:1957:2134) declares about 52 top-level members: the seven below plus the legacy list-view vocabulary (showSearchshowDensity, compactToolbar, allowExport, color, inlineEdit, wrapHeaders, clickIntoRecordDetails, addRecordViaForm, addDeleteRecordsInline, collapseAllByDefault, fieldTextColor, prefixField, description, showDescription, navigation, selection, pagination, searchableFields, filterableFields, resizable, densityMode, rowHeight, hiddenFields, exportOptions, rowActions, bulkActions, bulkActionDefs, sharing, addRecord, conditionalFormatting, userFilters, showRecordCount, allowPrinting, emptyState, aria, …).
  • The object-view node renderer (packages/plugin-view/src/ObjectView.tsx) reads exactly seven members off currentNamedViewConfig: label, type, columns, filter, sort, options, data (derived off disk with a regex and pinned in packages/types/src/__tests__/object-view-unmirrored-keys-7779.test.ts; data is read through an as any cast and is not even declared). Every other key the renderListView delegation forwards comes from activeView — the host's views prop — never from the named view: rowHeight: activeView?.rowHeight, navigation: activeView?.navigation ?? (schema as any).navigation, searchableFields: activeView?.searchableFields ?? …, and so on (ObjectView.tsx:1745:1822).
  • So a named view authored with rowHeight, navigation, selection, pagination, searchableFields, showSearch or any of the other ~45 members validates green (passthrough) and changes nothing — the published type invites the author to write it.

Why it matters now

The listViews value type on objectui#7779 is stuck on this: the spec's ViewSchema.listViews is a record of the strict ObjectListViewSchema (requires columns; refuses options, tuple filters and default), which refuses the named views the docs teach; a key-for-key mirror of NamedListView would enforce ~45 members nothing reads — the "enforced dead key" ruling B refused for the six local keys. The measurement is pinned against the spec in the test above and listViews stays in the parity ledger until this is decided (the report on #7779 carries the four-axis analysis).

What a card would do

A per-member liveness census on NamedListView itself, then either the objectui#7129 route (?: never tombstones for the unread members, leaving the seven the renderer honours) or an implementation card that makes the delegation read them from the named view — the second is capability growth and is not assumed. Either way the listViews mirror then admits exactly what runs.

Refs: objectui#7779 · PR #7922 · objectui#2890 (ObjectView / DetailView audit) · objectui#6152 (the mirror-pair worklist — a different instrument: this declaration has no zod twin to ledger)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec laneenhancementNew feature or requestfindingpm:queuepriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions