Skip to content

finding(examples,skills): two in-repo authored nodes put config under the inert props envelope on a component-renderer node #6751

Description

@claude

Found by the corpus census the objectui#6708 ruling required before its diagnostic's level could be chosen. Filed rather than fixed: objectui#6708's PR is the SchemaRenderer-tier diagnostic and changes no authored metadata.

The mechanism (settled, not re-litigated here)

SchemaRenderer hoists properties.* onto the node; props is evaluated and then spread as React props instead. A renderer declared as ({ schema }) — the normal component-renderer shape — never sees it. The element:* family is the exception, because its readProps() merges both bags. Every gate accepts the spelling: BaseSchema is .passthrough().

The two hits, measured on faac0d935

wherenodekeys under propsthe renderer reads
packages/types/examples/data-display-examples.json (compositeExample)flexdirection, gapschema.direction, schema.gapflex.tsx
skills/objectui/guides/page-builder.mdstatisticlabel, valueschema.*StatisticRenderer is declared ({ schema })

Both therefore render as if the bag were empty: the flex node gets the default row direction and the default gap whatever the example says, and the statistic node renders with no label and no value. Both are published teaching material presented as correct.

The skills one is the higher-leverage half: the published skills corpus is what an AI author learns the spelling from, and this is the same failure class as objectui#5473 and objectui#5947.

What is NOT a hit, and should stay as it is

Three other authored occurrences of the same shape are deliberate counter-examples, already marked as wrong where they stand, and must not be "fixed":

  • skills/objectui/rules/protocol.md — a card with props: { title }, immediately followed by the measurement table showing it renders no header;
  • skills/objectui/guides/schema-expressions.md — a card and a text node, both flagged with a cross mark and the words "evaluated, then dropped".

Census scope

Every JSON document, every json fence in every .md/.mdx, and every TypeScript object literal in the repo, walked for nodes carrying both type and props: 39 nodes, 22 on component-renderer types, 19 of those 22 test fixtures exercising the shape on purpose. These two are the whole authored, non-test remainder that is not a counter-example. No application runtime metadata in the repo carries the shape.

Suggested fix

Mechanical, and the correct target differs per node: both flex and statistic declare their keys at NODE level in their schemas, so the fix is to lift the keys out of the envelope rather than to rename props to properties. Worth confirming against each schema before editing.

Related: objectui#6708 (the diagnostic that now names this at render), objectui#6508 (a different defect in the same guide file), objectui#5473, objectui#5947.


Generated by Claude Code

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions