# Does the main menu REMEMBER its cursor across menu -> title -> menu? # MEASURED 2026-08-30. Answer: YES. # # WHY IT MATTERS: menu-navigation-semantics.md records initial focus as TUTORIAL # (2/2 boots) while boot_menu.sh's closing line says NEW GAME and # menu-state-in-memory.md reaches EXTRAS in four downs, which only counts from # NEW GAME. If focus PERSISTS, then any "initial focus" reading not taken on a # fresh boot's FIRST menu entry is measuring history, not initial focus -- which # would explain the disagreement without any of the records being wrong. # # HARNESS: tools/re-capture/focus_persistence.py, on the path b_from_menu.py # validated -- plate-pulse title detector, glyph-327 menu detector, and every # press confirmed from the guest's own [RE-INPUT] log rather than from the pad. # NOT boot_menu.sh: its title gate tests for stillness and this title never # stills (harness-title-gate-assumes-a-static-title.md). The plate-pulse gate # reached TITLE at 422.7 s on the boot skip_intro could not gate at all. # # ✅ CONTROL, and it is the reason run 1 is discarded rather than reported: # two DOWN presses must move the cursor exactly two items. If they do not, # the reader is not tracking and F3 may not be read. # # [ 1.0s] MENU (glyph 327) F1 = TUTORIAL ring 130 76 254 69 64 # [ 7.3s] DOWN delivered (attempt 1) # [ 8.2s] DOWN delivered (attempt 1) # [ 1.0s] after 2x DOWN F2 = EXTRAS ring 130 76 66 69 254 # ✅ CONTROL PASSED: 2x DOWN moved TUTORIAL -> EXTRAS # [ 13.3s] B delivered (attempt 1) # [ 24.0s] BACK AT TITLE (glyph 1403) # [ 25.8s] A delivered (attempt 1) # [ 33.6s] MENU AGAIN F3 = EXTRAS ring 130 76 66 69 254 # # F1=TUTORIAL F2=EXTRAS F3=EXTRAS => FOCUS PERSISTS # # The ring vector is menu_focus.py's geometry byte for byte: the peak moves from # index 2 to index 4 and STAYS at 4 across the round trip. # ################################################################################ # 🔴 RUN 1 IS DISCARDED, AND ITS FAILURE IS THE USEFUL PART. # # The first attempt read F1 = LOAD GAME and F2 = LOAD GAME -- the cursor had not # moved -- and the control refused to report F3. The cause was NOT the reader: # the two frames genuinely differ by 911 px, so they are different frames. It is # that run 1 sent the DOWN presses through pad.py with NO delivery confirmation, # while A and B were confirmed. The guest's own log settles it: # # vk=5811 (dpad down) flags=0001 ... delivered ONCE for TWO presses # vk=5800 (A) flags=0001 ... delivered once # # So a press that leaves the harness is not a press the guest received, and the # corpus already knew that for A and B and had not applied it to the d-pad. # Fixed: every press in this probe is now confirmed the same way, and the run # above shows 2/2 DOWN delivered. # # ⚠️ REACH. One boot, one round trip, one direction. NOT tested: # * persistence across a full REBOOT -- this is within one boot; # * whether F1 = TUTORIAL here is an initial focus. IT IS NOT: run 1 had # already moved the cursor LOAD GAME -> TUTORIAL with its one delivered # press, and run 2 found it still on TUTORIAL. That is a second, incidental # confirmation of persistence -- across two separate probe processes -- but # it means this run says NOTHING about what the menu opens on. # * whether a longer absence, or a submenu round trip, behaves the same. # (Ⓑ from a submenu restoring the entered-from item is already 4/4.)