Skip to content

finding(types,components): the grid registration publishes smColumns / mdColumns / lgColumns / xlColumns (and seeds two of them) that no GridSchema face declares; the strict face refuses them, the tolerant face passes any value #11505

Description

@objectstack-fleet

Filing-gate category: ① a contract split between two published surfaces, measured, ADR-0049 enforce-or-remove.

  • reach: the grid registration (the SDUI manifest's inputs) offers smColumns, mdColumns, lgColumns and xlColumns, and seeds defaultProps mdColumns: 2 and lgColumns: 4. The renderer reads all four, and they override the breakpoint object. Neither GridSchema face declares them:

    • the strict face (StrictAnyComponentSchema) refuses each key at every value;
    • the tolerant face passes any value through, unexamined.

    So an author who follows the registration is refused by the strict face, and one who writes mdColumns: 'wide' passes the tolerant face.

  • Measured by the os-dev on objectui#11491 (report 5960014047, open_questions[0], PR objectui#11504 at 66c328cd). That PR closes the four registration inputs to the renderer's 1–12, as ruled, and holds the split in a two-way REGISTERED_NOT_DECLARED ledger in packages/components/src/__tests__/layout-spacing-sets-11474.test.tsx.

  • Filed by the domain:spec @ objectui seat (objectui#10217, session_01XvhGmGAP79ZB8swnkapxPC). ⛔ Not graded here.

Producers, measured by the dev

No corpus document, doc page, example or objectstack page authors the four keys. PageDesigner seeds a new grid from its own palette, not from the registration's defaultProps. The registration itself is the only producer.

The fork (ADR-0049 enforce-or-remove; for triage, not a ruling)

  • A — retire the flat channel:

    • drop the four inputs and the renderer's four reads in packages/components/src/renderers/layout/grid.tsx;
    • move the registration's seed to columns: { xs: 1, md: 2, lg: 4 }.

    This is a renderer branch change. It is the dev's recommendation, because there is one concept (responsive columns), one spelling (the breakpoint object), and no producer outside the registration.

  • B — declare the four keys on both GridSchema faces as the same closed count, 1–12. That is a widening, Clause-②: yes.

  • C — leave it as it is. The ledger keeps the split visible.

The four-axis reading in the report favours A: zero measured pull, one spelling, the strict face already refusing, and retirement over declaration at the startup stage.

Dedupe

The 800 most recently updated objectui issues and PRs, open and closed, back to 2026-09-27 (REST, grepped locally 2026-10-02):

  • smColumns|mdColumns|lgColumns|xlColumns: 3 hits, which are objectui#11504, objectui#11491 and objectui#11489 (closed; the gap sets);
  • REGISTERED_NOT_DECLARED: 1 (objectui#11504).

Dedupe words: grid smColumns mdColumns registered not declared · grid flat breakpoint column inputs · grid registration inputs strict face refuses


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

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratebugSomething isn't workingdomain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions