Path: none | #18671 的根因仍在,被恒真 --force 遮住 | 不会再报警
由 domain:devx 执行席(座位贴 #6023 )在复核 PR #19271 (卡 #18671 第二飞行)时立。⛔ 裸立 :priority: 与 domain: 留空,定级与路由归分诊。
已修好的是「执行」,没修好的是「哈希」
PR #19271 给 Test Core 的分片腿加了 --force,于是一个受影响的分片一定会执行 ,⛔ 不再被缓存重放(卡 #18671 ,裁定 (A),机制 --only)。
⚠️ 但那条腿的任务哈希仍然不携带上游闭包 :--only 把依赖任务摘出运行,于是哈希只剩包自身文件加 turbo.json 里手写的 $TURBO_ROOT$ 输入。⇒ 这一类缺陷的根因仍在 ,现在被一个恒真的 --force 压住。一个恒真的绕过是一条永远不会再报警的电线。
形状最对的修法(第二飞行实测,三选一里最便宜的那条,⛔ 当时出不了那张卡的面)
把分片值改成由 task 声明的 env 携带 ,从而根本不需要 --only:
packages/cli/vitest.config.ts 里 test: { shard: process.env.OS_TEST_SHARD } —— ⚠️ 需要这一步的原因是实测的 :vitest 4.1.11 不读 VITEST_SHARD ;
turbo.json 的 test task 的 env 里加 OS_TEST_SHARD;
之后分片腿可以去掉 --only(也就不再需要 --force)。
实测代价对比 (turbo 2.10.10,@objectstack/cli 真实规模,第二飞行,⛔ 本席未重跑):
形状
--dry=json 计划
现状(--only)
1 个任务
去掉 --only、保留 passthrough
60 个任务,60 全 MISS (实测闭包重执行 5m11.262s ,同闭包哈希不动时 60ms FULL TURBO )
本卡这条(env 携带分片)
60 个任务,57 HIT / 3 MISS
⇒ 它既让任务执行,又让哈希诚实 ,而且是三条里最便宜的。
⛔ 为什么当时不做
#18671 第二飞行的文件面是 .github/workflows/ci.yml + turbo.json,而本条需要 packages/cli/vitest.config.ts。施工席报告而未越界 ,派发席确认这是对的。
验收(⛔ 不规定实现)
受影响的分片仍然执行 —— 与 [finding] 图说 @objectstack/cli#test 该被 spec 的改动波及,#17914 那次运行却说它是缓存重放、从未执行 —— 这才是让红落进 main 的那一环,而它至今没有卡 #18671 同一条判据。
⭐ 哈希要真的动 :上游源码一改,分片腿的任务哈希必须变。⚠️ turbo ls --affected 的读数不钉 TURBO_SCM_BASE 一律作废 (干净树也读回 76 个包,[finding] 图说 @objectstack/cli#test 该被 spec 的改动波及,#17914 那次运行却说它是缓存重放、从未执行 —— 这才是让红落进 main 的那一环,而它至今没有卡 #18671 卡面实测)。
--force 若在本卡里被去掉,必须证明去掉之后缺陷不回来 (即第 2 条成立),⛔ 不得只凭「不再需要」。
Refs:#18671 · PR #19271
domain:devx 执行席 · 座位贴 #6023
Generated by Claude Code
Path: none | #18671 的根因仍在,被恒真 --force 遮住 | 不会再报警
由
domain:devx执行席(座位贴 #6023)在复核 PR #19271(卡 #18671 第二飞行)时立。⛔ 裸立:priority:与domain:留空,定级与路由归分诊。已修好的是「执行」,没修好的是「哈希」
PR #19271 给 Test Core 的分片腿加了
--force,于是一个受影响的分片一定会执行,⛔ 不再被缓存重放(卡 #18671,裁定 (A),机制--only)。--only把依赖任务摘出运行,于是哈希只剩包自身文件加turbo.json里手写的$TURBO_ROOT$输入。⇒ 这一类缺陷的根因仍在,现在被一个恒真的--force压住。一个恒真的绕过是一条永远不会再报警的电线。形状最对的修法(第二飞行实测,三选一里最便宜的那条,⛔ 当时出不了那张卡的面)
把分片值改成由 task 声明的 env 携带,从而根本不需要
--only:packages/cli/vitest.config.ts里test: { shard: process.env.OS_TEST_SHARD }——VITEST_SHARD;turbo.json的testtask 的env里加OS_TEST_SHARD;--only(也就不再需要--force)。实测代价对比(turbo 2.10.10,
@objectstack/cli真实规模,第二飞行,⛔ 本席未重跑):--dry=json计划--only)--only、保留 passthrough⇒ 它既让任务执行,又让哈希诚实,而且是三条里最便宜的。
⛔ 为什么当时不做
#18671 第二飞行的文件面是
.github/workflows/ci.yml+turbo.json,而本条需要packages/cli/vitest.config.ts。施工席报告而未越界,派发席确认这是对的。验收(⛔ 不规定实现)
@objectstack/cli#test该被 spec 的改动波及,#17914 那次运行却说它是缓存重放、从未执行 —— 这才是让红落进main的那一环,而它至今没有卡 #18671 同一条判据。turbo ls --affected的读数不钉TURBO_SCM_BASE一律作废(干净树也读回 76 个包,[finding] 图说@objectstack/cli#test该被 spec 的改动波及,#17914 那次运行却说它是缓存重放、从未执行 —— 这才是让红落进main的那一环,而它至今没有卡 #18671 卡面实测)。--force若在本卡里被去掉,必须证明去掉之后缺陷不回来(即第 2 条成立),⛔ 不得只凭「不再需要」。Refs:#18671 · PR #19271
domain:devx执行席 · 座位贴 #6023Generated by Claude Code