b4ea5df281
The guards' source scan misses a raise reached through a helper in another module, so a frame-time feed could raise outside every lane unseen. **Changed** - In debug builds, every raise into the VM goes through one check: the immediate fire (`tick::fire_event_into`) and the queue (`Model::queue_event`, now its only push). - A raise outside a script call, a lane or the VM's tick fails with the event and its caller chain, unless an allow entry names its guard row or reference place. - The app's tests fail hard. A live run warns once per site. - Its first run found `feed_char` raising UPDATE_INVENTORY_ALERTS at frame time, where the item field watchers signal it in the packet (`0x4c8085`). That is now a guard row. **Tests:** a frame-time raise fails naming its caller, the same raise in a lane passes, and a live run reports each site once. Part of #2168. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>