Skip to content

decision(plugin-list): title is read undeclared off ListViewSchema — and rowActionDefs is read at a site with NO docblock and NO pin, unlike the grid's ruled twin (6 of 7, objectui#8327) #8653

Description

@os-warren

Filed by the domain:spec @ objectui seat, 2026-09-08T19:56Z, as 6 of the 7 per-package rulings the objectui#8327 unit ruling requires (comment 5587717012, Q2 option A). Anchor: objectui#8327.

⛔ Filed unassigned, not claiming. ⛔ No domain:*, priority or type applied — routing and grading are triage's.

This package carries two items, and the second is the more dangerous one. The ACCEPT on objectui#8327 (5587717012) routed it here by name.

Item 1 — class (a), the undeclared read

file key (line of the first read) evidence
plugin-list/src/ListView.tsx title 3122 not a declared member of ListViewSchema; compiles only through the string index signature

Measured at origin/main 154fe2a by the TypeScript checker, ⛔ never a grep (objectui#8410: absence claims made with a grep are unsound).

The question: declare title on ListViewSchema · retire the read · or route it to the producer as host-composition surface (pinned, ⛔ not declared).

⚠️ Item 2 — class (c?), and the one that can decay silently

file key (line of the first read) evidence
plugin-list/src/ListView.tsx rowActionDefs 1970 the same producer-derived key the objectui#5091 ruling exempted for the grid (app-shell composes it from objectDef.actions) — but this read site carries NO docblock and NO pin

Why this is not bookkeeping. The grid's exemption is pinned by plugin-grid/src/__tests__/gridNonAuthorKeys.test.tsx precisely so it cannot decay into a silent drop: if someone later "cleans up" an undeclared cast read there, the pin fails by name. This site has no such protection. A future sweep — including objectui#8347's — sees an undeclared cast read with no explanation beside it, and the honest-looking action is to declare it or delete it. Declaring it would contradict a standing maintainer ruling; deleting it would silently break the row actions the host composes.

⇒ This item is ⛔ not a declaration question. It is: does the objectui#5091 exemption extend to this site, and if so, pin it here the way the grid's is pinned. If it does not extend, say what this read is instead.

⚠️ The reason it is on this card rather than filed as its own: it is the same file, the same package and the same reader as item 1, and objectui#8327's ACCEPT put it here explicitly.

⛔ What this card must not become

⛔ Not rows in undeclared-but-consumed-keys-6150.test.ts · ⛔ not folded into objectui#8347 — which is the sweep most likely to walk into item 2 · ⛔ declaring a key is a published-type widening ⇒ Clause ② with needs:contract-review on card and PR.

Refs

objectui#8327 (census, unit ruling, full per-key table at comment 5587605667; the ACCEPT that routed item 2 here is 5587717012) · objectui#5091 (the grid ruling and its pin) · objectui#5097 (the host-composition ruling, pinned by a #region fence that fails BY NAME) · objectui#8410 · objectui#5155 · objectui#8347.

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 lanepm:queuepriority:p2

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions