Skip to content

fix(ui-merge): the CI page and two of its tests stop reading the two workflows #25745 deleted - #25861

Merged
objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-6qe56u
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 2 commits into
mainfrom
claude/project-thread-6qe56u

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Tesla · project thread

Part of #25712 (4b PR 2c: main's red Test UI 8/16 and 9/16 tests read what the tree has).
Part of objectstack#25677.

Clause-②: no
Metadata-protocol: none

维护者速读(草稿)

席位核对

(left for the dispatch seat)

Why

objectstack#25745 (4a) deleted ui/.github/workflows/changeset-release.yml and ui/.github/workflows/spec-range-floors.yml when ui/ took objectstack's one release lane for both scopes. scripts/ui-import/README.md recorded that three ui/scripts/__tests__ files still read them and left them to this card. On main (90a34e20, e167956e), and reproduced locally:

  • Test UI 8/16: ci-cd-pipeline-doc.test.ts, 9 failures (ENOENT … ui/.github/workflows/changeset-release.yml; inventory rows for both deleted files).
  • Test UI 9/16: workflow-cache-save-bound.test.ts, 2 failures (changeset-release.yml must still define a release: / lane: job).

The two workflows stay deleted. Each fix makes the page and the tests describe the tree as it is. Nothing is skipped: rows whose whole subject is gone retire, and the disposition is written beside them.

What changes

  • ui/content/docs/guide/ci-cd-pipeline.md (+16 / −240):
  • ui/scripts/__tests__/ci-cd-pipeline-doc.test.ts (+16 / −57). In "the four sections measured as parity defects":
    • the two units (changeset-release.yml release and spec-range-floors.yml) and their entries in the jobs-per-workflow pin come out;
    • so does the lane exclusion check;
    • so do the four DECLARED_NON_RUN_COMMANDS entries that explained the release job's publish: input.
    • The sweep's inherited-declaration pin goes from five keys to one.
    • A paragraph beside the set records the retirement. The two parser floors (> 8) still hold on what is left.
  • ui/scripts/__tests__/workflow-cache-save-bound.test.ts (+11 / −2): changeset-release.yml::release (40) and changeset-release.yml::lane (20) leave their two derived-ceiling tables. Each removal is recorded the way the file already records stale.yml::stale's: "re-adding it does not restore a pin".

The one red that stays, owned by PR 2d

Test UI 8/16 keeps one failure after this PR: ui/scripts/__tests__/check-pre-install-import-graph.test.ts > finds no pre-install gate reaching a package.

AssertionError: a script this repository runs before `pnpm install` needs `node_modules` to load: expected [ Array(1) ] to deeply equal []
+   "unresolved: scripts/objectstack-pin.mjs",

That is a true finding on the tree, not a stale pin. #25745 deleted ui/scripts/objectstack-pin.mjs, but ten nested workflows still run node scripts/objectstack-pin.mjs build before their install step: ci.yml, docs-deploy.yml, lint.yml, live-e2e.yml, lockfile-dedupe.yml, node-esm-load-gate.yml, performance-budget.yml, published-dist-gate.yml, repo-gates.yml and shadcn-check.yml under ui/.github/workflows/. Those files are Tier H since #25834, never run nested, and are deleted by PR 2d. Per the dispatcher's ruling, there are no throwaway edits to them here. The finding is the first row of 2d on #25712.

Verification

Run from ui/ per ui/AGENTS.md:

Run This PR main e167956e
The three files: pnpm exec vitest run --project unit scripts/__tests__/ci-cd-pipeline-doc.test.ts scripts/__tests__/workflow-cache-save-bound.test.ts scripts/__tests__/check-pre-install-import-graph.test.ts 1 failed / 132 passed (the owned row above) 12 failed / 121 passed
ci-cd-pipeline-doc.test.ts alone 85 passed 9 failed
The whole scripts/__tests__ suite, --shard=1/2 and --shard=2/2 26 failed / 5,576 passed —

Of the 26 suite failures, one is the owned row. The other 25 are date-only-zone-pins-10183 ×23 and unit-registry-absence-collision ×2, and they fail identically on a clean main e167956e checkout here (25 failed / 19 passed for those two files). Their spawned runs report "ran no case at all" on this unbuilt box, so they are not this diff's.

Derived gates (node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack from this diff): 18 families, all exit 0 at this head; --ran reconciles 18 run, 0 NOT-MEASURED, 0 UNRUN. The slowest were check:query-options-erasure (285 s), check-comment-mask-corpus (206 s) and check:type-check-debt (185 s).

🤖 Generated with Claude Code

https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS

…workflows #25745 deleted

objectstack#25745 deleted ui/.github/workflows/changeset-release.yml and
spec-range-floors.yml when ui/ took objectstack's one release lane. Three
tests kept reading them and red Test UI 8/16 and 9/16 on main:

- ui/content/docs/guide/ci-cd-pipeline.md loses the two inventory rows, the
  two workflow sections and the NPM_TOKEN row; its historical prose names the
  release workflow in words rather than by a file that no longer exists, and
  the Release Workflows heading says where publishing went.
- ci-cd-pipeline-doc.test.ts drops the two parity units, their job pins, the
  lane exclusion and the four publish-input declarations, with the
  retirement recorded beside the set.
- workflow-cache-save-bound.test.ts drops changeset-release.yml::release and
  ::lane from the two derived-ceiling tables, recorded the way stale.yml's
  removal was.

check-pre-install-import-graph's one red stays: ten nested workflows still
run the deleted scripts/objectstack-pin.mjs. It is a true finding on Tier H
files and clears when PR 2d deletes ui/.github/workflows/**.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A6SEitNngAMugGbuJHWsDS
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 26, 2026
@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tests labels Oct 26, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 26, 2026 01:40
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 26, 2026 01:40
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit c475b45 Oct 26, 2026
53 of 54 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-6qe56u branch October 26, 2026 01:49
@github-actions

Copy link
Copy Markdown
Contributor

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

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

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

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

  • Test UI (8/16) — 失败步骤: Run the ui tests (shard 8/16)

    × finds no pre-install gate reaching a package 12ms
    FAIL   unit  scripts/__tests__/check-pre-install-import-graph.test.ts > the real tree — every step objectui#6148 measured is still derived > finds no pre-install gate reaching a package
      ↳ 失败原因: AssertionError: a script this repository runs before `pnpm install` needs `node_modules` to load: expected [ Array(1) ] to deeply equal []
    

↳ 失败原因 是判读的关键:超时(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,按失败测试文件聚合):

历史信号:

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

分诊清单:

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

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

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/m skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants