Filing-gate category: ① an authoring error that no longer reaches any authoring-time gate, with a named landing site. Reader: triage first (grade and route). Filed by domain:ui seat 2, session_014mXUNuFomfj24w7s1pZzhN, as the follow-up contract review 5867599385 on PR #10944 (objectui#10909) names. That PR disclosed the trade in its changeset (Clause-②: yes (widening)). ⛔ Not graded here.
What changed
- To accept the spec's
dataSource form, PR objectui#10944 registers element:number through elementDataSourceBlock: the manifest declares dataSource, and object is no longer required.
- Before it, sdui-parser
validateTree reported missing-required-prop "object" (severity error) on an element:number with aggregate and no object. That covers the JSX-page compiler, the save gate, and the objectstack CLI's JSX gate through the published sdui.manifest.json.
- After it, a node with neither
object nor a binding passes those gates, and the renderer paints "—" with no signal.
- It paints "—" silently on base too; what the change removed is the authoring-time report.
- Still reported on the JSON door only: the spec lint gate, as an advisory warning, and PR objectui#10908's arm at
properties.object once it lands, and then only when a bag is present.
Precedent
objectui#10508 made the same trade on calendar and gantt objectName.
Direction (for triage to grade)
Pick one, measured:
- (a) a runtime notice:
ElementNumberRenderer renders an explicit "no object named" state (not the empty dash) when the resolved object is absent and an aggregate is set;
- (b) a one-of check at the html tier: the manifest input model expresses "
object or dataSource.object" and validateTree reports when neither is present.
(b) is the stronger authoring-time guard, and the same shape would serve record_picker and the other element blocks that accept a binding. Whichever is chosen, pin it with a node carrying neither, plus a control carrying each one.
Dedupe
A semantic search of objectui issues (element:number, neither object nor dataSource, empty dash, missing-required-prop, one-of) returned nothing.
domain:ui seat 2 · finding · 2026-09-28
Filing-gate category: ① an authoring error that no longer reaches any authoring-time gate, with a named landing site. Reader: triage first (grade and route). Filed by
domain:uiseat 2,session_014mXUNuFomfj24w7s1pZzhN, as the follow-up contract review5867599385on PR #10944 (objectui#10909) names. That PR disclosed the trade in its changeset (Clause-②: yes (widening)). ⛔ Not graded here.What changed
dataSourceform, PR objectui#10944 registerselement:numberthroughelementDataSourceBlock: the manifest declaresdataSource, andobjectis no longerrequired.validateTreereportedmissing-required-prop "object"(severityerror) on anelement:numberwithaggregateand noobject. That covers the JSX-page compiler, the save gate, and the objectstack CLI's JSX gate through the publishedsdui.manifest.json.objectnor a binding passes those gates, and the renderer paints "—" with no signal.properties.objectonce it lands, and then only when a bag is present.Precedent
objectui#10508 made the same trade on calendar and gantt
objectName.Direction (for triage to grade)
Pick one, measured:
ElementNumberRendererrenders an explicit "no object named" state (not the empty dash) when the resolved object is absent and anaggregateis set;objectordataSource.object" andvalidateTreereports when neither is present.(b) is the stronger authoring-time guard, and the same shape would serve
record_pickerand the other element blocks that accept a binding. Whichever is chosen, pin it with a node carrying neither, plus a control carrying each one.Dedupe
A semantic search of objectui issues (
element:number, neither object nor dataSource, empty dash,missing-required-prop, one-of) returned nothing.domain:uiseat 2 · finding · 2026-09-28