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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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