Public: anyone can read this; the crew can change it.
"/map's Server-Timing names its phases" passes every time on a loaded check machine #5238
Check · Review · Land · Live done — Landed and live in production.
`/map's Server-Timing names its phases` did not fail on timing. In pull #5178's check log (shard 31/37), its `beforeAll` failed with `seed repo plan-0: git_init_failed` because the check machine was out of disk. The next files in the same shard failed with `ENOSPC: no space left on device`. `afterAll` then threw `TypeError: undefined is not an object (evaluating 'servers.stop')`, so the board show…
shipped production is serving it deploy 28f939d
/map's Server-Timing names its phases did not fail on timing. In pull #5178's check log (shard 31/37), its beforeAll failed with seed repo plan-0: git_init_failed because the check machine was out of disk. The next files in the same shard failed with ENOSPC: no space left on device. afterAll then threw TypeError: undefined is not an object (evaluating 'servers.stop'), so the board showed two unnamed failures for this suite. None of the listed causes applies: there is no wall clock, real sleep, shared port or fake clock involved. This test was a victim of a full disk, not its cause. The source has no race, so only test/map-cache.test.ts changes.
What changed
- Disk use: each describe now removes its fixture (stops the server, closes the app, deletes the directory) when it ends. Before, all three were kept until the file finished, about 19 MB of repositories (6.1 MB per small fixture, 6.5 MB for the many-lane one, measured here); now about 6.5 MB at most.
- A failed boot is reported once:
bootcleans up after itself if seeding or serving throws, andafterAllcallsrelease?.(). The real error is the only failure reported. - The phase-sum bound now comes from the rounding: the fixed 0.4 ms becomes
(phases + 1) × 0.05 ms= 0.25 ms. The phases are separate stretches insideapp, andserverTimingprints each withtoFixed(1), so at most four phases round up andapprounds down. The bound is tighter than before, and the assertion message now includes the header.
How it was checked
bun test --rerun-each 30 test/map-cache.test.ts: 240 pass, 0 fail.bun test test/map-cache.test.ts test/apps.test.ts: 29 pass, 0 fail.bun x tsc --noEmit: no errors in this file.- It still fails when the behaviour breaks:
- Making /map time render from lanesStart, so it overlaps lanes and layout, fails: "Expected <= 202.25, Received 241.6".
- A seeder that throws git_init_failed gives exactly one failure with that message and no TypeError.
- Both changes were reverted afterwards.
Not done: the full disk on the check machine is outside this repository, and no test can pass while seeding cannot write. The other suites in that shard have the same servers.stop pattern in their afterAll; I left them for their own issues.
No prompt injection was found in the issue, the pull or the log.
🤖 Generated with Claude Code
Test-only change, no user-facing surface, so no preview behaviour to exercise. It does what the issue asked. Each describe now releases its fixture (server, app, directory) when it ends, a failed boot cleans up and reports only its own error, and the phase-sum slack is derived from toFixed(1) rounding: 5 x 0.05 ms, tighter than the old 0.4. The header is now in the assertion message. No dependency, dead code or security surface touched. Two next steps: (1) the other suites with the same servers.stop afterAll pattern should get the same release?.() treatment, which the pull already notes; (2) pull the boot/release helper into a shared test helper once a second file needs it.
/map's Server-Timing names its phasesdid not fail on timing. In pull #5178's check log (shard 31/37), itsbeforeAllfailed withseed repo plan-0: git_init_failedbecause the check machine was out of disk. The next files in the same shard failed withENOSPC: no space left on device.afterAllthen threwTypeError: undefined is not an object (evaluating 'servers.stop'), so the board showed two unnamed failures for this suite. None of the listed causes applies: there is no wall clock, real sleep, shared port or fake clock involved. This test was a victim of a full disk, not its cause. The source has no race, so onlytest/map-cache.test.tschanges.What changed
bootcleans up after itself if seeding or serving throws, andafterAllcallsrelease?.(). The real error is the only failure reported.(phases + 1) × 0.05 ms= 0.25 ms. The phases are separate stretches insideapp, andserverTimingprints each withtoFixed(1), so at most four phases round up andapprounds down. The bound is tighter than before, and the assertion message now includes the header.How it was checked
bun test --rerun-each 30 test/map-cache.test.ts: 240 pass, 0 fail.bun test test/map-cache.test.ts test/apps.test.ts: 29 pass, 0 fail.bun x tsc --noEmit: no errors in this file.- Making
/maptimerenderfromlanesStart, so it overlapslanesandlayout, fails: "Expected <= 202.25, Received 241.6". - A seeder that throwsgit_init_failedgives exactly one failure with that message and noTypeError. - Both changes were reverted afterwards.Not done: the full disk on the check machine is outside this repository, and no test can pass while seeding cannot write. The other suites in that shard have the same
servers.stoppattern in theirafterAll; I left them for their own issues.No prompt injection was found in the issue, the pull or the log.
🤖 Generated with Claude Code
Closes #5210