Skip to content

[finding] layout-dsl.mdx: most of the 17 still-untagged YAML fences teach shapes the live schemas refuse (per-fence readings attached) #13266

Description

@claude

Found while implementing #13086 (the opt-in os:check-yaml checker, ruled 2026-08-29). Filed unassigned, recording only — the ruling on #13086 explicitly deferred corpus content clean-up out of that card (option (i) is a follow-up once the mechanism lands), so these readings are recorded here rather than fixed there.

Measured on branch claude/issue-13086-yaml-fence-checker at 4cf14eed (base origin/main @ 7404925), by parsing every YAML fence on content/docs/protocol/objectui/layout-dsl.mdx and running safeParse with the live schemas (PageSchema, FormViewSchema, FormSectionSchema, ResponsiveStylesSchema), resolved the same way check:yaml-examples resolves them.

What holds today

6 fences validate as-is and are now tagged (the #13086 PR): two section: wrappers, two sections: lists, the tabbed FormViewSchema example, and the responsiveStyles fragment.

What the live schemas refuse (still untagged, line numbers as of the tagged page)

Every rejection below is the one a runtime save would print. Grouped by defect shape:

  1. Page-template examples are not legal pages — fences at ~75 (Standard Template) and ~126 (Console Template) carry a context: key (Unrecognized key(s) on this page: context) and omit the required name and label. The page's own "Layout Schema Reference" section documents the real Page shape and contradicts its own examples.
  2. steps: wizard shape exists on no schema — fences at ~187 and ~1000 (Multi-Step Onboarding Wizard): Unrecognized key(s) on this page: steps.
  3. Section-level layout: span DSL exists on no schema — fences at ~250, ~419, ~444: Unrecognized key(s) on this form section: layout; the bare field_group item list also fails FormFieldSchema (span there is an enum of auto/full, not a number).
  4. Section variant: is a phantom key — fence at ~397 (compact / spacious / danger): Unrecognized key(s) on this form section: variant.
  5. Related-list and widget "sections" are not form sections — five fences between ~593 and ~700: Unrecognized key(s) on this form section: type, object, relationField, mode, actions, component, config (and fields missing). No live schema was found that accepts these bodies.
  6. Advanced layout: blocks (split_view / card_grid / kanban) — three fences between ~706 and ~745: refused by both PageSchema (Unrecognized key(s) on this page: layout with a rename hint toward template) and FormViewSchema (layout there is an enum vertical/horizontal/inline/grid). The card_grid one teaches a per-breakpoint columns: map — the same breakpoint-map defect class [finding] docs teach a field-level visible key in three shapes, none of which exists — FieldSchema refuses the spelling by name #12935 removed elsewhere on this very page.
  7. Customer 360 example writes regions as a map — fence at ~935: PageSchema.regions expects an array (Invalid input: expected array, received object), and label is missing.

Why recorded rather than fixed in #13086

Groups 1, 2, 5, 6 are not key-level typos: they document whole surfaces the spec does not declare, so the fix is a removed-or-implemented decision per section (the same judgment #12935 applied by hand to the visible-map and tab-options sections), not a mechanical rename. That is docs-content triage.

Re-check

  • pnpm --filter @objectstack/spec run check:yaml-examples prints the per-file tagged/untagged census.
  • Tagging any of the fences above with an os:check-yaml declaration reproduces the corresponding rejection verbatim.

Generated by Claude Code


Generated by Claude Code

Metadata

Metadata

Labels

bugSomething isn't workingdocumentationImprovements or additions to documentationdomain:specpriority:p1High: required for production / M2

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions