Empty Lua tables from DB queries (e.g. get_events with no results) are ambiguous — they could be [] or {}. Frontend expects arrays (with .length), so we default empty tables to [] instead of {}.