Skip to content

spec(types): 32 keys the renderers read are refused by the strict authoring face — declare each or rule it runtime-only, the ruled precondition before objectui validate goes strict (objectui#5250) #11070

Description

@objectstack-fleet

Blocked-by: #11389

Filing-gate category: ① — a defect with named read sites and a measured reproduction (finding class (a)), filed as a derived child of objectui#5250 with the parent's priority:p2. reach: the published export StrictAnyComponentSchema (@object-ui/types/zod, since objectui#8345) refuses documents whose keys a registered renderer reads. objectui validate on PR objectui#11069's head, the ruled consumer, exits 1 on them and tells the author to remove a key that works.

Reader: triage first (route; suggested domain:spec, because the fix face is packages/types and declaring a key widens the strict accept set, so Clause-② is yes). Then that seat's dev. Filed by the domain:devx @ objectui seat 2 (objectui#10917), session_01TdiauJaVCHuj45EzZGUxHh, 2026-09-29T08:51Z. ⛔ Not claimed, ⛔ not routed here.

This card takes the declaration half. objectui#5250 keeps the wiring (PR objectui#11069, parked as draft until this card and objectui#6152 land).

Why it blocks the wiring

The maintainer's ruling on objectui#5250 (2026-09-04, 5534418546), verbatim: 「The number tells the programme how red it goes red, and which components need their declarations repaired (per #6939's shape) before strict can be switched on.」

The population (measured, not inherited)

Source: PR objectui#11069, section M3. Base f6ae5e22d (objectui main, 2026-09-29), the SHIPPED strict face over 588 corpus documents (catalog, docs fences, authored). Class (ii) = a renderer reads the key and no schema declares it: 32 (component, key-path) pairs, 149 document occurrences, 141 of them strict-only. The enumeration, copied from that section:

  • form · showSubmit in 76 documents. form.tsx destructures showSubmit from schema. All 76 are catalog fields-* fixtures.
  • form · fields[]: multiple (6), rows (5), return_type (3), columns (3), summary_type (3), min / max / format / reference_to / dimensions (2 each), minLength / maxLength / pattern / accept / min_length / validation.message (1 each). Each has a named read in @object-ui/fields widgets or in form.tsx.
  • dashboard · widgets[].options: data (7), xField (6), yField (6), value (5), read in DashboardGridLayout / DashboardRenderer; description and trend (1 each), which reach the child through { ...widget, ...options }. And widgets[].component: chartType, xAxisKey, series (1 each); the slot is typed narrower than the chart node it carries.
  • dataSource on object-grid (2), list-view (2), object-form (1) and object-kanban (1). It reaches the component as a React prop through SchemaRenderer's spread.
  • page · regions[].children (1) and page:tabs · items (1).

The seat's spot-check of the largest pair (objectui origin/main 480de81, 2026-09-29T08:49Z):

  • packages/components/src/renderers/form/form.tsx:1189 reads showSubmit = true, and :3406 renders the submit button on {showSubmit && (.
  • showSubmit has 0 hits in packages/types/src/form.ts and packages/types/src/zod/form.zod.ts. Control, same files: submitLabel is declared at form.ts:1962 and form.zod.ts:991.
  • 77 files under examples/schema-catalog carry "showSubmit".

Direction (for triage and the owning seat, ⛔ not a ruling)

Dedupe

The 1000 most recently updated objectui items (issues and PRs, open and closed), listed over REST and grepped locally, read 2026-09-29T08:50Z:

Dedupe words: strict authoring face refuses read key · showSubmit undeclared FormSchema · undeclared read strict face · StrictAnyComponentSchema false refusal · declaration debt before strict


Generated by Claude Code

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

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepm:blockedpriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions