From cf45e115bcd137020002e84b67da7b00547901b5 Mon Sep 17 00:00:00 2001 From: user Date: Fri, 7 Aug 2026 01:55:31 +0200 Subject: Re-apply #5 (lru_cache on the per-line render + Heads built with their opcode bytes already attached) with the graph_minimap scenario's racy SETUP made deterministic: clear _graph_sticky before the second navigation so Space is known to be entering the graph, not leaving it. No assertion changed. Result: {"status":"keep","total_ms":22980.2,"lg_boot_ms":738.2,"lg_decomp_ms":2401.8,"lg_graph_ms":944.1,"lg_hex_ms":920.6,"lg_index_ms":75.2,"lg_listing_cold_ms":538.5,"lg_listing_warm_ms":411.1,"lg_nav_ms":6813.9,"lg_palette_ms":4.9,"lg_render_ms":221.8,"lg_search_ms":5630.1,"pure_graph_ms":240.7,"sm_boot_ms":537.5,"sm_decomp_ms":595.1,"sm_graph_ms":715.7,"sm_hex_ms":858.8,"sm_index_ms":0,"sm_listing_cold_ms":263.3,"sm_listing_warm_ms":265.3,"sm_nav_ms":335.2,"sm_palette_ms":0.3,"sm_render_ms":271.4,"sm_search_ms":196.5,"fails":0} --- tests/test_scenarios.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests') diff --git a/tests/test_scenarios.py b/tests/test_scenarios.py index a36ea80..9b2cc7e 100644 --- a/tests/test_scenarios.py +++ b/tests/test_scenarios.py @@ -3101,7 +3101,17 @@ async def s_graph_minimap(c: Ctx): # a big graph, so the overview actually maps to somewhere far away big = c.find_func(lambda f: f.size > 0x300) or fn + # _open_graph left graph mode STICKY, and a sticky navigation schedules the + # next function's graph by itself -- so whether the Space below ENTERS the + # graph or LEAVES it depended on whether that async load landed first. This + # scenario is about the minimap, not about sticky mode (graph_sticky covers + # that), so drop stickiness and press Space from a known state. Without + # this the whole scenario passes or fails on a coin toss: make the backend + # fast enough that the reload wins and every minimap click lands on a + # widget that is no longer on screen. + app._graph_sticky = False await c.open(big.addr, "listing") + await c.wait(lambda: app._active == "listing", 10) c.lst.focus() await c.press("space") await c.wait(lambda: app._active == "graph" and gv.lay is not None, 60) -- cgit v1.3.1-sl0p