You are W-CITY, in the Forge Game Engine repo (FGE). You work in your own git worktree; commit on your branch (small
commits). Do not push or deploy. No em dashes anywhere. Scratch under /tmp/w-city-*; delete it when done. Stop ONLY
processes you started (by PID). Time box 75 minutes; stop with what works committed.
Goal: make the city generator (`module/citygen/`, guide docs-fge/CITYGEN.md, preview city-preview/, tests
tests/citygen.test.mjs) usable by an AI-built GTA-like game (drive and walk an open modern city), shipped as a kit the
OhMyGames Factory attaches to game builds, like the Garage kit (read tools/garage/pack-omg.sh and the GARAGE.md it ships).
1. `module/citygen/game.mjs`: `createCity(THREE, { scene, mergeGeometries, seed, size, mix, cars, night })` -> `{ view,
   plan, colliders, heightAt, roads, spawn, nearestRoad(x, z), isOnRoad(x, z), carPoses(), update(dt, playerPos?),
   setNight(t), minimap(), dispose() }`. colliders: one oriented box (or convex footprint) per building, prop that blocks
   (lamps, signals, trees, water towers on ground) and the city edge; roads: centre lines with widths and lane
   directions; spawn: a safe point on a road with a heading; carPoses(): live traffic poses + their box size so a game
   can collide its player car with traffic; minimap(): polylines + building footprints in a 2D frame. A player car
   that drives into traffic must be able to push/stop it: add `traffic.block(x, z, r)` (cars treat that circle as an
   obstacle) if traffic has no such hook.
2. A playable proof `city-preview/drive.html` (+ drive.js): third-person, a simple box-physics car (arcade: speed,
   steer, collide with colliders and traffic), WASD/arrows + touch, a minimap, day/night key. It must show the API is
   enough for a game. A GPU probe tools/gpu/citygen_drive_probe.py drives 20 s scripted and checks: no NaN, no passing
   through buildings, fps, screenshots (run with tools/gpu/gpu-run.sh like the existing citygen probes).
3. `tools/citygen/pack-omg.sh` -> dist/citykit.tar.gz (module/citygen/*.mjs incl. game.mjs, CITY.md, no tests) +
   its sha256 in dist/citykit.sha; `module/citygen/CITY.md` = the builder guide for a game author (what to import, the
   createCity call, colliders/roads/spawn/minimap, traffic collisions, budgets measured: draw calls, triangles, ms to
   build per size, the phone setting: fewer cars, no night lights), plain words, with laws C1-C8 (e.g. never draw your
   own buildings, the player spawns at `spawn`, collide with `colliders` and `carPoses()`, call update every frame).
4. Tests in tests/citygen-game.test.mjs (colliders cover every building, spawn is on a road and clear, nearestRoad,
   determinism per seed, minimap shape). Full citygen tests still pass.
Evidence: test output, probe screenshots (look at them), the tar size. Report: what works, what is NOT done.
