Found while implementing #13916 (the fact-layer rewrite of the same sentence in packages/spec/src/data/field.zod.ts, PR #15055). Filed unassigned, out of scope there, and deliberately not touched by that PR.
The shape
.changeset/field-rows-and-option-description-declared.md is still pending (unreleased; it landed with PR #13669, merge commit 86e765a7). Its options[].description bullet ends:
Per the same inherited ruling, dependsOn is deliberately NOT declared — the canonical field-level depends_on already exists, and the widget-side spelling fix rides the objectui half.
That is the fourth copy of the sentence #13916 was filed about, and it is false about this package in the same way. Measured against the built schema at 9300bca5 (packages/spec/dist/data/index.js):
| probe | verdict |
|---|
FieldSchema with dependsOn: ['country'] | ACCEPTED |
FieldSchema with depends_on: ['country'] | REFUSED — unrecognized_keys, "Did you mean depends_on → dependsOn?" |
SelectOptionSchema with dependsOn | REFUSED — unrecognized_keys |
SelectOptionSchema with depends_on | REFUSED — unrecognized_keys |
depends_on is declared nowhere in @objectstack/spec. The spelling the sentence calls canonical is objectui's own BaseFieldMetadata.depends_on (packages/types/src/field-types.ts:128), a consumer-side type.
Why this is worth its own card
A changeset is the input to release notes, and release notes are compiled centrally at release time. This one has not shipped yet, so the correction costs one line now; after the release it is a docs-only PR against a release page (release pages are never edited from a code PR).
Why #13916's PR did not fix it in place
The bounded in-place exemption needs all four of its conditions, and the fourth fails: editing .changeset/** pulls in gate families outside that card's verification surface — dispatch-gates.mjs names check:objectui-changeset and check:pm-half-states as the families a .changeset/ path would match — and that card's PR is otherwise comment-text-only with a skip-changeset label. So: filed, not ridden.
Scope note for whoever takes it
The fix is the fact layer only, exactly as triage split it on #13916: say what is measured. The ruling layer — whether the option face should declare a cascade key at all — is not this card either; it lives with objectstack-ai/objectui#6153, and #14583 records a maintainer ruling dated 2026-09-02 on the field-level spelling half.
Refs: #13916 (the source-side card) · PR #15055 (its rewrite, and where the measurement table comes from) · #14583 · PR #13669 (where the sentence landed).
Generated by Claude Code
Found while implementing #13916 (the fact-layer rewrite of the same sentence in
packages/spec/src/data/field.zod.ts, PR #15055). Filed unassigned, out of scope there, and deliberately not touched by that PR.The shape
.changeset/field-rows-and-option-description-declared.mdis still pending (unreleased; it landed with PR #13669, merge commit86e765a7). Itsoptions[].descriptionbullet ends:That is the fourth copy of the sentence #13916 was filed about, and it is false about this package in the same way. Measured against the built schema at
9300bca5(packages/spec/dist/data/index.js):FieldSchemawithdependsOn: ['country']FieldSchemawithdepends_on: ['country']unrecognized_keys, "Did you meandepends_on→dependsOn?"SelectOptionSchemawithdependsOnunrecognized_keysSelectOptionSchemawithdepends_onunrecognized_keysdepends_onis declared nowhere in@objectstack/spec. The spelling the sentence calls canonical is objectui's ownBaseFieldMetadata.depends_on(packages/types/src/field-types.ts:128), a consumer-side type.Why this is worth its own card
A changeset is the input to release notes, and release notes are compiled centrally at release time. This one has not shipped yet, so the correction costs one line now; after the release it is a docs-only PR against a release page (release pages are never edited from a code PR).
Why #13916's PR did not fix it in place
The bounded in-place exemption needs all four of its conditions, and the fourth fails: editing
.changeset/**pulls in gate families outside that card's verification surface —dispatch-gates.mjsnamescheck:objectui-changesetandcheck:pm-half-statesas the families a.changeset/path would match — and that card's PR is otherwise comment-text-only with askip-changesetlabel. So: filed, not ridden.Scope note for whoever takes it
The fix is the fact layer only, exactly as triage split it on #13916: say what is measured. The ruling layer — whether the option face should declare a cascade key at all — is not this card either; it lives with objectstack-ai/objectui#6153, and #14583 records a maintainer ruling dated 2026-09-02 on the field-level spelling half.
Refs: #13916 (the source-side card) · PR #15055 (its rewrite, and where the measurement table comes from) · #14583 · PR #13669 (where the sentence landed).
Generated by Claude Code