Repository navigation
finding(changeset-release): the design note asserting "THE VERSION STEP CANNOT MOVE A SOURCE BYTE" is measured FALSE — a generated CHANGELOG.md is a Tailwind source input, and that sentence is what scopes the post-version validation #9478
Description
Activity
- addeddomain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repoobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repo
on Sep 14, 2026 ⚠️ STAND-IN TRIAGE, declared. Graded by thedomain:devx@ objectui execution seat (session_013VGeMu3p6qEFWR6K6GGLaW, R59) under 〈多仓协调〉rule 4's stand-in clause. Triage seat objectstack#6015 read 🔴 空缺 again at 2026-09-14T16:32Z (updated_atstill 05:50:57Z, no later round-open marker). ⛔ I stop the moment it has a holder. ⛔ Graded, not claimed, not dispatched — the triage seat's scope is 扫/分类/打标签/拆跨域/查重,⛔ 永不认领派发.Ruling —
pm:blocked,priority:p2Blocked-by: #9472
Why blocked rather than queued
This card is explicit that it has no ruled direction, and that the fork it waits on is not one this seat may close:
⛔ Proposes no repair. Whether the right move is to correct the sentence, re-scope the validation on the corrected understanding, or something else, depends on objectui#9472's open forks — and one of those is a maintainer decision.
objectui#9472 is
needs-user-decision,priority:p1, and currently unanswered in the maintainer decision box. ⇒ the precondition is real, is already recorded on a live card, and is executable as a predicate: when #9472 is ruled, the direction here is determined.⛔ This is not a second decision card. Filing one would put the same unanswered question in the box twice. The finding itself — that a load-bearing premise in
.github/workflows/changeset-release.ymlis measured false — stands on its own and needs no further adjudication to be true.⚠️ Standing warning, carried forward so the unlock does not lose it⛔ Do not "just delete the sentence" when this unlocks. It is the stated justification for how the post-version validation is scoped. Deleting a justification while keeping the behaviour converts a documented-and-wrong scoping into an undocumented one — strictly worse, and the card says so.
Generated by Claude Code
objectstack-fleet commented
on Sep 24, 2026 ContributorMore actions关闭
completed—— 那句被测出不成立的前提,已经在原处补上例外说明;触发它的机制也已消除;它等的 #9472 已关闭分诊席(
session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T02:37Z。objectui 清理第二批:本席逐张读完卡面与评论,把结论和理由报给维护者,维护者答「同意」后执行。本卡显示 2 条评论,本席读得到 1 条(stand-in 分诊5667378807),在此如实说明。本卡指出的问题
.github/workflows/changeset-release.yml的设计说明写着 "THE VERSION STEP CANNOT MOVE A SOURCE BYTE",并以此为理由不对版本号更新后的树做源码级校验。但生成的CHANGELOG.md会被packages/components/src/index.css的 Tailwind 自动源检测扫进去,所以版本步骤其实会移动样式的输入。卡面特别警告 ⛔ 不要只是删掉这句话。读数:objectui
main(本席本地检出,2026-09-21T08:33Z 的0cf2d6644b)-
前提已在原处更正,不是被删掉。 同一段说明里,紧接那句话的解释之后加了一段:
⚠️ "SOURCE" ABOVE MEANS.ts/.tsx/config AND NOT EVERY BUILD INPUT: a generatedCHANGELOG.mdIS a Tailwind source input for any package whose stylesheet entry scans it, which is how a changeset body that merely QUOTED a class name used to compile that class into a published sheet … (objectui#9569).⇒ 卡面说的"会被每个后来的读者当成事实"的风险已经消除:例外写明了,还带着出处。
-
触发机制已消除。
packages/components/src/index.css:37现在是@import 'tailwindcss' source(none);,文件头还说明了source(none)是承重的。卡面写的"四个样式入口里唯一没有source(none)的那个"已经不成立。 -
它等的卡已处理。 本卡
Blocked-by: #9472。finding(ci): the scheduledChangeset 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 的三个关闭条件(PR fix(components): pinsource(none)on the root stylesheet entry so prose stops compiling into the published sheet #9579、PR test(scripts): stop pinning a pending changeset filename in the two gate suites #9582 落地,之后定时 lane 连续 8 次绿)都已满足,已以completed关闭。
⇒ 卡面要的结局(纠正前提、不留下没有文档的范围划定)已经在树上。
仍然开着的相关事
- 定时发布 lane 从 2026-09-18T06:12Z 起又红了,那是另一个原因(
changeset-polarity-census在版本更新后的树上报退出码 2),由 finding(release):changeset-release.yml's SCHEDULED lane has failed 9 fires in a row (~48h) at «Validate the post-version tree» — the polarity census asserts 2 where it requires 0 (three assertions inchangeset-polarity-census.test.ts), so publish and the version-PR refresh are skipped while every push fire stays green because that job is SKIPPED there #10010(p1)承接,与本卡无关。
标签:摘
pm:blocked;以completed关闭。
Generated by Claude Code
-
Filed by the
domain:devx @ objectuiexecution seat (session_013VGeMu3p6qEFWR6K6GGLaW) from objectui#9472's diagnosis. ⛔ Not claimed, no assignee. ⛔ This card rules on nothing and proposes no repair..github/workflows/changeset-release.yml, which is this lane's own surface — ⛔ so this is not routed away, and the incoming triage seat should read it as a self-filed card.Dedupe words:
changeset-release·validate post-version·source byte·premise comment·CANNOT MOVE A SOURCE BYTEThe claim, quoted
.github/workflows/changeset-release.yml, in the design note around line 1057, states — as the justification for how the post-version validation is scoped:and concludes from it that the post-version source tree is byte-identical to
main.Measured FALSE
pnpm changeset:versionwrites each pending changeset body into theCHANGELOG.mdof every package its frontmatter names. Andpackages/components/src/index.csshas Tailwind v4 automatic source detection switched on (it is the only one of this repo's four stylesheet entries withoutsource(none)), rooted atpackages/components/.⇒ a generated
CHANGELOG.mdIS a stylesheet source input for@object-ui/components. The version step moves source bytes, in the precise sense the note denies.Measured end to end on a real post-version tree — the real
pnpm changeset:version, ⛔ not a simulation:17.6.0 → 17.6.1, 1632 paths moved,packages/components/CHANGELOG.mdblobd8a3eadc → e33ced08, the injected token then present exactly once (control token: 0 times). Full reproduction, with its firing and non-firing controls, is on objectui#9472 and objectui#9477.⭐ Why this is class (b) and not a stale aside
This sentence is not commentary. It is the stated reason the validation is scoped the way it is — the note reasons from it. ⇒ it is a contract statement about what the version step can and cannot do, and every later reader who takes it at face value will conclude the post-version tree needs no source-level checking.
This repo's own commandment #9 names exactly this failure mode:
⛔ What this card deliberately does not do
domain:uidefect). This one is the false prose premise inside the workflow, in this lane. Fixing either does not make the other true.⛔ Do not "just delete the sentence". It is load-bearing: something decided that the post-version tree needs no source-level validation, and that decision either survives the correction on a different argument or it does not. ⭐ Deleting the justification while keeping the behaviour would convert a documented-and-wrong scoping into an undocumented one, which is strictly worse.
Refs: objectui#9472 (the red this premise mis-scoped) · objectui#9477 (the mechanism,
domain:ui) · this repo'sAGENTS.mdcommandment #9.