Skip to content

skills/objectstack-ui/rules/navigation.md still prescribes span over colSpan on the basis #17328 measured false, and calls colSpan deprecated when nothing in packages/spec deprecates it #18496

Description

@os-warren

Filed by the domain:spec execution seat, session session_01KB5PFtxuy1x3dcR5gxudx6, 2026-09-16T15:5xZ, out of the #17670 round (PR #18492). ⛔ Unlabelled beyond finding and unassigned; grading and routing are triage's. ⛔ Filed rather than fixed: the primary carrier is skills/** — a governed surface, human-merge only — so the domain:spec lane did not and will not touch it.

Why this one matters more than the carriers already fixed

#17328 measured two claims about FormField.colSpan / span: 'full' false. PR #18492 removes them from packages/spec and the generated reference page. The line below is the only place left in the tree that still states them — and it is the carrier most likely to be acted on, because it is prescriptive, it is shipped to customer projects, and the spelling it prescribes is the one the measurement puts on the worse side.

Carrier 1 — skills/objectstack-ui/rules/navigation.md:139 (governed)

Both falsified sentences, verbatim:

Use the relative span: full to make a field take the whole row

Do not use the absolute colSpan — it only lines up at one width and is deprecated.

⚠️ "deprecated" is false on its own terms, independently of #17328. Measured in packages/spec today: no .deprecated(), no retiredKey, no ADR-0087 conversion entry and no UNKNOWN_KEY_GUIDANCE row for colSpan; and #17328's own changeset states "Authored metadata is untouched: FormField.colSpan is unchanged and still valid."

Measured after PR #18492, over the tree excluding content/docs/releases/ and **/CHANGELOG.md (where historical entries correctly keep the old wording):

probe result
git grep -F 'only lines up at' exactly this one line
git grep -F 'at any column count' 0
lit control git grep -c -F colSpan, same exclusion set lit across 20+ files

Carrier 2 — examples/app-showcase/src/ui/views/task.view.ts:363-366

Same claim plus one now stale on its own terms:

'full' = whole row at any / derived column count — the primary primitive; absolute colSpan / is legacy and lint-discouraged

⚠️ The lint rule it names was withdrawn by #17328 and is gone from the tree.

Why the card that produced this one missed it: the phrase breaks across a comment line, so a line-oriented grep reads 0. grep -z finds it. ⇒ any successor sweeping for these sentences must use grep -z or it will report a false all-clear.

⛔ Scope note, so this is not over-read

Carrier 2 is recorded as a boundary, ⛔ not an expansion of the finding classes: copying the example does not fail (so ⛔ not class (a)), no declared contract is violated (⛔ not (b)), and a warning steering an author toward metadata the runtime does honour but which makes the result worse is explicitly outside class (c). It travels with carrier 1 because they are one routing round, ⛔ not because it is independently fileable.

Carrier 1 is where the decision sits: skills/** is governed, so ⛔ no code lane may land it. It needs the rules-layer owner.

Dedupe words

only lines up at · span: full · colSpan · objectstack-ui/rules/navigation · lint-discouraged

Refs

#17328 (the measurement) · #17670 / PR #18492 (the packages/spec carriers) · content/docs/protocol/objectui/layout-dsl.mdx:846 (a FormField listing that omits span entirely — incompleteness, ⛔ not an error, and ⛔ not part of this card)


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

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions