not-tonight/tests/floor
m3ultra 4caa901df2 Four venues, four rooms: the ladder stops being one map with different numbers
The venue ladder has always listed four venues in data/venues.ts, but they
shared ONE floor map and differed only by difficulty knobs — so a promotion you
survived a whole week for looked exactly like the room you had just left.

- venueMap.ts grows a FloorLayout contract (map + props + lights + posts +
  probes + palette) and the newGrid() primitives every room is painted with.
  Voltage stays IN venueMap rather than moving to layouts/, so the new rooms can
  import primitives from it without closing an import cycle.
- Three new rooms in src/scenes/floor/layouts/: The Royal (horseshoe public bar,
  pool room, pokies corner, trough + two cubicles, a beer garden that is plainly
  the nicest room in the pub, and a DJ "corner" that is a folding table because
  this pub never built a booth), Elevate (open-air rooftop — most of the grid is
  sky, the DJ is on an unwalled plinth, you arrive by lift), ROOM (concrete
  warehouse, pillars you path around, central booth, loading-dock smoking area,
  twelve lights in the whole venue).
- Nothing about a room is a module singleton any more. FloorView, sweep and
  FloorDemoScene take the layout; the door picks its street plate by venue id.
- FloorDemoScene's six hardcoded station spots (TAPS_SPOT, DECKS_SPOT, ...) were
  Voltage's tile coordinates. At four venues a hardcoded (47,3) puts the bar
  shift inside The Royal's pool room, so each layout now names its own stations
  and the scene reads them from there.
- tests/floor/layoutInvariants.ts is an executable rulebook: perimeter holds,
  every walkable tile reachable from the entry, anchors on walkable ground,
  posts not sealed (a post on a sealed tile freezes the player for the night —
  that has shipped twice), probes reachable, props on-grid. Proved against
  Voltage BEFORE the new rooms were authored against it.

Dev route #floor:<venueId> boots the floor straight into one room, because
otherwise seeing ROOM means surviving three weeks of the ladder.

Gate: lint clean, build clean, 821 tests passing (was 784).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 19:51:54 +10:00
..
bangJudge.test.ts LANE-FLOOR: the Floor — patrol, flashlight/UV, cut-off, stalls, pat-down 2026-07-19 18:49:13 +10:00
barShift.test.ts The bar sells the room, and the inspector makes one bad pour matter 2026-07-26 19:53:25 +10:00
cone.test.ts LANE-FLOOR: the Floor — patrol, flashlight/UV, cut-off, stalls, pat-down 2026-07-19 18:49:13 +10:00
crowdSim.test.ts Economy tuning pass: sim harness + 9 feel-bands, Dazza rule cap, natural churn, capacity strike fix, hype decay, vibe cooling 2026-07-20 05:35:47 +10:00
djShift.test.ts The money layer: booth tips (cash buys the yes, not the landing), the pour meter, bar tabs with the card jar and the 3-card handback 2026-07-21 02:17:45 +10:00
escalation.test.ts Phase 1 review: merge door/floor/juice, fold CCRs into contracts, integration fixes 2026-07-19 19:26:35 +10:00
fight.test.ts Merge branch 'lane/floor' 2026-07-19 22:14:08 +10:00
fightDirector.test.ts Merge branch 'lane/floor' 2026-07-19 22:14:08 +10:00
glassie.test.ts The joint bust (ChoiceOverlay, corruption verb, report accounts) + the glassie run (kitchen, rack carry, wobble physics, glass smash) 2026-07-20 17:51:49 +10:00
hazards.test.ts The whole shelf: 9 scripted characters (cop/celebrity/sovereign/rider/promoter/neighbour/hens/twins/ex-doorman) + 5 floor systems (vomit/phone/water/first-aid/kebab run) 2026-07-20 19:27:43 +10:00
layout-elevate.test.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
layout-room.test.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
layout-theRoyal.test.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
layoutInvariants.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
layouts.test.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00
patDown.test.ts Phase 1 review: merge door/floor/juice, fold CCRs into contracts, integration fixes 2026-07-19 19:26:35 +10:00
player.test.ts LANE-FLOOR: the Floor — patrol, flashlight/UV, cut-off, stalls, pat-down 2026-07-19 18:49:13 +10:00
stations.test.ts Six defects from the adversarial review: two softlocks, a dead door, and a bar that punished the right call 2026-07-22 03:13:09 +10:00
venueMap.test.ts Four venues, four rooms: the ladder stops being one map with different numbers 2026-07-28 19:51:54 +10:00