Skip to content

[finding] schema.bind is read by data-scope consumers but declared by no schema shape #6357

Description

@os-support-ai

Noticed while censusing timeline reads for #6170 (PR #6352). Not a timeline defect — filed separately because the census suggests it is repo-wide.

The fact

packages/plugin-timeline/src/ObjectTimeline.tsx:142:

constboundData=useDataScope(schema.bind);

bind is declared by nothing. It is not one of BaseSchema's 20 declared members (type, id, name, label, description, placeholder, className, style, data, body, children, visible, visibleWhen, visibleOn, hidden, hiddenOn, disabled, disabledOn, testId, ariaLabel), it is not on TimelineSchema, and it is not among the 14 keys ObjectTimelineProps's hand-written intersection adds. It reads as any through BaseSchema's index signature.

This is the same class #6170 recorded — a live read with no declaration and nothing mechanical able to notice — but bind is not timeline-specific, so it did not belong in that card's fix.

What needs measuring before anything is done

  • How many schema shapes reach useDataScope(schema.bind) or an equivalent. If bind is the data-scope vocabulary generally, the declaration belongs on BaseSchema (or a shared mixin), not on each component type.
  • Whether it is authorable metadata or a runtime slot. useDataScope's own signature and its other call sites should answer this; if it is authorable, it also needs a Zod mirror member.
  • Whether the docs teach it anywhere.

Deliberately no proposed fix — the right home depends entirely on the first bullet, and guessing it would produce the second declaration this class keeps generating.

Reproduce

grep -rn "useDataScope" packages --include='*.tsx' --include='*.ts' | grep -v __tests__
grep -rn "\.bind\b" packages/*/src --include='*.tsx' | grep -i schema
awk '/^export interface BaseSchema/,/^}/' packages/types/src/base.ts | grep -c "bind"

Refs: #6170, PR #6352. Adjacent class: #5155 / #6269 (the index signature that hides this).

Metadata

Metadata

Assignees

Labels

domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions