- DJ post stood the player inside the sealed djbooth (same class as the taps
softlock): every direction blocked, and since the sweep needs you to walk to
the entry, the night could never be paid. DECKS_SPOT moves to the booth's west
counter, which is where the map comment always said the gear faces from.
- Role stations are now DATA (venueMap POSTS/PROBES) with tests/floor/stations.test.ts
pinning the whole bug class: posts must be walkable AND escapable, probes must
have somewhere walkable within interact range. Written as a MOVEMENT test, not
a tile-name test — the question is whether the player can leave.
- DoorScene.busy is released by a delayedCall on the scene clock, and stopping a
scene discards pending events, so a ruling in the last 2.6s of a night left it
stuck true: a dead door — no rope, no verdicts, no way inside — for the rest
of the run. Now reset per night, along with seenCards/kebab/franko/retiredRules.
- Bar WATER and CUT OFF never settled the patron, so watering a maggot from
behind the taps left them ticking as unhandled and re-logging every grace
period: the call that fixed the problem kept being charged for it.
- Every bar verb logged as 'barServe', putting drinks in the record that were
never poured. One kind per verb; the report system takes unknown kinds by design.
- carpetMsFor() is consumed on read: a regular parked, recalled and knocked back
came round again later and was paid the entrance dividend a second time.
- Sweep state joins resetNightState() so an interrupted floor score cannot carry
its cash, or its previous-night pay callback, into the next night.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>