Joke Shop
- Reservation list without ID (guest list valid, ID missing) — denied.
- Borrowed/mismatched ID (ID valid but mismatched) — denied.
- Guest who refuses the wand screen: new `refuses_screening` event flag, copied
onto NPCController, handled in _toggle_wand_screening (logs wand.refused, records
a wand_refused event, small prop hit, panel stays closed).
- Late arrival during the performance (ID + ticket, "arrive" intent).
Studio
- Filming-boundary event and a later repeat, both using the new `film_boundary`
intent which maps to `steps_end` so the influencer stands past the posted line.
- Celebrity arrival now pulls in a small crowd via a new `extra_spawns` event field
(two tourists + an influencer), spawned through the normal path.
Building
- Filming-boundary event whose hint points at the body camera and request-reason
verbs, plus an unclear-intent event that hints at asking for a reason.
Engine support
- Events may carry `hint` (string key logged on spawn), `extra_spawns`, and
`refuses_screening`; 9 new localized hint strings.
Tests/docs
- Headless suite 139 -> 149 (test_scenario_content.gd) and a new
smoke_scenario_content.gd that spawns the refusal and celebrity events through the
real signal path.
- README, TODO section moved to DONE, MEMORY. Version 0.2.13.
- Drop actions/cache@v4 from the checks job: the Gitea runner cannot reach
GitHub's cache service (/twirp/...CacheService timeouts, ~2min retries);
Godot import is fast enough without it. Add GODOT_SILENCE_ROOT_WARNING=1.
- Document the cache situation and re-enable path in docs/RELEASING.md
- VenueScenario.door_staff_line(context, rng): seeded-random venue lines
- GameManager logs id/ticket/wand-check, refusal, and prohibited-item lines
from the venue scenario (Joke Shop flavor) during inspection/screening
- Test coverage: all Joke Shop contexts, unknown contexts, empty venues,
deterministic seeded picks (54 tests pass)