Public: anyone can read this; nobody can change it.
The hollow audit fits a 512 MiB check runner: it collects each file's syntax tree as it goes, and the command's test runs in its own process #44
Check · Review · Land done · Live — Landed; nothing deploys from this branch, so this is the end of its path.
Stacked on `fix/ci-fork-pr-checkout` (#40): its commit is in this diff until it merges.
shipped merged
Sign in to join this conversation.
Stacked on
fix/ci-fork-pr-checkout(#40): its commit is in this diff until it merges.On main's check, test/hollow.test.ts was the gate's most frequent red: shard 2 OOM-killed at it twice (runs 874 and 883, exit 137 with memory.current pinned at memory.max 512 MiB) and once swapped until "
bun scripts/hollow.tssays so and exits 0" took 450 s against its 60 s timeout (run 859; spawnSync blocked the timer).Two causes, both fixed without touching what the tests assert:
tree as garbage, but nothing collected it, so one audit peaked at ~442 MiB RSS for ~20 MiB of live heap. It now runs a full collection every 64 files: ~270 MiB peak, same result, no measurable time cost.
process's own two audits. It moves to test/hollow-cli.test.ts, whose process audits nothing itself, and awaits Bun.spawn so its timeout can end a stuck child. The guard test now keeps both files out of EXCLUDED.
Peak memory of the whole process tree (PSS summed over test-shards, bun test and the child, sampled every 50 ms), bun 1.3.14, FORGE_CHECK_SHARDS=1: test/hollow.test.ts on main 504 MiB of the runner's 512; after, 276 MiB for test/hollow.test.ts and 257 MiB for test/hollow-cli.test.ts. The audit alone: ~442 MiB RSS before, ~270 MiB after.
Evidence
pipeline/statuskeeps onemainevent per finished push gate. Over the last 37 runs main was green in 22 (59%).test/hollow.test.tsis its most frequent single cause: OOM-killed in gate shard 2 in runs 874 and 883 (shard 20/160 done (exit 137),mem_current=536870912), and swapped until it timed out in run 859 ("bun scripts/hollow.tssays so and exits 0" timed out after 60000ms, 449,848 ms elapsed).Not loosened
No assertion, timeout or exclusion changes. The command's test moves to its own file unchanged, apart from
Bun.spawn+awaitreplacingspawnSync, so its 60 s timeout can fire.Validation note
The fast tier's other reds are not this change. They show up in the table below as FLAKY or BASELINE:
vitals"errors are counted…" andtui-sentinel"an admin has it…" fail only besidetest/drill-board-line.test.tsin one process. That file leaks a notifier pager, fixed on branchfix/tests-close-notifiers.contain"an undeclared public host…" fails only on the validation box, whose DNS returns 198.18.x.following,tui-workflowsandusage-countpass when run alone on this branch: FLAKY, cause not diagnosed yet.following(fail-fast) before reaching the hollow files. The same commit's earlier validation, before it was stacked on #40 (9d3fe1f6, which differs only in the workflow files), ran gate (2) green throughtest/hollow.test.tsandtest/hollow-cli.test.ts.<!-- pipeline:validation -->
Validation
pipeline/validateonbc87716f: flaky in 476s — bun 1.3.14, CI-shaped env (scrubbed vars, runner PATH), exact check.yml shard + forge.json commands.bun install --frozen-lockfileforge.json check.fastcheck.yml gate (1) pull_requestcheck.yml gate (2) pull_requestcheck.yml gate (3) pull_requesttest output (failures, totals)