A 240-degree SVG dial with a spring needle, three-digit readout, unit
label, warning lamp (BRAKE / OVERDRIVE / ENGINE OFF), trip odometer and
gear chip, driven by the journey's own frame loop from the scroll drive,
route progress, navigator state, scene ignition and the high beam. Hover
or focus shows route, exit and time on the road; a click toggles km/h
and mph (remembered). The model and DOM driver load as a lazy chunk so
the initial bundle grows by about 1.3 kB gzipped; reduced motion snaps
the readout, and the bay hides below 1280px.
I warm the world's programs with renderer.compileAsync() at the end of the
async build, with the composer's scene target bound so tone mapping and
output colour space key the same programs the composer draws with, and with
hidden subtrees revealed so the light count matches the frame-0 warm render.
The wait is capped at 2.5 s; the warm render stays as the safety net for the
post passes, texture uploads and anything a slow or extension-less driver
left. Test builds report renderer.info.programs, and a browser spec pins zero
program growth after frame 0.
On the Intel ARL laptop the frame-0 task drops from ~1.74 s to ~0.34 s with a
pixel-identical first frame; measurements in
docs/overnight/compile-async-results.md.