Skip to content

[finding] Three of five form-section examples in ui/ omit name, which the spec says makes the section render its authored label in every locale #10579

Description

@os-elon

Found by the content/docs/** audit in #10564 (card 2/2, the build-an-app path), in the "sibling pages covering overlapping ground and drifting apart" class.

The claim the spec makes

packages/spec/src/ui/component.zod.ts:825 documents what a form section's name is for, and states the consequence out loud:

name: z.string().optional().describe('Stable section identifier for i18n lookup (snake_case) — resolves `objects.{object}._sections.{name}.label`; a nameless section renders its authored label in every locale'),

So name is optional to Zod, but omitting it silently opts the section out of localization. Same shape as the sharingModel / security-owd-unset class: .optional() in the schema, load-bearing in practice, invisible to every fence gate.

The drift

Four ui/ pages document form sections, and they disagree about whether name is part of the shape.

With name:

  • content/docs/ui/create-vs-edit-form.mdx:69-72{ name: 'contact', label: 'Contact', columns: 2, fields: [...] }
  • content/docs/ui/field-grouping-and-order.mdx:61-62{ name: 'contact', label: 'Contact', columns: 2, fields: [...] }

Without name:

  • content/docs/ui/views.mdx:53{ label: 'Task', columns: 2, fields: ['title', 'status', 'assignee', 'due_date'] }
  • content/docs/ui/create-vs-edit-form.mdx:82{ label: 'Who is this?', columns: 1, fields: [...] }
  • content/docs/ui/public-data-collection.mdx:24{ label: 'Tell us about yourself', columns: 1, fields: [...] }

views.mdx:53 is the one that matters most: it is the first form-view example in the module's main view page, inside the defineView container snippet a reader copies to get their first form.

Why no one notices

content/docs/ui/translations.mdx:73 is the only page in the module that reveals the coupling, and it states it as a key path rather than a requirement:

| Form sections | objects.{name}._sections.{section} |

A reader who follows views.mdx, then later adds a locale from translations.mdx, finds their section headings untranslated with nothing failing — the section renders its authored label in every locale, exactly as the spec describes. Nothing at author time, build time or runtime reports it.

Suggested landing (hint for triage, not a routing decision)

  • Add name to the section examples in views.mdx:53, create-vs-edit-form.mdx:82 and public-data-collection.mdx:24, so the shape a reader copies is the localizable one.
  • Consider a one-line note where sections are introduced, carrying the spec's own sentence: a nameless section renders its authored label in every locale.
  • A publish-time lint (section-name-unset, alongside the existing field-group-undeclared) would close the class rather than the instances, if the platform wants sections localizable by default.

Dedupe: searched the 30 open finding issues and the 94 issues opened since 2026-08-21T02:00Z; nothing covers form-section name or section i18n.

Audit-only card — filed unassigned, not graded or routed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions