Skip to content

止血:packages/spec 的 vitest 缺 testTimeout —— 12 个跑 TS 编译器的用例配在 5s 默认值下 #4850

Description

@os-zhuang

范围严格限死:只改 packages/spec/vitest.config.ts 一行 + changeset。
这是 #4796 的止血,不是它的解。#4796 保持打开,方向 2(把导出面解析提成构建期产物)仍归 spec 车道。
⚠️ 本单不得写 Fixes #4796,那会把还没解决的结构问题一并关掉。

根因(已在 #4796 取证完毕,证据见 该条评论)

packages/spec/vitest.config.ts 没有设 testTimeout,吃 vitest 默认的 5000ms:

export default defineConfig({
  test: { globals: true, environment: 'node', include: [...], coverage: {...} },
});          // ← 无 testTimeout

而 packages/spec/src 下有 12 个测试文件在用例里加载 TypeScript 编译器并对整个导出面做类型解析:

const ts = (await import('typescript')).default;   // 建 program、解析 symbol、unalias、追 originOf
api/rest-server · automation/state-machine · automation/sync-retirement · cloud/tenant
data/driver · integration/connector · kernel/package-dependency-dual-source
studio/action-location-retirement · system/environment-artifact · system/notification
ui/app · ui/view

这类工作量本来就是秒级。合并队列的 runner 同时跑多个 PR 的批次,比 PR 分支拥挤,所以今晚 5 次命中全部发生在队列里,PR 分支一次没红过。

影响

今晚 5 次把完全无关的 PR 踢出合并队列:#4755(metadata-protocol)、#4788(plugin-auth)、#4823(metadata)、#4822(service-analytics,连踢两次)。每次都要有人去翻 gh-readonly-queue/* 的 run,才能做出「不是我的锅」这个证明。

要做的

  1. packages/spec/vitest.config.ts 的 test 块加 testTimeout: 60_000。60s 与 PR feat(spec): ratchet cross-entry dual-source exports — same name, different declaration, judged by symbol identity (#4446) #4506 当初给同族用例定的值一致,只是提到配置层一次覆盖全部 12 个,不再随新增清账单漏。
  2. changeset(patch;仅测试配置,无公共 API 变化)。

不要做的

跨车道说明

packages/spec/** 按 #4604 登记表归 spec 车道(session_0176qgxgCXTJCUv4YFLtusP9)。本单由主 backlog PM(session_015Br2xsJsczFsTR9bvbh2Ny)在维护者批准下破例跨入,理由是它卡住的是全仓合并吞吐(含本次发版关键项),而止血只需一行。已在 #4796 与 #4604 登记,留否决窗口 —— spec 车道若认为这一行应换个值或换个位置,直接说,本单立刻让行。

Related: #4796(本体,保持打开)、#4506(上一次局部修法)、#4739 / #4658 / #4740(受影响用例所属的清账单)

Activity

  1. self-assigned this
    on Aug 3, 2026
  2. os-zhuang commented on Aug 3, 2026

    @os-zhuang
    ContributorAuthor

    认领:PM 循环第 6 轮
    会话:session_015Br2xsJsczFsTR9bvbh2Ny
    分支:claude/issue-4850-spec-vitest-timeout
    Worktree:objectstack-issue-4850

    域:spec(⚠️ 跨车道,维护者已批准,见正文「跨车道说明」)
    文件面:packages/spec/vitest.config.ts + .changeset/*,仅此

    并行批隔离:本轮在飞的 #4700(packages/types / verify / qa)、#4775(packages/objectql)、#4836(metadata-protocol,复核中)、#4838(plugin-approvals,复核中)与本单文件面完全不相交。


    Generated by Claude Code

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions