Observation-class finding, filed unassigned for triage. Found while implementing #7580 (re-home the breakpoint vocabulary); not fixed there — skills/** is a governed, published surface with its own line ratchet and review path, and nothing about this breaks mechanically, so folding a prose edit into that PR would have been unreviewable scope.
The sentence
skills/objectui/rules/protocol.md:289 teaches the grid renderer's columns key and attributes the six-key vocabulary to the spec:
2xl is accepted and then dropped. The spec's BreakpointColumnMapSchema declares six keys — xs … xl plus 2xl — but the grid renderer reads only the first five...
Why it goes stale
objectstack#11027 retired @objectstack/spec's whole ui/responsive vocabulary, BreakpointColumnMapSchema included. It is merged upstream and unreleased, so the sentence is still true today and becomes false at objectui's next @objectstack/spec pin bump. #7580 re-homed the surviving half — BreakpointColumnMap is now declared in @object-ui/layout (ResponsiveGrid.tsx) — so after the bump the six keys are objectui's own vocabulary and the phrase "the spec's" names an owner that no longer exists.
Scope, measured
Narrow, and worth stating because two nearby things are NOT affected:
Nothing enforces this attribution, which is why it will not announce itself: no gate reads the sentence, and check:doc-types judges component type keys rather than prose about spec ownership. Left alone it becomes exactly the shape objectstack#4115 catalogues — a doc sentence naming a spec symbol as canonical, read by the next agent as ground truth, after the symbol has gone.
Suggested disposition
Fold the one-phrase correction into the @objectstack/spec pin-bump PR that lands objectstack#11027 (the same PR that is already forced to delete two self-expiring ALLOW entries in scripts/check-spec-symbol-derivation.mjs and to add the absence pins). Doing it there keeps the published-skills line ratchet paid by a PR that is already touching this vocabulary, and avoids correcting a sentence that is still true on today's pin.
⚠️ Not urgent and not a blocker for the bump — it is prose, and the bump's mechanical failures are elsewhere.
Related: #7580 (the re-home) · objectstack#11027 (the merged retirement) · #4773 (the measurement record).
Generated by Claude Code
Observation-class finding, filed unassigned for triage. Found while implementing #7580 (re-home the breakpoint vocabulary); not fixed there —
skills/**is a governed, published surface with its own line ratchet and review path, and nothing about this breaks mechanically, so folding a prose edit into that PR would have been unreviewable scope.The sentence
skills/objectui/rules/protocol.md:289teaches thegridrenderer'scolumnskey and attributes the six-key vocabulary to the spec:Why it goes stale
objectstack#11027 retired
@objectstack/spec's wholeui/responsivevocabulary,BreakpointColumnMapSchemaincluded. It is merged upstream and unreleased, so the sentence is still true today and becomes false at objectui's next@objectstack/specpin bump. #7580 re-homed the surviving half —BreakpointColumnMapis now declared in@object-ui/layout(ResponsiveGrid.tsx) — so after the bump the six keys are objectui's own vocabulary and the phrase "the spec's" names an owner that no longer exists.Scope, measured
Narrow, and worth stating because two nearby things are NOT affected:
gridrenderer, which is a different component fromresponsive-grid.griddoes not importBreakpointColumnMapat all — the type census overpackages/,apps/,examples/puts the only live import inResponsiveGrid.tsx. So this is an attribution error only, not a wrong key list.{xs:1, xl:5}rendersxl:grid-cols-5;{xs:1, "2xl":6}drops the2xlstep) is unaffected — that is the renderer's own class table, which [Decision] objectui execution half of the mergedresponsiveretirement (objectstack#11027) — deleting the two dead implementations does NOT unblock the spec bump, and the retirement's "no other authorable carrier" is false here #7580 did not touch.Nothing enforces this attribution, which is why it will not announce itself: no gate reads the sentence, and
check:doc-typesjudges component type keys rather than prose about spec ownership. Left alone it becomes exactly the shape objectstack#4115 catalogues — a doc sentence naming a spec symbol as canonical, read by the next agent as ground truth, after the symbol has gone.Suggested disposition
Fold the one-phrase correction into the
@objectstack/specpin-bump PR that lands objectstack#11027 (the same PR that is already forced to delete two self-expiring ALLOW entries inscripts/check-spec-symbol-derivation.mjsand to add the absence pins). Doing it there keeps the published-skills line ratchet paid by a PR that is already touching this vocabulary, and avoids correcting a sentence that is still true on today's pin.Related: #7580 (the re-home) · objectstack#11027 (the merged retirement) · #4773 (the measurement record).
Generated by Claude Code