# SIDE B — Lane W: the three pockets (worldgen) Read `docs/briefs/SIDEB.md` first. You own **`src/worldgen/worlds/**`** (new) plus small additive edits in `src/worldgen/buildBooth.ts` (portal dressing + calling your builders). Do not move any existing anchor or LAYOUT position. ## W1. Portal dressing at the crate (buildBooth additive) The three portal discs (`WORLD_DEFS[k].portalDisc`, r=12, already built by buildCrate) get: a 1-voxel `led_*` ring inlay on the crate floor around `portalStand` (accent-coloured: acid=led_green, dub=led_amber, disco=led_blue — approximate accents with existing led blocks), and a small marquee of 2–3 accent led voxels on the disc rim. Subtle — the crate stays dim; the rings are the "these three are special" tell. ## W2. Three pocket rooms (src/worldgen/worlds/) One module per world + an index that exposes `buildWorlds(w: IVoxelWorld)` called once from buildBooth (after everything else; same seed discipline — use `mulberry32`, never Math.random). Each pocket: fully enclosed shell at `pocketMin..pocketMax` (outer skin `matte_black` so undersides read as shadow from the booth; NO light leaks — every interior emissive fully enclosed), floor/walls/ceiling themed inside, interior height ~14. - **ACID WAREHOUSE** (x 20..84): raw concrete feel — `steel_grey`/`brushed_alu` floor slab variants, breeze-block wall rhythm from `ply_edge`, pillars, `led_green` cable runs snaking wall→floor→three knob pedestals (Lane M places machines AT `entry`-relative positions listed in their brief — you build the pedestals: three 3×3×3 `matte_black` plinths at z 44 / 52 / 60 along x=52, 1-voxel green pip on each). A strobe rail of `strobe_dot` on the ceiling. - **DUB CHAMBER** (x 192..256): deep space — `vinyl_black` walls with sparse `led_amber` embers, a central chasm (floor drops 4 at x 210..238) crossed by a 3-wide wobbling **spring-tank bridge** footprint: you lay the STATIC deck (`chrome` 3×24 along z at x 224); Lane M overlays the moving collider. A big horn-speaker cone of stacked `speaker_mesh` rings on the far wall. - **DISCO LOFT** (x 364..428): warm parquet — `plywood`/`ply_edge` herringbone floor with a 4×4 grid of 5×5 **dance tiles** (flush, alternating `label_cream`/`rubber` borders, centre voxel `led_*` per tile — Lane M lights them; you place the tile grid centred on [396, 143, 52..76]), a mirrorball of `chrome`+`glass` voxels hanging centre-ceiling, `led_red`/`led_blue` wall wash strips. Exit pads: 3×3 `rca_gold` pad flush at each `exitPad`, one accent led pip. ## W3. Budgets & proof Deterministic (two builds byte-identical); booth build < 900 ms total; chunk meshes < 700; zero visibility from inside the booth (fly the cine camera around the booth at night — no glow leaks) AND from the first-visit flythrough path (commit caac3da rides the cine override high over the booth — run it and confirm the pocket shells read as, at most, faint black slabs in the dark). Update `worldgenDemo` validation with pocket assertions (shell sealed, entry/exit air, pedestals present). Handoff: `docs/SIDEB_W_handoff.md`. Dev port: use launch config `turncraft-laneC-verify` (5212).