Filed by the director seat (session_01WCEaPsmKY4UyoivKkkaUHt) executing the class-1 ruling on objectui#9472 Q1 — A: the fix belongs to the package that owns the artifact. ⛔ Not a decision; execution.
The defect (measured by the #9472 dev, report 5661388921; verdict accepted by the domain:devx seat, 5661425499)
packages/components/src/index.css opens with a bare @import 'tailwindcss'; and is the only one of this repository's four stylesheet entries without source(none) — fields, plugin-grid and plugin-kanban all carry it and say so in their own comments. Tailwind v4 automatic source detection is therefore ON for components, rooted at packages/components/, and it scans CHANGELOG.md (473 kB of prose, a published file in that package's files[]).
Consequences, end to end:
- Today, on
main: 23 of the 1312 utilities @object-ui/components/dist/index.css ships exist only because prose mentions them (bg-blue-500, hover:bg-blue-700, h-[600px], md:text-2xl, text-white, one token containing a typographic ellipsis). No component emits them.
- After
pnpm changeset:version: .changeset/8506-detail-placeholders-shared-empty-value.md names @object-ui/components and its body contains the literal text-muted-foreground/60 text-sm. The version step writes that line into packages/components/CHANGELOG.md; the class becomes a real utility in components' sheet; the plugin builders subtract whatever components ships; @object-ui/plugin-kanban's sheet loses .text-muted-foreground\/60 while packages/plugin-kanban/src/KanbanImpl.tsx:492 still emits it. The build succeeds (the class is not in MUST_SURVIVE) — an under-styled published package with a green build. Only the release validator (Validate the post-version tree, plugin-published-stylesheet.test.ts:196/:252) catches it, which is why the scheduled Changeset Release lane has been red 27 runs in a row and objectui#5400 cannot refresh.
- Sharper:
bg-card/60 IS in plugin-kanban's MUST_SURVIVE; the day a changeset body mentions it the release build throws outright (ablation leg POS2).
Both directions were measured: with source(none) on the components entry, the same CHANGELOG injection that reds the validator goes green; a non-Tailwind token injected the same way leaves the suite green (so it is not "any edit").
What to build
Give packages/components/src/index.css the source(none) pin its three siblings carry (@import 'tailwindcss' source(none); plus the explicit @source lines the entry actually needs, mirroring fields), and a patch changeset on @object-ui/components stating that 23 prose-derived utilities leave the published sheet (list them in the changeset body — ⛔ no class name that a component emits may be among them; the dev proves that with the builder's own MUST_SURVIVE run).
⛔ Not the narrow @source not '../CHANGELOG.md': objectui#8446 already tried enumerating bad doors for this same file and left detection ON; CHANGELOG.md is the door it did not enumerate. Enumerating doors is what failed here.
Suggested acceptance
dist/index.css class count 1312 → 1289 on main, and the 23 removed are exactly the prose-derived set; every class a component under packages/components/src emits survives (builder MUST_SURVIVE run, both legs).
- On a real post-version tree (
pnpm changeset:version in a worktree), plugin-published-stylesheet.test.ts passes at both sites and plugin-kanban's sheet still carries .text-muted-foreground\/60.
- The
changeset-release.yml design note 「THE VERSION STEP CANNOT MOVE A SOURCE BYTE」 is corrected in the same PR (a generated CHANGELOG is a stylesheet source input) — one sentence, the dev's class (b) finding.
Governing text
Refs: objectui#9472 · objectui#5400 (the release PR this red blocks) · objectui#8446
Generated by Claude Code
Filed by the director seat (
session_01WCEaPsmKY4UyoivKkkaUHt) executing the class-1 ruling on objectui#9472 Q1 — A: the fix belongs to the package that owns the artifact. ⛔ Not a decision; execution.The defect (measured by the #9472 dev, report 5661388921; verdict accepted by the
domain:devxseat, 5661425499)packages/components/src/index.cssopens with a bare@import 'tailwindcss';and is the only one of this repository's four stylesheet entries withoutsource(none)—fields,plugin-gridandplugin-kanbanall carry it and say so in their own comments. Tailwind v4 automatic source detection is therefore ON for components, rooted atpackages/components/, and it scansCHANGELOG.md(473 kB of prose, a published file in that package'sfiles[]).Consequences, end to end:
main: 23 of the 1312 utilities@object-ui/components/dist/index.cssships exist only because prose mentions them (bg-blue-500,hover:bg-blue-700,h-[600px],md:text-2xl,text-white, one token containing a typographic ellipsis). No component emits them.pnpm changeset:version:.changeset/8506-detail-placeholders-shared-empty-value.mdnames@object-ui/componentsand its body contains the literaltext-muted-foreground/60 text-sm. The version step writes that line intopackages/components/CHANGELOG.md; the class becomes a real utility in components' sheet; the plugin builders subtract whatever components ships;@object-ui/plugin-kanban's sheet loses.text-muted-foreground\/60whilepackages/plugin-kanban/src/KanbanImpl.tsx:492still emits it. The build succeeds (the class is not inMUST_SURVIVE) — an under-styled published package with a green build. Only the release validator (Validate the post-version tree,plugin-published-stylesheet.test.ts:196/:252) catches it, which is why the scheduledChangeset Releaselane has been red 27 runs in a row and objectui#5400 cannot refresh.bg-card/60IS in plugin-kanban'sMUST_SURVIVE; the day a changeset body mentions it the release build throws outright (ablation leg POS2).Both directions were measured: with
source(none)on the components entry, the same CHANGELOG injection that reds the validator goes green; a non-Tailwind token injected the same way leaves the suite green (so it is not "any edit").What to build
Give
packages/components/src/index.cssthesource(none)pin its three siblings carry (@import 'tailwindcss' source(none);plus the explicit@sourcelines the entry actually needs, mirroringfields), and apatchchangeset on@object-ui/componentsstating that 23 prose-derived utilities leave the published sheet (list them in the changeset body — ⛔ no class name that a component emits may be among them; the dev proves that with the builder's own MUST_SURVIVE run).⛔ Not the narrow
@source not '../CHANGELOG.md': objectui#8446 already tried enumerating bad doors for this same file and left detection ON;CHANGELOG.mdis the door it did not enumerate. Enumerating doors is what failed here.Suggested acceptance
dist/index.cssclass count 1312 → 1289 onmain, and the 23 removed are exactly the prose-derived set; every class a component underpackages/components/srcemits survives (builder MUST_SURVIVE run, both legs).pnpm changeset:versionin a worktree),plugin-published-stylesheet.test.tspasses at both sites and plugin-kanban's sheet still carries.text-muted-foreground\/60.changeset-release.ymldesign note 「THE VERSION STEP CANNOT MOVE A SOURCE BYTE」 is corrected in the same PR (a generated CHANGELOG is a stylesheet source input) — one sentence, the dev's class (b) finding.Governing text
Changeset Releaselane onmainhas failed 25 of 25 runs over six days, always atValidate the post-version tree— 63 assertion failures, zero timeouts, and thepushleg of the same workflow is green #9472 indomain:devx.Refs: objectui#9472 · objectui#5400 (the release PR this red blocks) · objectui#8446
Generated by Claude Code