Repository navigation
[PR] ci(#4360): content-hash caching for pretest dist + bolder Windows sharding — test lane down to ~6.5 min | ci(#4360): pretest dist 内容哈希缓存 + windows 分片加粗 — 测试车道压到 ~6.5 分钟 - #4361
Conversation
📦 Built Package ArtifactBranch: Option A — Install this exact build (recommended)npm install -g [email protected]This exact version is immutable and reproducible. The rolling Option B — Download artifact
tar xzf billion-context-pr4361.tgz
npm install -g packageInstall instructions are refreshed on each push. |
Line-count LPT balanced bytes, not seconds: process-spawning suites cost orders of magnitude more per line than pure assertion files, and the 'perfectly balanced' layouts still produced 5min..37min legs from equal byte counts (windows 22-2/22-3 vs 22-1/22-4 on the same run). With #4384's linger cut landed the per-file wall times are stable enough to weight the partition by MEASURED duration: - scripts/ci-shard-partition.mjs: fileWeight = last measured ms per file (scripts/ci-shard-weights.json), new files fall back to lineCount x msPerLineFallback (median ms/line); same deterministic total LPT otherwise. - scripts/ci-shard-weights.json: 840-file table measured post-#4384 (single-file node --test runs, VM, ~66min serial total); local-env hangs capped at the 150s timeout and listed under timedOut, local rc=1 env-fails excluded. Regenerate via scripts/measure-test-durations.mjs when shard balance degrades. - run-ci-tests.mjs delegates partitionAll to the module (this script has top-level side effects and cannot be imported by tests). - ci.yml: windows-22 CORE 3->5 shards, windows FULL 3->5 (both node versions) — measured max shard drops 1984s->794s serial (concurrency c=4 per shard => ~7min worst-leg target incl. setup). Closes #4360 (with #4377's dist cache + #4384's linger cut, the three levers of the 8-minute goal)
…follow-up) #4378 moved the corrupt index.db degrade checks into spawned child processes but skipped the LIVE_FILES registration, so the SPAWN_RE tripwire fails every run-ci-tests leg on master right now. Appended at the tail (slot = index, no renumbering).
92cd873 to
d06d192
Compare
(ai: vllm-qwen/qwen3.8-27b) 查重: 不重复——这是对已关闭条目的遗留点捡起,不是新立项;检索 open issues/PRs(sharding / 分片 / duration-weighted CI)无在途同类工作。 两条未答评论的回应
按你 4F 的指示捡起了本分支剩余杠杆(「若这里面还有 #4377 没覆盖的点,欢迎在新 PR 里捡起来」): 分支
效果:测量时点 max-shard 串行 1984s→794s;对当前 master 文件集(861 文件,21 个新增走回退权重)本地复算 n=3 max≈1360s → n=5 max≈816s,五腿负载差 <1s,Windows 最重腿目标 ≈7 分钟(含 setup)。 需要 owner 动作一项:出现 4 个新 check 名 结构化八问
结论:本条目保持关闭(被取代判定成立,不回滚);剩余杠杆已由 #4439 独立闭环(Closes #4437),等 CI 绿光 + 人工合并;branch protection 补 4 个 check 名需要你操作。 |
(ai: vllm-qwen/qwen3.8-27b) 这条(4F 的「捡起来」指示)已在 7F 完整处理——遗留杠杆已捡起为 PR #4439(issue #4437),八问与 owner 动作项都在那条回复里,不重复。 补充一个状态更新:#4439 的首次 CI 运行在 16:22:32Z 被整体取消(10 个 workflow 同一时刻 cancelled)。取消前 guard 类 job 正常跑了约 4 分钟,零失败;分支上没有第二次运行记录,不是并发组自取消,属外部/手动取消。改动本身不需要任何代码动作——随时可 Re-run 或在下次 push 时自动重跑;如果你是想等 branch protection 补上 4 个新 check 名( |
Line-count LPT balanced bytes, not seconds: process-spawning suites cost orders of magnitude more per line than pure assertion files, and the 'perfectly balanced' layouts still produced 5min..37min legs from equal byte counts (windows 22-2/22-3 vs 22-1/22-4 on the same run). With #4384's linger cut landed the per-file wall times are stable enough to weight the partition by MEASURED duration: - scripts/ci-shard-partition.mjs: fileWeight = last measured ms per file (scripts/ci-shard-weights.json), new files fall back to lineCount x msPerLineFallback (median ms/line); same deterministic total LPT otherwise. - scripts/ci-shard-weights.json: 840-file table measured post-#4384 (single-file node --test runs, VM, ~66min serial total); local-env hangs capped at the 150s timeout and listed under timedOut, local rc=1 env-fails excluded. Regenerate via scripts/measure-test-durations.mjs when shard balance degrades. - run-ci-tests.mjs delegates partitionAll to the module (this script has top-level side effects and cannot be imported by tests). - ci.yml: windows-22 CORE 3->5 shards, windows FULL 3->5 (both node versions) — measured max shard drops 1984s->794s serial (concurrency c=4 per shard => ~7min worst-leg target incl. setup). Four NEW check names appear (windows 22/24 shards 4/5); branch protection must add them before they gate merges. Cherry-picked from closed PR #4361 (commit 0569781, stranded when the PR was superseded by #4377; picked up per owner invitation in the #4361 thread). The sibling LIVE_FILES commit (d06d192) is already on master via #4416 and is not included. Closes #4437
Closes #4360
目标
CI 测试车道 <8 分钟(Windows)。三个杠杆,前两个已进 master,本 PR 是最后一个:
问题:行数均衡 ≠ 耗时均衡
旧 LPT 按行数分片,「完美均衡」的字节数产出了 5min..37min 的腿(同一 run 的 windows 22-1=5.1min vs 22-5=37min+):spawn 密集型套件每行成本比纯断言文件高一两个数量级。
修复
scripts/ci-shard-partition.mjs(+.d.mts):权重 = 实测 ms(scripts/ci-shard-weights.json),未测量文件回退 lineCount × msPerLineFallback(中位数);LPT 算法不变,仍是确定性、total(union == 全部文件,零覆盖损失)。scripts/ci-shard-weights.json:840 文件全量实测表,post-[PR] fix(server): closeAllConnections() cuts through the post-response linger (#4380) #4384 树上单文件计时(~66min 串行总量);本地环境挂起文件按 150s 超时下界记录并列入timedOut,本地 rc=1 环境失败排除。平衡退化时用scripts/measure-test-durations.mjs再生。测试
tests/ci-shard-weights.test.ts4 test:测量值优先/行数兜底、monster 隔离、确定性+total、表内条目必须真实存在(防 stale)。注意
test (windows-latest, 22, 4)、(22, 5)、(24, 4)、(24, 5)为新检查名,若 branch protection 精确枚举了检查名需要同步(用通配则无需)。