`ui_draw_capture.sh` boots to the title screen and arms Canary's new `log_ui_draws` there — deliberately WITHOUT tapping A on the title, which is the subject and which sends the guest into a save-data probe. ARM=early presses F10 before the title exists, for the frames in which a screen is built. A grab that is not full-width is a hard error rather than something to classify. `ui_draw_order.py` turns the capture into a named paint order: the UI shader emits NDC, so a quad's pixel rect is exact, and the disc's sprites have near-unique decoded sizes, so the rect's SIZE names the sprite. Matching is nearest-within-6px with the distance printed, because a quad comes back a few pixels under its sprite for a reason that is not yet measured.