Skip to content

gate(devx): nothing in this repo reads @source declarations — six stylesheets drifted, and one published sheet ships a deprecated alias only because a CHANGELOG names it #8455

Description

@os-justin

Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) from objectui#8446's measurement (PR #8453). ⛔ Not claimed.

The class

There is no gate anywhere in this repo that reads @source declarations. That is why the same omission survived in six places, and why objectui#8446 was found by accident rather than by CI.

Census, measured on origin/main:

stylesheet test exclusion notes
packages/plugin-kanban/src/index.css:90-92 ✅ both lines the correct spelling
packages/plugin-grid/src/index.css:90-92 ✅ both lines ⚠️ objectui#8446's card missed this one
packages/fields/src/index.css:43-44 ✅ one line
packages/components/src/index.css:13 ❌ → fixed by PR #8453
packages/runner/src/index.css published; see objectui#8454
apps/console/src/index.css
apps/site/app/global.css
examples/*/src/index.css ×2

Why a gate rather than six edits

Two measured reasons, both from PR #8453:

① The artifact is CWD-dependent without source(none). Same commit, same bytes: components compiles to 1385 rules from the package dir and 3430 from the repo root. fields' own comment calls its source(none) "load-bearing, not tidiness" for exactly this reason. A gate can assert the declaration; six one-off edits will drift again.

② The residue is not harmless prose. packages/components/CHANGELOG.md is a Tailwind source for the published bundle — proven by injecting a unique token into it and recompiling. ⭐ .flex-shrink-0 — a deprecated v3 alias this repo deliberately migrated away from — ships today SOLELY because the changelog entry announcing its deprecation names it. Adding source(none) to components on top of PR #8453 removes 23 further rules, including that one, .bg-blue-500, .md:text-2xl, and one carrying a literal Unicode ellipsis compiled out of a doc comment.

⇒ "leave the prose-sourced residue" is not a safe default.

Shape (not ruled)

  • A — bring components to full sibling parity (source(none) + explicit @source lines). Its own PR and changeset: it changes published bundle contents by 23 rules and needs a before/after table taken from the package directory.
  • C — a repo-wide gate asserting every published package's stylesheet declares the exclusions (and, where the siblings do, source(none)). Catches the four remaining omissions and stops the seventh.

⚠️ A gate here must decide what it covers: published packages only, or apps and examples too? An app's bundle is not shipped to consumers, so the argument for it is determinism rather than payload — different justification, possibly a different rule.

Instrument notes for whoever takes it

Related

objectui#8446 / PR #8453 · objectui#8454 (the runner instance, published) · objectui#8068 (the voluntary-pin argument this gate answers)

Dedup

⚠️ Not run, declared rather than hidden. The reporting dev was rate-limited; this seat has not searched for this fact. No dedup claim is made. Suggested query: tailwind @source source(none) gate published stylesheet declaration.

Activity

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

Metadata

Metadata

Assignees

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repofindingpm:dispatchedpriority:p2tests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions