ADR-205: A column every content type carries excludes no type
- Status
-
Accepted
- Date
-
2026-09-24
- Amends
-
ADR-196 (its rule "one excluding column excludes the type" no longer counts the columns of the shared form)
- Authors
-
Netresearch DTT GmbH
Context
ADR-196 offers a content type unless, among other things, its
form holds an excluding column: a FlexForm, inline records, a record
reference, a user field and every TCA type the tool does not know. One
excluding column excludes the type.
On the Netresearch demo that rule offered no type at all. The TCA was loaded,
tt_ declared 65 items, and every candidate carried two
excluding columns that are not its own:
background_, a FlexForm bootstrap_package adds to core'simage_ options framespalette, which every content type uses;tx_, acontexts_ settings userfield EXT:contexts appends to theshowitemof every type (64 of 65).
create_ refused every call with
Allowed here: none, and update_, which checks the same
list, refused every element. Measured on 2026-09-24 in a CLI process of the
demo's web container with the tool's own available.
Decision
The form of core's header type is the shared form, and its columns
do not decide. An excluding column of that form is left at its default,
like an unfilled column; fields never accepted an excluding column and
still does not. The fillable columns of that form — date,
header_ — stay settable through fields as before. Every other
excluding column still excludes the type, as before.
header is the smallest content form, and core copies it onto a plugin
registered without a form of its own. An extension that adds a column to every
content type reaches header as well, whichever way it adds it — through one
of the palettes core gives every type, or through every showitem. What only
some types carry is theirs: bootstrap_package's accordion, carousel or tab keep
their inline items and pi_ and stay excluded.
Consequences
- On the demo,
header,text,textmedia,bullets,tableand the other prose types are offered again; a type with a FlexForm or inline column of its own is still refused. - An extension that puts a payload column into the
headerform would have it treated as shared. No such extension is known; the column would be left at its default, and the element would be created without it, as for an unfilled column. - An installation without a
headertype has no shared form, and the rule of ADR-196 applies unchanged.
Alternatives considered
The columns every candidate type carries. Measured on the demo, the
intersection over all 29 candidate types does not contain
background_: one type of the site package lacks it. A single
type that differs would take the relief away again.
Excluding only required columns. An inline column with no minimum is optional, and an accordion without items is still not a text. The rule would offer types whose content the draft cannot carry.