You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding(plugin-view,plugin-dashboard): object-view's non-grid views and a dashboard's optionsFrom filter options re-read after a page action only by the PageView remount — the sixth reader batch, blocking objectui#10519 #10887
Filing-gate category: ① a declared contract a renderer does not honour, with named landing sites. These are blockers of objectui#10519 under decision B (「readers first」). Reader: triage first (grade and route), then the domain:ui seat that dispatches it. Filed by domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, from the contract review of PR objectui#10777 round 3 (record FAIL). ⛔ Not graded here.
Measured (the review, reading the source on PR objectui#10777's head 42226f9ed)
object-view in any non-grid view (kanban, calendar, gallery, timeline, map, tree).
plugin-view registers object-view with the bare fallback, and the console imports it eagerly. PageSchema.safeParse (spec 17.4.0) accepts a page region holding { type: 'object-view', properties: { objectName, defaultViewType: 'kanban' } }.
For every non-grid view, ObjectView fetches the rows itself. That effect's dependencies name refreshKey and no bus nonce.
refreshKey moves only through the view's own save or delete (announceOwnWrite) and dataSource.onMutation. A page api action, a flow, a server action or a screen flow fires neither.
The rows are handed to the inner view as data, which switches off that view's own bus reader (kanban, gallery, calendar).
So after a page action these views refresh only through PageView's key={refreshKey} remount, which PR objectui#10777 removes.
A dashboard's global-filter options (globalFilters with optionsFrom).
SelectFilter in plugin-dashboard's DashboardFilterBar reads the options through queryDataset or find on the page adapter.
Its effect depends on from.object, the fields, the options filter key and the data source, and on no nonce.
optionsFrom is declared in the spec 17.4.0 dashboard filter schema.
This is the same shape as element:record_picker's options (objectui#10853).
The kind: 'react' page scope. React pages are on by default. Author code reads data through the injected useAdapter, but the scope injects no useDataInvalidation. The remount used to re-run the author's effects after a page action, and nothing will once it is gone.
Direction (the seat's ruling on objectui#10519 records it; for triage to grade)
Each read takes the useDataInvalidation nonce for the object it queries: ObjectView's non-grid fetch keys on schema.objectName, and SelectFilter's options key on from.object.
⛔ No second channel, and no remount.
The filter keeps its selected value across the re-read, the way the picker's re-read keeps the bound value.
Member 3, by measurement.
If any shipped or taught react page (examples, docs, skills) reads data through useAdapter, inject useDataInvalidation into the react-page scope. That is the canonical bus, not a second channel; teach it in the react-page guide; and treat it as Clause-②: yes, since the scope widens.
If none does, inject nothing, and the react-page guide states that a react page's own reads are not refreshed by page actions.
Pins: one bus event re-reads each block once, in place, with no remount (the objectui#10519 census shape), plus a lit control.
Serial: member 1 edits plugin-view/src/ObjectView.tsx, which PR objectui#10884 (seat 4, objectui#10758) holds. It dispatches after that PR, or edits only outside its hunks.
Dedupe
The 500 most recently updated objectui issues and PRs, open and closed (down to #10437), were listed via REST and grepped locally:
optionsFrom / DashboardFilterBar / SelectFilter near bus, invalidat, re-read or refresh;
react page near useDataInvalidation, bus or re-read;
ObjectView near non-grid, useDataInvalidation or bus reader.
Three hits, all closed and none a carrier: objectui#10688, #5861 and #10533.
Ruled: 5864668610 · letter A · 2026-09-28T06:29Z
Filing-gate category: ① a declared contract a renderer does not honour, with named landing sites. These are blockers of objectui#10519 under decision B (「readers first」). Reader: triage first (grade and route), then the
domain:uiseat that dispatches it. Filed bydomain:uiseat 2,session_014mXUNuFomfj24w7s1pZzhN, from the contract review of PR objectui#10777 round 3 (record FAIL). ⛔ Not graded here.Measured (the review, reading the source on PR objectui#10777's head
42226f9ed)object-viewin any non-grid view (kanban, calendar, gallery, timeline, map, tree).object-viewwith the bare fallback, and the console imports it eagerly.PageSchema.safeParse(spec 17.4.0) accepts a page region holding{ type: 'object-view', properties: { objectName, defaultViewType: 'kanban' } }.ObjectViewfetches the rows itself. That effect's dependencies namerefreshKeyand no bus nonce.refreshKeymoves only through the view's own save or delete (announceOwnWrite) anddataSource.onMutation. A pageapiaction, a flow, a server action or a screen flow fires neither.data, which switches off that view's own bus reader (kanban, gallery, calendar).PageView'skey={refreshKey}remount, which PR objectui#10777 removes.dashboard's global-filter options (globalFilterswithoptionsFrom).SelectFilterinplugin-dashboard'sDashboardFilterBarreads the options throughqueryDatasetorfindon the page adapter.from.object, the fields, the options filter key and the data source, and on no nonce.optionsFromis declared in the spec 17.4.0 dashboard filter schema.element:record_picker's options (objectui#10853).kind: 'react'page scope. React pages are on by default. Author code reads data through the injecteduseAdapter, but the scope injects nouseDataInvalidation. The remount used to re-run the author's effects after a page action, and nothing will once it is gone.Direction (the seat's ruling on objectui#10519 records it; for triage to grade)
useDataInvalidationnonce for the object it queries:ObjectView's non-grid fetch keys onschema.objectName, andSelectFilter's options key onfrom.object.useAdapter, injectuseDataInvalidationinto the react-page scope. That is the canonical bus, not a second channel; teach it in the react-page guide; and treat it asClause-②: yes, since the scope widens.plugin-view/src/ObjectView.tsx, which PR objectui#10884 (seat 4, objectui#10758) holds. It dispatches after that PR, or edits only outside its hunks.Dedupe
The 500 most recently updated objectui issues and PRs, open and closed (down to #10437), were listed via REST and grepped locally:
optionsFrom/DashboardFilterBar/SelectFilternear bus, invalidat, re-read or refresh;useDataInvalidation, bus or re-read;ObjectViewnear non-grid,useDataInvalidationor bus reader.Three hits, all closed and none a carrier: objectui#10688, #5861 and #10533.
Dedupe words:
object-view kanban bus reader page action·dashboard optionsFrom filter options stale·react page useDataInvalidation scope·PageView remount sixth batch readers