6354cd983d
The battlefield's status, list, scoreboard and positions answered from VM copies pushed at frame end, and their events fired from frame-end feeds. In 1.12.1 the getters read the battlefield state at the call (`0x4ab4a0`–`0x4ab820`, `0x4ab9d0`, `0x4abf90`). The status handler fires `UPDATE_BATTLEFIELD_SCORE` before `UPDATE_BATTLEFIELD_STATUS` (`0x4aaa5a`, `0x4aab05`). Now every getter reads live through the call host, and the events fire on a battlefield lane at their handlers. The board sorts with the reference comparator through the CRT qsort (`0x4aa350`, `0x73f727`). A row with no name record counts as team 0, and a world entry clears the stat columns (`0x4a9e67`). Tests: live getters against a written world, a frame of mixed packets firing in order, name callbacks at the name packet, and a 40-row sort. All fail on main. Part of #2217 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>