⏱️ 本卡所有读数取自同一动作:2026-09-17T13:41Z。MEASURED / RELAYED 逐条标注 ;标 MEASURED 的由本席在本仓库树上第一手测得,标 RELAYED 的来自 #18236 的 dev 且未 被本席复测。
一句话
图说 @objectstack/cli#test 应该 被一次 packages/spec/src/** 的改动波及;而 #17914 那次运行说它是缓存重放、根本没执行 。两条读数至少有一条是在讲一个还没人命名的机制 —— 而那正是让 #17914 红了 main 的那一环。
半边:图确实耦合(MEASURED,本席第一手,亮控会响)
turbo 2.10.10 · TURBO_SCM_BASE=HEAD(⚠️ 不钉 base 这个读数就作废,见下)
⭐ CONTROL 干净树、零改动 → 0 packages
LIT 只改 packages/spec/src/ui/view.zod.ts → 76 packages,含 @objectstack/cli
(对照) 只改 packages/types/src/env.ts → 68 packages,也含 @objectstack/cli
⇒ 一次只碰 spec 某个 .zod.ts 的 diff,确实 把 @objectstack/cli 拉进受影响子集。packages/cli/package.json 一直声明着 "@objectstack/spec": "workspace:*"(MEASURED::106),这条清单边就是 turbo ls --affected 走的那条边。
⚠️ 仪器纪律,本席自己先踩后改 :turbo ls --affected 不钉 TURBO_SCM_BASE 时,干净树也读回 76 —— 本席第一次就是这么读的,而 76 正是 dev 报回的那个数。⇒ 不钉 base 的 --affected 读数一律作废 :它与「有没有改动」无关。上表的 0 / 76 / 68 是钉了 base 之后重测的。
另半边:那次运行说它没跑(RELAYED,⛔ 本席未复测)
dev 报回,读自 #17914 自己的 CI 运行 34746808828 (head c7ae2c1026)的 Test Core 计时表:
逐字:cache-replayed packages, excluded as non-measurements: 1 (@objectstack/cli)
每一条 @objectstack/cli 行标着 replayed log
⇒ @objectstack/cli#test 从未执行 ,而六个分片全部报 success
⚠️ 本席没有复测这一条 :GET /actions/jobs/{id}/logs 会重定向到 blob 存储,容器代理答 403;dev 是用 MCP get_job_logs 读到的。⇒ 这半边是转述 ,立卡的人要先自己读回那张计时表再动手。
为什么这件事要紧
#18236 卡面写「#17914 正是走[裸包名]这个盲区红了 main」。那半个前提已被证伪 (#18236 / PR #18667 逐项测过:349 个 importer→imported 对里,0 个 缺清单边)。⇒ 真正让红落进 main 的不是 那个盲区,而是本卡这一环 —— 它至今没有卡 。
后果不是假设:#17914 合入后 main 变红,合并队列每次在当前 main 上重建候选,至少三次把已入队 PR 弹出 (RELAYED,来自 #18236 卡面)。
值得先下的两个探针(RELAYED,dev 的建议,本席认为方向对)
ci.yml 里每个分片 的 actions/cache restore-keys —— 它们会跨分支、跨提交 回退命中。
整包那条腿(turbo run test test:repo 带一串 --filter)的哈希,与本地 --dry=json 计划算出的哈希是不是同一个 。上表的读数取自后者。
为什么定 p2 而不是 p1
后果类别(红落进 main、队列反复弹出)是 p1 的形状,而且历史上真发生过 。定 p2 的唯一理由是:缺陷本身还没被复现 —— 现在立着的是一个矛盾 加一次历史事故,而矛盾的哪一边错还没人命名 。⇒ 本卡的第一件事是把矛盾定死 ,不是修。若探针复现出「受影响的任务仍被缓存重放」,⛔ 立即改判 p1。
查重(MCP search_issues,含 closed;18 条命中逐条读过)
A failing turbo run test task can land in Test Core with ZERO captured output, and the completeness guard's green does not cover a package that printed nothing #10032 (open)「A failing turbo run test task can land in Test Core with ZERO captured output…」—— 相邻但不是孪生 :它讲的是跑了却没有输出 ,本卡讲的是根本没跑却报绿 。两者可能同源,⛔ 但现在把它们并卡会让哪一个都说不清。
[finding] A dev's local suite list is chosen as "packages I changed", but CI asks turbo ls --affected — the gap cost two CI cycles in one round #15323 (closed)「a dev's local suite list vs turbo ls --affected」—— 讲的是人与 CI 的口径差,⛔ 非缓存重放。
spec's declared test-input radius packages/**/*.json sweeps vitest's own node_modules/.vite/vitest/*/results.json, so the task that hashes it (spec#test:repo after #16466; spec#test before) can never replay from cache on a runner that ran any vitest before it #16555 / Local turbo cache served a DTS-less @objectstack/plugin-auth build in a fresh worktree with OS_SKIP_DTS unset — its own typecheck then reds on a diff that never touched it #11907 (均 closed)—— 讲的是缓存命不中 与缓存服务了坏产物,⛔ 与「该重算却重放」反向。
Rerun Safety: red on main for at least ten consecutive nights, and it dies in pass 1 — so the rerun property it guards has never been measured #18590 · ci: Test Core compares each shard's measured duration with its predicted weight — warning at 1.3x, red at 70% of the timeout (maintainer-directed, drift alarm) #16465 · [finding] the generated shard-timings dataset has no scheduled refresh, and its documented refresh path is unreachable from an agent container #16222 · [finding] core's service-resolution-discriminator pin awaits a dynamic import of the whole package index under vitest's default 5000ms timeout, and timed out once in two full-suite runs on a shared box #16497 —— Test Core 的其它切面,逐条读过,⛔ 无重叠。
出处
domain:spec seat 2(座位贴 #18549 )在复核 PR #18667 / 卡 #18236 时接手的越界发现;dev 自标 to file,本席补了可测的那半边并立卡。⛔ 本卡不归 spec 车道执行。
Generated by Claude Code
⏱️ 本卡所有读数取自同一动作:2026-09-17T13:41Z。MEASURED / RELAYED 逐条标注;标 MEASURED 的由本席在本仓库树上第一手测得,标 RELAYED 的来自 #18236 的 dev 且未被本席复测。
一句话
图说
@objectstack/cli#test应该被一次packages/spec/src/**的改动波及;而 #17914 那次运行说它是缓存重放、根本没执行。两条读数至少有一条是在讲一个还没人命名的机制 —— 而那正是让 #17914 红了main的那一环。半边:图确实耦合(MEASURED,本席第一手,亮控会响)
⇒ 一次只碰 spec 某个
.zod.ts的 diff,确实把@objectstack/cli拉进受影响子集。packages/cli/package.json一直声明着"@objectstack/spec": "workspace:*"(MEASURED::106),这条清单边就是turbo ls --affected走的那条边。turbo ls --affected不钉TURBO_SCM_BASE时,干净树也读回 76 —— 本席第一次就是这么读的,而 76 正是 dev 报回的那个数。⇒ 不钉 base 的--affected读数一律作废:它与「有没有改动」无关。上表的 0 / 76 / 68 是钉了 base 之后重测的。另半边:那次运行说它没跑(RELAYED,⛔ 本席未复测)
dev 报回,读自 #17914 自己的 CI 运行 34746808828(head
c7ae2c1026)的 Test Core 计时表:cache-replayed packages, excluded as non-measurements: 1 (@objectstack/cli)@objectstack/cli行标着replayed log@objectstack/cli#test从未执行,而六个分片全部报 successGET /actions/jobs/{id}/logs会重定向到 blob 存储,容器代理答 403;dev 是用 MCPget_job_logs读到的。⇒ 这半边是转述,立卡的人要先自己读回那张计时表再动手。为什么这件事要紧
#18236 卡面写「#17914 正是走[裸包名]这个盲区红了 main」。那半个前提已被证伪(#18236 / PR #18667 逐项测过:349 个 importer→imported 对里,0 个缺清单边)。⇒ 真正让红落进
main的不是那个盲区,而是本卡这一环 —— 它至今没有卡。后果不是假设:#17914 合入后
main变红,合并队列每次在当前 main 上重建候选,至少三次把已入队 PR 弹出(RELAYED,来自 #18236 卡面)。值得先下的两个探针(RELAYED,dev 的建议,本席认为方向对)
ci.yml里每个分片的actions/cacherestore-keys—— 它们会跨分支、跨提交回退命中。turbo run test test:repo带一串--filter)的哈希,与本地--dry=json计划算出的哈希是不是同一个。上表的读数取自后者。为什么定 p2 而不是 p1
后果类别(红落进
main、队列反复弹出)是 p1 的形状,而且历史上真发生过。定 p2 的唯一理由是:缺陷本身还没被复现 —— 现在立着的是一个矛盾加一次历史事故,而矛盾的哪一边错还没人命名。⇒ 本卡的第一件事是把矛盾定死,不是修。若探针复现出「受影响的任务仍被缓存重放」,⛔ 立即改判 p1。查重(MCP
search_issues,含 closed;18 条命中逐条读过)turbo run testtask can land in Test Core with ZERO captured output, and the completeness guard's green does not cover a package that printed nothing #10032(open)「A failingturbo run testtask can land in Test Core with ZERO captured output…」—— 相邻但不是孪生:它讲的是跑了却没有输出,本卡讲的是根本没跑却报绿。两者可能同源,⛔ 但现在把它们并卡会让哪一个都说不清。turbo ls --affected— the gap cost two CI cycles in one round #15323(closed)「a dev's local suite list vsturbo ls --affected」—— 讲的是人与 CI 的口径差,⛔ 非缓存重放。packages/**/*.jsonsweeps vitest's ownnode_modules/.vite/vitest/*/results.json, so the task that hashes it (spec#test:repoafter #16466;spec#testbefore) can never replay from cache on a runner that ran any vitest before it #16555 / Local turbo cache served a DTS-less@objectstack/plugin-authbuild in a fresh worktree withOS_SKIP_DTSunset — its own typecheck then reds on a diff that never touched it #11907(均 closed)—— 讲的是缓存命不中与缓存服务了坏产物,⛔ 与「该重算却重放」反向。pass 1— so the rerun property it guards has never been measured #18590 · ci: Test Core compares each shard's measured duration with its predicted weight — warning at 1.3x, red at 70% of the timeout (maintainer-directed, drift alarm) #16465 · [finding] the generated shard-timings dataset has no scheduled refresh, and its documented refresh path is unreachable from an agent container #16222 · [finding] core's service-resolution-discriminator pin awaits a dynamic import of the whole package index under vitest's default 5000ms timeout, and timed out once in two full-suite runs on a shared box #16497 —— Test Core 的其它切面,逐条读过,⛔ 无重叠。出处
domain:specseat 2(座位贴 #18549)在复核 PR #18667 / 卡 #18236 时接手的越界发现;dev 自标to file,本席补了可测的那半边并立卡。⛔ 本卡不归 spec 车道执行。Generated by Claude Code