oskiewar v143: the console's HUD rides the triangle pass, and the terrain projects each point once master
Measured on the Xbox Series X 2026-09-20 (AC_NATIVE_PROFILE + an uncommitted sim/paint phase table): hostJsMs 40 ms → 23 fps, render CPU 1.6 ms — the console's frame is the interpreted JavaScript, and the terrain alone was 8.4 ms of it. The three terrain passes handed worldQuad four fresh corners per segment and projected every profile point twelve times per pass. Each pass now projects each point once for its top and once for its bottom into flat scratch arrays; wholly in-front, in-band segments go straight to projectedTriangle, a segment off the guard band clips its projected quad once, and anything crossing the near plane still falls back to worldQuad. Title screen after: terrain 7.2 ms, paint 16 ms, hostJsMs 27 ms (34 fps); in-fight paint 14 → ~9 ms. Still open for 60: the two attract-mode bots cost 9.5 ms of sim on the title, fighter renderables ~3 ms. On the native shell box, line and block text are CPU-composited under every GPU triangle (App.cpp uploads the CPU frame as the scene texture, then draws the depth pass), so the frame meter, keycaps, clock and bot scaffolding sank behind the fighters and terrain — @jeffrey on the console: "the frame counter and stuff in the debug ui ... feels like its behind stuff". HUD boxes and lines now ride the triangle pass there at hudDepth -1.48, in front of any body; the web shell keeps box/line. Tests that counted those boxes count the face pairs on the native host. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>