范围严格限死:只改 packages/spec/vitest.config.ts 一行 + changeset。
这是 #4796 的止血 ,不是它的解。#4796 保持打开,方向 2(把导出面解析提成构建期产物)仍归 spec 车道。
⚠️ 本单不得 写 Fixes #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,才能做出「不是我的锅」这个证明。
要做的
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 个,不再随新增清账单漏。
changeset(patch;仅测试配置,无公共 API 变化)。
不要做的
跨车道说明
packages/spec/** 按 #4604 登记表归 spec 车道(session_0176qgxgCXTJCUv4YFLtusP9)。本单由主 backlog PM(session_015Br2xsJsczFsTR9bvbh2Ny)在维护者批准下 破例跨入,理由是它卡住的是全仓合并吞吐(含本次发版关键项),而止血只需一行。已在 #4796 与 #4604 登记,留否决窗口 —— spec 车道若认为这一行应换个值或换个位置,直接说,本单立刻让行。
Related: #4796 (本体,保持打开)、#4506 (上一次局部修法)、#4739 / #4658 / #4740 (受影响用例所属的清账单)
根因(已在 #4796 取证完毕,证据见 该条评论)
packages/spec/vitest.config.ts没有设testTimeout,吃 vitest 默认的 5000ms:而
packages/spec/src下有 12 个测试文件在用例里加载 TypeScript 编译器并对整个导出面做类型解析:这类工作量本来就是秒级。合并队列的 runner 同时跑多个 PR 的批次,比 PR 分支拥挤,所以今晚 5 次命中全部发生在队列里,PR 分支一次没红过。
影响
今晚 5 次把完全无关的 PR 踢出合并队列:#4755(
metadata-protocol)、#4788(plugin-auth)、#4823(metadata)、#4822(service-analytics,连踢两次)。每次都要有人去翻gh-readonly-queue/*的 run,才能做出「不是我的锅」这个证明。要做的
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 个,不再随新增清账单漏。不要做的
.zod.ts、不改任何测试逻辑、不动spec-changes.json/ liveness 台账 / 生成基线。spec/src/cloud/tenant.test.ts的 #4739 导出面用例贴着 5s 超时 —— 今晚已两次把不相干的 PR 踢出合并队列 #4796 的本体,留给 spec 车道。{ timeout: … }。PR feat(spec): ratchet cross-entry dual-source exports — same name, different declaration, judged by symbol identity (#4446) #4506 就是这么做的,只覆盖了当时红的那几条,池子有 12 个,后续新增的照样漏。改配置层才收得干净。跨车道说明
packages/spec/**按 #4604 登记表归 spec 车道(session_0176qgxgCXTJCUv4YFLtusP9)。本单由主 backlog PM(session_015Br2xsJsczFsTR9bvbh2Ny)在维护者批准下破例跨入,理由是它卡住的是全仓合并吞吐(含本次发版关键项),而止血只需一行。已在 #4796 与 #4604 登记,留否决窗口 —— spec 车道若认为这一行应换个值或换个位置,直接说,本单立刻让行。Related: #4796(本体,保持打开)、#4506(上一次局部修法)、#4739 / #4658 / #4740(受影响用例所属的清账单)