not-tonight/tests
m3ultra 74cbd71ad3 Materials, and the floor-cache bug that would have eaten the promotion
Two things, one of them a real bug.

THE BUG: bakeTiles baked to a single global 'floor:tiles' and early-returned if
that key existed. Textures outlive a scene, so the first venue you played baked
the floor for every venue after it — you would survive a week at The Royal, get
promoted, walk into Voltage and still be standing on the pub's carpet. It only
shows on promotion, which is exactly the moment the venue ladder is supposed to
pay off, and never in a dev route because those reload the page. The baked
texture is now keyed per venue; verified by switching venues inside one session
and watching the concrete arrive.

MATERIALS: FloorLayout.materials names a generated plate per tile kind and the
baker stamps it TINTED to the palette colour. The plate carries grain, the
palette keeps hue — an untinted photo-real plate blows straight past the
brightness band the whole room was tuned in, and darkness is the mechanic.
Plates are 16x16, the game's own tile, because at that size "carpet" is
structured noise, which is also what pub carpet looks like from head height.
Ten of them: carpet, concrete, deck, parquet, looTile, paving, plaster, brick,
timber, steel. No plate named, or art not landed, falls back to flat colour
exactly as before.

Wave 2 filler for the two spaces the review found genuinely empty — The Royal's
central carpet (four props across ~500 tiles) and ROOM's east hall (~23% of its
interior with no lights and three props) — plus the kit every real room has and
no game room does: fire extinguishers, exit signs, CCTV, bins, a notice board,
ceiling fans. Voltage gets the same pass; being the reference room is how it
quietly missed the last one.

The invariant caught a duplicate prop id I introduced while placing these, which
is what it is for.

Also relaxed one ROOM assertion that keyed on array order: it checked that the
FIRST sodium light stands over the loading dock, which broke the moment the east
hall legitimately burned the same colour. It now checks that one of them does.

Gate: lint clean, tsc clean, 821 tests passing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 21:56:20 +10:00
..
floor Materials, and the floor-cache bug that would have eaten the promotion 2026-07-28 21:56:20 +10:00
sim The bar sells the room, and the inspector makes one bad pour matter 2026-07-26 19:53:25 +10:00
arc.test.ts LANE-JUICE2: ear-pass mix desk, ambience beds, night arc in the engine 2026-07-19 21:47:53 +10:00
arrivalCurve.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
beatclock.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
clock.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
dazzaSchedule.test.ts Late game: 1:30 lockout law, ID passback (SEEN TONIGHT), regular step-up lines, yard fence-jumpers 2026-07-20 18:45:50 +10:00
dollFrames.test.ts Three jobs: sweep out of the god object, story beats per role, and dolls that breathe 2026-07-26 20:49:42 +10:00
dollplan.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
dressCode.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
dressCodeShuffle.test.ts ROOM boss week: venue 4 — seeded 15-min dress-code shuffle (the board is the law), lip-read rope dialogue, ROOM crowd/knobs; SCENARIOS shelf cleared 2026-07-21 02:06:16 +10:00
encounters.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
eventbus.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
filterCurve.test.ts LANE-JUICE: audio engine, SFX set, five UI widgets, JuiceDemoScene 2026-07-19 18:52:43 +10:00
floorScore.test.ts The floor score: lights on at close — sweep the notes, the shrapnel, the untouched kebab; the baggie is a choice and the pay line knows 2026-07-21 03:40:24 +10:00
generator.test.ts Cross-night regulars with disguises, venue crowd identities, retractions as texts 2026-07-20 16:43:40 +10:00
guestList.test.ts LANE-CONTENT: the guest list, the moral encounters, the inspector, the paperwork 2026-07-19 21:32:37 +10:00
idCheck.test.ts Late game: 1:30 lockout law, ID passback (SEEN TONIGHT), regular step-up lines, yard fence-jumpers 2026-07-20 18:45:50 +10:00
incidentReport.test.ts The report catches up: frequency-aware interest weights and eleven banks for the floor's own paperwork 2026-07-26 19:43:06 +10:00
inspect.test.ts LANE-DOOR: land the adversarial review findings 2026-07-19 19:06:31 +10:00
inspector.test.ts LANE-CONTENT: the guest list, the moral encounters, the inspector, the paperwork 2026-07-19 21:32:37 +10:00
judge.test.ts Late game: 1:30 lockout law, ID passback (SEEN TONIGHT), regular step-up lines, yard fence-jumpers 2026-07-20 18:45:50 +10:00
lipRead.test.ts ROOM boss week: venue 4 — seeded 15-min dress-code shuffle (the board is the law), lip-read rope dialogue, ROOM crowd/knobs; SCENARIOS shelf cleared 2026-07-21 02:06:16 +10:00
memory.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
meters.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
mix.test.ts LANE-JUICE2: ear-pass mix desk, ambience beds, night arc in the engine 2026-07-19 21:47:53 +10:00
nightSummary.test.ts Fix build break in the shoe tests: freshNightState takes (venueId, nightIndex, licensed) 2026-07-22 03:18:49 +10:00
queueManager.test.ts Floor-economy sim: bot nights for the carpet and the bar — caught the carpet's uncapped hype ratchet (vibe-pin 0.27 to 0.71) and capped the trickle 2026-07-25 21:03:44 +10:00
regularCast.test.ts Cross-night regulars with disguises, venue crowd identities, retractions as texts 2026-07-20 16:43:40 +10:00
rng.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
roleBeats.test.ts Three jobs: sweep out of the god object, story beats per role, and dolls that breathe 2026-07-26 20:49:42 +10:00
roster.test.ts Role permissions: the glassie can see everything and touch nothing 2026-07-26 20:02:54 +10:00
save.test.ts Phase 0: scaffold, contracts, core systems, patron generator, paper-doll renderer, Parade demo (49 tests) 2026-07-19 16:20:53 +10:00
scheduling.test.ts LANE-JUICE: audio engine, SFX set, five UI widgets, JuiceDemoScene 2026-07-19 18:52:43 +10:00
sobriety.test.ts LANE-DOOR: the full v0.1 Door night — queue, ID minigame, dress code, stamps, summary 2026-07-19 18:49:27 +10:00
staff.test.ts Radio command: the Head of Security verb — Bump sorts the mess, Shan waters the worst, Kayden holds the rope (Elevate+, competence not guaranteed) 2026-07-21 02:49:14 +10:00
tutorialFade.test.ts Door tween leak: tutorial fade spawned an 800ms tween per frame — now pure tutorialAlpha() driven from update() 2026-07-21 01:41:21 +10:00
typo.test.ts LANE-JUICE: audio engine, SFX set, five UI widgets, JuiceDemoScene 2026-07-19 18:52:43 +10:00