Measured while lifting the gantt config vocabulary into @object-ui/types
(objectui#6051). Filed unassigned, observational.
The fact
packages/plugin-gantt/src/ObjectGantt.tsx declares a package-private
intersection:
typeGanttConfigEx=GanttConfig&{/* … */};Its header used to read "Hierarchy/type fields are ObjectUI extensions on top of
the spec's GanttConfig (not yet in @objectstack/spec GanttConfigSchema)". That
claim was already false: rc.6's GanttConfigSchema declares 19 keys, and
packages/types/src/objectql.ts records the correction on GanttConfig itself
("it declared SIX keys and called itself canonical, while rc.6's
GanttConfigSchema declares seventeen").
objectui#6051 lifted the nine members that genuinely had no home in
@object-ui/types and corrected the header. Eleven restatements remain, and
every one of them is a spec-declared key:
parentField, typeField, baselineStartField, baselineEndField,
groupByField, resourceView, assigneeField, effortField, capacity,
quickFilters, autoZoomToFilter
They were left in place deliberately rather than deleted: their JSDoc is the only
prose in this repo describing what the renderer does with each key, and deleting
the members would delete the documentation with them.
Why it is worth a card
Two declarations of one key can disagree. quickFilters and timeSegments are
NARROWINGS and load-bearing (they pin the plugin's runtime types,
QuickFilterDef[] / ShiftSegmentsConfig) — those should stay. The other nine
are pure duplicates whose types happen to match today, with nothing asserting
that they still will after a spec bump.
What a fix would look like
Either move the surviving JSDoc onto GanttConfig in @object-ui/types and drop
the duplicate members, or add a type-level pin asserting each restated member is
mutually assignable with its GanttConfig twin. Not urgent, and not a behaviour
change either way.
Related: objectui#6051.
Generated by Claude Code
Generated by Claude Code
Measured while lifting the gantt config vocabulary into
@object-ui/types(objectui#6051). Filed unassigned, observational.
The fact
packages/plugin-gantt/src/ObjectGantt.tsxdeclares a package-privateintersection:
Its header used to read "Hierarchy/type fields are ObjectUI extensions on top of
the spec's GanttConfig (not yet in @objectstack/spec GanttConfigSchema)". That
claim was already false: rc.6's
GanttConfigSchemadeclares 19 keys, andpackages/types/src/objectql.tsrecords the correction onGanttConfigitself("it declared SIX keys and called itself canonical, while rc.6's
GanttConfigSchemadeclares seventeen").objectui#6051 lifted the nine members that genuinely had no home in
@object-ui/typesand corrected the header. Eleven restatements remain, andevery one of them is a spec-declared key:
parentField,typeField,baselineStartField,baselineEndField,groupByField,resourceView,assigneeField,effortField,capacity,quickFilters,autoZoomToFilterThey were left in place deliberately rather than deleted: their JSDoc is the only
prose in this repo describing what the renderer does with each key, and deleting
the members would delete the documentation with them.
Why it is worth a card
Two declarations of one key can disagree.
quickFiltersandtimeSegmentsareNARROWINGS and load-bearing (they pin the plugin's runtime types,
QuickFilterDef[]/ShiftSegmentsConfig) — those should stay. The other nineare pure duplicates whose types happen to match today, with nothing asserting
that they still will after a spec bump.
What a fix would look like
Either move the surviving JSDoc onto
GanttConfigin@object-ui/typesand dropthe duplicate members, or add a type-level pin asserting each restated member is
mutually assignable with its
GanttConfigtwin. Not urgent, and not a behaviourchange either way.
Related: objectui#6051.
Generated by Claude Code
Generated by Claude Code