diff --git a/.changeset/25681-skills-repeater-untyped.md b/.changeset/25681-skills-repeater-untyped.md new file mode 100644 index 00000000000..dda4366e972 --- /dev/null +++ b/.changeset/25681-skills-repeater-untyped.md @@ -0,0 +1,12 @@ +--- +'@objectstack/skills': patch +--- + +docs(skills): object-level `composite` / `repeater` are untyped JSON — a typed list is a child object + +Clause-②: no +Metadata-protocol: none + +The `objectstack-data` field-types table said a `composite` carries "declared sub-fields". An object field has no member that declares them: `fields`, `subFields` and `columns` are refused on the field. The two rows now say the types are untyped JSON and that a list needing typed columns is a child object with a `master_detail` field (`inlineEdit: 'grid'` edits it inline on the parent's form). + +What to do: nothing. No key, value or behaviour changes. diff --git a/skills/objectstack-data/rules/field-types.md b/skills/objectstack-data/rules/field-types.md index 09290cbb0e9..4f929d6c349 100644 --- a/skills/objectstack-data/rules/field-types.md +++ b/skills/objectstack-data/rules/field-types.md @@ -113,8 +113,8 @@ Stored as JSON on the parent row — no separate table / FK: | Type | When to Use | |:-----|:------------| -| `composite` | Single embedded sub-object with declared sub-fields | -| `repeater` | Repeating embedded sub-object **array** | +| `composite` | Single embedded JSON object, **untyped** — a field declares no sub-fields (`fields` / `subFields` are refused) | +| `repeater` | Embedded JSON **array**, **untyped** — no sub-fields or `columns`; a typed list is a child object (`master_detail`, `inlineEdit: 'grid'`) | | `record` | Name-keyed **map** of embedded sub-objects (insertion order = display order; ADR-0007) | ## Calculated