Skip to content

chore(changeset): release Object UI's 18.1.0-to-merge changes to the 38 @object-ui packages as one consolidated changeset - #26068

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-sefzdx
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-sefzdx

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Tesla · project thread

Fixes #25831
Part of #25677 (objectui merge aftercare). Gates the joint 18.2.0 Version PR, #25753.

Clause-②: yes (narrowing)
Metadata-protocol: narrowed

What changed

One new file, .changeset/25831-object-ui-18-1-to-merge.md, executing maintainer ruling item 28 = B (card comment 6404422838) as amended by the Claim amendment 6413971007:

Why one ADR-0087 marker, not five

check-adr-0087-registration accepts exactly one disposition marker per changeset file. Measured on main bbf70614: a probe changeset carrying five markers exits 1 with "5 adr-0087: markers -- exactly one disposition is expected" (self-test battery R9). Every mechanical category (registered, runtime-export-retired, type-surface-only, runtime-interface-only) compares the merge base with HEAD, and the five retirements are already on main, so the only admissible category for this diff is not-required (no-migration-prescription), which refuses an inline FROM/TO table. Hence the paragraphs point at the original changesets instead of restating their tables. The PM accepted this (option A) in Claim amendment 6413971007; per-break markers would be option B (six files) and can be reopened on the card.

The marker, in an HTML comment in the changeset body, reads in words: adr-0087: not-required (no-migration-prescription), reason: the five retirements are @object-ui/* surfaces (a renderer node type and its schema, a widget source member, unread exports, three providers duplicating @object-ui/react / @object-ui/app-shell names, nine @object-ui/types schema keys), none is an @objectstack/spec key, object definition or stored shape, so the packages/spec registries have no entry to write; objectui had no conversion registry; each old spelling is refused by name, and each change's migration ships in the original changeset this entry points to.

Verification (head 0329dd0514)

  • node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands: 20 derived commands, all exit 0; --ran reconciliation: 20 derived, 20 run, 0 NOT-MEASURED. Includes check-adr-0087-registration --base origin/main (1 declared-breaking changeset, disposition accepted), check-empty-changeset, check-changeset-no-major, their self-tests, check:changeset-gate-self-tests, check:nul-bytes, check:published-files.
  • node scripts/check-changeset-no-major.mjs --base origin/main --event E with this body's two declaration lines: exit 0 (LEVEL AXIS green). The same with Clause-②: no / Metadata-protocol: none: exit 1 (a minor beside none is refused), which is why the Claim's lines were amended.
  • node scripts/check-changeset-fixed.mjs: exit 0, 111 public packages + 1 declared private member in sync.
  • pnpm changeset status --verbose --since origin/main: 112 fixed-group members to 18.2.0, the 38 @object-ui/* among them, each citing this file.
  • changesets v3.0.3 has no version --dry-run, so pnpm changeset version was run on a scratch state of this worktree and reset: all 38 public @object-ui/* manifests read 18.2.0 and ui/packages/core/CHANGELOG.md gains the 18.2.0 entry with the marker hidden as a comment (337 files touched, discarded with git reset --hard). That run was at 213e4d2b; the head differs only by moving the two declaration lines to the end of the body, so the CHANGELOG headline is the BREAKING lead rather than the Clause-②: line.
  • Push-environment battery (GITHUB_ACTIONS=true GITHUB_EVENT_NAME=push node scripts/pm/check-dispatch-gates.mjs): result posted on the card with the report.

Acceptance notes

  • Arithmetic: root .changeset/*.md count goes from 96 to 97 (+1, this file; README excluded); ui/.changeset/ keeps 65 changesets + README.
  • Each of the 38 CHANGELOGs receives the same entry, because the group is fixed and the ruling names all 38.

Generated by Claude Code

…consolidated changeset

The 65 changesets objectui carried into ui/.changeset/ have no root
reader, so the first joint Version PR would leave every @object-ui/*
package at 18.1.0. One root changeset names the 38 public @object-ui/*
packages as minor; the five breaking retirements each get a paragraph
pointing at their original changeset, under one ADR-0087 disposition.

Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0119jY1rheeWvbYGGbLXr6sL
@github-actions

Copy link
Copy Markdown
Contributor

⛔ merge queue 构建失败 — 先分诊,再决定要不要重排

队列构建 40317091962 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集),
所以失败的测试可能在本 PR 没碰过的包里 —— 那不是重排能修的。每次盲目重排都会让排在后面的所有 PR 重建一轮。

分类:failure —— 按下面的日志分诊。

失败的 job(日志抽取,best effort):

  • Build Core — 失败步骤: Build packages (excluding docs)(日志不可读,点进 job 看)

↳ 失败原因 是判读的关键:超时(Test timed out in … / Hook timed out in …)多半是负载/时序,不是本 PR 的回归;
断言(AssertionError: …)才指向真实的行为改变。两者的 FAIL 行长得一模一样,只有这一行能区分。

⚠️ 断言这一侧有一类例外,判据是断言在测什么,不是它是不是 AssertionError。 断言的对象是产品行为(一个值、一个形状、一次拒收)⇒ 照上面读:真实的行为改变,去查,⛔ 不要重排掉;
断言的对象是这次实验自身的有效性前提(跑完的耗时、负载下的先后、任何只在时间预算内才成立的条件)⇒ 它跟超时是同一类,同样对负载敏感,重排一次是合法的判别手段。
识别是机械的:断言的消息或它比较的值本身点名了一段时长、一个时间戳、一个耗时计数。实测过的一对 —— AssertionError: SecurityPlugin.init() ran: expected false to be true 测的是产品行为(真回归);
AssertionError: this run took over a second, so second-precision stamps could have differed too: expected 1006 to be less than 1000 测的是实验前提:它守护的那条不变式当时是绿的,同一个 head 原样重排一次即成功。
穿着 AssertionError 外衣的时间测量,仍然是时间测量。(⛔ 这只改「怎么读一次红」,不改「哪些测试可以重排」——后者由别处管。)

跨 PR 相同签名(24h,按失败测试文件聚合):

  • ⚠️ 本次没有可用的聚合签名(日志里没有能解析出测试文件名的 FAIL 行)—— 这不是「没有同签名的其他 PR」,是这一轮没测到。跨 PR 聚合本次不可用,请手工比对其他 PR 的同类评论。
  • ⚠️ 24h 评论账本没读完(超过 5 页仍未读到窗口尽头),所以上面的「不同 PR 数」是下界,不是全量。

历史信号:

  • 本 PR 过去 24h 无队列失败记录(首次)。
  • 过去 24h 队列共有 22 个失败构建(不含本次)。

分诊清单:

  1. 失败测试在本 PR 改动的包里 → 真回归,修 PR。
  2. 失败测试与本 PR 无关 → 看上面的「跨 PR 相同签名」;已有汇总 issue ⇒ flaky/环境问题实锤,去那张 issue 上谈,修好前重排只会再烧一轮全队列。
  3. 两者都不是 → 可能与同组 PR 语义冲突;等前面的 PR 落地或失败出队后再重排一次即可,不要连续重排。

Generated by Claude Code · merge-queue-triage workflow (#4859)

@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Queue build 40317091962 (Build Core) is red on a group PR ahead of this one, not on this diff (one .changeset/*.md file, no source).


Generated by Claude Code

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

Labels

documentation Improvements or additions to documentation size/s tooling

Projects

None yet

2 participants