Skip to content

ci(ui-merge): register Type Check UI in REQUIRED_CONTEXTS - #25878

Merged
os-tesla merged 2 commits into
mainfrom
claude/project-thread-n7du7e
Oct 26, 2026
Merged

os-tesla merged 2 commits into
mainfrom
claude/project-thread-n7du7e

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Tesla · project thread

Part of #25752 (cutover step 6, the registry half). Part of #25677.

Clause-②: no
Metadata-protocol: none

This follows #25857 (merged as 3fca599), which registered Lint UI and Build & E2E UI. It has no closing keyword: #25853 closed with #25857, and #25855 closed with #25856.

Tier H. AGENTS.md and .claude/** change because the registry's statesTheSet rule makes both instruction surfaces name the registry exactly. check-governed-merges --test reads GOVERNED, landing tier H(人合). Draft; the seat lands it once the ruling is on record.

What changed

  • scripts/check-required-contexts.mjs: one REQUIRED_CONTEXTS row, the same shape as the two ci(ui-merge): register Lint UI and Build & E2E UI in REQUIRED_CONTEXTS #25857 added. ci.yml job type-check-ui publishes Type Check UI, and carries says: the type-check + vitest-setup type-check family of the ui/ workspace. The two statesTheSet surfaces' mustName arrays gain the literal, and the history comments now read 7→8.
  • AGENTS.md, the merge-queue sentence: "seven contexts block" becomes "eight" and names Type Check UI; "those seven" becomes "those eight" twice. The five lines are re-filled in place, so the file stays at 1117 lines with no clause dropped and no ceiling raised. The widest touched line is 109 bytes.
  • .claude/skills/pm-dispatch/references/platform-readings.md: 七个 becomes 八个 and the reading names Type Check UI. The file stays at 460 lines; the widest touched line is 95 bytes, under the 120-byte cap.

Test UI is not added; it was ruled out at the sitting (item 30 B).

The authorized field (open until the ruling is relayed)

The row's authorized currently reads PENDING the maintainer ruling — asked 2026-10-26T01:42Z …. The maintainer was asked to add Type Check UI to the main ruleset after #25856 closed bill item 49. Once the director relays his words, the field will quote them verbatim and this PR gets a push. It stays draft until then.

Deviation from the card

#25853 item 4 said "⛔ Do not add Type Check UI", and gave the reason: it joins after bill item 49. Item 49 is now closed. #25856 merged as fc2aaae, and Type Check UI was green on the main push run 40253800516 (job 121351290708). The epic PM ordered this row on 2026-10-26 at 01:42Z, so it is recorded here as a deviation that the epic PM ordered.

Verification (head 4a5dec3, base main c475b45b)

  • node scripts/check-required-contexts.mjs exits 0: 8 required context name(s) pinned across 3 workflow(s); 6 instruction surface(s) scanned.
  • node scripts/check-required-contexts.mjs --self-test exits 0.
  • NODE_OPTIONS=--use-env-proxy node scripts/check-required-contexts.mjs --verify-required-set on the branch exits 0. It is report-only. Direction A reads 1, because the ruleset click has not happened yet; direction B reads 0:
required-set sweep: 7 live required context(s) on main, 1 registered-but-not-required, 0 required-but-unpinned.
    • ruleset main (id 12119582, Repository-sourced — objectstack-ai/objectstack)
    required: TypeScript Type Check
    required: Test Core
    required: Build Core
    required: Lint & Repo Gates
    required: Governed Surface Queue Guard
    required: Lint UI
    required: Build & E2E UI

  ⛔ direction A — registered here, NOT in the live required set (1).
       • Type Check UI — ci.yml job 'type-check-ui'

Once Type Check UI is in the ruleset, the same command reads 0 / 0. That reading will be re-taken and posted here before landing.

  • Derived gates (node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack): 44 commands, all exit 0 on 4a5dec3 after pnpm install --frozen-lockfile and pnpm --filter '@objectstack/lint...' build; --ran reconciles 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN.
  • Changeset: none. Every path is repo-root tooling or instruction text and ships in no package (skip-changeset).

维护者速读(草稿)

改了什么: 把 Type Check UI 登记进仓库的必过检查注册表;AGENTS.md 和 pm-dispatch 读数表里的名单同步从七个改成八个。

为什么改: bill 49 已由 #25856 修好:没改 ui/ 包的 PR 上,这个检查不会再莫名变红,所以可以把它设为必过。这个 PR 是仓库这一半的改动;规则集那一半要你在设置里点。

风险与代价(含回滚): 只改登记和说明文字,不动 CI job 本身。你点之前,注册表多出一行,核对脚本会报“已登记、未设为必过”,只报告、不变红。回滚就是 revert 本 PR。

席位意见:

你要做的: 1) 在 main 规则集里加上 Type Check UI,并说一句(例如「加上了」),原话会写进这一行的 authorized 字段;2) 批准本 PR(os-zhuang)。


Generated by Claude Code

Bill item 49 closed with #25856 (fc2aaae), so the ui type-check job no
longer reds on an empty ui scope and joins the required set. The registry
row is the repo half; the ruleset half is the maintainer's. AGENTS.md's
merge-queue sentence and the pm-dispatch readings ledger state the set and
follow, line-neutral, seven → eight.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CB8WDTpTbuW2XrEyjKHVo
@os-zhuang
os-zhuang marked this pull request as ready for review October 26, 2026 02:55
@os-tesla
os-tesla enabled auto-merge October 26, 2026 03:01
@os-tesla
os-tesla added this pull request to the merge queue Oct 26, 2026
Merged via the queue into main with commit 744900d Oct 26, 2026
46 checks passed
@os-tesla
os-tesla deleted the claude/project-thread-n7du7e branch October 26, 2026 03:20
@github-actions

Copy link
Copy Markdown
Contributor

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

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

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

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

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

    × finds no pre-install gate reaching a package 7ms
    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 队列共有 10 个失败构建(不含本次)。

分诊清单:

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants