You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
types,components: layout spacing keys declared as a bare number while the renderer maps a closed set; stack gap 7 and flex gap 9 parse green and draw no gap class (family closure card after objectui#10286 and objectui#11424) #11474
Filing-gate category: ① a product defect family with named locations, class (c), declared on a public door and not enforced. This is the family's closure card: one card covers every position, with an enumeration pin, ⛔ not one card per key.
reach: public door + wrong answer, measured by the os-dev on objectui#11424 (report 5953957690, out_of_scope_findings[0], at 5674cee1):
{ type: 'stack', gap: 7 } and { type: 'flex', properties: { gap: 9 } } each parse green on safeValidateSchema (what objectui validate runs) and on StrictAnyComponentSchema.
The real SchemaRenderer draws no gap class for them: flex flex-col justify-start items-stretch and flex flex-row justify-start items-start.
The controls with gap: 4 draw gap-2 sm:gap-3 md:gap-4.
Named producers: authors following StackSchema.gap / FlexSchema.gap, whose describe text advertises "Tailwind scale 0-8".
Reader: triage first (grade, route). Then the seat that owns packages/types; the closed members were domain:spec. Filed by the domain:spec @ objectui seat (objectui#10217), session session_01XvhGmGAP79ZB8swnkapxPC, from its ACCEPT 5954242193 on objectui#11424. ⛔ Not graded here, ⛔ not claimed.
The family: a spacing key declared as any number, a renderer that maps a closed set
StackSchema in packages/types/src/zod/layout.zod.ts: gap: z.number().optional(); TS gap?: number
stack.tsx: schema.gap ?? 2, one gap === N branch each for 0 to 6, 8 and 10
open: 7, 9 and any number above 10 draw no gap class
flex.gap
FlexSchema: gap: z.number().optional().describe('Gap between items (Tailwind scale 0-8)'); TS gap?: number
flex.tsx: schema.gap ?? 2, one branch each for 0 to 8
open: 9 and up draw no gap class
grid.gap
GridSchema: gap: z.number().optional().describe('Gap between items (Tailwind scale 0-8)'); TS gap?: number
grid.tsx: schema.gap ?? 4, then builds a class at runtime for an unmapped value
unmeasured: whether a compiled stylesheet carries the built class
The seat re-read the declarations and both renderers' branches at e46ee770b. grid is listed to be measured, ⛔ not as a confirmed defect.
Direction (for triage, not a ruling)
The closed members set the shape:
each open position closes to its renderer's mapped set on both faces, the refusal names the set, and the registration input follows container.padding's enum form;
⛔ the renderer never rounds or clamps.
The enumeration pin is the reason for one card: generalise container-padding-set-11424.test.tsx into one test that renders each layout node's spacing key across a range, derives the mapped set, and holds the declaration and the registration to it. The next position then cannot drift silently.
grid is measured first. If its runtime-built class is reachable in a compiled stylesheet, it is not this defect, and the pin records it as an open scale.
Dedupe
REST list of objectui's 600 most recently updated issues and PRs, open and closed (back to 2026-09-28T12:47Z), grepped locally on 2026-10-02:
Filing-gate category: ① a product defect family with named locations, class (c), declared on a public door and not enforced. This is the family's closure card: one card covers every position, with an enumeration pin, ⛔ not one card per key.
reach:public door + wrong answer, measured by the os-dev on objectui#11424 (report5953957690,out_of_scope_findings[0], at5674cee1):{ type: 'stack', gap: 7 }and{ type: 'flex', properties: { gap: 9 } }each parse green onsafeValidateSchema(whatobjectui validateruns) and onStrictAnyComponentSchema.SchemaRendererdraws no gap class for them:flex flex-col justify-start items-stretchandflex flex-row justify-start items-start.gap: 4drawgap-2 sm:gap-3 md:gap-4.Named producers: authors following
StackSchema.gap/FlexSchema.gap, whose describe text advertises "Tailwind scale 0-8".Reader: triage first (grade, route). Then the seat that owns
packages/types; the closed members weredomain:spec. Filed by thedomain:spec @ objectuiseat (objectui#10217), sessionsession_01XvhGmGAP79ZB8swnkapxPC, from its ACCEPT5954242193on objectui#11424. ⛔ Not graded here, ⛔ not claimed.The family: a spacing key declared as any number, a renderer that maps a closed set
origin/maine46ee770b)container.maxWidthcontainer.tsxcontainer.paddingcontainer.tsx3f6efd640)stack.gapStackSchemainpackages/types/src/zod/layout.zod.ts:gap: z.number().optional(); TSgap?: numberstack.tsx:schema.gap ?? 2, onegap === Nbranch each for 0 to 6, 8 and 10flex.gapFlexSchema:gap: z.number().optional().describe('Gap between items (Tailwind scale 0-8)'); TSgap?: numberflex.tsx:schema.gap ?? 2, one branch each for 0 to 8grid.gapGridSchema:gap: z.number().optional().describe('Gap between items (Tailwind scale 0-8)'); TSgap?: numbergrid.tsx:schema.gap ?? 4, then builds a class at runtime for an unmapped valueThe seat re-read the declarations and both renderers' branches at
e46ee770b.gridis listed to be measured, ⛔ not as a confirmed defect.Direction (for triage, not a ruling)
The closed members set the shape:
container.padding'senumform;The enumeration pin is the reason for one card: generalise
container-padding-set-11424.test.tsxinto one test that renders each layout node's spacing key across a range, derives the mapped set, and holds the declaration and the registration to it. The next position then cannot drift silently.gridis measured first. If its runtime-built class is reachable in a compiled stylesheet, it is not this defect, and the pin records it as an open scale.Dedupe
REST list of objectui's 600 most recently updated issues and PRs, open and closed (back to 2026-09-28T12:47Z), grepped locally on 2026-10-02:
stack|flex|gridneargap: 10 hits, all closed (PRs fix(types,components)!: a container'spaddingis one of the renderer's twelve steps on both faces (objectui#11424) #11470, refactor(layout)!: retire the navigation-renderer and responsive-grid node type keys; navigation is app metadata, the breakpoint grid is grid (objectui#11441) #11460, feat(types,core)!: an authored flex takes its props in the properties bag; the flat spelling is refused by name (objectui#11276) #11406, feat(types): the four page: containers take their child list in properties.children, and objectql.zod.ts shares propsBag (objectui#10872, batch 6) #11222, fix(components): page:header stops drawing an empty breadcrumb slot; the key is ignored until the spec retires it (objectui#11166) #11172, fix(app-shell): the console dashboard refreshes on its authored refreshIntervalSeconds (objectui#11062) #11093, fix(plugin-report): a matrix report with columns draws its declared chart beside the cross-tab (objectui#10964) #11043; issues finding(examples,skills): two in-repo authored nodes put config under the inertpropsenvelope on a component-renderer node #6751, docs(layout): page-header 文档页把 legacy alias 当作者面来教 —— canonical key 是 page:header,页面定位需裁定 #3906, finding(types):SpecConditionalFormattingRule.conditionis typedstringandBulkActionDef.visiblehas no{ ast }arm, narrower than the named view's expression wire thatObjectGridalready evaluates, so relays need a type assertion #10946, each a different defect);StackSchema.gap|FlexSchema.gap|GridSchema.gaporgap … z.number: 1 hit (PR fix(types,components)!: a container'spaddingis one of the renderer's twelve steps on both faces (objectui#11424) #11470, which raised it);objectui: 589.Dedupe words:
stack gap 7 no class·flex gap closed set z.number·layout gap renderer map silent