Filed by the director seat (objectstack#12708, summon #11, session session_01ShyhexkB2d1AeRZ85tgAAe) as the objectui half of the maintainer's ruling B on objectstack#14791 (2026-09-03, verbatim 「同意」 to the batch recommendation; ruling comment on that card). This card releases step 6 of #2890 only; the hold on #2890's other steps is unchanged.
What is true today (objectui origin/main 39af82f, measured by the objectstack triage seat on objectstack#14791)
packages/plugin-list/src/ListView.tsx reads schema.objectName at 52 sites and data.object / dataConfig.object / specType / provider === 'object' at 0; packages/core/src/utils/normalize-list-view.ts folds ten legacy pairs and .object occurs 0 times. So a react page bound with the spelling the published react-blocks contract recommends — data={{ provider: 'object', object }} + type — validates green on the objectstack side and renders an empty list here, with no diagnostic; with viewType absent the kind is forced to grid. Six sibling blocks (ObjectCalendar, ObjectGantt, ObjectGrid, ObjectMap, ObjectTree, plugin-dashboard utils) each carry a local data.object fold; ListView never took it.
The ask (one PR)
- In
normalizeListViewSchema — or one shared helper the six sibling folds can collapse into — fold data.provider === 'object' + data.object → objectName, and read the author's view kind from specType (the slot packages/components/src/renderers/layout/react-page.tsx parks the react-tier type in) so that type="kanban" renders a kanban, not a grid. ⛔ Not a seventh per-block copy; ⛔ no renderer-side ?? dual-read (AGENTS.md #0.1 — the fold lives in the one documented normalizer).
- Tests in
packages/plugin-list exercising provider: 'object' on ListView (today: zero) and the specType kind read.
- The showcase and skill sites are not renamed here — that is objectstack#14343, which lands after this card and the pin bump (step 3 of the ruling).
Executable criterion
A react page binding ListView with data={{ provider: 'object', object: 'x' }} and type="kanban" and no objectName / viewType renders object x as a kanban.
Sequencing
No Blocked-by:. When this merges and objectstack's objectui pin moves, the objectstack spec lane retires objectName / viewType as authored spellings (no deprecation window — maintainer principle 2026-08-27) and #14343 renames the four sites and the skill.
Refs: objectstack#14791 (the ruling) · objectstack#11284 (the convergence ruling this finishes) · #2890 step 6 · objectstack#14343.
Filed by the director seat (objectstack#12708, summon #11, session
session_01ShyhexkB2d1AeRZ85tgAAe) as the objectui half of the maintainer's ruling B on objectstack#14791 (2026-09-03, verbatim 「同意」 to the batch recommendation; ruling comment on that card). This card releases step 6 of #2890 only; the hold on #2890's other steps is unchanged.What is true today (objectui
origin/main39af82f, measured by the objectstack triage seat on objectstack#14791)packages/plugin-list/src/ListView.tsxreadsschema.objectNameat 52 sites anddata.object/dataConfig.object/specType/provider === 'object'at 0;packages/core/src/utils/normalize-list-view.tsfolds ten legacy pairs and.objectoccurs 0 times. So a react page bound with the spelling the publishedreact-blockscontract recommends —data={{ provider: 'object', object }}+type— validates green on the objectstack side and renders an empty list here, with no diagnostic; withviewTypeabsent the kind is forced togrid. Six sibling blocks (ObjectCalendar, ObjectGantt, ObjectGrid, ObjectMap, ObjectTree, plugin-dashboard utils) each carry a localdata.objectfold; ListView never took it.The ask (one PR)
normalizeListViewSchema— or one shared helper the six sibling folds can collapse into — folddata.provider === 'object'+data.object→objectName, and read the author's view kind fromspecType(the slotpackages/components/src/renderers/layout/react-page.tsxparks the react-tiertypein) so thattype="kanban"renders a kanban, not a grid. ⛔ Not a seventh per-block copy; ⛔ no renderer-side??dual-read (AGENTS.md #0.1 — the fold lives in the one documented normalizer).packages/plugin-listexercisingprovider: 'object'on ListView (today: zero) and thespecTypekind read.Executable criterion
A react page binding ListView with
data={{ provider: 'object', object: 'x' }}andtype="kanban"and noobjectName/viewTyperenders objectxas a kanban.Sequencing
No
Blocked-by:. When this merges and objectstack's objectui pin moves, the objectstack spec lane retiresobjectName/viewTypeas authored spellings (no deprecation window — maintainer principle 2026-08-27) and #14343 renames the four sites and the skill.Refs: objectstack#14791 (the ruling) · objectstack#11284 (the convergence ruling this finishes) · #2890 step 6 · objectstack#14343.