Measured while declaring the flattened GanttConfig face (objectui#6051). Filed
unassigned, observational.
The fact
ObjectGanttSchema declares BOTH spellings, and the renderer reads them with a
||:
// packages/plugin-gantt/src/ObjectGantt.tsx, getGanttConfigdependenciesField: schema.dependenciesField||schema.dependencyField,
dependenciesField is the spec's key (GanttConfigSchema.dependenciesField,
"Field listing the task's predecessor (dependency) record ids"). It was
UNDECLARED on ObjectGanttSchema until objectui#6051.dependencyField (singular) has no spec counterpart. It has been declared on
ObjectGanttSchema all along — so for the whole time this alias existed, the
published type taught ONLY the non-spec spelling and hid the canonical one.
Why it is worth a card
AGENTS.md commandment #0.1 names this exact shape:
do not add a lenient fallback/alias in the renderer (reading both columns
and fields, coercing a malformed shape, ??-defaulting around bad input) to
make non-compliant metadata "work." A tolerant fallback fossilizes the wrong
convention into a second de-facto contract.
Two spellings for one field, resolved at the read site, is a second dialect. The
zod mirror also declares both, so objectui validate green-lights either.
What a decision would have to cover
Whether dependencyField is retired (deprecate on both declaration faces, keep
reading it for one release, then drop the ||), or kept as a sanctioned
deprecated alias with @deprecated on both faces — ObjectKanbanSchema's zod
mirror already carries that pattern for groupField / cardFields
(packages/types/src/zod/objectql.zod.ts, "The deprecated aliases below are the
pre-#2231 objectui vocabulary"). Today it is neither: no deprecation marker, no
retirement, and the canonical key was the undeclared one.
Related: objectui#6051 (declared dependenciesField).
Generated by Claude Code
Generated by Claude Code
Measured while declaring the flattened
GanttConfigface (objectui#6051). Filedunassigned, observational.
The fact
ObjectGanttSchemadeclares BOTH spellings, and the renderer reads them with a||:dependenciesFieldis the spec's key (GanttConfigSchema.dependenciesField,"Field listing the task's predecessor (dependency) record ids"). It was
UNDECLARED on
ObjectGanttSchemauntil objectui#6051.dependencyField(singular) has no spec counterpart. It has been declared onObjectGanttSchemaall along — so for the whole time this alias existed, thepublished type taught ONLY the non-spec spelling and hid the canonical one.
Why it is worth a card
AGENTS.md commandment #0.1 names this exact shape:
Two spellings for one field, resolved at the read site, is a second dialect. The
zod mirror also declares both, so
objectui validategreen-lights either.What a decision would have to cover
Whether
dependencyFieldis retired (deprecate on both declaration faces, keepreading it for one release, then drop the
||), or kept as a sanctioneddeprecated alias with
@deprecatedon both faces —ObjectKanbanSchema's zodmirror already carries that pattern for
groupField/cardFields(
packages/types/src/zod/objectql.zod.ts, "The deprecated aliases below are thepre-#2231 objectui vocabulary"). Today it is neither: no deprecation marker, no
retirement, and the canonical key was the undeclared one.
Related: objectui#6051 (declared
dependenciesField).Generated by Claude Code
Generated by Claude Code