# Movement laboratory

The rebuilt `lab-chamber-2` is an original, practice-only Source-style chamber. `src/map/lab.ts` owns both collision/render brush data and eight named stationary starts; the original `course.ts` test map remains unchanged for earlier regression fixtures. Gravity, acceleration, hulls, jump impulse and movement code are unchanged.

The two long orange/blue faces share the proven opening-transfer dimensions from Northline, translated vertically. The run-up starts at rest. Orange uses A; the transfer changes to D on blue. A separate right-ramp platform permits practicing that face without completing the first. Missing a ramp lands on the recovery floor. Restart returns to the run-up, and the station selector provides explicit practice repositioning with no momentum injection.

Ground stations include a marked acceleration strip, 45/56-unit jump blocks, six 18-unit steps, a 49-unit crouch tunnel, two coplanar solid brushes and a one-unit wall. All starts have clear standing hulls and real ground support. Concrete grids use a 128-unit scale; signs, floor arrows, distinct ramp colors, a roof and fluorescent strips replace the former empty mountain backdrop. Static brush meshes are batched by material.

Validation: `npx tsx --test tests/lab.test.ts` passes seven tests. Normal WASD/view commands traverse both faces and their transfer in 799 ticks, with 232 orange-face and 137 blue-face contacts and peak horizontal speed 1735.13 u/s. The independent right entry produces 193 surf contacts from a stationary walking start. Ordinary inputs clear both jump blocks, walk all steps, crouch through the tunnel and stand only after clearing its ceiling. Swept hull tests verify the seam and thin wall.

`npx tsx scripts/lab-visual-qa.ts` renders the actual map in Edge and saves five views under `docs/screenshots/lab-chamber-*.png`, including a state reached through normal route commands. The inspected views have 11–18 draw calls and about 2070 triangles, with no browser errors. These screenshots validate appearance and rendering; the separate command tests establish surfability. The browser fixture is isolated from the main menu; integrated station UI validation belongs to the main application QA.
