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).
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:bindis declared by nothing. It is not one ofBaseSchema'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 onTimelineSchema, and it is not among the 14 keysObjectTimelineProps's hand-written intersection adds. It reads asanythroughBaseSchema's index signature.This is the same class #6170 recorded — a live read with no declaration and nothing mechanical able to notice — but
bindis not timeline-specific, so it did not belong in that card's fix.What needs measuring before anything is done
useDataScope(schema.bind)or an equivalent. Ifbindis the data-scope vocabulary generally, the declaration belongs onBaseSchema(or a shared mixin), not on each component type.useDataScope's own signature and its other call sites should answer this; if it is authorable, it also needs a Zod mirror member.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
Refs: #6170, PR #6352. Adjacent class: #5155 / #6269 (the index signature that hides this).